No description
Find a file
Florian Klink 80b5206034 refactor(castore/fs): use streams for dir handles
This changes RootNodes::list to return a BoxStream<'static, _>, and then
drops all the mpsc sender / receiver complexity we were having.

There's also no need to worry about channel buffer sizes - all current
RootNodes implementations are immediately ready to yield new elements in
the stream. Assuming there's new implementations that do take some time,
we can deal with buffer sizes on the producer size, which might know its
own batch sizes better.

RootNodes now doesn't need to implement Clone/Send anymore, and can have
non-static lifetimes. As long as its the list method returns a
BoxStream<'static>, we're fine with all that.

On a first look, this seems like we now need to do more cloning upfront
for the BTreeMap and Directory RootNodes impls. However, we already
had to clone the entire thing at `self.root_nodes_provider.clone()`, and
then did it again for each element.

Now we get an owned version of the data whenever a list() call happens,
and then just move owned things around.

Change-Id: I85fbca0e1171014ae85eeb03b3d58e6176ef4e2d
Reviewed-on: https://cl.snix.dev/c/snix/+/30549
Autosubmit: Florian Klink <flokli@flokli.de>
Reviewed-by: Connor Brewster <cbrewster@hey.com>
Tested-by: besadii
2025-06-02 22:19:24 +00:00
.gcroots feat(.envrc): gcroot third_party.sources 2022-09-15 11:27:53 +00:00
.nixery chore(3p/sources): bump to OpenSSH vulnerability hotfix 2024-07-01 17:42:30 +00:00
contrib chore(tracing): upgrade to 2024 edition 2025-05-02 22:33:47 +00:00
fun/solves-this fix(ops): drop clbot 2025-05-16 09:22:00 +00:00
nix chore: Remove buildGo and supporting infrastructure 2025-03-21 09:58:25 +00:00
ops feat(ops/modules/monorepo-gerrit): enable webhooks plugin 2025-05-16 09:23:58 +00:00
snix refactor(castore/fs): use streams for dir handles 2025-06-02 22:19:24 +00:00
third_party chore(3p/chicago95): remove 2025-05-28 15:21:06 +00:00
tools fix(tools/depotfmt.nix): double specification of edition 2025-04-30 08:42:36 +00:00
web docs(web/docs): collapse some more indexes 2025-05-08 13:57:15 +00:00
.editorconfig feat(editorconfig): add global editorconfig 2025-03-19 11:35:35 +00:00
.envrc chore: fix unreleased direnv bug 2025-04-09 22:39:01 +00:00
.git-blame-ignore-revs fix: add cl/4397 (treewide nixpkgs-fmt) to git-blame-ignore-revs 2022-02-07 18:15:09 +00:00
.gitignore chore: add .direnv to gitignore 2025-04-12 18:12:35 +00:00
.gitreview chore: Introduce .gitreview file 2024-08-31 13:05:23 +00:00
.hgignore chore(hgignore): ignore .git for hg 2020-06-14 18:23:13 +00:00
.mailmap chore(mailmap): add edef 2025-04-01 18:47:29 +00:00
.rgignore chore: Only exclude //third_party/git from ripgrep 2020-05-17 23:58:22 +01:00
buf.gen.yaml fix(treewide): add missing final newlines 2025-03-21 13:33:32 +00:00
buf.yaml chore(buf): Use nixpkgs-provided buf 2022-10-21 18:39:03 +00:00
default.nix fix(default.nix): drop usersFilter 2025-03-20 12:21:44 +00:00
LICENSE feat(LICENSE): add Snix Project 2025-03-17 12:45:09 +00:00
OWNERS chore: update OWNERS 2025-03-20 12:21:43 +00:00
README.md chore(*): drop everything that is not required for Tvix 2025-03-17 16:18:26 +00:00
RULES feat(whitby): Let sterni bear the wheel 2021-05-23 19:06:15 +00:00
rustfmt.toml feat(depotfmt): Check & format Rust code with rustfmt 2022-02-08 12:06:39 +00:00

Snix is a modern Rust re-implementation of the components of the Nix package manager.

For more information, checkout the website, hosted at snix.dev, which also is available in the web/ subdirectory of this repository.