Repository navigation
v0.0.79
·
69 commits
to main
since this release
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
denyReadandallowReadpatterns 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
AbortSignalpassed towrapWithSandbox()is aborted. (#628) - A wrap goes by one configuration and one working directory. If
updateConfig(),initialize()orchdir()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 --compilestarts again. It failed withCannot find module '../package.json'. (#630) - bubblewrap 0.4 starts again: one mount per destination. (#580)
New
{ path, literal: true }in any of the fourfilesystempath lists marks an entry as a name, whatever characters it holds. (#621)
For whoever upgrades
- Types (breaking at compile time): the four
filesystempath lists areFilesystemPathEntry[], that isstring | { path: string; literal: true }, where they werestring[].writeRootsOf()gives every write root. (#621) - Node:
enginesis>=22.12.0. (#636)
What's Changed
- linux: make the read-deny glob walk about six times faster by @ronleizrowice-ant in #627
- linux: the wrap walks its patterns in turns, and stops when its signal is aborted by @ronleizrowice-ant in #628
- linux: deny every dangerous name of a subdirectory, not only those three levels down by @ronleizrowice-ant in #629
- Raise the supported Node floor to 22.12, and move CI to Node 22 by @ronleizrowice-ant in #636
- linux: one mount per destination, so bubblewrap 0.4 starts by @ronleizrowice-ant in #580
- linux: a wrap that starts over keeps what it has walked, and ends by @ronleizrowice-ant in #638
- linux: a wrap that starts over reads the disk again by @ronleizrowice-ant in #644
- Glob walk: an
anchoroption, a directory taken as the name it is by @ronleizrowice-ant in #620 - Let a caller mark a path entry literal:
{ path, literal: true }by @ronleizrowice-ant in #621 - Read a path entry as the path it spells, where that exists by @ronleizrowice-ant in #622
- linux: try a directory that cannot be listed once, and give each path once by @ronleizrowice-ant in #645
- ci: run the Docker legs on Node 22, not on the image's Node 18 by @ronleizrowice-ant in #643
- linux: a command starts once both relays listen by @ronleizrowice-ant in #639
- linux: one wrap, one working directory, and no object taken for the same install by @ronleizrowice-ant in #655
- cli: read the version through a static import, so a compiled binary starts by @TurtIeSocks in #630
- Answer 502 when an upstream sends an invalid status code by @ant-kurt in #660
- Release v0.0.79 by @ronleizrowice-ant in #637
New Contributors
- @TurtIeSocks made their first contribution in #630
Full Changelog: v0.0.78...v0.0.79