Skip to content

Releases: brioche-dev/brioche

Brioche v0.1.5

20 Apr 06:27
a9b746d
Compare
Choose a tag to compare

Check the blog post "Announcing Brioche v0.1.5" for an overview of all the new features in this release

Run brioche self-update to update an existing Brioche installation, or check the docs for installation instructions

Breaking

Note: This is a minor release, but Brioche is still pre-1.0 and not widely adopted, so we may ship minor breaking changes from time to time if we think the breakage will not affect many people

  • (Minor breaking) The new caching system is replacing (most) uses of the Brioche registry. If you were syncing build artifacts to a custom registry before, you will need to migrate to a custom cache instead.
    • The registry is still used for resolving projects. For larger teams, it might still make sense to host a custom registry.
    • This release includes some minimal tooling to help migrate existing cached data from the old registry to a new cache, but it will be removed before the next release.
    • If you are self-hosting your own infrastructure for Brioche today (or are interested in doing so), please reach out for more information

Added

  • Implement new caching system (#179)
    • Fetching from the official Brioche cache should be much faster in most cases
    • Using a private / self-hosted cache is much easier now. The cache.url config key or the $BRIOCHE_CACHE_URL env var can be used to cache with several different object storage backends. Check the documentation for more details
  • Add support for unarchiving .zip archives (#176 by @paricbat)
  • Add support for projects with cyclic imports (#211)
  • Add command to start a debug shell within a failed build (#215)
  • Add support for Brioche.gitCheckout() as a static (#218)
  • Add unsandboxed sandbox backend (#230)
  • Add process.currentDir option to change which directory a process starts in (#231)

Changed

  • Use $BRIOCHE_DATA_DIR env var to control where Brioche's data is stored-- in most cases, the default path is ~/.local/share/brioche on Linux (#171)
  • Allow processes to inherit CA certificates from the host when the unsafe networking option is enabled (#232)
    • In practice, this means that builds that access the network will no longer need to pull in the ca_certificates package

Fixed

  • Fix various issues with the LSP (#188)
  • Tweak LSP to keep unused dependencies when saving (#192)
  • Fix brioche fmt when called without any args: it now defaults to formatting the project in the current directory (#190 by @asheliahut)
  • Add missing implementations for several expressions when evaluating statics (#195)
  • Fix potential segfault from V8 depending on CPU flags (#225)

Brioche v0.1.4

19 Jan 07:23
d3b2eff
Compare
Choose a tag to compare

Check the blog post "Announcing Brioche v0.1.4" for an overview of all the new features in this release

Run brioche self-update to update an existing Brioche installation, or check the docs for installation instructions

Changed

  • Overhaul console output (#137)
    • The new output format uses colors and symbols, runs at a faster refresh rate, and generally should make it clearer what's going on. See this Asciinema recording for what the new format looks like.
  • Overhaul output format when a process recipe fails (#138, #139)

Added

  • Add --locked flag for several subcommands (#133)
    • Applies to build, check, run, and install. When passed, the command will fail if the lockfile isn't up-to-date.
  • Add --display flag, plus new plain-reduced output format (#141)
  • Add new attach_resources recipe type (#149)

Fixed

  • Update Linux sandbox to fallback to using PRoot for mounts (#159)
    • This fallback makes it so Brioche can run without any extra setup on Ubuntu 24.04-- although with reduced performance. See "PRoot fallback" in the docs for more context and other options.
  • Fix some LSP errors from converting between line / column numbers and positions (#134)

Internals

  • Add project.bri for building Brioche with Brioche! This new build will be used to provide portable builds for non-glibc machines.
  • This release includes the initial groundwork for AArch64 support on Linux (a.k.a ARM64). Brioche itself can now run on aarch64-linux, but this work hasn't landed in the brioche-packages repo yet, and getting it merged so packages can work with both aarch64-linux and x86_64-linux is still blocked on future feature work.

0.1.3

28 Sep 03:51
8236cf1
Compare
Choose a tag to compare

This is a hotfix release that addresses a bug introduced in v0.1.2 in the Brioche Language Server Protocol (LSP), where some parts of the lockfile would be erased when saving a .bri file. Additionally, it includes some other minor bugfixes.

Fixed

  • Fix Brioche LSP erasing locked download and git ref hashes (#130)
  • Fix "failed to move temporary project from registry" error. This occurred due to a race condition when a project tried to be fetched more than once from the registry, e.g. from a dependency shared by multiple other dependencies, like std (#131)
  • Fix (very annoying!) "Request textDocument/diagnostic failed" error from LSP whenever a .bri file was first opened (#132)

0.1.2

26 Sep 09:03
ddf9102
Compare
Choose a tag to compare

This release includes many minor features and fixes over the last few months, especially focused on unblocking work in the brioche-packages repo. Additionally, this release includes support for the new Brioche.download(...) and Brioche.gitRef(...) recipes, which automatically pin download hashes in the brioche.lock lockfile, meaning you no longer need to find and update the hashes in code by hand!

Standard library

NOTE: These features require both the latest version of Brioche and an appropriate version of the std package. Consult the std changelog for more details

  • Add Brioche.download("..."). The provided URL will be downloaded, and the hash will automatically be recorded in the brioche.lock lockfile (#102)
  • Add Brioche.gitRef({ repository, ref }). The git repository URL will be fetched, and the commit for the corresponding ref (branch or tag name) will be recorded in the brioche.lock lockfile. This is useful when used with the gitCheckout function from the git package (#126)
  • Add std.glob(...) recipe. This takes a directory and some glob patterns, and returns a new directory containing only the contents matching a pattern. This is similar to Brioche.glob(...), but works with existing recipes instead of inputs from the project (#119)

Fixed

  • Fix brioche self-update command. Unfortunately, upgrading from v0.1.1 will still need to be done manually, but auto-updates should work going forward! (#112 by @jaudiger)
  • Fix .unarchive() recipes sometimes not properly baking when unarchiving a tarfile containing long filename entries (#127, with work from #117 by @jaudiger

Changed

  • Update most subcommands to take the --project (-p) or --registry (-r) argument more than once. The command will apply to each project. This applies to the following subcommands:
  • Update brioche fmt to print formatted files (#75 by @jaudiger)
  • Update Process.dependencies recipes to support more flexible env var configurations. Namely, dependencies can now set env vars for fallbacks, in addition to the existing env vars that get appended

Internals

  • Upgrade OpenTelemetry SDK packages. Brioche now uses the conventional OpenTelemetry SDK environment variables for configuration
  • Upgrade Deno Core from v0.201.0 to v0.303.0
  • Update Rust toolchain to v1.81
  • Restructure some internal crates. Some crates that were originally in the main Brioche repository now live in brioche-dev/brioche-runtime-utils

0.1.1

10 Jun 05:09
d82dfbf
Compare
Choose a tag to compare

This is a minor release focused on massively improving registry downloads, and helping future-proof TypeScript build scripts. Re-run the install script to update:

curl --proto '=https' --tlsv1.2 -sSfL 'https://brioche.dev/install.sh' | bash

Special thanks to @asheliahut for helping with some major changes to the registry itself!

Added

  • Add new TypeScript runtime op to get the version of Brioche (#59). This will allow for updating packages to take advantage of new features without breaking backwards compatibility
  • Add new collect_references recipe type (#57). This will be used by the std package to improve container sizes

Changed

  • Increase timeouts when fetching from registry from 10s to 120s (#54 by @matklad). This is a workaround due to very slow cold start times seen in some cases when making requests to the registry
  • Tweak registry sync rules to avoid downloading unnecessary dependencies (#56). This should drastically reduce the download times during the first-time user experience (especially with some changes to the registry itself)
  • Download project files in parallel from registry (#58)

0.1.0

03 Jun 06:44
31f0e37
Compare
Choose a tag to compare

Initial release! See the announcement post here: https://brioche.dev/blog/announcing-brioche/