Skip to content

v0.0.79

Choose a tag to compare

@ronleizrowice-ant ronleizrowice-ant released this 07 Oct 17:12
· 69 commits to main since this release
d9aac20

Fixed: denies that did not apply

  • Names with glob characters ([wip] app, br[1]), all platforms. A path entry whose characters read as a pattern is now also read as the path it spells, where that exists. Before, a deny through such a folder matched nothing. (#620, #622; #134, #576)
  • Linux, dangerous names in subdirectories. .bashrc, .git/config, .vscode/ and the like are write-denied one level below the working directory whatever else the tree holds, and a folder the scan cannot read is denied whole. (#629)

Faster, and off the caller's thread (Linux)

  • Expanding denyRead and allowRead patterns is about six times faster and uses less memory: six ** rules over 400,000 files, 6.3 s to 1.0 s. The rules of one configuration share their directory listings. (#627)
  • The expansion gives the event loop a turn every 10 ms, and stops when the AbortSignal passed to wrapWithSandbox() is aborted. (#628)
  • A wrap goes by one configuration and one working directory. If updateConfig(), initialize() or chdir() runs while a command is being wrapped, the wrap starts over and reads the disk again. After two restarts it finishes its walk without yielding. (#638, #644, #655)
  • A directory that cannot be listed is tried once per wrap, not once per rule, and the read lists hold each path once. 100 rules over 50 such directories on a slow mount: 72 s to 2.5 s, the same sandbox. (#645)

Fixed: other

  • Linux: a sandboxed command's first network call was sometimes refused, because the command could start before the in-sandbox relays listened. It now starts once both do. (#639; #616)
  • Network: an upstream that answered with an invalid status line or header made the HTTP proxy throw, which ended the process running it. The proxy now answers 502 Bad Gateway. (#660)
  • CLI: a binary built with bun build --compile starts again. It failed with Cannot find module '../package.json'. (#630)
  • bubblewrap 0.4 starts again: one mount per destination. (#580)

New

  • { path, literal: true } in any of the four filesystem path lists marks an entry as a name, whatever characters it holds. (#621)

For whoever upgrades

  • Types (breaking at compile time): the four filesystem path lists are FilesystemPathEntry[], that is string | { path: string; literal: true }, where they were string[]. writeRootsOf() gives every write root. (#621)
  • Node: engines is >=22.12.0. (#636)

What's Changed

New Contributors

Full Changelog: v0.0.78...v0.0.79