What's New in Devbox 0.8
Removing Binwrappers
The most significant change in this release is the removal of binwrappers. Previous versions of Devbox wrapped the binaries in a shim that recalculated the Devbox environment every time they ran. These binwrappers made it possible to instantly use new packages without restarting your shell. However, it also introduced a lot of bugs and complexity to the Devbox environment. More importantly, it had adverse effects on performance and startup times.
This release removes the binwrappers and links directly to the Nix package binaries in your shell environment. This change should make the Devbox environment significantly faster and much more reliable, especially for scripts or environments that invoke Devbox binaries several times.
Comment and trailing commas support in devbox.json
A long requested feature -- you can now annotate your devbox.json
with comments to explain portions of your configuration! For example, you can use comments to annotate and explain your scripts for new users:
{
"packages": [
"go@latest"
],
"scripts": {
// Build for your current architecture
"build": "go build -o dist/devbox ./cmd/devbox",
// Build for all architectures, used mostly in CI/CD
"build-all": [
"GOOS=darwin GOARCH=amd64 go build -o dist/devbox-darwin-amd64 ./cmd/devbox",
"GOOS=darwin GOARCH=arm64 go build -o dist/devbox-darwin-arm64 ./cmd/devbox",
"GOOS=linux GOARCH=amd64 go build -o dist/devbox-linux-amd64 ./cmd/devbox",
"GOOS=linux GOARCH=arm64 go build -o dist/devbox-linux-arm64 ./cmd/devbox",
],
}
}
Devbox will also correctly parse your config if you leave a trailing comma, which makes it easier to edit or modify your config directly without triggering syntax errors.
Patch Devbox ELF binaries to use the newest version of glibc
Packages can now take an optional patch_glibc
boolean field. When set to true
, this field will patch the package's ELF binaries to use the latest version of glibc
available in Nixpkgs:
"packages": {
"python": {
"version": "3.7",
"patch_glibc": true
}
}
This flag is useful for fixing dynamic linking issues, or GLIBC incompatibility issues between your Devbox packages and packages installed via Pip or other package managers. This field should generally be omitted or set to false
unless you encounter one of these issues.
Faster installs by caching search results
Devbox will now cache search results when adding a package, which should significantly speed up installation and package additions for configs with a large number of packages.
Better ZSH compatibility
Devbox now respects ZDOTDIR for ZSH startup files, and will copy files instead of linking. This should improve customizability and reliability when using Devbox with ZSH.
Bug Fixes
- Fixed a bug that was forcing users to login to use
devbox global pull/push
. You can now pull or push your global config to your own Git repo without needing to authenticate
Special thanks to:
@az-pz and @dallasgoldswain for making their first contributions to Devbox!
What's Changed
- devconfig: allow comments and trailing commas by @gcurtis in #1539
- impl: remove profileDir from shell by @gcurtis in #1583
- devconfig: use two spaces instead of tab by @gcurtis in #1589
- remove match from docs by @Lagoja in #1591
- [shell] respect ZDOTDIR for zsh startup files, and copy startup files instead of linking by @savil in #1587
- [perf] cache nix.searchSystem by @savil in #1546
- [docs] upgrade docusarus by @LucilleH in #1592
- devpkg: better flake references and installable parsing by @gcurtis in #1581
- [shell] Remove bin wrappers 🎉 by @mikeland73 in #1584
- devconfig,shellgen: option to patch ELF binaries with newer glibc by @gcurtis in #1574
- Fix minor spelling mistake in plugins.md doc. by @az-pz in #1601
- devpkg: use struct field values in FlakeRef.String by @gcurtis in #1597
- devpkg: better handling of escapes in flakeref paths by @gcurtis in #1598
- devpkg: make FlakeInstallable.Outputs a string by @gcurtis in #1599
- added arm64 support for multi user nix in docker by @mohsenari in #1605
- Update process-compose.yml in rails stack by @dallasgoldswain in #1573
- [easy][global] global push/pull should not require login for github by @mikeland73 in #1609
- impl: PATH fix for multiple glibc-patched packages by @gcurtis in #1608
- devpkg: use struct field values in FlakeInstallable.String by @gcurtis in #1600
New Contributors
- @az-pz made their first contribution in #1601
- @dallasgoldswain made their first contribution in #1573
Full Changelog: 0.7.1...0.8.0