2022-08-04 15:29:38 +02:00
|
|
|
# This file is automatically @generated by Cargo.
|
|
|
|
# It is not intended for manual editing.
|
|
|
|
version = 3
|
|
|
|
|
refactor(tvix/store/blobsvc): make BlobStore async
We previously kept the trait of a BlobService sync.
This however had some annoying consequences:
- It became more and more complicated to track when we're in a context
with an async runtime in the context or not, producing bugs like
https://b.tvl.fyi/issues/304
- The sync trait shielded away async clients from async worloads,
requiring manual block_on code inside the gRPC client code, and
spawn_blocking calls in consumers of the trait, even if they were
async (like the gRPC server)
- We had to write our own custom glue code (SyncReadIntoAsyncRead)
to convert a sync io::Read into a tokio::io::AsyncRead, which already
existed in tokio internally, but upstream ia hesitant to expose.
This now makes the BlobService trait async (via the async_trait macro,
like we already do in various gRPC parts), and replaces the sync readers
and writers with their async counterparts.
Tests interacting with a BlobService now need to have an async runtime
available, the easiest way for this is to mark the test functions
with the tokio::test macro, allowing us to directly .await in the test
function.
In places where we don't have an async runtime available from context
(like tvix-cli), we can pass one down explicitly.
Now that we don't provide a sync interface anymore, the (sync) FUSE
library now holds a pointer to a tokio runtime handle, and needs to at
least have 2 threads available when talking to a blob service (which is
why some of the tests now use the multi_thread flavor).
The FUSE tests got a bit more verbose, as we couldn't use the
setup_and_mount function accepting a callback anymore. We can hopefully
move some of the test fixture setup to rstest in the future to make this
less repetitive.
Co-Authored-By: Connor Brewster <cbrewster@hey.com>
Change-Id: Ia0501b606e32c852d0108de9c9016b21c94a3c05
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9329
Reviewed-by: Connor Brewster <cbrewster@hey.com>
Tested-by: BuildkiteCI
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
2023-09-13 14:20:21 +02:00
|
|
|
[[package]]
|
|
|
|
name = "addr2line"
|
|
|
|
version = "0.21.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb"
|
|
|
|
dependencies = [
|
|
|
|
"gimli",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "adler"
|
|
|
|
version = "1.0.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
|
|
|
|
|
2024-05-10 06:51:18 +02:00
|
|
|
[[package]]
|
|
|
|
name = "ahash"
|
|
|
|
version = "0.8.11"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011"
|
|
|
|
dependencies = [
|
|
|
|
"cfg-if",
|
|
|
|
"once_cell",
|
|
|
|
"version_check",
|
|
|
|
"zerocopy",
|
|
|
|
]
|
|
|
|
|
2022-10-13 00:45:52 +02:00
|
|
|
[[package]]
|
|
|
|
name = "aho-corasick"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "1.1.2"
|
2022-10-13 00:45:52 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0"
|
2022-10-13 00:45:52 +02:00
|
|
|
dependencies = [
|
|
|
|
"memchr",
|
|
|
|
]
|
|
|
|
|
2024-05-10 06:51:18 +02:00
|
|
|
[[package]]
|
|
|
|
name = "allocator-api2"
|
|
|
|
version = "0.2.18"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f"
|
|
|
|
|
2024-03-01 17:00:53 +01:00
|
|
|
[[package]]
|
|
|
|
name = "android-tzdata"
|
|
|
|
version = "0.1.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "android_system_properties"
|
|
|
|
version = "0.1.5"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
|
|
|
|
dependencies = [
|
|
|
|
"libc",
|
|
|
|
]
|
|
|
|
|
2022-12-16 12:54:22 +01:00
|
|
|
[[package]]
|
|
|
|
name = "anes"
|
|
|
|
version = "0.1.6"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
|
|
|
|
|
2023-05-01 16:29:20 +02:00
|
|
|
[[package]]
|
|
|
|
name = "anstream"
|
2024-08-28 23:54:46 +02:00
|
|
|
version = "0.6.15"
|
2023-05-01 16:29:20 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:54:46 +02:00
|
|
|
checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526"
|
2023-05-01 16:29:20 +02:00
|
|
|
dependencies = [
|
|
|
|
"anstyle",
|
|
|
|
"anstyle-parse",
|
|
|
|
"anstyle-query",
|
|
|
|
"anstyle-wincon",
|
|
|
|
"colorchoice",
|
2024-08-28 23:54:46 +02:00
|
|
|
"is_terminal_polyfill",
|
2023-05-01 16:29:20 +02:00
|
|
|
"utf8parse",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "anstyle"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "1.0.8"
|
2023-05-01 16:29:20 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1"
|
2023-05-01 16:29:20 +02:00
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "anstyle-parse"
|
2024-08-28 23:54:46 +02:00
|
|
|
version = "0.2.5"
|
2023-05-01 16:29:20 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:54:46 +02:00
|
|
|
checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb"
|
2023-05-01 16:29:20 +02:00
|
|
|
dependencies = [
|
|
|
|
"utf8parse",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "anstyle-query"
|
2024-08-28 23:54:46 +02:00
|
|
|
version = "1.1.1"
|
2023-05-01 16:29:20 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:54:46 +02:00
|
|
|
checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a"
|
2023-05-01 16:29:20 +02:00
|
|
|
dependencies = [
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
"windows-sys 0.52.0",
|
2023-05-01 16:29:20 +02:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "anstyle-wincon"
|
2024-08-28 23:54:46 +02:00
|
|
|
version = "3.0.4"
|
2023-05-01 16:29:20 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:54:46 +02:00
|
|
|
checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8"
|
2023-05-01 16:29:20 +02:00
|
|
|
dependencies = [
|
|
|
|
"anstyle",
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
"windows-sys 0.52.0",
|
2023-05-01 16:29:20 +02:00
|
|
|
]
|
|
|
|
|
2022-12-06 14:47:02 +01:00
|
|
|
[[package]]
|
|
|
|
name = "anyhow"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "1.0.86"
|
2022-12-06 14:47:02 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da"
|
2022-12-06 14:47:02 +01:00
|
|
|
|
2023-09-16 17:20:34 +02:00
|
|
|
[[package]]
|
|
|
|
name = "arc-swap"
|
|
|
|
version = "1.6.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "bddcadddf5e9015d310179a59bb28c4d4b9920ad0f11e8e14dbadf654890c9a6"
|
|
|
|
|
2022-12-06 14:47:02 +01:00
|
|
|
[[package]]
|
|
|
|
name = "arrayref"
|
2023-03-26 22:14:32 +02:00
|
|
|
version = "0.3.7"
|
2022-12-06 14:47:02 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-03-26 22:14:32 +02:00
|
|
|
checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545"
|
2022-12-06 14:47:02 +01:00
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "arrayvec"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.7.4"
|
2022-12-06 14:47:02 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711"
|
2022-12-06 14:47:02 +01:00
|
|
|
|
2024-03-19 11:12:03 +01:00
|
|
|
[[package]]
|
|
|
|
name = "async-channel"
|
|
|
|
version = "2.2.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "f28243a43d821d11341ab73c80bed182dc015c514b951616cf79bd4af39af0c3"
|
|
|
|
dependencies = [
|
|
|
|
"concurrent-queue",
|
|
|
|
"event-listener 5.2.0",
|
|
|
|
"event-listener-strategy 0.5.0",
|
|
|
|
"futures-core",
|
|
|
|
"pin-project-lite",
|
|
|
|
]
|
|
|
|
|
2024-02-23 20:42:52 +01:00
|
|
|
[[package]]
|
|
|
|
name = "async-compression"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "0.4.12"
|
2024-02-23 20:42:52 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "fec134f64e2bc57411226dfc4e52dec859ddfc7e711fc5e07b612584f000e4aa"
|
2024-02-23 20:42:52 +01:00
|
|
|
dependencies = [
|
|
|
|
"bzip2",
|
|
|
|
"flate2",
|
|
|
|
"futures-core",
|
|
|
|
"memchr",
|
|
|
|
"pin-project-lite",
|
|
|
|
"tokio",
|
|
|
|
"xz2",
|
2024-04-30 11:17:20 +02:00
|
|
|
"zstd",
|
|
|
|
"zstd-safe",
|
2024-02-23 20:42:52 +01:00
|
|
|
]
|
|
|
|
|
2024-03-19 11:12:03 +01:00
|
|
|
[[package]]
|
|
|
|
name = "async-io"
|
|
|
|
version = "2.3.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "dcccb0f599cfa2f8ace422d3555572f47424da5648a4382a9dd0310ff8210884"
|
|
|
|
dependencies = [
|
|
|
|
"async-lock 3.3.0",
|
|
|
|
"cfg-if",
|
|
|
|
"concurrent-queue",
|
|
|
|
"futures-io",
|
|
|
|
"futures-lite",
|
|
|
|
"parking",
|
|
|
|
"polling",
|
|
|
|
"rustix",
|
|
|
|
"slab",
|
|
|
|
"tracing",
|
|
|
|
"windows-sys 0.52.0",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "async-lock"
|
|
|
|
version = "2.8.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b"
|
|
|
|
dependencies = [
|
|
|
|
"event-listener 2.5.3",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "async-lock"
|
|
|
|
version = "3.3.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "d034b430882f8381900d3fe6f0aaa3ad94f2cb4ac519b429692a1bc2dda4ae7b"
|
|
|
|
dependencies = [
|
|
|
|
"event-listener 4.0.3",
|
|
|
|
"event-listener-strategy 0.4.0",
|
|
|
|
"pin-project-lite",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "async-process"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "2.2.4"
|
2024-03-19 11:12:03 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "a8a07789659a4d385b79b18b9127fc27e1a59e1e89117c78c5ea3b806f016374"
|
2024-03-19 11:12:03 +01:00
|
|
|
dependencies = [
|
|
|
|
"async-channel",
|
|
|
|
"async-io",
|
|
|
|
"async-lock 3.3.0",
|
|
|
|
"async-signal",
|
2024-08-28 23:42:29 +02:00
|
|
|
"async-task",
|
2024-03-19 11:12:03 +01:00
|
|
|
"blocking",
|
|
|
|
"cfg-if",
|
|
|
|
"event-listener 5.2.0",
|
|
|
|
"futures-lite",
|
|
|
|
"rustix",
|
2024-08-28 23:42:29 +02:00
|
|
|
"tracing",
|
|
|
|
"windows-sys 0.59.0",
|
2024-03-19 11:12:03 +01:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "async-signal"
|
|
|
|
version = "0.2.5"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "9e47d90f65a225c4527103a8d747001fc56e375203592b25ad103e1ca13124c5"
|
|
|
|
dependencies = [
|
|
|
|
"async-io",
|
|
|
|
"async-lock 2.8.0",
|
|
|
|
"atomic-waker",
|
|
|
|
"cfg-if",
|
|
|
|
"futures-core",
|
|
|
|
"futures-io",
|
|
|
|
"rustix",
|
|
|
|
"signal-hook-registry",
|
|
|
|
"slab",
|
|
|
|
"windows-sys 0.48.0",
|
|
|
|
]
|
|
|
|
|
2022-11-13 00:23:14 +01:00
|
|
|
[[package]]
|
|
|
|
name = "async-stream"
|
2023-05-01 16:29:20 +02:00
|
|
|
version = "0.3.5"
|
2022-11-13 00:23:14 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-05-01 16:29:20 +02:00
|
|
|
checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51"
|
2022-11-13 00:23:14 +01:00
|
|
|
dependencies = [
|
|
|
|
"async-stream-impl",
|
|
|
|
"futures-core",
|
2023-03-16 13:31:28 +01:00
|
|
|
"pin-project-lite",
|
2022-11-13 00:23:14 +01:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "async-stream-impl"
|
2023-05-01 16:29:20 +02:00
|
|
|
version = "0.3.5"
|
2022-11-13 00:23:14 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-05-01 16:29:20 +02:00
|
|
|
checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193"
|
2022-11-13 00:23:14 +01:00
|
|
|
dependencies = [
|
2024-04-19 15:07:14 +02:00
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
2024-08-28 23:42:29 +02:00
|
|
|
"syn 2.0.76",
|
2022-11-13 00:23:14 +01:00
|
|
|
]
|
|
|
|
|
2024-03-19 11:12:03 +01:00
|
|
|
[[package]]
|
|
|
|
name = "async-task"
|
|
|
|
version = "4.7.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "fbb36e985947064623dbd357f727af08ffd077f93d696782f3c56365fa2e2799"
|
|
|
|
|
2023-12-17 01:22:01 +01:00
|
|
|
[[package]]
|
|
|
|
name = "async-tempfile"
|
|
|
|
version = "0.4.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "b37d4bb113c47e4f263d4b0221912ff5aa840a51bc9b7b47b024e1cf1926fd9b"
|
|
|
|
dependencies = [
|
|
|
|
"tokio",
|
|
|
|
"uuid",
|
|
|
|
]
|
|
|
|
|
2022-11-13 00:23:14 +01:00
|
|
|
[[package]]
|
|
|
|
name = "async-trait"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.1.77"
|
2022-11-13 00:23:14 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9"
|
2022-11-13 00:23:14 +01:00
|
|
|
dependencies = [
|
2024-04-19 15:07:14 +02:00
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
2024-08-28 23:42:29 +02:00
|
|
|
"syn 2.0.76",
|
2022-11-13 00:23:14 +01:00
|
|
|
]
|
|
|
|
|
2024-03-19 11:12:03 +01:00
|
|
|
[[package]]
|
|
|
|
name = "atomic-waker"
|
|
|
|
version = "1.1.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
|
|
|
|
|
2022-08-04 15:44:49 +02:00
|
|
|
[[package]]
|
|
|
|
name = "autocfg"
|
|
|
|
version = "1.1.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
|
|
|
|
|
2024-05-14 13:55:43 +02:00
|
|
|
[[package]]
|
|
|
|
name = "axum"
|
|
|
|
version = "0.7.5"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "3a6c9af12842a67734c9a2e355436e5d03b22383ed60cf13cd0c18fbfe3dcbcf"
|
|
|
|
dependencies = [
|
|
|
|
"async-trait",
|
2024-08-28 18:35:08 +02:00
|
|
|
"axum-core",
|
2024-05-14 13:55:43 +02:00
|
|
|
"bytes",
|
|
|
|
"futures-util",
|
2024-08-28 18:35:08 +02:00
|
|
|
"http",
|
|
|
|
"http-body",
|
2024-05-14 13:55:43 +02:00
|
|
|
"http-body-util",
|
2024-08-28 18:35:08 +02:00
|
|
|
"hyper",
|
2024-05-14 13:55:43 +02:00
|
|
|
"hyper-util",
|
|
|
|
"itoa",
|
2024-07-20 20:15:42 +02:00
|
|
|
"matchit 0.7.3",
|
2024-05-14 13:55:43 +02:00
|
|
|
"memchr",
|
|
|
|
"mime",
|
|
|
|
"percent-encoding",
|
|
|
|
"pin-project-lite",
|
|
|
|
"rustversion",
|
|
|
|
"serde",
|
|
|
|
"serde_json",
|
|
|
|
"serde_path_to_error",
|
|
|
|
"serde_urlencoded",
|
|
|
|
"sync_wrapper 1.0.1",
|
|
|
|
"tokio",
|
|
|
|
"tower",
|
|
|
|
"tower-layer",
|
|
|
|
"tower-service",
|
|
|
|
"tracing",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "axum-core"
|
|
|
|
version = "0.4.3"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "a15c63fd72d41492dc4f497196f5da1fb04fb7529e631d73630d1b491e47a2e3"
|
|
|
|
dependencies = [
|
|
|
|
"async-trait",
|
|
|
|
"bytes",
|
|
|
|
"futures-util",
|
2024-08-28 18:35:08 +02:00
|
|
|
"http",
|
|
|
|
"http-body",
|
2024-05-14 13:55:43 +02:00
|
|
|
"http-body-util",
|
|
|
|
"mime",
|
|
|
|
"pin-project-lite",
|
|
|
|
"rustversion",
|
|
|
|
"sync_wrapper 0.1.2",
|
|
|
|
"tower-layer",
|
|
|
|
"tower-service",
|
|
|
|
"tracing",
|
|
|
|
]
|
|
|
|
|
refactor(tvix/store/blobsvc): make BlobStore async
We previously kept the trait of a BlobService sync.
This however had some annoying consequences:
- It became more and more complicated to track when we're in a context
with an async runtime in the context or not, producing bugs like
https://b.tvl.fyi/issues/304
- The sync trait shielded away async clients from async worloads,
requiring manual block_on code inside the gRPC client code, and
spawn_blocking calls in consumers of the trait, even if they were
async (like the gRPC server)
- We had to write our own custom glue code (SyncReadIntoAsyncRead)
to convert a sync io::Read into a tokio::io::AsyncRead, which already
existed in tokio internally, but upstream ia hesitant to expose.
This now makes the BlobService trait async (via the async_trait macro,
like we already do in various gRPC parts), and replaces the sync readers
and writers with their async counterparts.
Tests interacting with a BlobService now need to have an async runtime
available, the easiest way for this is to mark the test functions
with the tokio::test macro, allowing us to directly .await in the test
function.
In places where we don't have an async runtime available from context
(like tvix-cli), we can pass one down explicitly.
Now that we don't provide a sync interface anymore, the (sync) FUSE
library now holds a pointer to a tokio runtime handle, and needs to at
least have 2 threads available when talking to a blob service (which is
why some of the tests now use the multi_thread flavor).
The FUSE tests got a bit more verbose, as we couldn't use the
setup_and_mount function accepting a callback anymore. We can hopefully
move some of the test fixture setup to rstest in the future to make this
less repetitive.
Co-Authored-By: Connor Brewster <cbrewster@hey.com>
Change-Id: Ia0501b606e32c852d0108de9c9016b21c94a3c05
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9329
Reviewed-by: Connor Brewster <cbrewster@hey.com>
Tested-by: BuildkiteCI
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
2023-09-13 14:20:21 +02:00
|
|
|
[[package]]
|
|
|
|
name = "backtrace"
|
|
|
|
version = "0.3.69"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837"
|
|
|
|
dependencies = [
|
|
|
|
"addr2line",
|
|
|
|
"cc",
|
|
|
|
"cfg-if",
|
|
|
|
"libc",
|
|
|
|
"miniz_oxide",
|
|
|
|
"object",
|
|
|
|
"rustc-demangle",
|
|
|
|
]
|
|
|
|
|
2022-11-13 00:23:14 +01:00
|
|
|
[[package]]
|
|
|
|
name = "base64"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.21.7"
|
2022-11-13 00:23:14 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
|
2022-11-13 00:23:14 +01:00
|
|
|
|
2024-07-20 20:15:42 +02:00
|
|
|
[[package]]
|
|
|
|
name = "base64"
|
|
|
|
version = "0.22.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
|
|
|
|
|
2023-11-19 21:21:24 +01:00
|
|
|
[[package]]
|
|
|
|
name = "base64ct"
|
|
|
|
version = "1.6.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b"
|
|
|
|
|
2024-03-19 11:12:03 +01:00
|
|
|
[[package]]
|
|
|
|
name = "bigtable_rs"
|
2024-07-01 09:48:23 +02:00
|
|
|
version = "0.2.10"
|
2024-08-28 18:35:08 +02:00
|
|
|
source = "git+https://github.com/liufuyang/bigtable_rs?rev=1818355a5373a5bc2c84287e3a4e3807154ac8ef#1818355a5373a5bc2c84287e3a4e3807154ac8ef"
|
2024-03-19 11:12:03 +01:00
|
|
|
dependencies = [
|
|
|
|
"gcp_auth",
|
2024-08-28 18:35:08 +02:00
|
|
|
"http",
|
|
|
|
"hyper-util",
|
2024-03-19 11:12:03 +01:00
|
|
|
"log",
|
2024-08-28 18:35:08 +02:00
|
|
|
"prost",
|
|
|
|
"prost-build",
|
|
|
|
"prost-types",
|
2024-03-19 11:12:03 +01:00
|
|
|
"prost-wkt",
|
|
|
|
"prost-wkt-types",
|
|
|
|
"serde",
|
|
|
|
"serde_with",
|
|
|
|
"thiserror",
|
|
|
|
"tokio",
|
2024-08-28 18:35:08 +02:00
|
|
|
"tonic",
|
|
|
|
"tonic-build",
|
2024-03-19 11:12:03 +01:00
|
|
|
"tower",
|
|
|
|
]
|
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "bitflags"
|
|
|
|
version = "1.3.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
|
|
|
|
|
2023-11-05 19:18:01 +01:00
|
|
|
[[package]]
|
|
|
|
name = "bitflags"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "2.6.0"
|
2023-11-05 19:18:01 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"
|
2023-11-05 19:18:01 +01:00
|
|
|
|
2022-12-06 14:47:02 +01:00
|
|
|
[[package]]
|
|
|
|
name = "blake3"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "1.5.4"
|
2022-12-06 14:47:02 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "d82033247fd8e890df8f740e407ad4d038debb9eb1f40533fffb32e7d17dc6f7"
|
2022-12-06 14:47:02 +01:00
|
|
|
dependencies = [
|
|
|
|
"arrayref",
|
|
|
|
"arrayvec",
|
|
|
|
"cc",
|
|
|
|
"cfg-if",
|
|
|
|
"constant_time_eq",
|
2024-03-03 13:40:54 +01:00
|
|
|
"digest",
|
2024-08-28 23:42:29 +02:00
|
|
|
"rayon-core",
|
2022-12-06 14:47:02 +01:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "block-buffer"
|
2023-03-16 13:31:28 +01:00
|
|
|
version = "0.10.4"
|
2022-12-06 14:47:02 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-03-16 13:31:28 +01:00
|
|
|
checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
|
2022-12-06 14:47:02 +01:00
|
|
|
dependencies = [
|
2023-09-22 11:59:15 +02:00
|
|
|
"generic-array",
|
2022-12-06 14:47:02 +01:00
|
|
|
]
|
|
|
|
|
2024-03-19 11:12:03 +01:00
|
|
|
[[package]]
|
|
|
|
name = "blocking"
|
|
|
|
version = "1.5.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "6a37913e8dc4ddcc604f0c6d3bf2887c995153af3611de9e23c352b44c1b9118"
|
|
|
|
dependencies = [
|
|
|
|
"async-channel",
|
|
|
|
"async-lock 3.3.0",
|
|
|
|
"async-task",
|
|
|
|
"fastrand",
|
|
|
|
"futures-io",
|
|
|
|
"futures-lite",
|
|
|
|
"piper",
|
|
|
|
"tracing",
|
|
|
|
]
|
|
|
|
|
2023-07-29 21:14:44 +02:00
|
|
|
[[package]]
|
|
|
|
name = "bstr"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "1.10.0"
|
2023-07-29 21:14:44 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c"
|
2023-07-29 21:14:44 +02:00
|
|
|
dependencies = [
|
|
|
|
"memchr",
|
2024-08-28 23:42:29 +02:00
|
|
|
"regex-automata 0.4.7",
|
2023-07-29 21:14:44 +02:00
|
|
|
"serde",
|
|
|
|
]
|
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "bumpalo"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "3.14.0"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec"
|
2022-08-25 17:04:07 +02:00
|
|
|
|
2022-09-17 19:52:02 +02:00
|
|
|
[[package]]
|
|
|
|
name = "byteorder"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "1.5.0"
|
2022-09-17 19:52:02 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
|
2022-09-17 19:52:02 +02:00
|
|
|
|
2022-12-06 14:47:02 +01:00
|
|
|
[[package]]
|
|
|
|
name = "bytes"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "1.7.1"
|
2022-12-06 14:47:02 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50"
|
2022-12-06 14:47:02 +01:00
|
|
|
|
2024-02-23 20:42:52 +01:00
|
|
|
[[package]]
|
|
|
|
name = "bzip2"
|
|
|
|
version = "0.4.4"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8"
|
|
|
|
dependencies = [
|
|
|
|
"bzip2-sys",
|
|
|
|
"libc",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "bzip2-sys"
|
|
|
|
version = "0.1.11+1.0.8"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc"
|
|
|
|
dependencies = [
|
|
|
|
"cc",
|
|
|
|
"libc",
|
|
|
|
"pkg-config",
|
|
|
|
]
|
|
|
|
|
2023-09-16 17:20:34 +02:00
|
|
|
[[package]]
|
|
|
|
name = "caps"
|
|
|
|
version = "0.5.5"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "190baaad529bcfbde9e1a19022c42781bdb6ff9de25721abdb8fd98c0807730b"
|
|
|
|
dependencies = [
|
|
|
|
"libc",
|
|
|
|
"thiserror",
|
|
|
|
]
|
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "cast"
|
|
|
|
version = "0.3.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
|
|
|
|
|
2022-08-11 22:52:55 +02:00
|
|
|
[[package]]
|
|
|
|
name = "cc"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "1.1.15"
|
2022-08-11 22:52:55 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "57b6a275aa2903740dc87da01c62040406b8812552e97129a63ea8850a17c6e6"
|
2022-12-29 21:39:28 +01:00
|
|
|
dependencies = [
|
|
|
|
"jobserver",
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
"libc",
|
2024-08-28 23:42:29 +02:00
|
|
|
"shlex",
|
2022-12-29 21:39:28 +01:00
|
|
|
]
|
2022-08-11 22:52:55 +02:00
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "cfg-if"
|
|
|
|
version = "1.0.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
|
|
|
|
2024-03-01 17:00:53 +01:00
|
|
|
[[package]]
|
|
|
|
name = "chrono"
|
|
|
|
version = "0.4.34"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "5bc015644b92d5890fab7489e49d21f879d5c990186827d42ec511919404f38b"
|
|
|
|
dependencies = [
|
|
|
|
"android-tzdata",
|
|
|
|
"iana-time-zone",
|
2024-03-19 11:12:03 +01:00
|
|
|
"js-sys",
|
2024-03-01 17:00:53 +01:00
|
|
|
"num-traits",
|
|
|
|
"serde",
|
2024-03-19 11:12:03 +01:00
|
|
|
"wasm-bindgen",
|
2024-08-28 23:42:29 +02:00
|
|
|
"windows-targets 0.52.6",
|
2024-03-01 17:00:53 +01:00
|
|
|
]
|
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
2022-12-16 12:54:22 +01:00
|
|
|
name = "ciborium"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.2.1"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "effd91f6c78e5a4ace8a5d3c0b6bfaec9e2baaef55f3efc00e45fb2e477ee926"
|
2022-08-25 17:04:07 +02:00
|
|
|
dependencies = [
|
2022-12-16 12:54:22 +01:00
|
|
|
"ciborium-io",
|
|
|
|
"ciborium-ll",
|
|
|
|
"serde",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "ciborium-io"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.2.1"
|
2022-12-16 12:54:22 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "cdf919175532b369853f5d5e20b26b43112613fd6fe7aee757e35f7a44642656"
|
2022-12-16 12:54:22 +01:00
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "ciborium-ll"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.2.1"
|
2022-12-16 12:54:22 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "defaa24ecc093c77630e6c15e17c51f5e187bf35ee514f4e2d67baaa96dae22b"
|
2022-12-16 12:54:22 +01:00
|
|
|
dependencies = [
|
|
|
|
"ciborium-io",
|
|
|
|
"half",
|
2022-08-25 17:04:07 +02:00
|
|
|
]
|
|
|
|
|
2022-12-16 12:54:22 +01:00
|
|
|
[[package]]
|
|
|
|
name = "clap"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "4.5.16"
|
2022-12-16 12:54:22 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "ed6719fffa43d0d87e5fd8caeab59be1554fb028cd30edc88fc4369b17971019"
|
2022-12-16 12:54:22 +01:00
|
|
|
dependencies = [
|
2023-05-01 16:29:20 +02:00
|
|
|
"clap_builder",
|
2022-12-16 12:54:22 +01:00
|
|
|
"clap_derive",
|
2023-05-01 16:29:20 +02:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "clap_builder"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "4.5.15"
|
2023-05-01 16:29:20 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "216aec2b177652e3846684cbfe25c9964d18ec45234f0f5da5157b207ed1aab6"
|
2023-05-01 16:29:20 +02:00
|
|
|
dependencies = [
|
|
|
|
"anstream",
|
|
|
|
"anstyle",
|
2023-12-09 18:26:40 +01:00
|
|
|
"clap_lex",
|
2024-08-28 23:42:29 +02:00
|
|
|
"strsim 0.11.1",
|
2022-09-18 21:59:59 +02:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "clap_derive"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "4.5.13"
|
2022-09-18 21:59:59 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0"
|
2022-09-18 21:59:59 +02:00
|
|
|
dependencies = [
|
2024-08-28 23:42:29 +02:00
|
|
|
"heck 0.5.0",
|
2024-04-19 15:07:14 +02:00
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
2024-08-28 23:42:29 +02:00
|
|
|
"syn 2.0.76",
|
2022-09-18 21:59:59 +02:00
|
|
|
]
|
|
|
|
|
2022-12-16 12:54:22 +01:00
|
|
|
[[package]]
|
|
|
|
name = "clap_lex"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "0.7.2"
|
2022-12-16 12:54:22 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97"
|
2022-12-16 12:54:22 +01:00
|
|
|
|
2022-08-11 22:52:55 +02:00
|
|
|
[[package]]
|
|
|
|
name = "clipboard-win"
|
2023-02-01 18:54:30 +01:00
|
|
|
version = "4.5.0"
|
2022-08-11 22:52:55 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-02-01 18:54:30 +01:00
|
|
|
checksum = "7191c27c2357d9b7ef96baac1773290d4ca63b24205b82a3fd8a0637afcf0362"
|
2022-08-11 22:52:55 +02:00
|
|
|
dependencies = [
|
|
|
|
"error-code",
|
|
|
|
"str-buf",
|
|
|
|
"winapi",
|
|
|
|
]
|
|
|
|
|
2022-09-01 14:52:48 +02:00
|
|
|
[[package]]
|
|
|
|
name = "codemap"
|
|
|
|
version = "0.1.3"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "b9e769b5c8c8283982a987c6e948e540254f1058d5a74b8794914d4ef5fc2a24"
|
|
|
|
|
2022-09-11 23:34:25 +02:00
|
|
|
[[package]]
|
|
|
|
name = "codemap-diagnostic"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.1.2"
|
2022-09-11 23:34:25 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "cc20770be05b566a963bf91505e60412c4a2d016d1ef95c5512823bb085a8122"
|
2022-09-11 23:34:25 +02:00
|
|
|
dependencies = [
|
|
|
|
"codemap",
|
|
|
|
"termcolor",
|
|
|
|
]
|
|
|
|
|
2023-05-01 16:29:20 +02:00
|
|
|
[[package]]
|
|
|
|
name = "colorchoice"
|
2024-08-28 23:54:46 +02:00
|
|
|
version = "1.0.2"
|
2023-05-01 16:29:20 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:54:46 +02:00
|
|
|
checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0"
|
2023-05-01 16:29:20 +02:00
|
|
|
|
2024-03-19 11:12:03 +01:00
|
|
|
[[package]]
|
|
|
|
name = "concurrent-queue"
|
|
|
|
version = "2.4.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "d16048cd947b08fa32c24458a22f5dc5e835264f689f4f5653210c69fd107363"
|
|
|
|
dependencies = [
|
|
|
|
"crossbeam-utils",
|
|
|
|
]
|
|
|
|
|
2024-04-17 18:44:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "console"
|
|
|
|
version = "0.15.8"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb"
|
|
|
|
dependencies = [
|
|
|
|
"encode_unicode",
|
|
|
|
"lazy_static",
|
|
|
|
"libc",
|
|
|
|
"unicode-width",
|
|
|
|
"windows-sys 0.52.0",
|
|
|
|
]
|
|
|
|
|
2023-11-19 21:21:24 +01:00
|
|
|
[[package]]
|
|
|
|
name = "const-oid"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.9.6"
|
2023-11-19 21:21:24 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8"
|
2023-11-19 21:21:24 +01:00
|
|
|
|
2022-12-06 14:47:02 +01:00
|
|
|
[[package]]
|
|
|
|
name = "constant_time_eq"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.3.0"
|
2022-12-06 14:47:02 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2"
|
2022-12-06 14:47:02 +01:00
|
|
|
|
2023-10-12 20:38:28 +02:00
|
|
|
[[package]]
|
|
|
|
name = "core-foundation"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.9.4"
|
2023-10-12 20:38:28 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f"
|
2023-10-12 20:38:28 +02:00
|
|
|
dependencies = [
|
|
|
|
"core-foundation-sys",
|
|
|
|
"libc",
|
|
|
|
]
|
|
|
|
|
2023-09-16 17:20:34 +02:00
|
|
|
[[package]]
|
|
|
|
name = "core-foundation-sys"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.8.6"
|
2023-09-16 17:20:34 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f"
|
2023-09-16 17:20:34 +02:00
|
|
|
|
2023-02-13 16:47:22 +01:00
|
|
|
[[package]]
|
|
|
|
name = "count-write"
|
|
|
|
version = "0.1.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "ced507ab50aa0123e2c54db8b5f44fdfee04b1c93744d69e924307945fe57a85"
|
|
|
|
|
2022-08-04 15:44:49 +02:00
|
|
|
[[package]]
|
|
|
|
name = "countme"
|
2022-08-16 22:43:45 +02:00
|
|
|
version = "3.0.1"
|
2022-08-04 15:44:49 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-08-16 22:43:45 +02:00
|
|
|
checksum = "7704b5fdd17b18ae31c4c1da5a2e0305a2bf17b5249300a9ee9ed7b72114c636"
|
2022-08-04 15:44:49 +02:00
|
|
|
|
2023-01-02 16:09:18 +01:00
|
|
|
[[package]]
|
|
|
|
name = "cpufeatures"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.2.12"
|
2023-01-02 16:09:18 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504"
|
2023-01-02 16:09:18 +01:00
|
|
|
dependencies = [
|
|
|
|
"libc",
|
|
|
|
]
|
|
|
|
|
2022-12-29 21:39:28 +01:00
|
|
|
[[package]]
|
|
|
|
name = "crc32fast"
|
|
|
|
version = "1.3.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d"
|
|
|
|
dependencies = [
|
|
|
|
"cfg-if",
|
|
|
|
]
|
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "criterion"
|
2023-12-09 18:26:40 +01:00
|
|
|
version = "0.5.1"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-12-09 18:26:40 +01:00
|
|
|
checksum = "f2b12d017a929603d80db1831cd3a24082f8137ce19c69e6447f54f5fc8d692f"
|
2022-08-25 17:04:07 +02:00
|
|
|
dependencies = [
|
2022-12-16 12:54:22 +01:00
|
|
|
"anes",
|
2022-08-25 17:04:07 +02:00
|
|
|
"cast",
|
2022-12-16 12:54:22 +01:00
|
|
|
"ciborium",
|
2023-12-09 18:26:40 +01:00
|
|
|
"clap",
|
2022-08-25 17:04:07 +02:00
|
|
|
"criterion-plot",
|
2023-12-09 18:26:40 +01:00
|
|
|
"is-terminal",
|
2024-01-06 00:33:36 +01:00
|
|
|
"itertools 0.10.5",
|
2022-08-25 17:04:07 +02:00
|
|
|
"num-traits",
|
2023-12-09 18:26:40 +01:00
|
|
|
"once_cell",
|
2022-08-25 17:04:07 +02:00
|
|
|
"oorandom",
|
|
|
|
"plotters",
|
|
|
|
"rayon",
|
|
|
|
"regex",
|
|
|
|
"serde",
|
|
|
|
"serde_derive",
|
|
|
|
"serde_json",
|
|
|
|
"tinytemplate",
|
|
|
|
"walkdir",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "criterion-plot"
|
2022-12-16 12:54:22 +01:00
|
|
|
version = "0.5.0"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-12-16 12:54:22 +01:00
|
|
|
checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1"
|
2022-08-25 17:04:07 +02:00
|
|
|
dependencies = [
|
|
|
|
"cast",
|
2024-01-06 00:33:36 +01:00
|
|
|
"itertools 0.10.5",
|
2022-08-25 17:04:07 +02:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "crossbeam-channel"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.5.11"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "176dc175b78f56c0f321911d9c8eb2b77a78a4860b9c19db83835fea1a46649b"
|
2022-08-25 17:04:07 +02:00
|
|
|
dependencies = [
|
|
|
|
"crossbeam-utils",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "crossbeam-deque"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.8.5"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d"
|
2022-08-25 17:04:07 +02:00
|
|
|
dependencies = [
|
|
|
|
"crossbeam-epoch",
|
|
|
|
"crossbeam-utils",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "crossbeam-epoch"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.9.18"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
|
2022-08-25 17:04:07 +02:00
|
|
|
dependencies = [
|
|
|
|
"crossbeam-utils",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "crossbeam-utils"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.8.19"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345"
|
2022-08-25 17:04:07 +02:00
|
|
|
|
2022-12-06 14:47:02 +01:00
|
|
|
[[package]]
|
|
|
|
name = "crypto-common"
|
|
|
|
version = "0.1.6"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
|
|
|
|
dependencies = [
|
2023-09-22 11:59:15 +02:00
|
|
|
"generic-array",
|
2022-12-06 14:47:02 +01:00
|
|
|
"typenum",
|
|
|
|
]
|
|
|
|
|
2023-11-19 21:21:24 +01:00
|
|
|
[[package]]
|
|
|
|
name = "curve25519-dalek"
|
2024-07-20 11:25:04 +02:00
|
|
|
version = "4.1.1"
|
2023-11-19 21:21:24 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-07-20 11:25:04 +02:00
|
|
|
checksum = "e89b8c6a2e4b1f45971ad09761aafb85514a84744b67a95e32c3cc1352d1f65c"
|
2023-11-19 21:21:24 +01:00
|
|
|
dependencies = [
|
|
|
|
"cfg-if",
|
|
|
|
"cpufeatures",
|
|
|
|
"curve25519-dalek-derive",
|
|
|
|
"digest",
|
|
|
|
"fiat-crypto",
|
2024-07-20 11:25:04 +02:00
|
|
|
"platforms",
|
2023-11-19 21:21:24 +01:00
|
|
|
"rustc_version",
|
|
|
|
"subtle",
|
|
|
|
"zeroize",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "curve25519-dalek-derive"
|
|
|
|
version = "0.1.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3"
|
|
|
|
dependencies = [
|
2024-04-19 15:07:14 +02:00
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
2024-08-28 23:42:29 +02:00
|
|
|
"syn 2.0.76",
|
2023-11-19 21:21:24 +01:00
|
|
|
]
|
|
|
|
|
2024-03-19 11:12:03 +01:00
|
|
|
[[package]]
|
|
|
|
name = "darling"
|
|
|
|
version = "0.20.8"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "54e36fcd13ed84ffdfda6f5be89b31287cbb80c439841fe69e04841435464391"
|
|
|
|
dependencies = [
|
|
|
|
"darling_core",
|
|
|
|
"darling_macro",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "darling_core"
|
|
|
|
version = "0.20.8"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "9c2cf1c23a687a1feeb728783b993c4e1ad83d99f351801977dd809b48d0a70f"
|
|
|
|
dependencies = [
|
|
|
|
"fnv",
|
|
|
|
"ident_case",
|
2024-04-19 15:07:14 +02:00
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
2024-08-28 23:42:29 +02:00
|
|
|
"strsim 0.10.0",
|
|
|
|
"syn 2.0.76",
|
2024-03-19 11:12:03 +01:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "darling_macro"
|
|
|
|
version = "0.20.8"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "a668eda54683121533a393014d8692171709ff57a7d61f187b6e782719f8933f"
|
|
|
|
dependencies = [
|
|
|
|
"darling_core",
|
2024-04-19 15:07:14 +02:00
|
|
|
"quote",
|
2024-08-28 23:42:29 +02:00
|
|
|
"syn 2.0.76",
|
2024-03-19 11:12:03 +01:00
|
|
|
]
|
|
|
|
|
2022-12-29 22:47:02 +01:00
|
|
|
[[package]]
|
|
|
|
name = "data-encoding"
|
2024-06-30 18:54:27 +02:00
|
|
|
version = "2.6.0"
|
2022-12-29 22:47:02 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-06-30 18:54:27 +02:00
|
|
|
checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2"
|
2022-12-29 22:47:02 +01:00
|
|
|
|
2023-11-19 21:21:24 +01:00
|
|
|
[[package]]
|
|
|
|
name = "der"
|
|
|
|
version = "0.7.8"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "fffa369a668c8af7dbf8b5e56c9f744fbd399949ed171606040001947de40b1c"
|
|
|
|
dependencies = [
|
|
|
|
"const-oid",
|
|
|
|
"zeroize",
|
|
|
|
]
|
|
|
|
|
2024-03-19 11:12:03 +01:00
|
|
|
[[package]]
|
|
|
|
name = "deranged"
|
|
|
|
version = "0.3.11"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4"
|
|
|
|
dependencies = [
|
|
|
|
"powerfmt",
|
|
|
|
"serde",
|
|
|
|
]
|
|
|
|
|
2022-08-16 14:33:50 +02:00
|
|
|
[[package]]
|
|
|
|
name = "diff"
|
|
|
|
version = "0.1.13"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8"
|
|
|
|
|
2022-12-06 14:47:02 +01:00
|
|
|
[[package]]
|
|
|
|
name = "digest"
|
2024-01-02 13:17:02 +01:00
|
|
|
version = "0.10.7"
|
2022-12-06 14:47:02 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-01-02 13:17:02 +01:00
|
|
|
checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
|
2022-12-06 14:47:02 +01:00
|
|
|
dependencies = [
|
2023-09-22 11:59:15 +02:00
|
|
|
"block-buffer",
|
2022-12-06 14:47:02 +01:00
|
|
|
"crypto-common",
|
2024-03-03 13:40:54 +01:00
|
|
|
"subtle",
|
2022-12-06 14:47:02 +01:00
|
|
|
]
|
|
|
|
|
2022-08-11 23:26:05 +02:00
|
|
|
[[package]]
|
|
|
|
name = "dirs"
|
|
|
|
version = "4.0.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059"
|
|
|
|
dependencies = [
|
|
|
|
"dirs-sys",
|
|
|
|
]
|
|
|
|
|
2022-08-11 22:52:55 +02:00
|
|
|
[[package]]
|
|
|
|
name = "dirs-next"
|
|
|
|
version = "2.0.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1"
|
|
|
|
dependencies = [
|
|
|
|
"cfg-if",
|
|
|
|
"dirs-sys-next",
|
|
|
|
]
|
|
|
|
|
2022-08-11 23:26:05 +02:00
|
|
|
[[package]]
|
|
|
|
name = "dirs-sys"
|
|
|
|
version = "0.3.7"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6"
|
|
|
|
dependencies = [
|
|
|
|
"libc",
|
|
|
|
"redox_users",
|
|
|
|
"winapi",
|
|
|
|
]
|
|
|
|
|
2022-08-11 22:52:55 +02:00
|
|
|
[[package]]
|
|
|
|
name = "dirs-sys-next"
|
|
|
|
version = "0.1.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d"
|
|
|
|
dependencies = [
|
|
|
|
"libc",
|
|
|
|
"redox_users",
|
|
|
|
"winapi",
|
|
|
|
]
|
|
|
|
|
2024-07-06 15:00:46 +02:00
|
|
|
[[package]]
|
|
|
|
name = "dissimilar"
|
|
|
|
version = "1.0.9"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "59f8e79d1fbf76bdfbde321e902714bf6c49df88a7dda6fc682fc2979226962d"
|
|
|
|
|
2024-03-01 17:00:53 +01:00
|
|
|
[[package]]
|
|
|
|
name = "doc-comment"
|
|
|
|
version = "0.3.3"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10"
|
|
|
|
|
2023-09-23 02:45:01 +02:00
|
|
|
[[package]]
|
|
|
|
name = "document-features"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.2.8"
|
2023-09-23 02:45:01 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "ef5282ad69563b5fc40319526ba27e0e7363d552a896f0297d54f767717f9b95"
|
2023-09-23 02:45:01 +02:00
|
|
|
dependencies = [
|
|
|
|
"litrs",
|
|
|
|
]
|
|
|
|
|
2023-11-19 21:21:24 +01:00
|
|
|
[[package]]
|
|
|
|
name = "ed25519"
|
|
|
|
version = "2.2.3"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53"
|
|
|
|
dependencies = [
|
|
|
|
"pkcs8",
|
|
|
|
"signature",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "ed25519-dalek"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "2.1.1"
|
2023-11-19 21:21:24 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "4a3daa8e81a3963a60642bcc1f90a670680bd4a77535faa384e9d1c79d620871"
|
2023-11-19 21:21:24 +01:00
|
|
|
dependencies = [
|
|
|
|
"curve25519-dalek",
|
|
|
|
"ed25519",
|
|
|
|
"serde",
|
|
|
|
"sha2",
|
|
|
|
"subtle",
|
|
|
|
"zeroize",
|
|
|
|
]
|
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "either"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "1.9.0"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07"
|
2022-08-25 17:04:07 +02:00
|
|
|
|
2024-04-17 18:44:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "encode_unicode"
|
|
|
|
version = "0.3.6"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f"
|
|
|
|
|
2022-08-11 22:52:55 +02:00
|
|
|
[[package]]
|
|
|
|
name = "endian-type"
|
|
|
|
version = "0.1.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d"
|
|
|
|
|
2024-03-21 09:52:21 +01:00
|
|
|
[[package]]
|
|
|
|
name = "enum-primitive-derive"
|
|
|
|
version = "0.3.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "ba7795da175654fe16979af73f81f26a8ea27638d8d9823d317016888a63dc4c"
|
|
|
|
dependencies = [
|
|
|
|
"num-traits",
|
2024-04-19 15:07:14 +02:00
|
|
|
"quote",
|
2024-08-28 23:42:29 +02:00
|
|
|
"syn 2.0.76",
|
2024-03-21 09:52:21 +01:00
|
|
|
]
|
|
|
|
|
2023-03-01 00:37:08 +01:00
|
|
|
[[package]]
|
|
|
|
name = "equivalent"
|
|
|
|
version = "1.0.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
|
|
|
|
|
2024-03-19 11:12:03 +01:00
|
|
|
[[package]]
|
|
|
|
name = "erased-serde"
|
2024-06-17 01:10:55 +02:00
|
|
|
version = "0.4.5"
|
2024-03-19 11:12:03 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-06-17 01:10:55 +02:00
|
|
|
checksum = "24e2389d65ab4fab27dc2a5de7b191e1f6617d1f1c8855c0dc569c94a4cbb18d"
|
2024-03-19 11:12:03 +01:00
|
|
|
dependencies = [
|
|
|
|
"serde",
|
2024-06-17 01:10:55 +02:00
|
|
|
"typeid",
|
2024-03-19 11:12:03 +01:00
|
|
|
]
|
|
|
|
|
2022-08-11 22:52:55 +02:00
|
|
|
[[package]]
|
|
|
|
name = "errno"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.3.8"
|
2022-08-11 22:52:55 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245"
|
2022-08-11 22:52:55 +02:00
|
|
|
dependencies = [
|
|
|
|
"libc",
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
"windows-sys 0.52.0",
|
2022-08-11 22:52:55 +02:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "error-code"
|
|
|
|
version = "2.3.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "64f18991e7bf11e7ffee451b5318b5c1a73c52d0d0ada6e5a3017c8c1ced6a21"
|
|
|
|
dependencies = [
|
|
|
|
"libc",
|
|
|
|
"str-buf",
|
|
|
|
]
|
|
|
|
|
2024-03-19 11:12:03 +01:00
|
|
|
[[package]]
|
|
|
|
name = "event-listener"
|
|
|
|
version = "2.5.3"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0"
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "event-listener"
|
|
|
|
version = "4.0.3"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "67b215c49b2b248c855fb73579eb1f4f26c38ffdc12973e20e07b91d78d5646e"
|
|
|
|
dependencies = [
|
|
|
|
"concurrent-queue",
|
|
|
|
"parking",
|
|
|
|
"pin-project-lite",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "event-listener"
|
|
|
|
version = "5.2.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "2b5fb89194fa3cad959b833185b3063ba881dbfc7030680b314250779fb4cc91"
|
|
|
|
dependencies = [
|
|
|
|
"concurrent-queue",
|
|
|
|
"parking",
|
|
|
|
"pin-project-lite",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "event-listener-strategy"
|
|
|
|
version = "0.4.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3"
|
|
|
|
dependencies = [
|
|
|
|
"event-listener 4.0.3",
|
|
|
|
"pin-project-lite",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "event-listener-strategy"
|
|
|
|
version = "0.5.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "feedafcaa9b749175d5ac357452a9d41ea2911da598fde46ce1fe02c37751291"
|
|
|
|
dependencies = [
|
|
|
|
"event-listener 5.2.0",
|
|
|
|
"pin-project-lite",
|
|
|
|
]
|
|
|
|
|
2024-07-06 15:00:46 +02:00
|
|
|
[[package]]
|
|
|
|
name = "expect-test"
|
|
|
|
version = "1.5.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "9e0be0a561335815e06dab7c62e50353134c796e7a6155402a64bcff66b6a5e0"
|
|
|
|
dependencies = [
|
|
|
|
"dissimilar",
|
|
|
|
"once_cell",
|
|
|
|
]
|
|
|
|
|
2024-03-01 17:00:53 +01:00
|
|
|
[[package]]
|
|
|
|
name = "fastcdc"
|
|
|
|
version = "3.1.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "a71061d097bfa9a5a4d2efdec57990d9a88745020b365191d37e48541a1628f2"
|
|
|
|
dependencies = [
|
|
|
|
"async-stream",
|
|
|
|
"tokio",
|
|
|
|
"tokio-stream",
|
|
|
|
]
|
|
|
|
|
2022-09-17 19:52:02 +02:00
|
|
|
[[package]]
|
|
|
|
name = "fastrand"
|
2023-12-13 10:34:17 +01:00
|
|
|
version = "2.0.1"
|
2022-09-17 19:52:02 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-12-13 10:34:17 +01:00
|
|
|
checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5"
|
2022-09-17 19:52:02 +02:00
|
|
|
|
2022-08-11 22:52:55 +02:00
|
|
|
[[package]]
|
|
|
|
name = "fd-lock"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "3.0.13"
|
2022-08-11 22:52:55 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "ef033ed5e9bad94e55838ca0ca906db0e043f517adda0c8b79c7a8c66c93c1b5"
|
2022-08-11 22:52:55 +02:00
|
|
|
dependencies = [
|
|
|
|
"cfg-if",
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
"rustix",
|
2023-05-01 16:29:20 +02:00
|
|
|
"windows-sys 0.48.0",
|
2022-08-11 22:52:55 +02:00
|
|
|
]
|
|
|
|
|
2023-11-19 21:21:24 +01:00
|
|
|
[[package]]
|
|
|
|
name = "fiat-crypto"
|
|
|
|
version = "0.2.5"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "27573eac26f4dd11e2b1916c3fe1baa56407c83c71a773a8ba17ec0bca03b6b7"
|
|
|
|
|
2024-02-23 20:42:52 +01:00
|
|
|
[[package]]
|
|
|
|
name = "filetime"
|
|
|
|
version = "0.2.23"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd"
|
|
|
|
dependencies = [
|
|
|
|
"cfg-if",
|
|
|
|
"libc",
|
|
|
|
"redox_syscall 0.4.1",
|
|
|
|
"windows-sys 0.52.0",
|
|
|
|
]
|
|
|
|
|
2022-12-06 14:47:02 +01:00
|
|
|
[[package]]
|
|
|
|
name = "fixedbitset"
|
|
|
|
version = "0.4.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80"
|
|
|
|
|
2024-02-23 20:42:52 +01:00
|
|
|
[[package]]
|
|
|
|
name = "flate2"
|
|
|
|
version = "1.0.28"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e"
|
|
|
|
dependencies = [
|
|
|
|
"crc32fast",
|
|
|
|
"miniz_oxide",
|
|
|
|
]
|
|
|
|
|
2022-11-13 00:23:14 +01:00
|
|
|
[[package]]
|
|
|
|
name = "fnv"
|
|
|
|
version = "1.0.7"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
|
|
|
|
|
2023-06-09 18:07:00 +02:00
|
|
|
[[package]]
|
|
|
|
name = "form_urlencoded"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "1.2.1"
|
2023-06-09 18:07:00 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456"
|
2023-06-09 18:07:00 +02:00
|
|
|
dependencies = [
|
|
|
|
"percent-encoding",
|
|
|
|
]
|
|
|
|
|
2022-12-29 21:39:28 +01:00
|
|
|
[[package]]
|
|
|
|
name = "fs2"
|
|
|
|
version = "0.4.3"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213"
|
|
|
|
dependencies = [
|
|
|
|
"libc",
|
|
|
|
"winapi",
|
|
|
|
]
|
|
|
|
|
2023-05-28 09:22:08 +02:00
|
|
|
[[package]]
|
2023-09-16 17:20:34 +02:00
|
|
|
name = "fuse-backend-rs"
|
2023-12-16 22:26:23 +01:00
|
|
|
version = "0.11.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "2e5a63a89f40ec26a0a1434e89de3f4ee939a920eae15d641053ee09ee6ed44b"
|
2023-05-28 09:22:08 +02:00
|
|
|
dependencies = [
|
2023-09-16 17:20:34 +02:00
|
|
|
"arc-swap",
|
2023-11-05 19:18:01 +01:00
|
|
|
"bitflags 1.3.2",
|
2023-09-16 17:20:34 +02:00
|
|
|
"caps",
|
|
|
|
"core-foundation-sys",
|
|
|
|
"lazy_static",
|
2023-05-28 09:22:08 +02:00
|
|
|
"libc",
|
|
|
|
"log",
|
2024-08-28 23:42:29 +02:00
|
|
|
"mio 0.8.11",
|
2023-09-16 17:20:34 +02:00
|
|
|
"nix 0.24.3",
|
2023-09-16 20:58:52 +02:00
|
|
|
"vhost",
|
|
|
|
"virtio-queue",
|
2023-09-16 17:20:34 +02:00
|
|
|
"vm-memory",
|
|
|
|
"vmm-sys-util",
|
2023-05-28 09:22:08 +02:00
|
|
|
]
|
|
|
|
|
2023-01-18 20:46:33 +01:00
|
|
|
[[package]]
|
|
|
|
name = "futures"
|
2023-12-24 21:56:48 +01:00
|
|
|
version = "0.3.30"
|
2023-01-18 20:46:33 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-12-24 21:56:48 +01:00
|
|
|
checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0"
|
2023-01-18 20:46:33 +01:00
|
|
|
dependencies = [
|
|
|
|
"futures-channel",
|
|
|
|
"futures-core",
|
|
|
|
"futures-executor",
|
|
|
|
"futures-io",
|
|
|
|
"futures-sink",
|
|
|
|
"futures-task",
|
|
|
|
"futures-util",
|
|
|
|
]
|
|
|
|
|
2022-11-13 00:23:14 +01:00
|
|
|
[[package]]
|
|
|
|
name = "futures-channel"
|
2023-12-24 21:56:48 +01:00
|
|
|
version = "0.3.30"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78"
|
2022-11-13 00:23:14 +01:00
|
|
|
dependencies = [
|
|
|
|
"futures-core",
|
2023-01-18 20:46:33 +01:00
|
|
|
"futures-sink",
|
2022-11-13 00:23:14 +01:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "futures-core"
|
2023-12-24 21:56:48 +01:00
|
|
|
version = "0.3.30"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d"
|
2022-11-13 00:23:14 +01:00
|
|
|
|
2023-01-18 20:46:33 +01:00
|
|
|
[[package]]
|
|
|
|
name = "futures-executor"
|
2023-12-24 21:56:48 +01:00
|
|
|
version = "0.3.30"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d"
|
2023-01-18 20:46:33 +01:00
|
|
|
dependencies = [
|
|
|
|
"futures-core",
|
|
|
|
"futures-task",
|
|
|
|
"futures-util",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "futures-io"
|
2023-12-24 21:56:48 +01:00
|
|
|
version = "0.3.30"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1"
|
2023-01-18 20:46:33 +01:00
|
|
|
|
2024-03-19 11:12:03 +01:00
|
|
|
[[package]]
|
|
|
|
name = "futures-lite"
|
|
|
|
version = "2.3.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5"
|
|
|
|
dependencies = [
|
|
|
|
"fastrand",
|
|
|
|
"futures-core",
|
|
|
|
"futures-io",
|
|
|
|
"parking",
|
|
|
|
"pin-project-lite",
|
|
|
|
]
|
|
|
|
|
2023-01-18 20:46:33 +01:00
|
|
|
[[package]]
|
|
|
|
name = "futures-macro"
|
2023-12-24 21:56:48 +01:00
|
|
|
version = "0.3.30"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
|
2023-01-18 20:46:33 +01:00
|
|
|
dependencies = [
|
2024-04-19 15:07:14 +02:00
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
2024-08-28 23:42:29 +02:00
|
|
|
"syn 2.0.76",
|
2023-01-18 20:46:33 +01:00
|
|
|
]
|
|
|
|
|
2022-11-13 00:23:14 +01:00
|
|
|
[[package]]
|
|
|
|
name = "futures-sink"
|
2023-12-24 21:56:48 +01:00
|
|
|
version = "0.3.30"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5"
|
2022-11-13 00:23:14 +01:00
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "futures-task"
|
2023-12-24 21:56:48 +01:00
|
|
|
version = "0.3.30"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004"
|
2022-11-13 00:23:14 +01:00
|
|
|
|
2024-01-14 16:31:04 +01:00
|
|
|
[[package]]
|
|
|
|
name = "futures-timer"
|
|
|
|
version = "3.0.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c"
|
|
|
|
|
2022-11-13 00:23:14 +01:00
|
|
|
[[package]]
|
|
|
|
name = "futures-util"
|
2023-12-24 21:56:48 +01:00
|
|
|
version = "0.3.30"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48"
|
2022-11-13 00:23:14 +01:00
|
|
|
dependencies = [
|
2023-01-18 20:46:33 +01:00
|
|
|
"futures-channel",
|
2022-11-13 00:23:14 +01:00
|
|
|
"futures-core",
|
2023-01-18 20:46:33 +01:00
|
|
|
"futures-io",
|
|
|
|
"futures-macro",
|
|
|
|
"futures-sink",
|
2022-11-13 00:23:14 +01:00
|
|
|
"futures-task",
|
2023-01-18 20:46:33 +01:00
|
|
|
"memchr",
|
2022-11-13 00:23:14 +01:00
|
|
|
"pin-project-lite",
|
|
|
|
"pin-utils",
|
2023-01-18 20:46:33 +01:00
|
|
|
"slab",
|
2022-11-13 00:23:14 +01:00
|
|
|
]
|
|
|
|
|
2022-12-29 21:39:28 +01:00
|
|
|
[[package]]
|
|
|
|
name = "fxhash"
|
|
|
|
version = "0.2.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c"
|
|
|
|
dependencies = [
|
|
|
|
"byteorder",
|
|
|
|
]
|
|
|
|
|
2024-03-19 11:12:03 +01:00
|
|
|
[[package]]
|
|
|
|
name = "gcp_auth"
|
2024-08-28 18:35:08 +02:00
|
|
|
version = "0.12.2"
|
2024-03-19 11:12:03 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 18:35:08 +02:00
|
|
|
checksum = "536c79e79dde296a800738474691e97031769bed9b54e6dd0401b169d35d693d"
|
2024-03-19 11:12:03 +01:00
|
|
|
dependencies = [
|
|
|
|
"async-trait",
|
2024-08-28 18:35:08 +02:00
|
|
|
"base64 0.22.1",
|
|
|
|
"bytes",
|
2024-03-19 11:12:03 +01:00
|
|
|
"chrono",
|
|
|
|
"home",
|
2024-08-28 18:35:08 +02:00
|
|
|
"http",
|
|
|
|
"http-body-util",
|
|
|
|
"hyper",
|
|
|
|
"hyper-rustls",
|
|
|
|
"hyper-util",
|
2024-03-19 11:12:03 +01:00
|
|
|
"ring",
|
2024-08-28 18:35:08 +02:00
|
|
|
"rustls-pemfile",
|
2024-03-19 11:12:03 +01:00
|
|
|
"serde",
|
|
|
|
"serde_json",
|
|
|
|
"thiserror",
|
|
|
|
"tokio",
|
|
|
|
"tracing",
|
|
|
|
"tracing-futures",
|
|
|
|
"url",
|
|
|
|
]
|
|
|
|
|
2023-02-26 17:00:25 +01:00
|
|
|
[[package]]
|
|
|
|
name = "genawaiter"
|
|
|
|
version = "0.99.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "c86bd0361bcbde39b13475e6e36cb24c329964aa2611be285289d1e4b751c1a0"
|
|
|
|
dependencies = [
|
|
|
|
"genawaiter-macro",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "genawaiter-macro"
|
|
|
|
version = "0.99.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "0b32dfe1fdfc0bbde1f22a5da25355514b5e450c33a6af6770884c8750aedfbc"
|
|
|
|
|
2024-06-14 13:10:57 +02:00
|
|
|
[[package]]
|
|
|
|
name = "generator"
|
|
|
|
version = "0.8.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "186014d53bc231d0090ef8d6f03e0920c54d85a5ed22f4f2f74315ec56cf83fb"
|
|
|
|
dependencies = [
|
|
|
|
"cc",
|
|
|
|
"cfg-if",
|
|
|
|
"libc",
|
|
|
|
"log",
|
|
|
|
"rustversion",
|
|
|
|
"windows",
|
|
|
|
]
|
|
|
|
|
2022-12-06 14:47:02 +01:00
|
|
|
[[package]]
|
|
|
|
name = "generic-array"
|
2023-05-01 16:29:20 +02:00
|
|
|
version = "0.14.7"
|
2022-12-06 14:47:02 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-05-01 16:29:20 +02:00
|
|
|
checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
|
2022-12-06 14:47:02 +01:00
|
|
|
dependencies = [
|
|
|
|
"typenum",
|
|
|
|
"version_check",
|
|
|
|
]
|
|
|
|
|
2022-08-11 22:52:55 +02:00
|
|
|
[[package]]
|
|
|
|
name = "getrandom"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.2.12"
|
2022-08-11 22:52:55 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5"
|
2022-08-11 22:52:55 +02:00
|
|
|
dependencies = [
|
|
|
|
"cfg-if",
|
2024-06-27 10:27:29 +02:00
|
|
|
"js-sys",
|
2022-08-11 22:52:55 +02:00
|
|
|
"libc",
|
|
|
|
"wasi",
|
2024-06-27 10:27:29 +02:00
|
|
|
"wasm-bindgen",
|
2022-08-11 22:52:55 +02:00
|
|
|
]
|
|
|
|
|
refactor(tvix/store/blobsvc): make BlobStore async
We previously kept the trait of a BlobService sync.
This however had some annoying consequences:
- It became more and more complicated to track when we're in a context
with an async runtime in the context or not, producing bugs like
https://b.tvl.fyi/issues/304
- The sync trait shielded away async clients from async worloads,
requiring manual block_on code inside the gRPC client code, and
spawn_blocking calls in consumers of the trait, even if they were
async (like the gRPC server)
- We had to write our own custom glue code (SyncReadIntoAsyncRead)
to convert a sync io::Read into a tokio::io::AsyncRead, which already
existed in tokio internally, but upstream ia hesitant to expose.
This now makes the BlobService trait async (via the async_trait macro,
like we already do in various gRPC parts), and replaces the sync readers
and writers with their async counterparts.
Tests interacting with a BlobService now need to have an async runtime
available, the easiest way for this is to mark the test functions
with the tokio::test macro, allowing us to directly .await in the test
function.
In places where we don't have an async runtime available from context
(like tvix-cli), we can pass one down explicitly.
Now that we don't provide a sync interface anymore, the (sync) FUSE
library now holds a pointer to a tokio runtime handle, and needs to at
least have 2 threads available when talking to a blob service (which is
why some of the tests now use the multi_thread flavor).
The FUSE tests got a bit more verbose, as we couldn't use the
setup_and_mount function accepting a callback anymore. We can hopefully
move some of the test fixture setup to rstest in the future to make this
less repetitive.
Co-Authored-By: Connor Brewster <cbrewster@hey.com>
Change-Id: Ia0501b606e32c852d0108de9c9016b21c94a3c05
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9329
Reviewed-by: Connor Brewster <cbrewster@hey.com>
Tested-by: BuildkiteCI
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
2023-09-13 14:20:21 +02:00
|
|
|
[[package]]
|
|
|
|
name = "gimli"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.28.1"
|
refactor(tvix/store/blobsvc): make BlobStore async
We previously kept the trait of a BlobService sync.
This however had some annoying consequences:
- It became more and more complicated to track when we're in a context
with an async runtime in the context or not, producing bugs like
https://b.tvl.fyi/issues/304
- The sync trait shielded away async clients from async worloads,
requiring manual block_on code inside the gRPC client code, and
spawn_blocking calls in consumers of the trait, even if they were
async (like the gRPC server)
- We had to write our own custom glue code (SyncReadIntoAsyncRead)
to convert a sync io::Read into a tokio::io::AsyncRead, which already
existed in tokio internally, but upstream ia hesitant to expose.
This now makes the BlobService trait async (via the async_trait macro,
like we already do in various gRPC parts), and replaces the sync readers
and writers with their async counterparts.
Tests interacting with a BlobService now need to have an async runtime
available, the easiest way for this is to mark the test functions
with the tokio::test macro, allowing us to directly .await in the test
function.
In places where we don't have an async runtime available from context
(like tvix-cli), we can pass one down explicitly.
Now that we don't provide a sync interface anymore, the (sync) FUSE
library now holds a pointer to a tokio runtime handle, and needs to at
least have 2 threads available when talking to a blob service (which is
why some of the tests now use the multi_thread flavor).
The FUSE tests got a bit more verbose, as we couldn't use the
setup_and_mount function accepting a callback anymore. We can hopefully
move some of the test fixture setup to rstest in the future to make this
less repetitive.
Co-Authored-By: Connor Brewster <cbrewster@hey.com>
Change-Id: Ia0501b606e32c852d0108de9c9016b21c94a3c05
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9329
Reviewed-by: Connor Brewster <cbrewster@hey.com>
Tested-by: BuildkiteCI
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
2023-09-13 14:20:21 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253"
|
refactor(tvix/store/blobsvc): make BlobStore async
We previously kept the trait of a BlobService sync.
This however had some annoying consequences:
- It became more and more complicated to track when we're in a context
with an async runtime in the context or not, producing bugs like
https://b.tvl.fyi/issues/304
- The sync trait shielded away async clients from async worloads,
requiring manual block_on code inside the gRPC client code, and
spawn_blocking calls in consumers of the trait, even if they were
async (like the gRPC server)
- We had to write our own custom glue code (SyncReadIntoAsyncRead)
to convert a sync io::Read into a tokio::io::AsyncRead, which already
existed in tokio internally, but upstream ia hesitant to expose.
This now makes the BlobService trait async (via the async_trait macro,
like we already do in various gRPC parts), and replaces the sync readers
and writers with their async counterparts.
Tests interacting with a BlobService now need to have an async runtime
available, the easiest way for this is to mark the test functions
with the tokio::test macro, allowing us to directly .await in the test
function.
In places where we don't have an async runtime available from context
(like tvix-cli), we can pass one down explicitly.
Now that we don't provide a sync interface anymore, the (sync) FUSE
library now holds a pointer to a tokio runtime handle, and needs to at
least have 2 threads available when talking to a blob service (which is
why some of the tests now use the multi_thread flavor).
The FUSE tests got a bit more verbose, as we couldn't use the
setup_and_mount function accepting a callback anymore. We can hopefully
move some of the test fixture setup to rstest in the future to make this
less repetitive.
Co-Authored-By: Connor Brewster <cbrewster@hey.com>
Change-Id: Ia0501b606e32c852d0108de9c9016b21c94a3c05
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9329
Reviewed-by: Connor Brewster <cbrewster@hey.com>
Tested-by: BuildkiteCI
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
2023-09-13 14:20:21 +02:00
|
|
|
|
2022-08-10 17:52:42 +02:00
|
|
|
[[package]]
|
|
|
|
name = "glob"
|
2023-02-01 18:54:30 +01:00
|
|
|
version = "0.3.1"
|
2022-08-10 17:52:42 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-02-01 18:54:30 +01:00
|
|
|
checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
|
2022-08-10 17:52:42 +02:00
|
|
|
|
2024-05-14 13:55:43 +02:00
|
|
|
[[package]]
|
|
|
|
name = "h2"
|
|
|
|
version = "0.4.4"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "816ec7294445779408f36fe57bc5b7fc1cf59664059096c65f905c1c61f58069"
|
|
|
|
dependencies = [
|
|
|
|
"bytes",
|
|
|
|
"fnv",
|
|
|
|
"futures-core",
|
|
|
|
"futures-sink",
|
|
|
|
"futures-util",
|
2024-08-28 18:35:08 +02:00
|
|
|
"http",
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
"indexmap 2.1.0",
|
2022-11-13 00:23:14 +01:00
|
|
|
"slab",
|
|
|
|
"tokio",
|
|
|
|
"tokio-util",
|
|
|
|
"tracing",
|
|
|
|
]
|
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "half"
|
|
|
|
version = "1.8.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7"
|
|
|
|
|
2022-08-04 15:44:49 +02:00
|
|
|
[[package]]
|
|
|
|
name = "hashbrown"
|
2022-08-16 22:43:45 +02:00
|
|
|
version = "0.12.3"
|
2022-08-04 15:44:49 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-08-16 22:43:45 +02:00
|
|
|
checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
|
2022-08-04 15:44:49 +02:00
|
|
|
|
2023-03-01 00:37:08 +01:00
|
|
|
[[package]]
|
|
|
|
name = "hashbrown"
|
|
|
|
version = "0.14.3"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604"
|
2024-05-10 06:51:18 +02:00
|
|
|
dependencies = [
|
|
|
|
"ahash",
|
|
|
|
"allocator-api2",
|
|
|
|
]
|
2023-03-01 00:37:08 +01:00
|
|
|
|
2022-09-18 21:59:59 +02:00
|
|
|
[[package]]
|
|
|
|
name = "heck"
|
2023-02-01 18:54:30 +01:00
|
|
|
version = "0.4.1"
|
2022-09-18 21:59:59 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-02-01 18:54:30 +01:00
|
|
|
checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
|
2022-09-18 21:59:59 +02:00
|
|
|
|
2024-08-28 23:42:29 +02:00
|
|
|
[[package]]
|
|
|
|
name = "heck"
|
|
|
|
version = "0.5.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
|
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "hermit-abi"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "0.3.9"
|
2023-02-04 10:05:13 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"
|
2023-02-04 10:05:13 +01:00
|
|
|
|
2024-03-19 11:12:03 +01:00
|
|
|
[[package]]
|
|
|
|
name = "hex"
|
|
|
|
version = "0.4.3"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
|
|
|
|
|
2023-10-27 03:12:26 +02:00
|
|
|
[[package]]
|
|
|
|
name = "hex-literal"
|
|
|
|
version = "0.4.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46"
|
|
|
|
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
[[package]]
|
|
|
|
name = "home"
|
|
|
|
version = "0.5.9"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5"
|
|
|
|
dependencies = [
|
|
|
|
"windows-sys 0.52.0",
|
|
|
|
]
|
|
|
|
|
2024-05-14 13:55:43 +02:00
|
|
|
[[package]]
|
|
|
|
name = "http"
|
|
|
|
version = "1.1.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258"
|
|
|
|
dependencies = [
|
|
|
|
"bytes",
|
|
|
|
"fnv",
|
|
|
|
"itoa",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "http-body"
|
|
|
|
version = "1.0.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643"
|
|
|
|
dependencies = [
|
|
|
|
"bytes",
|
2024-08-28 18:35:08 +02:00
|
|
|
"http",
|
2024-05-14 13:55:43 +02:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "http-body-util"
|
|
|
|
version = "0.1.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "0475f8b2ac86659c21b64320d5d653f9efe42acd2a4e560073ec61a155a34f1d"
|
|
|
|
dependencies = [
|
|
|
|
"bytes",
|
|
|
|
"futures-core",
|
2024-08-28 18:35:08 +02:00
|
|
|
"http",
|
|
|
|
"http-body",
|
2022-11-13 00:23:14 +01:00
|
|
|
"pin-project-lite",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "httparse"
|
|
|
|
version = "1.8.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904"
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "httpdate"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "1.0.3"
|
2022-11-13 00:23:14 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9"
|
2022-11-13 00:23:14 +01:00
|
|
|
|
2024-03-01 17:00:53 +01:00
|
|
|
[[package]]
|
|
|
|
name = "humantime"
|
|
|
|
version = "2.1.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
|
|
|
|
|
2024-05-14 13:55:43 +02:00
|
|
|
[[package]]
|
|
|
|
name = "hyper"
|
2024-07-20 20:15:42 +02:00
|
|
|
version = "1.4.1"
|
2024-05-14 13:55:43 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-07-20 20:15:42 +02:00
|
|
|
checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05"
|
2024-05-14 13:55:43 +02:00
|
|
|
dependencies = [
|
|
|
|
"bytes",
|
|
|
|
"futures-channel",
|
|
|
|
"futures-util",
|
2024-08-28 18:35:08 +02:00
|
|
|
"h2",
|
|
|
|
"http",
|
|
|
|
"http-body",
|
2024-05-14 13:55:43 +02:00
|
|
|
"httparse",
|
|
|
|
"httpdate",
|
|
|
|
"itoa",
|
|
|
|
"pin-project-lite",
|
|
|
|
"smallvec",
|
|
|
|
"tokio",
|
2024-07-20 20:15:42 +02:00
|
|
|
"want",
|
2024-05-14 13:55:43 +02:00
|
|
|
]
|
|
|
|
|
2024-07-20 20:15:42 +02:00
|
|
|
[[package]]
|
|
|
|
name = "hyper-rustls"
|
|
|
|
version = "0.27.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155"
|
|
|
|
dependencies = [
|
|
|
|
"futures-util",
|
2024-08-28 18:35:08 +02:00
|
|
|
"http",
|
|
|
|
"hyper",
|
2024-07-20 20:15:42 +02:00
|
|
|
"hyper-util",
|
2024-08-28 18:35:08 +02:00
|
|
|
"rustls",
|
|
|
|
"rustls-native-certs",
|
2024-07-20 20:15:42 +02:00
|
|
|
"rustls-pki-types",
|
|
|
|
"tokio",
|
2024-08-28 18:35:08 +02:00
|
|
|
"tokio-rustls",
|
2024-07-20 20:15:42 +02:00
|
|
|
"tower-service",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "hyper-timeout"
|
|
|
|
version = "0.5.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "3203a961e5c83b6f5498933e78b6b263e208c197b63e9c6c53cc82ffd3f63793"
|
|
|
|
dependencies = [
|
2024-08-28 18:35:08 +02:00
|
|
|
"hyper",
|
2024-07-20 20:15:42 +02:00
|
|
|
"hyper-util",
|
|
|
|
"pin-project-lite",
|
|
|
|
"tokio",
|
|
|
|
"tower-service",
|
|
|
|
]
|
|
|
|
|
2024-05-14 13:55:43 +02:00
|
|
|
[[package]]
|
|
|
|
name = "hyper-util"
|
2024-08-28 18:34:40 +02:00
|
|
|
version = "0.1.7"
|
2024-05-14 13:55:43 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 18:34:40 +02:00
|
|
|
checksum = "cde7055719c54e36e95e8719f95883f22072a48ede39db7fc17a4e1d5281e9b9"
|
2024-05-14 13:55:43 +02:00
|
|
|
dependencies = [
|
|
|
|
"bytes",
|
2024-07-20 20:15:42 +02:00
|
|
|
"futures-channel",
|
2024-05-14 13:55:43 +02:00
|
|
|
"futures-util",
|
2024-08-28 18:35:08 +02:00
|
|
|
"http",
|
|
|
|
"http-body",
|
|
|
|
"hyper",
|
2024-05-14 13:55:43 +02:00
|
|
|
"pin-project-lite",
|
|
|
|
"socket2",
|
|
|
|
"tokio",
|
2024-07-20 20:15:42 +02:00
|
|
|
"tower",
|
|
|
|
"tower-service",
|
|
|
|
"tracing",
|
2024-05-14 13:55:43 +02:00
|
|
|
]
|
|
|
|
|
2024-03-01 17:00:53 +01:00
|
|
|
[[package]]
|
|
|
|
name = "iana-time-zone"
|
|
|
|
version = "0.1.60"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141"
|
|
|
|
dependencies = [
|
|
|
|
"android_system_properties",
|
|
|
|
"core-foundation-sys",
|
|
|
|
"iana-time-zone-haiku",
|
|
|
|
"js-sys",
|
|
|
|
"wasm-bindgen",
|
2024-06-14 13:10:57 +02:00
|
|
|
"windows-core 0.52.0",
|
2024-03-01 17:00:53 +01:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "iana-time-zone-haiku"
|
|
|
|
version = "0.1.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
|
|
|
|
dependencies = [
|
|
|
|
"cc",
|
|
|
|
]
|
|
|
|
|
2024-03-19 11:12:03 +01:00
|
|
|
[[package]]
|
|
|
|
name = "ident_case"
|
|
|
|
version = "1.0.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
|
|
|
|
|
2023-06-09 18:07:00 +02:00
|
|
|
[[package]]
|
|
|
|
name = "idna"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.5.0"
|
2023-06-09 18:07:00 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6"
|
2023-06-09 18:07:00 +02:00
|
|
|
dependencies = [
|
|
|
|
"unicode-bidi",
|
|
|
|
"unicode-normalization",
|
|
|
|
]
|
|
|
|
|
2022-09-18 21:59:59 +02:00
|
|
|
[[package]]
|
|
|
|
name = "indexmap"
|
2023-03-26 22:14:32 +02:00
|
|
|
version = "1.9.3"
|
2022-09-18 21:59:59 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-03-26 22:14:32 +02:00
|
|
|
checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
|
2022-09-18 21:59:59 +02:00
|
|
|
dependencies = [
|
|
|
|
"autocfg",
|
2023-03-01 00:37:08 +01:00
|
|
|
"hashbrown 0.12.3",
|
2024-03-19 11:12:03 +01:00
|
|
|
"serde",
|
2023-03-01 00:37:08 +01:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "indexmap"
|
|
|
|
version = "2.1.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f"
|
|
|
|
dependencies = [
|
|
|
|
"equivalent",
|
|
|
|
"hashbrown 0.14.3",
|
2024-03-19 11:12:03 +01:00
|
|
|
"serde",
|
2022-09-18 21:59:59 +02:00
|
|
|
]
|
|
|
|
|
2024-04-17 18:44:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "indicatif"
|
|
|
|
version = "0.17.8"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3"
|
|
|
|
dependencies = [
|
|
|
|
"console",
|
|
|
|
"instant",
|
|
|
|
"number_prefix",
|
|
|
|
"portable-atomic",
|
|
|
|
"unicode-width",
|
|
|
|
"vt100",
|
|
|
|
]
|
|
|
|
|
2022-09-17 19:52:02 +02:00
|
|
|
[[package]]
|
|
|
|
name = "instant"
|
|
|
|
version = "0.1.12"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
|
|
|
|
dependencies = [
|
|
|
|
"cfg-if",
|
|
|
|
]
|
|
|
|
|
2024-03-19 11:12:03 +01:00
|
|
|
[[package]]
|
|
|
|
name = "inventory"
|
|
|
|
version = "0.3.15"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "f958d3d68f4167080a18141e10381e7634563984a537f2a49a30fd8e53ac5767"
|
|
|
|
|
2023-11-18 11:44:38 +01:00
|
|
|
[[package]]
|
|
|
|
name = "ipnet"
|
|
|
|
version = "2.9.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3"
|
|
|
|
|
2022-12-16 12:54:22 +01:00
|
|
|
[[package]]
|
|
|
|
name = "is-terminal"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.4.10"
|
2022-12-16 12:54:22 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "0bad00257d07be169d870ab665980b06cdb366d792ad690bf2e76876dc503455"
|
2022-12-16 12:54:22 +01:00
|
|
|
dependencies = [
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
"hermit-abi",
|
|
|
|
"rustix",
|
|
|
|
"windows-sys 0.52.0",
|
2022-12-16 12:54:22 +01:00
|
|
|
]
|
|
|
|
|
2024-08-28 23:54:46 +02:00
|
|
|
[[package]]
|
|
|
|
name = "is_terminal_polyfill"
|
|
|
|
version = "1.70.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf"
|
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "itertools"
|
2022-11-23 04:42:06 +01:00
|
|
|
version = "0.10.5"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-11-23 04:42:06 +01:00
|
|
|
checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
|
2022-08-25 17:04:07 +02:00
|
|
|
dependencies = [
|
|
|
|
"either",
|
|
|
|
]
|
|
|
|
|
2024-01-06 00:33:36 +01:00
|
|
|
[[package]]
|
|
|
|
name = "itertools"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "0.12.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569"
|
|
|
|
dependencies = [
|
|
|
|
"either",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "itertools"
|
|
|
|
version = "0.13.0"
|
2024-01-06 00:33:36 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186"
|
2024-01-06 00:33:36 +01:00
|
|
|
dependencies = [
|
|
|
|
"either",
|
|
|
|
]
|
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "itoa"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "1.0.10"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c"
|
2022-08-25 17:04:07 +02:00
|
|
|
|
2022-12-29 21:39:28 +01:00
|
|
|
[[package]]
|
|
|
|
name = "jobserver"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "0.1.32"
|
2022-12-29 21:39:28 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0"
|
2022-12-29 21:39:28 +01:00
|
|
|
dependencies = [
|
|
|
|
"libc",
|
|
|
|
]
|
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "js-sys"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.3.67"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "9a1d36f1235bc969acba30b7f5990b864423a6068a10f7c90ae8f0112e3a59d1"
|
2022-08-25 17:04:07 +02:00
|
|
|
dependencies = [
|
|
|
|
"wasm-bindgen",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "lazy_static"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "1.5.0"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
|
2022-08-25 17:04:07 +02:00
|
|
|
|
feat(tvix/eval): use lexical-core to format float
Apparently our naive implementation of float formatting, which simply
used {:.5}, and trimmed trailing "0" strings not sufficient.
It wrongly trimmed numbers with zeroes but no decimal point, like
`10000` got trimmed to `1`.
Nix uses `std::to_string` on the double, which according to
https://en.cppreference.com/w/cpp/string/basic_string/to_string
is equivalent to `std::sprintf(buf, "%f", value)`.
https://en.cppreference.com/w/cpp/io/c/fprintf mentions this is treated
like this:
> Precision specifies the exact number of digits to appear after
> the decimal point character. The default precision is 6. In the
> alternative implementation decimal point character is written even if
> no digits follow it. For infinity and not-a-number conversion style
> see notes.
This doesn't seem to be the case though, and Nix uses scientific
notation in some cases.
There's a whole bunch of strategies to determine which is a more compact
notation, and which notation should be used for a given number.
https://github.com/rust-lang/rust/issues/24556 provides some pointers
into various rabbit holes for those interested.
This gist seems to be that currently a different formatting is not
exposed in rust directly, at least not for public consumption.
There is the
[lexical-core](https://github.com/Alexhuszagh/rust-lexical) crate
though, which provides a way to format floats with various strategies
and formats.
Change our implementation of `TotalDisplay` for the `Value::Float` case
to use that. We still need to do some post-processing, because Nix
always adds the sign in scientific notation (and there's no way to
configure lexical-core to do that), and lexical-core in some cases keeps
the trailing zeros.
Even with all that in place, there as a difference in `eval-okay-
fromjson.nix` (from tvix-tests), which I couldn't get to work. I updated
the fixture to a less problematic number.
With this, the testsuite passes again, and does for the upcoming CL
introducing builtins.fromTOML, and enabling the nix testsuite bits for
it, too.
Change-Id: Ie6fba5619e1d9fd7ce669a51594658b029057acc
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7922
Tested-by: BuildkiteCI
Autosubmit: flokli <flokli@flokli.de>
Reviewed-by: tazjin <tazjin@tvl.su>
2023-01-24 19:27:20 +01:00
|
|
|
[[package]]
|
|
|
|
name = "lexical-core"
|
|
|
|
version = "0.8.5"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "2cde5de06e8d4c2faabc400238f9ae1c74d5412d03a7bd067645ccbc47070e46"
|
|
|
|
dependencies = [
|
|
|
|
"lexical-parse-float",
|
|
|
|
"lexical-parse-integer",
|
|
|
|
"lexical-util",
|
|
|
|
"lexical-write-float",
|
|
|
|
"lexical-write-integer",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "lexical-parse-float"
|
|
|
|
version = "0.8.5"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "683b3a5ebd0130b8fb52ba0bdc718cc56815b6a097e28ae5a6997d0ad17dc05f"
|
|
|
|
dependencies = [
|
|
|
|
"lexical-parse-integer",
|
|
|
|
"lexical-util",
|
|
|
|
"static_assertions",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "lexical-parse-integer"
|
|
|
|
version = "0.8.6"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "6d0994485ed0c312f6d965766754ea177d07f9c00c9b82a5ee62ed5b47945ee9"
|
|
|
|
dependencies = [
|
|
|
|
"lexical-util",
|
|
|
|
"static_assertions",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "lexical-util"
|
|
|
|
version = "0.8.5"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "5255b9ff16ff898710eb9eb63cb39248ea8a5bb036bea8085b1a767ff6c4e3fc"
|
|
|
|
dependencies = [
|
|
|
|
"static_assertions",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "lexical-write-float"
|
|
|
|
version = "0.8.5"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "accabaa1c4581f05a3923d1b4cfd124c329352288b7b9da09e766b0668116862"
|
|
|
|
dependencies = [
|
|
|
|
"lexical-util",
|
|
|
|
"lexical-write-integer",
|
|
|
|
"static_assertions",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "lexical-write-integer"
|
|
|
|
version = "0.8.5"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "e1b6f3d1f4422866b68192d62f77bc5c700bee84f3069f2469d7bc8c77852446"
|
|
|
|
dependencies = [
|
|
|
|
"lexical-util",
|
|
|
|
"static_assertions",
|
|
|
|
]
|
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "libc"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "0.2.158"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439"
|
2023-03-16 13:31:28 +01:00
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "libm"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.2.8"
|
2023-03-16 13:31:28 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058"
|
2022-08-25 17:04:07 +02:00
|
|
|
|
2024-08-07 23:21:26 +02:00
|
|
|
[[package]]
|
|
|
|
name = "libmimalloc-sys"
|
|
|
|
version = "0.1.39"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "23aa6811d3bd4deb8a84dde645f943476d13b248d818edcf8ce0b2f37f036b44"
|
|
|
|
dependencies = [
|
|
|
|
"cc",
|
|
|
|
"libc",
|
|
|
|
]
|
|
|
|
|
2022-08-11 22:52:55 +02:00
|
|
|
[[package]]
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
name = "libredox"
|
|
|
|
version = "0.0.1"
|
2022-08-11 22:52:55 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8"
|
|
|
|
dependencies = [
|
2024-08-28 23:42:29 +02:00
|
|
|
"bitflags 2.6.0",
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
"libc",
|
|
|
|
"redox_syscall 0.4.1",
|
|
|
|
]
|
2022-08-11 22:52:55 +02:00
|
|
|
|
2023-12-13 10:34:17 +01:00
|
|
|
[[package]]
|
|
|
|
name = "linux-raw-sys"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "0.4.14"
|
2023-12-13 10:34:17 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89"
|
2023-12-13 10:34:17 +01:00
|
|
|
|
2023-09-23 02:45:01 +02:00
|
|
|
[[package]]
|
|
|
|
name = "litrs"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.4.1"
|
2023-09-23 02:45:01 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "b4ce301924b7887e9d637144fdade93f9dfff9b60981d4ac161db09720d39aa5"
|
2023-09-23 02:45:01 +02:00
|
|
|
|
2022-12-29 21:39:28 +01:00
|
|
|
[[package]]
|
|
|
|
name = "lock_api"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.4.11"
|
2022-12-29 21:39:28 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45"
|
2022-12-29 21:39:28 +01:00
|
|
|
dependencies = [
|
|
|
|
"autocfg",
|
|
|
|
"scopeguard",
|
|
|
|
]
|
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "log"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.4.20"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
|
2022-08-25 17:04:07 +02:00
|
|
|
|
2024-06-14 13:10:57 +02:00
|
|
|
[[package]]
|
|
|
|
name = "loom"
|
|
|
|
version = "0.7.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca"
|
|
|
|
dependencies = [
|
|
|
|
"cfg-if",
|
|
|
|
"generator",
|
|
|
|
"scoped-tls",
|
|
|
|
"tracing",
|
|
|
|
"tracing-subscriber",
|
|
|
|
]
|
|
|
|
|
2024-05-10 06:51:18 +02:00
|
|
|
[[package]]
|
|
|
|
name = "lru"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "0.12.4"
|
2024-05-10 06:51:18 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "37ee39891760e7d94734f6f63fedc29a2e4a152f836120753a72503f09fcf904"
|
2024-05-10 06:51:18 +02:00
|
|
|
dependencies = [
|
|
|
|
"hashbrown 0.14.3",
|
|
|
|
]
|
|
|
|
|
2023-11-18 11:44:38 +01:00
|
|
|
[[package]]
|
|
|
|
name = "lzma-sys"
|
|
|
|
version = "0.1.20"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "5fda04ab3764e6cde78b9974eec4f779acaba7c4e84b36eca3cf77c581b85d27"
|
|
|
|
dependencies = [
|
|
|
|
"cc",
|
|
|
|
"libc",
|
|
|
|
"pkg-config",
|
|
|
|
]
|
|
|
|
|
2024-02-23 20:42:52 +01:00
|
|
|
[[package]]
|
|
|
|
name = "magic"
|
|
|
|
version = "0.16.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "a200ae03df8c3dce7a963f6eeaac8feb41bf9001cb7e5ab22e3205aec2f0373d"
|
|
|
|
dependencies = [
|
2024-08-28 23:42:29 +02:00
|
|
|
"bitflags 2.6.0",
|
2024-02-23 20:42:52 +01:00
|
|
|
"libc",
|
|
|
|
"magic-sys",
|
|
|
|
"thiserror",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "magic-sys"
|
|
|
|
version = "0.3.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "eff86ae08895140d628119d407d568f3b657145ee8c265878064f717534bb3bc"
|
|
|
|
dependencies = [
|
|
|
|
"libc",
|
|
|
|
"vcpkg",
|
|
|
|
]
|
|
|
|
|
2024-03-17 20:09:06 +01:00
|
|
|
[[package]]
|
|
|
|
name = "matchers"
|
|
|
|
version = "0.1.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558"
|
|
|
|
dependencies = [
|
|
|
|
"regex-automata 0.1.10",
|
|
|
|
]
|
|
|
|
|
2022-11-13 00:23:14 +01:00
|
|
|
[[package]]
|
|
|
|
name = "matchit"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.7.3"
|
2022-11-13 00:23:14 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94"
|
2022-11-13 00:23:14 +01:00
|
|
|
|
2024-07-20 20:15:42 +02:00
|
|
|
[[package]]
|
|
|
|
name = "matchit"
|
|
|
|
version = "0.8.4"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3"
|
|
|
|
|
2024-02-21 17:49:07 +01:00
|
|
|
[[package]]
|
|
|
|
name = "md-5"
|
|
|
|
version = "0.10.6"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf"
|
|
|
|
dependencies = [
|
|
|
|
"cfg-if",
|
|
|
|
"digest",
|
|
|
|
]
|
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "memchr"
|
feat(tvix/glue/derivationStrict): support __structuredAttrs
This adds support to handle the __structuredAttrs argument, which can be
passed to builtins.derivationStrict.
If __structuredAttrs is passed, and set to true, most of the arguments
passed to builtins.derivationStrict are not simply coerced to a string
and passed down to "environments", but instead kept in a more structured
fashion.
Inside ATerm, which is what's relevant as far as path calculation is
concerned, a virtual `__json` environment variable is present,
containing these structured values.
Inside Builds, these structured values are not made available as an
environment variable, but a JSON file (and source-able bash script).
This will need to be respected once we start emitting BuildRequests,
and for that we can probably just parse the `__json` key in
Derivation.environment again - or keep this additionally in
non-serialized form around during Evaluation.
No matter what, this is left for a followup CL.
The existing handle_derivation_parameters and populate_outputs helper
function were removed, as __structuredAttrs causes quite a change
in behaviour, and so handling both in the same place makes it more
readable.
There's some open questions w.r.t. string contexts for structured attrs
itself. A TODO is left for this, but at least path calculation for
individual structured attrs derivations are correct now.
Part of b/366.
Change-Id: Ic293822266ced6f8c4826d8ef0d2e098a4adccaa
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10604
Tested-by: BuildkiteCI
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
2024-01-11 14:44:31 +01:00
|
|
|
version = "2.7.1"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
feat(tvix/glue/derivationStrict): support __structuredAttrs
This adds support to handle the __structuredAttrs argument, which can be
passed to builtins.derivationStrict.
If __structuredAttrs is passed, and set to true, most of the arguments
passed to builtins.derivationStrict are not simply coerced to a string
and passed down to "environments", but instead kept in a more structured
fashion.
Inside ATerm, which is what's relevant as far as path calculation is
concerned, a virtual `__json` environment variable is present,
containing these structured values.
Inside Builds, these structured values are not made available as an
environment variable, but a JSON file (and source-able bash script).
This will need to be respected once we start emitting BuildRequests,
and for that we can probably just parse the `__json` key in
Derivation.environment again - or keep this additionally in
non-serialized form around during Evaluation.
No matter what, this is left for a followup CL.
The existing handle_derivation_parameters and populate_outputs helper
function were removed, as __structuredAttrs causes quite a change
in behaviour, and so handling both in the same place makes it more
readable.
There's some open questions w.r.t. string contexts for structured attrs
itself. A TODO is left for this, but at least path calculation for
individual structured attrs derivations are correct now.
Part of b/366.
Change-Id: Ic293822266ced6f8c4826d8ef0d2e098a4adccaa
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10604
Tested-by: BuildkiteCI
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
2024-01-11 14:44:31 +01:00
|
|
|
checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149"
|
2022-08-25 17:04:07 +02:00
|
|
|
|
2023-09-16 17:20:34 +02:00
|
|
|
[[package]]
|
|
|
|
name = "memoffset"
|
|
|
|
version = "0.6.5"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce"
|
|
|
|
dependencies = [
|
|
|
|
"autocfg",
|
|
|
|
]
|
|
|
|
|
2022-11-23 04:42:06 +01:00
|
|
|
[[package]]
|
|
|
|
name = "memoffset"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.9.0"
|
2022-11-23 04:42:06 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c"
|
2022-11-23 04:42:06 +01:00
|
|
|
dependencies = [
|
|
|
|
"autocfg",
|
|
|
|
]
|
|
|
|
|
2024-08-07 23:21:26 +02:00
|
|
|
[[package]]
|
|
|
|
name = "mimalloc"
|
|
|
|
version = "0.1.43"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "68914350ae34959d83f732418d51e2427a794055d0b9529f48259ac07af65633"
|
|
|
|
dependencies = [
|
|
|
|
"libmimalloc-sys",
|
|
|
|
]
|
|
|
|
|
2022-11-13 00:23:14 +01:00
|
|
|
[[package]]
|
|
|
|
name = "mime"
|
2023-03-26 22:14:32 +02:00
|
|
|
version = "0.3.17"
|
2022-11-13 00:23:14 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-03-26 22:14:32 +02:00
|
|
|
checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
|
2022-11-13 00:23:14 +01:00
|
|
|
|
2023-07-31 15:46:39 +02:00
|
|
|
[[package]]
|
|
|
|
name = "minimal-lexical"
|
|
|
|
version = "0.2.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
|
|
|
|
|
refactor(tvix/store/blobsvc): make BlobStore async
We previously kept the trait of a BlobService sync.
This however had some annoying consequences:
- It became more and more complicated to track when we're in a context
with an async runtime in the context or not, producing bugs like
https://b.tvl.fyi/issues/304
- The sync trait shielded away async clients from async worloads,
requiring manual block_on code inside the gRPC client code, and
spawn_blocking calls in consumers of the trait, even if they were
async (like the gRPC server)
- We had to write our own custom glue code (SyncReadIntoAsyncRead)
to convert a sync io::Read into a tokio::io::AsyncRead, which already
existed in tokio internally, but upstream ia hesitant to expose.
This now makes the BlobService trait async (via the async_trait macro,
like we already do in various gRPC parts), and replaces the sync readers
and writers with their async counterparts.
Tests interacting with a BlobService now need to have an async runtime
available, the easiest way for this is to mark the test functions
with the tokio::test macro, allowing us to directly .await in the test
function.
In places where we don't have an async runtime available from context
(like tvix-cli), we can pass one down explicitly.
Now that we don't provide a sync interface anymore, the (sync) FUSE
library now holds a pointer to a tokio runtime handle, and needs to at
least have 2 threads available when talking to a blob service (which is
why some of the tests now use the multi_thread flavor).
The FUSE tests got a bit more verbose, as we couldn't use the
setup_and_mount function accepting a callback anymore. We can hopefully
move some of the test fixture setup to rstest in the future to make this
less repetitive.
Co-Authored-By: Connor Brewster <cbrewster@hey.com>
Change-Id: Ia0501b606e32c852d0108de9c9016b21c94a3c05
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9329
Reviewed-by: Connor Brewster <cbrewster@hey.com>
Tested-by: BuildkiteCI
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
2023-09-13 14:20:21 +02:00
|
|
|
[[package]]
|
|
|
|
name = "miniz_oxide"
|
|
|
|
version = "0.7.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7"
|
|
|
|
dependencies = [
|
|
|
|
"adler",
|
|
|
|
]
|
|
|
|
|
2022-11-13 00:23:14 +01:00
|
|
|
[[package]]
|
|
|
|
name = "mio"
|
2024-05-10 16:19:35 +02:00
|
|
|
version = "0.8.11"
|
2022-11-13 00:23:14 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-05-10 16:19:35 +02:00
|
|
|
checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c"
|
2022-11-13 00:23:14 +01:00
|
|
|
dependencies = [
|
|
|
|
"libc",
|
|
|
|
"log",
|
|
|
|
"wasi",
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
"windows-sys 0.48.0",
|
2022-11-13 00:23:14 +01:00
|
|
|
]
|
|
|
|
|
2024-08-28 23:42:29 +02:00
|
|
|
[[package]]
|
|
|
|
name = "mio"
|
|
|
|
version = "1.0.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec"
|
|
|
|
dependencies = [
|
|
|
|
"hermit-abi",
|
|
|
|
"libc",
|
|
|
|
"wasi",
|
|
|
|
"windows-sys 0.52.0",
|
|
|
|
]
|
|
|
|
|
2022-12-06 14:47:02 +01:00
|
|
|
[[package]]
|
|
|
|
name = "multimap"
|
|
|
|
version = "0.8.3"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a"
|
|
|
|
|
2024-05-14 13:55:43 +02:00
|
|
|
[[package]]
|
|
|
|
name = "nar-bridge"
|
|
|
|
version = "0.1.0"
|
|
|
|
dependencies = [
|
2024-08-28 18:35:08 +02:00
|
|
|
"axum",
|
2024-05-14 13:55:43 +02:00
|
|
|
"bytes",
|
|
|
|
"clap",
|
|
|
|
"data-encoding",
|
2024-07-20 10:03:47 +02:00
|
|
|
"futures",
|
2024-05-14 13:55:43 +02:00
|
|
|
"hex-literal",
|
2024-08-28 23:42:29 +02:00
|
|
|
"itertools 0.12.1",
|
2024-07-20 10:03:47 +02:00
|
|
|
"lru",
|
2024-08-07 23:21:26 +02:00
|
|
|
"mimalloc",
|
2024-05-14 13:55:43 +02:00
|
|
|
"nix-compat",
|
2024-07-20 10:03:47 +02:00
|
|
|
"parking_lot 0.12.3",
|
2024-08-28 18:35:08 +02:00
|
|
|
"prost",
|
|
|
|
"prost-build",
|
2024-05-14 13:55:43 +02:00
|
|
|
"rstest",
|
|
|
|
"serde",
|
|
|
|
"thiserror",
|
|
|
|
"tokio",
|
|
|
|
"tokio-listener",
|
|
|
|
"tokio-util",
|
2024-08-28 18:35:08 +02:00
|
|
|
"tonic",
|
|
|
|
"tonic-build",
|
2024-07-02 12:50:43 +02:00
|
|
|
"tower",
|
2024-07-20 20:15:42 +02:00
|
|
|
"tower-http",
|
2024-05-14 13:55:43 +02:00
|
|
|
"tracing",
|
|
|
|
"tracing-subscriber",
|
|
|
|
"tvix-castore",
|
|
|
|
"tvix-store",
|
|
|
|
"tvix-tracing",
|
|
|
|
"url",
|
|
|
|
]
|
|
|
|
|
2022-08-11 22:52:55 +02:00
|
|
|
[[package]]
|
|
|
|
name = "nibble_vec"
|
|
|
|
version = "0.1.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "77a5d83df9f36fe23f0c3648c6bbb8b0298bb5f1939c8f2704431371f4b84d43"
|
|
|
|
dependencies = [
|
|
|
|
"smallvec",
|
|
|
|
]
|
|
|
|
|
2023-09-16 17:20:34 +02:00
|
|
|
[[package]]
|
|
|
|
name = "nix"
|
|
|
|
version = "0.24.3"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "fa52e972a9a719cecb6864fb88568781eb706bac2cd1d4f04a648542dbf78069"
|
|
|
|
dependencies = [
|
2023-11-05 19:18:01 +01:00
|
|
|
"bitflags 1.3.2",
|
2023-09-16 17:20:34 +02:00
|
|
|
"cfg-if",
|
|
|
|
"libc",
|
|
|
|
"memoffset 0.6.5",
|
|
|
|
]
|
|
|
|
|
2022-08-11 22:52:55 +02:00
|
|
|
[[package]]
|
|
|
|
name = "nix"
|
2023-02-01 18:54:30 +01:00
|
|
|
version = "0.25.1"
|
2022-08-11 22:52:55 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-02-01 18:54:30 +01:00
|
|
|
checksum = "f346ff70e7dbfd675fe90590b92d59ef2de15a8779ae305ebcbfd3f0caf59be4"
|
2022-08-11 22:52:55 +02:00
|
|
|
dependencies = [
|
2023-02-01 18:54:30 +01:00
|
|
|
"autocfg",
|
2023-11-05 19:18:01 +01:00
|
|
|
"bitflags 1.3.2",
|
2022-08-11 22:52:55 +02:00
|
|
|
"cfg-if",
|
|
|
|
"libc",
|
|
|
|
]
|
|
|
|
|
2023-09-23 02:45:01 +02:00
|
|
|
[[package]]
|
|
|
|
name = "nix"
|
|
|
|
version = "0.26.4"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b"
|
|
|
|
dependencies = [
|
2023-11-05 19:18:01 +01:00
|
|
|
"bitflags 1.3.2",
|
2023-09-23 02:45:01 +02:00
|
|
|
"cfg-if",
|
|
|
|
"libc",
|
|
|
|
]
|
|
|
|
|
2024-01-17 07:45:55 +01:00
|
|
|
[[package]]
|
|
|
|
name = "nix"
|
|
|
|
version = "0.27.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053"
|
|
|
|
dependencies = [
|
2024-08-28 23:42:29 +02:00
|
|
|
"bitflags 2.6.0",
|
2024-01-17 07:45:55 +01:00
|
|
|
"cfg-if",
|
|
|
|
"libc",
|
|
|
|
]
|
|
|
|
|
2023-01-31 12:18:03 +01:00
|
|
|
[[package]]
|
|
|
|
name = "nix-compat"
|
|
|
|
version = "0.1.0"
|
|
|
|
dependencies = [
|
2024-08-28 23:42:29 +02:00
|
|
|
"bitflags 2.6.0",
|
2023-07-29 21:14:44 +02:00
|
|
|
"bstr",
|
2024-07-20 11:25:04 +02:00
|
|
|
"bytes",
|
2023-07-31 17:50:48 +02:00
|
|
|
"criterion",
|
2023-01-31 12:18:03 +01:00
|
|
|
"data-encoding",
|
2023-11-19 21:21:24 +01:00
|
|
|
"ed25519",
|
|
|
|
"ed25519-dalek",
|
2024-03-21 09:52:21 +01:00
|
|
|
"enum-primitive-derive",
|
2023-10-09 23:06:02 +02:00
|
|
|
"futures",
|
2023-07-31 15:46:39 +02:00
|
|
|
"glob",
|
2023-10-27 03:12:26 +02:00
|
|
|
"hex-literal",
|
2023-10-14 22:34:18 +02:00
|
|
|
"lazy_static",
|
2024-08-07 23:21:26 +02:00
|
|
|
"mimalloc",
|
2024-07-22 16:51:42 +02:00
|
|
|
"nix-compat-derive",
|
2023-07-31 15:46:39 +02:00
|
|
|
"nom",
|
2024-03-21 09:52:21 +01:00
|
|
|
"num-traits",
|
2024-04-04 18:03:44 +02:00
|
|
|
"pin-project-lite",
|
2023-10-27 12:54:31 +02:00
|
|
|
"pretty_assertions",
|
2024-04-08 16:59:05 +02:00
|
|
|
"rstest",
|
2023-01-31 14:45:42 +01:00
|
|
|
"serde",
|
|
|
|
"serde_json",
|
2023-09-22 11:59:15 +02:00
|
|
|
"sha2",
|
2024-08-19 15:57:26 +02:00
|
|
|
"smol_str",
|
2023-01-31 12:18:03 +01:00
|
|
|
"thiserror",
|
feat(nix-compat/wire): add low-level wire format primitives code
This brings some initial Nix wire format parsing code, used in the nix
daemon protocol, remote store/builder protocol, as well as the NAR
format itself (note we already have more specialized code for the last
one).
Thanks to embr, this code already exists, in
https://codeberg.org/gorgon/gorgon/src/branch/main/nix-daemon/src/wire.rs,
and we can vendor it into here, as EUPL is compatible with GPL (in that
direction).
The code uses the tokio::io Reader and Writer traits, not the ones from
the `futures` crate, as they provide some more convenient `read_u64_le`
functions.
More application-specific parsing code, as well as code to read strings,
or bytes are left out for now, as we want to be be more restrictive
w.r.t allowed max sizes, and need to parse bytes, not strings.
The code slightly diverges, as we have clippy looped into CI.
`Ok(…?)` can be turned into just the inner expression, and
some .and_then can be expressed in a simpler fashion.
Change-Id: Ie3adcb485e9d66786673b1962a08d4e5df3781d9
Reviewed-on: https://cl.tvl.fyi/c/depot/+/11148
Autosubmit: flokli <flokli@flokli.de>
Tested-by: BuildkiteCI
Reviewed-by: picnoir picnoir <picnoir@alternativebit.fr>
2024-03-14 14:08:05 +01:00
|
|
|
"tokio",
|
|
|
|
"tokio-test",
|
feat(nix-compat/nix_http): init parse_nar[info]_str
This moves the URL component parsing code we had in nar-bridge to
nix-compat.
We change the function signature to return an Option, not a
Result<_, StatusCode>.
This allows returning more appropriate error codes, as we can
ok_or(…) at the callsite, which we now do: on an upload to an
invalid path, we now return "unauthorized", while on a GET/HEAD, we
return "not found".
This also adds support to parse compression suffixes. While not
supported in nar-bridge, other users of nix-compat might very well want
to parse these paths.
Also fix the error message when parsing NAR urls, it mentioned 32, not
52, which is a copypasta error from the narinfo URL parsing code.
Change-Id: Id1be9a8044814b54ce68b125c52dfe933c9c4f74
Reviewed-on: https://cl.tvl.fyi/c/depot/+/12260
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
Autosubmit: flokli <flokli@flokli.de>
Tested-by: BuildkiteCI
2024-08-21 10:06:12 +02:00
|
|
|
"tracing",
|
2023-10-27 12:54:31 +02:00
|
|
|
"zstd",
|
2023-01-31 12:18:03 +01:00
|
|
|
]
|
|
|
|
|
2024-07-22 16:51:42 +02:00
|
|
|
[[package]]
|
|
|
|
name = "nix-compat-derive"
|
|
|
|
version = "0.1.0"
|
|
|
|
dependencies = [
|
|
|
|
"hex-literal",
|
|
|
|
"nix-compat",
|
|
|
|
"pretty_assertions",
|
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
|
|
|
"rstest",
|
2024-08-28 23:42:29 +02:00
|
|
|
"syn 2.0.76",
|
2024-07-22 16:51:42 +02:00
|
|
|
"tokio",
|
|
|
|
"tokio-test",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "nix-compat-derive-tests"
|
|
|
|
version = "0.1.0"
|
|
|
|
dependencies = [
|
|
|
|
"hex-literal",
|
|
|
|
"nix-compat",
|
|
|
|
"nix-compat-derive",
|
|
|
|
"pretty_assertions",
|
|
|
|
"rstest",
|
|
|
|
"tokio",
|
|
|
|
"tokio-test",
|
|
|
|
"trybuild",
|
|
|
|
]
|
|
|
|
|
2024-07-28 18:50:09 +02:00
|
|
|
[[package]]
|
|
|
|
name = "nohash-hasher"
|
|
|
|
version = "0.2.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451"
|
|
|
|
|
2023-07-31 15:46:39 +02:00
|
|
|
[[package]]
|
|
|
|
name = "nom"
|
|
|
|
version = "7.1.3"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
|
|
|
|
dependencies = [
|
|
|
|
"memchr",
|
|
|
|
"minimal-lexical",
|
|
|
|
]
|
|
|
|
|
2023-01-24 15:54:29 +01:00
|
|
|
[[package]]
|
|
|
|
name = "nom8"
|
|
|
|
version = "0.2.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "ae01545c9c7fc4486ab7debaf2aad7003ac19431791868fb2e8066df97fad2f8"
|
|
|
|
dependencies = [
|
|
|
|
"memchr",
|
|
|
|
]
|
|
|
|
|
2022-12-28 17:17:53 +01:00
|
|
|
[[package]]
|
|
|
|
name = "nu-ansi-term"
|
|
|
|
version = "0.46.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84"
|
|
|
|
dependencies = [
|
|
|
|
"overload",
|
|
|
|
"winapi",
|
|
|
|
]
|
|
|
|
|
2024-03-19 11:12:03 +01:00
|
|
|
[[package]]
|
|
|
|
name = "num-conv"
|
|
|
|
version = "0.1.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9"
|
|
|
|
|
2022-08-04 15:44:49 +02:00
|
|
|
[[package]]
|
|
|
|
name = "num-traits"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "0.2.19"
|
2022-08-04 15:44:49 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
|
2022-08-04 15:44:49 +02:00
|
|
|
dependencies = [
|
|
|
|
"autocfg",
|
2023-03-16 13:31:28 +01:00
|
|
|
"libm",
|
2022-08-04 15:44:49 +02:00
|
|
|
]
|
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "num_cpus"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "1.16.0"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"
|
2022-08-25 17:04:07 +02:00
|
|
|
dependencies = [
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
"hermit-abi",
|
2022-08-25 17:04:07 +02:00
|
|
|
"libc",
|
|
|
|
]
|
|
|
|
|
2024-04-17 18:44:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "number_prefix"
|
|
|
|
version = "0.4.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3"
|
|
|
|
|
refactor(tvix/store/blobsvc): make BlobStore async
We previously kept the trait of a BlobService sync.
This however had some annoying consequences:
- It became more and more complicated to track when we're in a context
with an async runtime in the context or not, producing bugs like
https://b.tvl.fyi/issues/304
- The sync trait shielded away async clients from async worloads,
requiring manual block_on code inside the gRPC client code, and
spawn_blocking calls in consumers of the trait, even if they were
async (like the gRPC server)
- We had to write our own custom glue code (SyncReadIntoAsyncRead)
to convert a sync io::Read into a tokio::io::AsyncRead, which already
existed in tokio internally, but upstream ia hesitant to expose.
This now makes the BlobService trait async (via the async_trait macro,
like we already do in various gRPC parts), and replaces the sync readers
and writers with their async counterparts.
Tests interacting with a BlobService now need to have an async runtime
available, the easiest way for this is to mark the test functions
with the tokio::test macro, allowing us to directly .await in the test
function.
In places where we don't have an async runtime available from context
(like tvix-cli), we can pass one down explicitly.
Now that we don't provide a sync interface anymore, the (sync) FUSE
library now holds a pointer to a tokio runtime handle, and needs to at
least have 2 threads available when talking to a blob service (which is
why some of the tests now use the multi_thread flavor).
The FUSE tests got a bit more verbose, as we couldn't use the
setup_and_mount function accepting a callback anymore. We can hopefully
move some of the test fixture setup to rstest in the future to make this
less repetitive.
Co-Authored-By: Connor Brewster <cbrewster@hey.com>
Change-Id: Ia0501b606e32c852d0108de9c9016b21c94a3c05
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9329
Reviewed-by: Connor Brewster <cbrewster@hey.com>
Tested-by: BuildkiteCI
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
2023-09-13 14:20:21 +02:00
|
|
|
[[package]]
|
|
|
|
name = "object"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.32.2"
|
refactor(tvix/store/blobsvc): make BlobStore async
We previously kept the trait of a BlobService sync.
This however had some annoying consequences:
- It became more and more complicated to track when we're in a context
with an async runtime in the context or not, producing bugs like
https://b.tvl.fyi/issues/304
- The sync trait shielded away async clients from async worloads,
requiring manual block_on code inside the gRPC client code, and
spawn_blocking calls in consumers of the trait, even if they were
async (like the gRPC server)
- We had to write our own custom glue code (SyncReadIntoAsyncRead)
to convert a sync io::Read into a tokio::io::AsyncRead, which already
existed in tokio internally, but upstream ia hesitant to expose.
This now makes the BlobService trait async (via the async_trait macro,
like we already do in various gRPC parts), and replaces the sync readers
and writers with their async counterparts.
Tests interacting with a BlobService now need to have an async runtime
available, the easiest way for this is to mark the test functions
with the tokio::test macro, allowing us to directly .await in the test
function.
In places where we don't have an async runtime available from context
(like tvix-cli), we can pass one down explicitly.
Now that we don't provide a sync interface anymore, the (sync) FUSE
library now holds a pointer to a tokio runtime handle, and needs to at
least have 2 threads available when talking to a blob service (which is
why some of the tests now use the multi_thread flavor).
The FUSE tests got a bit more verbose, as we couldn't use the
setup_and_mount function accepting a callback anymore. We can hopefully
move some of the test fixture setup to rstest in the future to make this
less repetitive.
Co-Authored-By: Connor Brewster <cbrewster@hey.com>
Change-Id: Ia0501b606e32c852d0108de9c9016b21c94a3c05
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9329
Reviewed-by: Connor Brewster <cbrewster@hey.com>
Tested-by: BuildkiteCI
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
2023-09-13 14:20:21 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441"
|
refactor(tvix/store/blobsvc): make BlobStore async
We previously kept the trait of a BlobService sync.
This however had some annoying consequences:
- It became more and more complicated to track when we're in a context
with an async runtime in the context or not, producing bugs like
https://b.tvl.fyi/issues/304
- The sync trait shielded away async clients from async worloads,
requiring manual block_on code inside the gRPC client code, and
spawn_blocking calls in consumers of the trait, even if they were
async (like the gRPC server)
- We had to write our own custom glue code (SyncReadIntoAsyncRead)
to convert a sync io::Read into a tokio::io::AsyncRead, which already
existed in tokio internally, but upstream ia hesitant to expose.
This now makes the BlobService trait async (via the async_trait macro,
like we already do in various gRPC parts), and replaces the sync readers
and writers with their async counterparts.
Tests interacting with a BlobService now need to have an async runtime
available, the easiest way for this is to mark the test functions
with the tokio::test macro, allowing us to directly .await in the test
function.
In places where we don't have an async runtime available from context
(like tvix-cli), we can pass one down explicitly.
Now that we don't provide a sync interface anymore, the (sync) FUSE
library now holds a pointer to a tokio runtime handle, and needs to at
least have 2 threads available when talking to a blob service (which is
why some of the tests now use the multi_thread flavor).
The FUSE tests got a bit more verbose, as we couldn't use the
setup_and_mount function accepting a callback anymore. We can hopefully
move some of the test fixture setup to rstest in the future to make this
less repetitive.
Co-Authored-By: Connor Brewster <cbrewster@hey.com>
Change-Id: Ia0501b606e32c852d0108de9c9016b21c94a3c05
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9329
Reviewed-by: Connor Brewster <cbrewster@hey.com>
Tested-by: BuildkiteCI
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
2023-09-13 14:20:21 +02:00
|
|
|
dependencies = [
|
|
|
|
"memchr",
|
|
|
|
]
|
|
|
|
|
2024-03-01 17:00:53 +01:00
|
|
|
[[package]]
|
|
|
|
name = "object_store"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "0.10.2"
|
2024-03-01 17:00:53 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "e6da452820c715ce78221e8202ccc599b4a52f3e1eb3eedb487b680c81a8e3f3"
|
2024-03-01 17:00:53 +01:00
|
|
|
dependencies = [
|
|
|
|
"async-trait",
|
2024-07-20 20:15:42 +02:00
|
|
|
"base64 0.22.1",
|
2024-03-01 17:00:53 +01:00
|
|
|
"bytes",
|
|
|
|
"chrono",
|
|
|
|
"futures",
|
|
|
|
"humantime",
|
2024-08-28 18:35:08 +02:00
|
|
|
"hyper",
|
2024-08-28 23:42:29 +02:00
|
|
|
"itertools 0.13.0",
|
2024-03-01 17:00:53 +01:00
|
|
|
"md-5",
|
2024-07-20 10:03:47 +02:00
|
|
|
"parking_lot 0.12.3",
|
2024-03-01 17:00:53 +01:00
|
|
|
"percent-encoding",
|
|
|
|
"quick-xml",
|
|
|
|
"rand",
|
|
|
|
"reqwest",
|
|
|
|
"ring",
|
2024-08-28 18:35:08 +02:00
|
|
|
"rustls-pemfile",
|
2024-03-01 17:00:53 +01:00
|
|
|
"serde",
|
|
|
|
"serde_json",
|
|
|
|
"snafu",
|
|
|
|
"tokio",
|
|
|
|
"tracing",
|
|
|
|
"url",
|
|
|
|
"walkdir",
|
|
|
|
]
|
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "once_cell"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "1.19.0"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
|
2022-08-25 17:04:07 +02:00
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "oorandom"
|
|
|
|
version = "11.1.3"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575"
|
|
|
|
|
2023-10-12 20:38:28 +02:00
|
|
|
[[package]]
|
|
|
|
name = "openssl-probe"
|
|
|
|
version = "0.1.5"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
|
|
|
|
|
2023-03-01 00:37:08 +01:00
|
|
|
[[package]]
|
|
|
|
name = "opentelemetry"
|
2024-05-14 14:00:54 +02:00
|
|
|
version = "0.22.0"
|
2023-03-01 00:37:08 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-05-14 14:00:54 +02:00
|
|
|
checksum = "900d57987be3f2aeb70d385fff9b27fb74c5723cc9a52d904d4f9c807a0667bf"
|
2023-03-01 00:37:08 +01:00
|
|
|
dependencies = [
|
|
|
|
"futures-core",
|
|
|
|
"futures-sink",
|
|
|
|
"js-sys",
|
|
|
|
"once_cell",
|
|
|
|
"pin-project-lite",
|
|
|
|
"thiserror",
|
|
|
|
"urlencoding",
|
|
|
|
]
|
|
|
|
|
2024-07-20 20:15:42 +02:00
|
|
|
[[package]]
|
|
|
|
name = "opentelemetry"
|
|
|
|
version = "0.24.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "4c365a63eec4f55b7efeceb724f1336f26a9cf3427b70e59e2cd2a5b947fba96"
|
|
|
|
dependencies = [
|
|
|
|
"futures-core",
|
|
|
|
"futures-sink",
|
|
|
|
"js-sys",
|
|
|
|
"once_cell",
|
|
|
|
"pin-project-lite",
|
|
|
|
"thiserror",
|
|
|
|
]
|
|
|
|
|
2024-06-20 11:39:09 +02:00
|
|
|
[[package]]
|
|
|
|
name = "opentelemetry-http"
|
2024-07-20 20:15:42 +02:00
|
|
|
version = "0.13.0"
|
2024-06-20 11:39:09 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-07-20 20:15:42 +02:00
|
|
|
checksum = "ad31e9de44ee3538fb9d64fe3376c1362f406162434609e79aea2a41a0af78ab"
|
2024-06-20 11:39:09 +02:00
|
|
|
dependencies = [
|
|
|
|
"async-trait",
|
|
|
|
"bytes",
|
2024-08-28 18:35:08 +02:00
|
|
|
"http",
|
2024-07-20 20:15:42 +02:00
|
|
|
"opentelemetry 0.24.0",
|
2024-06-20 11:39:09 +02:00
|
|
|
]
|
|
|
|
|
2023-03-01 00:37:08 +01:00
|
|
|
[[package]]
|
|
|
|
name = "opentelemetry-otlp"
|
2024-07-20 20:15:42 +02:00
|
|
|
version = "0.17.0"
|
2023-03-01 00:37:08 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-07-20 20:15:42 +02:00
|
|
|
checksum = "6b925a602ffb916fb7421276b86756027b37ee708f9dce2dbdcc51739f07e727"
|
2023-03-01 00:37:08 +01:00
|
|
|
dependencies = [
|
|
|
|
"async-trait",
|
|
|
|
"futures-core",
|
2024-08-28 18:35:08 +02:00
|
|
|
"http",
|
2024-07-20 20:15:42 +02:00
|
|
|
"opentelemetry 0.24.0",
|
2023-03-01 00:37:08 +01:00
|
|
|
"opentelemetry-proto",
|
2024-07-20 20:15:42 +02:00
|
|
|
"opentelemetry_sdk 0.24.1",
|
2024-08-28 18:35:08 +02:00
|
|
|
"prost",
|
2023-03-01 00:37:08 +01:00
|
|
|
"thiserror",
|
|
|
|
"tokio",
|
2024-08-28 18:35:08 +02:00
|
|
|
"tonic",
|
2023-03-01 00:37:08 +01:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "opentelemetry-proto"
|
2024-07-20 20:15:42 +02:00
|
|
|
version = "0.7.0"
|
2023-03-01 00:37:08 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-07-20 20:15:42 +02:00
|
|
|
checksum = "30ee9f20bff9c984511a02f082dc8ede839e4a9bf15cc2487c8d6fea5ad850d9"
|
2023-03-01 00:37:08 +01:00
|
|
|
dependencies = [
|
2024-07-20 20:15:42 +02:00
|
|
|
"opentelemetry 0.24.0",
|
|
|
|
"opentelemetry_sdk 0.24.1",
|
2024-08-28 18:35:08 +02:00
|
|
|
"prost",
|
|
|
|
"tonic",
|
2023-03-01 00:37:08 +01:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "opentelemetry_sdk"
|
2024-05-14 14:00:54 +02:00
|
|
|
version = "0.22.1"
|
2023-03-01 00:37:08 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-05-14 14:00:54 +02:00
|
|
|
checksum = "9e90c7113be649e31e9a0f8b5ee24ed7a16923b322c3c5ab6367469c049d6b7e"
|
2023-03-01 00:37:08 +01:00
|
|
|
dependencies = [
|
|
|
|
"async-trait",
|
|
|
|
"crossbeam-channel",
|
|
|
|
"futures-channel",
|
|
|
|
"futures-executor",
|
|
|
|
"futures-util",
|
|
|
|
"glob",
|
|
|
|
"once_cell",
|
2024-07-20 20:15:42 +02:00
|
|
|
"opentelemetry 0.22.0",
|
2023-03-01 00:37:08 +01:00
|
|
|
"ordered-float",
|
|
|
|
"percent-encoding",
|
|
|
|
"rand",
|
|
|
|
"thiserror",
|
2024-07-20 20:15:42 +02:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "opentelemetry_sdk"
|
|
|
|
version = "0.24.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "692eac490ec80f24a17828d49b40b60f5aeaccdfe6a503f939713afd22bc28df"
|
|
|
|
dependencies = [
|
|
|
|
"async-trait",
|
|
|
|
"futures-channel",
|
|
|
|
"futures-executor",
|
|
|
|
"futures-util",
|
|
|
|
"glob",
|
|
|
|
"once_cell",
|
|
|
|
"opentelemetry 0.24.0",
|
|
|
|
"percent-encoding",
|
|
|
|
"rand",
|
|
|
|
"serde_json",
|
|
|
|
"thiserror",
|
2023-03-01 00:37:08 +01:00
|
|
|
"tokio",
|
|
|
|
"tokio-stream",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "ordered-float"
|
|
|
|
version = "4.2.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "a76df7075c7d4d01fdcb46c912dd17fba5b60c78ea480b475f2b6ab6f666584e"
|
|
|
|
dependencies = [
|
|
|
|
"num-traits",
|
|
|
|
]
|
|
|
|
|
fix(tvix): Represent strings as byte arrays
C++ nix uses C-style zero-terminated char pointers to represent strings
internally - however, up to this point, tvix has used Rust `String` and
`str` for string values. Since those are required to be valid utf-8, we
haven't been able to properly represent all the string values that Nix
supports.
To fix that, this change converts the internal representation of the
NixString struct from `Box<str>` to `BString`, from the `bstr` crate -
this is a wrapper around a `Vec<u8>` with extra functions for treating
that byte vector as a "morally string-like" value, which is basically
exactly what we need.
Since this changes a pretty fundamental assumption about a pretty core
type, there are a *lot* of changes in a lot of places to make this work,
but I've tried to keep the general philosophy and intent of most of the
code in most places intact. Most notably, there's nothing that's been
done to make the derivation stuff in //tvix/glue work with non-utf8
strings everywhere, instead opting to just convert to String/str when
passing things into that - there *might* be something to be done there,
but I don't know what the rules should be and I don't want to figure
them out in this change.
To deal with OS-native paths in a way that also works in WASM for
tvixbolt, this also adds a dependency on the "os_str_bytes" crate.
Fixes: b/189
Fixes: b/337
Change-Id: I5e6eb29c62f47dd91af954f5e12bfc3d186f5526
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10200
Reviewed-by: tazjin <tazjin@tvl.su>
Reviewed-by: flokli <flokli@flokli.de>
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: aspen <root@gws.fyi>
Tested-by: BuildkiteCI
2023-12-05 23:25:52 +01:00
|
|
|
[[package]]
|
|
|
|
name = "os_str_bytes"
|
|
|
|
version = "6.6.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1"
|
|
|
|
dependencies = [
|
|
|
|
"memchr",
|
|
|
|
]
|
|
|
|
|
2022-12-28 17:17:53 +01:00
|
|
|
[[package]]
|
|
|
|
name = "overload"
|
|
|
|
version = "0.1.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
|
|
|
|
|
2024-03-19 11:12:03 +01:00
|
|
|
[[package]]
|
|
|
|
name = "parking"
|
|
|
|
version = "2.2.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae"
|
|
|
|
|
2023-05-28 09:22:08 +02:00
|
|
|
[[package]]
|
2023-09-16 17:20:34 +02:00
|
|
|
name = "parking_lot"
|
|
|
|
version = "0.11.2"
|
2023-05-28 09:22:08 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-09-16 17:20:34 +02:00
|
|
|
checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99"
|
2023-05-28 09:22:08 +02:00
|
|
|
dependencies = [
|
2023-09-16 17:20:34 +02:00
|
|
|
"instant",
|
|
|
|
"lock_api",
|
|
|
|
"parking_lot_core 0.8.6",
|
2023-05-28 09:22:08 +02:00
|
|
|
]
|
|
|
|
|
2022-12-29 21:39:28 +01:00
|
|
|
[[package]]
|
|
|
|
name = "parking_lot"
|
2024-07-20 10:03:47 +02:00
|
|
|
version = "0.12.3"
|
2022-12-29 21:39:28 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-07-20 10:03:47 +02:00
|
|
|
checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27"
|
2022-12-29 21:39:28 +01:00
|
|
|
dependencies = [
|
|
|
|
"lock_api",
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
"parking_lot_core 0.9.9",
|
2022-12-29 21:39:28 +01:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "parking_lot_core"
|
|
|
|
version = "0.8.6"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc"
|
|
|
|
dependencies = [
|
|
|
|
"cfg-if",
|
|
|
|
"instant",
|
|
|
|
"libc",
|
2023-05-01 16:29:20 +02:00
|
|
|
"redox_syscall 0.2.16",
|
2022-12-29 21:39:28 +01:00
|
|
|
"smallvec",
|
|
|
|
"winapi",
|
|
|
|
]
|
|
|
|
|
2023-09-16 17:20:34 +02:00
|
|
|
[[package]]
|
|
|
|
name = "parking_lot_core"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.9.9"
|
2023-09-16 17:20:34 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e"
|
2023-09-16 17:20:34 +02:00
|
|
|
dependencies = [
|
|
|
|
"cfg-if",
|
|
|
|
"libc",
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
"redox_syscall 0.4.1",
|
2023-09-16 17:20:34 +02:00
|
|
|
"smallvec",
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
"windows-targets 0.48.5",
|
2023-09-16 17:20:34 +02:00
|
|
|
]
|
|
|
|
|
2022-08-12 17:52:48 +02:00
|
|
|
[[package]]
|
|
|
|
name = "path-clean"
|
|
|
|
version = "0.1.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "ecba01bf2678719532c5e3059e0b5f0811273d94b397088b82e3bd0a78c78fdd"
|
|
|
|
|
2022-11-13 00:23:14 +01:00
|
|
|
[[package]]
|
|
|
|
name = "percent-encoding"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "2.3.1"
|
2022-11-13 00:23:14 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
|
2022-11-13 00:23:14 +01:00
|
|
|
|
2022-12-06 14:47:02 +01:00
|
|
|
[[package]]
|
|
|
|
name = "petgraph"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "0.6.5"
|
2022-12-06 14:47:02 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db"
|
2022-12-06 14:47:02 +01:00
|
|
|
dependencies = [
|
|
|
|
"fixedbitset",
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
"indexmap 2.1.0",
|
2022-12-06 14:47:02 +01:00
|
|
|
]
|
|
|
|
|
2022-11-13 00:23:14 +01:00
|
|
|
[[package]]
|
|
|
|
name = "pin-project"
|
2023-09-23 02:45:01 +02:00
|
|
|
version = "1.1.3"
|
2022-11-13 00:23:14 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-09-23 02:45:01 +02:00
|
|
|
checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422"
|
2022-11-13 00:23:14 +01:00
|
|
|
dependencies = [
|
|
|
|
"pin-project-internal",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "pin-project-internal"
|
2023-09-23 02:45:01 +02:00
|
|
|
version = "1.1.3"
|
2022-11-13 00:23:14 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-09-23 02:45:01 +02:00
|
|
|
checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405"
|
2022-11-13 00:23:14 +01:00
|
|
|
dependencies = [
|
2024-04-19 15:07:14 +02:00
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
2024-08-28 23:42:29 +02:00
|
|
|
"syn 2.0.76",
|
2022-11-13 00:23:14 +01:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "pin-project-lite"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "0.2.14"
|
2022-11-13 00:23:14 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02"
|
2022-11-13 00:23:14 +01:00
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "pin-utils"
|
|
|
|
version = "0.1.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
|
|
|
|
|
2024-03-19 11:12:03 +01:00
|
|
|
[[package]]
|
|
|
|
name = "piper"
|
|
|
|
version = "0.2.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4"
|
|
|
|
dependencies = [
|
|
|
|
"atomic-waker",
|
|
|
|
"fastrand",
|
|
|
|
"futures-io",
|
|
|
|
]
|
|
|
|
|
2023-11-19 21:21:24 +01:00
|
|
|
[[package]]
|
|
|
|
name = "pkcs8"
|
|
|
|
version = "0.10.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7"
|
|
|
|
dependencies = [
|
|
|
|
"der",
|
|
|
|
"spki",
|
|
|
|
]
|
|
|
|
|
2023-11-18 11:44:38 +01:00
|
|
|
[[package]]
|
|
|
|
name = "pkg-config"
|
2024-01-17 07:45:55 +01:00
|
|
|
version = "0.3.29"
|
2023-11-18 11:44:38 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-01-17 07:45:55 +01:00
|
|
|
checksum = "2900ede94e305130c13ddd391e0ab7cbaeb783945ae07a279c268cb05109c6cb"
|
2023-11-18 11:44:38 +01:00
|
|
|
|
2024-07-20 11:25:04 +02:00
|
|
|
[[package]]
|
|
|
|
name = "platforms"
|
|
|
|
version = "3.3.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "626dec3cac7cc0e1577a2ec3fc496277ec2baa084bebad95bb6fdbfae235f84c"
|
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "plotters"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.3.5"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "d2c224ba00d7cadd4d5c660deaf2098e5e80e07846537c51f9cfa4be50c1fd45"
|
2022-08-25 17:04:07 +02:00
|
|
|
dependencies = [
|
|
|
|
"num-traits",
|
|
|
|
"plotters-backend",
|
|
|
|
"plotters-svg",
|
|
|
|
"wasm-bindgen",
|
|
|
|
"web-sys",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "plotters-backend"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.3.5"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "9e76628b4d3a7581389a35d5b6e2139607ad7c75b17aed325f210aa91f4a9609"
|
2022-08-25 17:04:07 +02:00
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "plotters-svg"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.3.5"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "38f6d39893cca0701371e3c27294f09797214b86f1fb951b89ade8ec04e2abab"
|
2022-08-25 17:04:07 +02:00
|
|
|
dependencies = [
|
|
|
|
"plotters-backend",
|
|
|
|
]
|
|
|
|
|
2024-03-19 11:12:03 +01:00
|
|
|
[[package]]
|
|
|
|
name = "polling"
|
|
|
|
version = "3.4.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "30054e72317ab98eddd8561db0f6524df3367636884b7b21b703e4b280a84a14"
|
|
|
|
dependencies = [
|
|
|
|
"cfg-if",
|
|
|
|
"concurrent-queue",
|
|
|
|
"pin-project-lite",
|
|
|
|
"rustix",
|
|
|
|
"tracing",
|
|
|
|
"windows-sys 0.52.0",
|
|
|
|
]
|
|
|
|
|
2024-04-17 18:44:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "portable-atomic"
|
|
|
|
version = "1.6.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0"
|
|
|
|
|
2024-03-19 11:12:03 +01:00
|
|
|
[[package]]
|
|
|
|
name = "powerfmt"
|
|
|
|
version = "0.2.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
|
|
|
|
|
2022-09-17 19:52:02 +02:00
|
|
|
[[package]]
|
|
|
|
name = "ppv-lite86"
|
2022-11-23 04:42:06 +01:00
|
|
|
version = "0.2.17"
|
2022-09-17 19:52:02 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-11-23 04:42:06 +01:00
|
|
|
checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
|
2022-09-17 19:52:02 +02:00
|
|
|
|
2022-08-16 14:33:50 +02:00
|
|
|
[[package]]
|
|
|
|
name = "pretty_assertions"
|
2023-10-27 12:54:31 +02:00
|
|
|
version = "1.4.0"
|
2022-08-16 14:33:50 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-10-27 12:54:31 +02:00
|
|
|
checksum = "af7cee1a6c8a5b9208b3cb1061f10c0cb689087b3d8ce85fb9d2dd7a29b6ba66"
|
2022-08-16 14:33:50 +02:00
|
|
|
dependencies = [
|
|
|
|
"diff",
|
|
|
|
"yansi",
|
|
|
|
]
|
|
|
|
|
2022-12-06 14:47:02 +01:00
|
|
|
[[package]]
|
|
|
|
name = "prettyplease"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.2.16"
|
2022-12-06 14:47:02 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "a41cf62165e97c7f814d2221421dbb9afcbcdb0a88068e5ea206e19951c2cbb5"
|
2022-12-06 14:47:02 +01:00
|
|
|
dependencies = [
|
2024-04-19 15:07:14 +02:00
|
|
|
"proc-macro2",
|
2024-08-28 23:42:29 +02:00
|
|
|
"syn 2.0.76",
|
2022-12-06 14:47:02 +01:00
|
|
|
]
|
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "proc-macro2"
|
2024-07-20 11:25:04 +02:00
|
|
|
version = "1.0.86"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-07-20 11:25:04 +02:00
|
|
|
checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77"
|
2022-08-25 17:04:07 +02:00
|
|
|
dependencies = [
|
|
|
|
"unicode-ident",
|
|
|
|
]
|
|
|
|
|
2022-09-17 19:52:02 +02:00
|
|
|
[[package]]
|
|
|
|
name = "proptest"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "1.5.0"
|
2022-09-17 19:52:02 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "b4c2511913b88df1637da85cc8d96ec8e43a3f8bb8ccb71ee1ac240d6f3df58d"
|
2022-09-17 19:52:02 +02:00
|
|
|
dependencies = [
|
2024-08-28 23:42:29 +02:00
|
|
|
"bitflags 2.6.0",
|
2022-09-17 19:52:02 +02:00
|
|
|
"lazy_static",
|
|
|
|
"num-traits",
|
2023-10-08 13:03:22 +02:00
|
|
|
"rand",
|
2022-09-17 19:52:02 +02:00
|
|
|
"rand_chacha",
|
|
|
|
"rand_xorshift",
|
2024-03-17 20:09:06 +01:00
|
|
|
"regex-syntax 0.8.2",
|
2022-09-17 19:52:02 +02:00
|
|
|
"tempfile",
|
2023-03-16 13:31:28 +01:00
|
|
|
"unarray",
|
2022-09-17 19:52:02 +02:00
|
|
|
]
|
|
|
|
|
2024-07-20 20:15:42 +02:00
|
|
|
[[package]]
|
|
|
|
name = "prost"
|
|
|
|
version = "0.13.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "e13db3d3fde688c61e2446b4d843bc27a7e8af269a69440c0308021dc92333cc"
|
|
|
|
dependencies = [
|
|
|
|
"bytes",
|
2024-08-28 18:35:08 +02:00
|
|
|
"prost-derive",
|
2022-12-06 14:47:02 +01:00
|
|
|
]
|
|
|
|
|
2024-07-20 20:15:42 +02:00
|
|
|
[[package]]
|
|
|
|
name = "prost-build"
|
|
|
|
version = "0.13.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "5bb182580f71dd070f88d01ce3de9f4da5021db7115d2e1c3605a754153b77c1"
|
|
|
|
dependencies = [
|
|
|
|
"bytes",
|
2024-08-28 23:42:29 +02:00
|
|
|
"heck 0.4.1",
|
|
|
|
"itertools 0.10.5",
|
2024-07-20 20:15:42 +02:00
|
|
|
"log",
|
|
|
|
"multimap",
|
|
|
|
"once_cell",
|
|
|
|
"petgraph",
|
|
|
|
"prettyplease",
|
2024-08-28 18:35:08 +02:00
|
|
|
"prost",
|
|
|
|
"prost-types",
|
|
|
|
"pulldown-cmark",
|
|
|
|
"pulldown-cmark-to-cmark",
|
2024-07-20 20:15:42 +02:00
|
|
|
"regex",
|
2024-08-28 23:42:29 +02:00
|
|
|
"syn 2.0.76",
|
2024-07-20 20:15:42 +02:00
|
|
|
"tempfile",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "prost-derive"
|
|
|
|
version = "0.13.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "18bec9b0adc4eba778b33684b7ba3e7137789434769ee3ce3930463ef904cfca"
|
|
|
|
dependencies = [
|
|
|
|
"anyhow",
|
2024-08-28 23:42:29 +02:00
|
|
|
"itertools 0.10.5",
|
2024-07-20 20:15:42 +02:00
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
2024-08-28 23:42:29 +02:00
|
|
|
"syn 2.0.76",
|
2024-07-20 20:15:42 +02:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "prost-types"
|
|
|
|
version = "0.13.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "cee5168b05f49d4b0ca581206eb14a7b22fafd963efe729ac48eb03266e25cc2"
|
|
|
|
dependencies = [
|
2024-08-28 18:35:08 +02:00
|
|
|
"prost",
|
2022-12-06 14:47:02 +01:00
|
|
|
]
|
|
|
|
|
2024-03-19 11:12:03 +01:00
|
|
|
[[package]]
|
|
|
|
name = "prost-wkt"
|
2024-08-28 18:35:08 +02:00
|
|
|
version = "0.6.0"
|
2024-03-19 11:12:03 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 18:35:08 +02:00
|
|
|
checksum = "a8d84e2bee181b04c2bac339f2bfe818c46a99750488cc6728ce4181d5aa8299"
|
2024-03-19 11:12:03 +01:00
|
|
|
dependencies = [
|
|
|
|
"chrono",
|
|
|
|
"inventory",
|
2024-08-28 18:35:08 +02:00
|
|
|
"prost",
|
2024-03-19 11:12:03 +01:00
|
|
|
"serde",
|
|
|
|
"serde_derive",
|
|
|
|
"serde_json",
|
|
|
|
"typetag",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "prost-wkt-build"
|
2024-08-28 18:35:08 +02:00
|
|
|
version = "0.6.0"
|
2024-03-19 11:12:03 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 18:35:08 +02:00
|
|
|
checksum = "8a669d5acbe719010c6f62a64e6d7d88fdedc1fe46e419747949ecb6312e9b14"
|
2024-03-19 11:12:03 +01:00
|
|
|
dependencies = [
|
2024-08-28 23:42:29 +02:00
|
|
|
"heck 0.4.1",
|
2024-08-28 18:35:08 +02:00
|
|
|
"prost",
|
|
|
|
"prost-build",
|
|
|
|
"prost-types",
|
2024-04-19 15:07:14 +02:00
|
|
|
"quote",
|
2024-03-19 11:12:03 +01:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "prost-wkt-types"
|
2024-08-28 18:35:08 +02:00
|
|
|
version = "0.6.0"
|
2024-03-19 11:12:03 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 18:35:08 +02:00
|
|
|
checksum = "01ef068e9b82e654614b22e6b13699bd545b6c0e2e721736008b00b38aeb4f64"
|
2024-03-19 11:12:03 +01:00
|
|
|
dependencies = [
|
|
|
|
"chrono",
|
2024-08-28 18:35:08 +02:00
|
|
|
"prost",
|
|
|
|
"prost-build",
|
|
|
|
"prost-types",
|
2024-03-19 11:12:03 +01:00
|
|
|
"prost-wkt",
|
|
|
|
"prost-wkt-build",
|
|
|
|
"regex",
|
|
|
|
"serde",
|
|
|
|
"serde_derive",
|
|
|
|
"serde_json",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "pulldown-cmark"
|
|
|
|
version = "0.9.6"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "57206b407293d2bcd3af849ce869d52068623f19e1b5ff8e8778e3309439682b"
|
|
|
|
dependencies = [
|
2024-08-28 23:42:29 +02:00
|
|
|
"bitflags 2.6.0",
|
2024-03-19 11:12:03 +01:00
|
|
|
"memchr",
|
|
|
|
"unicase",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "pulldown-cmark-to-cmark"
|
|
|
|
version = "10.0.4"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "0194e6e1966c23cc5fd988714f85b18d548d773e81965413555d96569931833d"
|
|
|
|
dependencies = [
|
|
|
|
"pulldown-cmark",
|
|
|
|
]
|
|
|
|
|
2024-03-01 17:00:53 +01:00
|
|
|
[[package]]
|
|
|
|
name = "quick-xml"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "0.36.1"
|
2024-03-01 17:00:53 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "96a05e2e8efddfa51a84ca47cec303fac86c8541b686d37cac5efc0e094417bc"
|
2024-03-01 17:00:53 +01:00
|
|
|
dependencies = [
|
|
|
|
"memchr",
|
|
|
|
"serde",
|
|
|
|
]
|
|
|
|
|
2024-07-20 20:15:42 +02:00
|
|
|
[[package]]
|
|
|
|
name = "quinn"
|
|
|
|
version = "0.11.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "e4ceeeeabace7857413798eb1ffa1e9c905a9946a57d81fb69b4b71c4d8eb3ad"
|
|
|
|
dependencies = [
|
|
|
|
"bytes",
|
|
|
|
"pin-project-lite",
|
|
|
|
"quinn-proto",
|
|
|
|
"quinn-udp",
|
2024-07-28 18:11:41 +02:00
|
|
|
"rustc-hash 1.1.0",
|
2024-08-28 18:35:08 +02:00
|
|
|
"rustls",
|
2024-07-20 20:15:42 +02:00
|
|
|
"thiserror",
|
|
|
|
"tokio",
|
|
|
|
"tracing",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "quinn-proto"
|
|
|
|
version = "0.11.3"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "ddf517c03a109db8100448a4be38d498df8a210a99fe0e1b9eaf39e78c640efe"
|
|
|
|
dependencies = [
|
|
|
|
"bytes",
|
|
|
|
"rand",
|
|
|
|
"ring",
|
2024-07-28 18:11:41 +02:00
|
|
|
"rustc-hash 1.1.0",
|
2024-08-28 18:35:08 +02:00
|
|
|
"rustls",
|
2024-07-20 20:15:42 +02:00
|
|
|
"slab",
|
|
|
|
"thiserror",
|
|
|
|
"tinyvec",
|
|
|
|
"tracing",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "quinn-udp"
|
|
|
|
version = "0.5.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "9096629c45860fc7fb143e125eb826b5e721e10be3263160c7d60ca832cf8c46"
|
|
|
|
dependencies = [
|
|
|
|
"libc",
|
|
|
|
"once_cell",
|
|
|
|
"socket2",
|
|
|
|
"tracing",
|
|
|
|
"windows-sys 0.52.0",
|
|
|
|
]
|
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "quote"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "1.0.37"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af"
|
2022-08-25 17:04:07 +02:00
|
|
|
dependencies = [
|
2024-04-19 15:07:14 +02:00
|
|
|
"proc-macro2",
|
2022-08-10 17:52:42 +02:00
|
|
|
]
|
|
|
|
|
2022-08-11 22:52:55 +02:00
|
|
|
[[package]]
|
|
|
|
name = "radix_trie"
|
|
|
|
version = "0.2.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "c069c179fcdc6a2fe24d8d18305cf085fdbd4f922c041943e203685d6a1c58fd"
|
|
|
|
dependencies = [
|
|
|
|
"endian-type",
|
|
|
|
"nibble_vec",
|
|
|
|
]
|
|
|
|
|
2022-09-17 19:52:02 +02:00
|
|
|
[[package]]
|
|
|
|
name = "rand"
|
|
|
|
version = "0.8.5"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
|
|
|
|
dependencies = [
|
|
|
|
"libc",
|
|
|
|
"rand_chacha",
|
2023-10-08 13:03:22 +02:00
|
|
|
"rand_core",
|
2022-09-17 19:52:02 +02:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "rand_chacha"
|
|
|
|
version = "0.3.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
|
|
|
|
dependencies = [
|
|
|
|
"ppv-lite86",
|
2023-10-08 13:03:22 +02:00
|
|
|
"rand_core",
|
2022-09-17 19:52:02 +02:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "rand_core"
|
|
|
|
version = "0.6.4"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
|
|
|
|
dependencies = [
|
|
|
|
"getrandom",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "rand_xorshift"
|
|
|
|
version = "0.3.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f"
|
|
|
|
dependencies = [
|
2023-10-08 13:03:22 +02:00
|
|
|
"rand_core",
|
2022-09-17 19:52:02 +02:00
|
|
|
]
|
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "rayon"
|
2024-01-17 07:45:55 +01:00
|
|
|
version = "1.8.1"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-01-17 07:45:55 +01:00
|
|
|
checksum = "fa7237101a77a10773db45d62004a272517633fbcc3df19d96455ede1122e051"
|
2022-08-25 17:04:07 +02:00
|
|
|
dependencies = [
|
|
|
|
"either",
|
|
|
|
"rayon-core",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "rayon-core"
|
2024-01-17 07:45:55 +01:00
|
|
|
version = "1.12.1"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-01-17 07:45:55 +01:00
|
|
|
checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2"
|
2022-08-25 17:04:07 +02:00
|
|
|
dependencies = [
|
|
|
|
"crossbeam-deque",
|
|
|
|
"crossbeam-utils",
|
|
|
|
]
|
|
|
|
|
2024-07-21 00:36:19 +02:00
|
|
|
[[package]]
|
|
|
|
name = "redb"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "2.1.2"
|
2024-07-21 00:36:19 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "58323dc32ea52a8ae105ff94bc0460c5d906307533ba3401aa63db3cbe491fe5"
|
2024-07-21 00:36:19 +02:00
|
|
|
dependencies = [
|
|
|
|
"libc",
|
|
|
|
]
|
|
|
|
|
2022-08-11 22:52:55 +02:00
|
|
|
[[package]]
|
|
|
|
name = "redox_syscall"
|
|
|
|
version = "0.2.16"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
|
|
|
|
dependencies = [
|
2023-11-05 19:18:01 +01:00
|
|
|
"bitflags 1.3.2",
|
2022-08-11 22:52:55 +02:00
|
|
|
]
|
|
|
|
|
2024-02-23 20:42:52 +01:00
|
|
|
[[package]]
|
|
|
|
name = "redox_syscall"
|
|
|
|
version = "0.3.5"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29"
|
|
|
|
dependencies = [
|
|
|
|
"bitflags 1.3.2",
|
|
|
|
]
|
|
|
|
|
2023-12-13 10:34:17 +01:00
|
|
|
[[package]]
|
|
|
|
name = "redox_syscall"
|
|
|
|
version = "0.4.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa"
|
|
|
|
dependencies = [
|
|
|
|
"bitflags 1.3.2",
|
|
|
|
]
|
|
|
|
|
2022-08-11 22:52:55 +02:00
|
|
|
[[package]]
|
|
|
|
name = "redox_users"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.4.4"
|
2022-08-11 22:52:55 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4"
|
2022-08-11 22:52:55 +02:00
|
|
|
dependencies = [
|
|
|
|
"getrandom",
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
"libredox",
|
2022-08-11 22:52:55 +02:00
|
|
|
"thiserror",
|
|
|
|
]
|
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "regex"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "1.10.6"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619"
|
2022-08-25 17:04:07 +02:00
|
|
|
dependencies = [
|
2022-10-13 00:45:52 +02:00
|
|
|
"aho-corasick",
|
|
|
|
"memchr",
|
2024-08-28 23:42:29 +02:00
|
|
|
"regex-automata 0.4.7",
|
2024-03-17 20:09:06 +01:00
|
|
|
"regex-syntax 0.8.2",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "regex-automata"
|
|
|
|
version = "0.1.10"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132"
|
|
|
|
dependencies = [
|
|
|
|
"regex-syntax 0.6.29",
|
2022-08-25 17:04:07 +02:00
|
|
|
]
|
|
|
|
|
2023-07-29 21:14:44 +02:00
|
|
|
[[package]]
|
|
|
|
name = "regex-automata"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "0.4.7"
|
2023-07-29 21:14:44 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
dependencies = [
|
|
|
|
"aho-corasick",
|
|
|
|
"memchr",
|
2024-03-17 20:09:06 +01:00
|
|
|
"regex-syntax 0.8.2",
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
]
|
2023-07-29 21:14:44 +02:00
|
|
|
|
2024-03-17 20:09:06 +01:00
|
|
|
[[package]]
|
|
|
|
name = "regex-syntax"
|
|
|
|
version = "0.6.29"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
|
|
|
|
|
2023-05-01 16:29:20 +02:00
|
|
|
[[package]]
|
|
|
|
name = "regex-syntax"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.8.2"
|
2023-05-01 16:29:20 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"
|
2023-05-01 16:29:20 +02:00
|
|
|
|
2024-01-14 16:31:04 +01:00
|
|
|
[[package]]
|
|
|
|
name = "relative-path"
|
|
|
|
version = "1.9.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "e898588f33fdd5b9420719948f9f2a32c922a246964576f71ba7f24f80610fbc"
|
|
|
|
|
2023-11-18 11:44:38 +01:00
|
|
|
[[package]]
|
|
|
|
name = "reqwest"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "0.12.7"
|
2023-11-18 11:44:38 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "f8f4955649ef5c38cc7f9e8aa41761d48fb9677197daea9984dc54f56aad5e63"
|
2023-11-18 11:44:38 +01:00
|
|
|
dependencies = [
|
2024-07-20 20:15:42 +02:00
|
|
|
"base64 0.22.1",
|
2023-11-18 11:44:38 +01:00
|
|
|
"bytes",
|
|
|
|
"futures-core",
|
|
|
|
"futures-util",
|
2024-08-28 18:35:08 +02:00
|
|
|
"h2",
|
|
|
|
"http",
|
|
|
|
"http-body",
|
2024-07-20 20:15:42 +02:00
|
|
|
"http-body-util",
|
2024-08-28 18:35:08 +02:00
|
|
|
"hyper",
|
|
|
|
"hyper-rustls",
|
2024-07-20 20:15:42 +02:00
|
|
|
"hyper-util",
|
2023-11-18 11:44:38 +01:00
|
|
|
"ipnet",
|
|
|
|
"js-sys",
|
|
|
|
"log",
|
|
|
|
"mime",
|
|
|
|
"once_cell",
|
|
|
|
"percent-encoding",
|
|
|
|
"pin-project-lite",
|
2024-07-20 20:15:42 +02:00
|
|
|
"quinn",
|
2024-08-28 18:35:08 +02:00
|
|
|
"rustls",
|
|
|
|
"rustls-native-certs",
|
|
|
|
"rustls-pemfile",
|
2024-07-20 20:15:42 +02:00
|
|
|
"rustls-pki-types",
|
2023-11-18 11:44:38 +01:00
|
|
|
"serde",
|
|
|
|
"serde_json",
|
|
|
|
"serde_urlencoded",
|
2024-07-20 20:15:42 +02:00
|
|
|
"sync_wrapper 1.0.1",
|
2023-11-18 11:44:38 +01:00
|
|
|
"tokio",
|
2024-08-28 18:35:08 +02:00
|
|
|
"tokio-rustls",
|
2023-11-18 11:44:38 +01:00
|
|
|
"tokio-util",
|
|
|
|
"tower-service",
|
|
|
|
"url",
|
|
|
|
"wasm-bindgen",
|
|
|
|
"wasm-bindgen-futures",
|
|
|
|
"wasm-streams",
|
|
|
|
"web-sys",
|
2024-08-28 23:42:29 +02:00
|
|
|
"windows-registry",
|
2023-11-18 11:44:38 +01:00
|
|
|
]
|
|
|
|
|
2024-06-27 10:27:29 +02:00
|
|
|
[[package]]
|
|
|
|
name = "reqwest-middleware"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "0.3.3"
|
2024-06-27 10:27:29 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "562ceb5a604d3f7c885a792d42c199fd8af239d0a51b2fa6a78aafa092452b04"
|
2024-06-27 10:27:29 +02:00
|
|
|
dependencies = [
|
|
|
|
"anyhow",
|
|
|
|
"async-trait",
|
2024-08-28 18:35:08 +02:00
|
|
|
"http",
|
2024-06-27 10:27:29 +02:00
|
|
|
"reqwest",
|
|
|
|
"serde",
|
|
|
|
"thiserror",
|
2024-07-20 20:15:42 +02:00
|
|
|
"tower-service",
|
2024-06-27 10:27:29 +02:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "reqwest-tracing"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "0.5.3"
|
2024-06-27 10:27:29 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "bfdd9bfa64c72233d8dd99ab7883efcdefe9e16d46488ecb9228b71a2e2ceb45"
|
2024-06-27 10:27:29 +02:00
|
|
|
dependencies = [
|
|
|
|
"anyhow",
|
|
|
|
"async-trait",
|
|
|
|
"getrandom",
|
2024-08-28 18:35:08 +02:00
|
|
|
"http",
|
2024-07-20 20:15:42 +02:00
|
|
|
"matchit 0.8.4",
|
|
|
|
"opentelemetry 0.22.0",
|
2024-06-27 10:27:29 +02:00
|
|
|
"reqwest",
|
|
|
|
"reqwest-middleware",
|
|
|
|
"tracing",
|
2024-07-20 20:15:42 +02:00
|
|
|
"tracing-opentelemetry 0.23.0",
|
2024-06-27 10:27:29 +02:00
|
|
|
]
|
|
|
|
|
2023-10-12 20:38:28 +02:00
|
|
|
[[package]]
|
|
|
|
name = "ring"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.17.7"
|
2023-10-12 20:38:28 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "688c63d65483050968b2a8937f7995f443e27041a0f7700aa59b0822aedebb74"
|
2023-10-12 20:38:28 +02:00
|
|
|
dependencies = [
|
|
|
|
"cc",
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
"getrandom",
|
2023-10-12 20:38:28 +02:00
|
|
|
"libc",
|
|
|
|
"spin",
|
|
|
|
"untrusted",
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
"windows-sys 0.48.0",
|
2023-10-12 20:38:28 +02:00
|
|
|
]
|
|
|
|
|
2022-08-04 15:44:49 +02:00
|
|
|
[[package]]
|
|
|
|
name = "rnix"
|
2022-12-06 14:31:09 +01:00
|
|
|
version = "0.11.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "bb35cedbeb70e0ccabef2a31bcff0aebd114f19566086300b8f42c725fc2cb5f"
|
2022-08-04 15:44:49 +02:00
|
|
|
dependencies = [
|
|
|
|
"rowan",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "rowan"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.15.15"
|
2022-08-04 15:44:49 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "32a58fa8a7ccff2aec4f39cc45bf5f985cec7125ab271cf681c279fd00192b49"
|
2022-08-04 15:44:49 +02:00
|
|
|
dependencies = [
|
|
|
|
"countme",
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
"hashbrown 0.14.3",
|
|
|
|
"memoffset 0.9.0",
|
2024-07-28 18:11:41 +02:00
|
|
|
"rustc-hash 1.1.0",
|
2022-08-04 15:44:49 +02:00
|
|
|
"text-size",
|
|
|
|
]
|
|
|
|
|
2024-01-14 16:31:04 +01:00
|
|
|
[[package]]
|
|
|
|
name = "rstest"
|
2024-04-10 13:37:45 +02:00
|
|
|
version = "0.19.0"
|
2024-01-14 16:31:04 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-04-10 13:37:45 +02:00
|
|
|
checksum = "9d5316d2a1479eeef1ea21e7f9ddc67c191d497abc8fc3ba2467857abbb68330"
|
2024-01-14 16:31:04 +01:00
|
|
|
dependencies = [
|
|
|
|
"futures",
|
|
|
|
"futures-timer",
|
|
|
|
"rstest_macros",
|
|
|
|
"rustc_version",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "rstest_macros"
|
2024-04-10 13:37:45 +02:00
|
|
|
version = "0.19.0"
|
2024-01-14 16:31:04 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-04-10 13:37:45 +02:00
|
|
|
checksum = "04a9df72cc1f67020b0d63ad9bfe4a323e459ea7eb68e03bd9824db49f9a4c25"
|
2024-01-14 16:31:04 +01:00
|
|
|
dependencies = [
|
|
|
|
"cfg-if",
|
|
|
|
"glob",
|
2024-04-19 15:07:14 +02:00
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
2024-01-14 16:31:04 +01:00
|
|
|
"regex",
|
|
|
|
"relative-path",
|
|
|
|
"rustc_version",
|
2024-08-28 23:42:29 +02:00
|
|
|
"syn 2.0.76",
|
2024-01-14 16:31:04 +01:00
|
|
|
"unicode-ident",
|
|
|
|
]
|
|
|
|
|
2024-03-23 21:49:49 +01:00
|
|
|
[[package]]
|
|
|
|
name = "rstest_reuse"
|
|
|
|
version = "0.6.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "88530b681abe67924d42cca181d070e3ac20e0740569441a9e35a7cedd2b34a4"
|
|
|
|
dependencies = [
|
2024-04-19 15:07:14 +02:00
|
|
|
"quote",
|
2024-03-23 21:49:49 +01:00
|
|
|
"rand",
|
|
|
|
"rustc_version",
|
2024-08-28 23:42:29 +02:00
|
|
|
"syn 2.0.76",
|
2024-03-23 21:49:49 +01:00
|
|
|
]
|
|
|
|
|
refactor(tvix/store/blobsvc): make BlobStore async
We previously kept the trait of a BlobService sync.
This however had some annoying consequences:
- It became more and more complicated to track when we're in a context
with an async runtime in the context or not, producing bugs like
https://b.tvl.fyi/issues/304
- The sync trait shielded away async clients from async worloads,
requiring manual block_on code inside the gRPC client code, and
spawn_blocking calls in consumers of the trait, even if they were
async (like the gRPC server)
- We had to write our own custom glue code (SyncReadIntoAsyncRead)
to convert a sync io::Read into a tokio::io::AsyncRead, which already
existed in tokio internally, but upstream ia hesitant to expose.
This now makes the BlobService trait async (via the async_trait macro,
like we already do in various gRPC parts), and replaces the sync readers
and writers with their async counterparts.
Tests interacting with a BlobService now need to have an async runtime
available, the easiest way for this is to mark the test functions
with the tokio::test macro, allowing us to directly .await in the test
function.
In places where we don't have an async runtime available from context
(like tvix-cli), we can pass one down explicitly.
Now that we don't provide a sync interface anymore, the (sync) FUSE
library now holds a pointer to a tokio runtime handle, and needs to at
least have 2 threads available when talking to a blob service (which is
why some of the tests now use the multi_thread flavor).
The FUSE tests got a bit more verbose, as we couldn't use the
setup_and_mount function accepting a callback anymore. We can hopefully
move some of the test fixture setup to rstest in the future to make this
less repetitive.
Co-Authored-By: Connor Brewster <cbrewster@hey.com>
Change-Id: Ia0501b606e32c852d0108de9c9016b21c94a3c05
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9329
Reviewed-by: Connor Brewster <cbrewster@hey.com>
Tested-by: BuildkiteCI
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
2023-09-13 14:20:21 +02:00
|
|
|
[[package]]
|
|
|
|
name = "rustc-demangle"
|
|
|
|
version = "0.1.23"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76"
|
|
|
|
|
2022-08-04 15:44:49 +02:00
|
|
|
[[package]]
|
|
|
|
name = "rustc-hash"
|
|
|
|
version = "1.1.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
|
|
|
|
|
2024-07-28 18:11:41 +02:00
|
|
|
[[package]]
|
|
|
|
name = "rustc-hash"
|
|
|
|
version = "2.0.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152"
|
|
|
|
|
2023-11-19 21:21:24 +01:00
|
|
|
[[package]]
|
|
|
|
name = "rustc_version"
|
|
|
|
version = "0.4.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
|
|
|
|
dependencies = [
|
|
|
|
"semver",
|
|
|
|
]
|
|
|
|
|
2022-08-11 22:52:55 +02:00
|
|
|
[[package]]
|
|
|
|
name = "rustix"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "0.38.35"
|
2023-12-13 10:34:17 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "a85d50532239da68e9addb745ba38ff4612a242c1c7ceea689c4bc7c2f43c36f"
|
2023-12-13 10:34:17 +01:00
|
|
|
dependencies = [
|
2024-08-28 23:42:29 +02:00
|
|
|
"bitflags 2.6.0",
|
2023-12-13 10:34:17 +01:00
|
|
|
"errno",
|
|
|
|
"libc",
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
"linux-raw-sys",
|
|
|
|
"windows-sys 0.52.0",
|
2022-08-11 22:52:55 +02:00
|
|
|
]
|
|
|
|
|
2024-07-20 20:15:42 +02:00
|
|
|
[[package]]
|
|
|
|
name = "rustls"
|
|
|
|
version = "0.23.7"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "ebbbdb961df0ad3f2652da8f3fdc4b36122f568f968f45ad3316f26c025c677b"
|
|
|
|
dependencies = [
|
|
|
|
"log",
|
|
|
|
"once_cell",
|
|
|
|
"ring",
|
|
|
|
"rustls-pki-types",
|
2024-08-28 18:35:08 +02:00
|
|
|
"rustls-webpki",
|
2024-07-20 20:15:42 +02:00
|
|
|
"subtle",
|
|
|
|
"zeroize",
|
|
|
|
]
|
|
|
|
|
2024-03-15 21:53:43 +01:00
|
|
|
[[package]]
|
|
|
|
name = "rustls-native-certs"
|
|
|
|
version = "0.7.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "8f1fb85efa936c42c6d5fc28d2629bb51e4b2f4b8a5211e297d599cc5a093792"
|
|
|
|
dependencies = [
|
|
|
|
"openssl-probe",
|
2024-08-28 18:35:08 +02:00
|
|
|
"rustls-pemfile",
|
2024-03-15 21:53:43 +01:00
|
|
|
"rustls-pki-types",
|
|
|
|
"schannel",
|
|
|
|
"security-framework",
|
|
|
|
]
|
|
|
|
|
2024-03-01 17:00:53 +01:00
|
|
|
[[package]]
|
|
|
|
name = "rustls-pemfile"
|
|
|
|
version = "2.1.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "3c333bb734fcdedcea57de1602543590f545f127dc8b533324318fd492c5c70b"
|
|
|
|
dependencies = [
|
2024-07-20 20:15:42 +02:00
|
|
|
"base64 0.21.7",
|
2024-03-01 17:00:53 +01:00
|
|
|
"rustls-pki-types",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "rustls-pki-types"
|
|
|
|
version = "1.3.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "5ede67b28608b4c60685c7d54122d4400d90f62b40caee7700e700380a390fa8"
|
|
|
|
|
2024-03-15 21:53:43 +01:00
|
|
|
[[package]]
|
|
|
|
name = "rustls-webpki"
|
|
|
|
version = "0.102.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "faaa0a62740bedb9b2ef5afa303da42764c012f743917351dc9a237ea1663610"
|
|
|
|
dependencies = [
|
|
|
|
"ring",
|
|
|
|
"rustls-pki-types",
|
|
|
|
"untrusted",
|
|
|
|
]
|
|
|
|
|
2022-11-13 00:23:14 +01:00
|
|
|
[[package]]
|
|
|
|
name = "rustversion"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "1.0.14"
|
2022-11-13 00:23:14 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4"
|
2022-11-13 00:23:14 +01:00
|
|
|
|
2022-08-11 22:52:55 +02:00
|
|
|
[[package]]
|
|
|
|
name = "rustyline"
|
2023-02-01 18:54:30 +01:00
|
|
|
version = "10.1.1"
|
2022-08-11 22:52:55 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-02-01 18:54:30 +01:00
|
|
|
checksum = "c1e83c32c3f3c33b08496e0d1df9ea8c64d39adb8eb36a1ebb1440c690697aef"
|
2022-08-11 22:52:55 +02:00
|
|
|
dependencies = [
|
2023-11-05 19:18:01 +01:00
|
|
|
"bitflags 1.3.2",
|
2022-08-11 22:52:55 +02:00
|
|
|
"cfg-if",
|
|
|
|
"clipboard-win",
|
|
|
|
"dirs-next",
|
|
|
|
"fd-lock",
|
|
|
|
"libc",
|
|
|
|
"log",
|
|
|
|
"memchr",
|
2023-09-16 17:20:34 +02:00
|
|
|
"nix 0.25.1",
|
2022-08-11 22:52:55 +02:00
|
|
|
"radix_trie",
|
|
|
|
"scopeguard",
|
|
|
|
"unicode-segmentation",
|
|
|
|
"unicode-width",
|
|
|
|
"utf8parse",
|
|
|
|
"winapi",
|
|
|
|
]
|
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "ryu"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "1.0.16"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c"
|
2022-08-25 17:04:07 +02:00
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "same-file"
|
|
|
|
version = "1.0.6"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
|
|
|
|
dependencies = [
|
|
|
|
"winapi-util",
|
|
|
|
]
|
|
|
|
|
2023-10-12 20:38:28 +02:00
|
|
|
[[package]]
|
|
|
|
name = "schannel"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.1.23"
|
2023-10-12 20:38:28 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534"
|
2023-10-12 20:38:28 +02:00
|
|
|
dependencies = [
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
"windows-sys 0.52.0",
|
2023-10-12 20:38:28 +02:00
|
|
|
]
|
|
|
|
|
2024-06-14 13:10:57 +02:00
|
|
|
[[package]]
|
|
|
|
name = "scoped-tls"
|
|
|
|
version = "1.0.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294"
|
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "scopeguard"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "1.2.0"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
|
2022-08-25 17:04:07 +02:00
|
|
|
|
2023-10-12 20:38:28 +02:00
|
|
|
[[package]]
|
|
|
|
name = "security-framework"
|
|
|
|
version = "2.9.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de"
|
|
|
|
dependencies = [
|
2023-11-05 19:18:01 +01:00
|
|
|
"bitflags 1.3.2",
|
2023-10-12 20:38:28 +02:00
|
|
|
"core-foundation",
|
|
|
|
"core-foundation-sys",
|
|
|
|
"libc",
|
|
|
|
"security-framework-sys",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "security-framework-sys"
|
|
|
|
version = "2.9.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a"
|
|
|
|
dependencies = [
|
|
|
|
"core-foundation-sys",
|
|
|
|
"libc",
|
|
|
|
]
|
|
|
|
|
2023-11-19 21:21:24 +01:00
|
|
|
[[package]]
|
|
|
|
name = "semver"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "1.0.21"
|
2023-11-19 21:21:24 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "b97ed7a9823b74f99c7742f5336af7be5ecd3eeafcb1507d1fa93347b1d589b0"
|
2023-11-19 21:21:24 +01:00
|
|
|
|
2022-08-04 15:44:49 +02:00
|
|
|
[[package]]
|
|
|
|
name = "serde"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "1.0.209"
|
2022-08-04 15:44:49 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "99fce0ffe7310761ca6bf9faf5115afbc19688edd00171d81b1bb1b116c63e09"
|
2022-08-25 17:04:07 +02:00
|
|
|
dependencies = [
|
2022-12-16 12:54:22 +01:00
|
|
|
"serde_derive",
|
2022-08-25 17:04:07 +02:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "serde_derive"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "1.0.209"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "a5831b979fd7b5439637af1752d535ff49f4860c0f341d1baeb6faf0f4242170"
|
2022-08-25 17:04:07 +02:00
|
|
|
dependencies = [
|
2024-04-19 15:07:14 +02:00
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
2024-08-28 23:42:29 +02:00
|
|
|
"syn 2.0.76",
|
2022-08-25 17:04:07 +02:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "serde_json"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "1.0.111"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "176e46fa42316f18edd598015a5166857fc835ec732f5215eac6b7bdbf0a84f4"
|
2022-08-25 17:04:07 +02:00
|
|
|
dependencies = [
|
2022-12-16 12:54:22 +01:00
|
|
|
"itoa",
|
2022-08-25 17:04:07 +02:00
|
|
|
"ryu",
|
|
|
|
"serde",
|
|
|
|
]
|
|
|
|
|
2024-05-14 13:55:43 +02:00
|
|
|
[[package]]
|
|
|
|
name = "serde_path_to_error"
|
|
|
|
version = "0.1.16"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6"
|
|
|
|
dependencies = [
|
|
|
|
"itoa",
|
|
|
|
"serde",
|
|
|
|
]
|
|
|
|
|
2024-03-19 11:12:03 +01:00
|
|
|
[[package]]
|
|
|
|
name = "serde_qs"
|
|
|
|
version = "0.12.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "0431a35568651e363364210c91983c1da5eb29404d9f0928b67d4ebcfa7d330c"
|
|
|
|
dependencies = [
|
|
|
|
"percent-encoding",
|
|
|
|
"serde",
|
|
|
|
"thiserror",
|
|
|
|
]
|
|
|
|
|
2023-01-24 15:54:29 +01:00
|
|
|
[[package]]
|
|
|
|
name = "serde_spanned"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "0.6.7"
|
2023-01-24 15:54:29 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d"
|
2023-01-24 15:54:29 +01:00
|
|
|
dependencies = [
|
|
|
|
"serde",
|
|
|
|
]
|
|
|
|
|
2024-06-17 01:10:55 +02:00
|
|
|
[[package]]
|
|
|
|
name = "serde_tagged"
|
|
|
|
version = "0.3.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "76cd248df2ce32924bfc2273e1af035ff3092b73253fe0567230b5c4154a99e9"
|
|
|
|
dependencies = [
|
|
|
|
"erased-serde",
|
|
|
|
"serde",
|
|
|
|
]
|
|
|
|
|
2023-11-18 11:44:38 +01:00
|
|
|
[[package]]
|
|
|
|
name = "serde_urlencoded"
|
|
|
|
version = "0.7.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd"
|
|
|
|
dependencies = [
|
|
|
|
"form_urlencoded",
|
|
|
|
"itoa",
|
|
|
|
"ryu",
|
|
|
|
"serde",
|
|
|
|
]
|
|
|
|
|
2024-03-19 11:12:03 +01:00
|
|
|
[[package]]
|
|
|
|
name = "serde_with"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "3.9.0"
|
2024-03-19 11:12:03 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "69cecfa94848272156ea67b2b1a53f20fc7bc638c4a46d2f8abde08f05f4b857"
|
2024-03-19 11:12:03 +01:00
|
|
|
dependencies = [
|
2024-08-28 23:42:29 +02:00
|
|
|
"base64 0.22.1",
|
2024-03-19 11:12:03 +01:00
|
|
|
"chrono",
|
|
|
|
"hex",
|
|
|
|
"indexmap 1.9.3",
|
|
|
|
"indexmap 2.1.0",
|
|
|
|
"serde",
|
|
|
|
"serde_derive",
|
|
|
|
"serde_json",
|
|
|
|
"serde_with_macros",
|
|
|
|
"time",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "serde_with_macros"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "3.9.0"
|
2024-03-19 11:12:03 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "a8fee4991ef4f274617a51ad4af30519438dacb2f56ac773b08a1922ff743350"
|
2024-03-19 11:12:03 +01:00
|
|
|
dependencies = [
|
|
|
|
"darling",
|
2024-04-19 15:07:14 +02:00
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
2024-08-28 23:42:29 +02:00
|
|
|
"syn 2.0.76",
|
2024-03-19 11:12:03 +01:00
|
|
|
]
|
|
|
|
|
2024-02-21 17:49:07 +01:00
|
|
|
[[package]]
|
|
|
|
name = "sha1"
|
|
|
|
version = "0.10.6"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba"
|
|
|
|
dependencies = [
|
|
|
|
"cfg-if",
|
|
|
|
"cpufeatures",
|
|
|
|
"digest",
|
|
|
|
]
|
|
|
|
|
2023-01-02 16:09:18 +01:00
|
|
|
[[package]]
|
|
|
|
name = "sha2"
|
2024-01-02 13:17:02 +01:00
|
|
|
version = "0.10.8"
|
2023-01-02 16:09:18 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-01-02 13:17:02 +01:00
|
|
|
checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8"
|
2023-01-02 16:09:18 +01:00
|
|
|
dependencies = [
|
|
|
|
"cfg-if",
|
|
|
|
"cpufeatures",
|
2023-09-22 11:59:15 +02:00
|
|
|
"digest",
|
2023-01-02 16:09:18 +01:00
|
|
|
]
|
|
|
|
|
2022-12-28 17:17:53 +01:00
|
|
|
[[package]]
|
|
|
|
name = "sharded-slab"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.1.7"
|
2022-12-28 17:17:53 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6"
|
2022-12-28 17:17:53 +01:00
|
|
|
dependencies = [
|
|
|
|
"lazy_static",
|
|
|
|
]
|
|
|
|
|
2024-08-28 23:42:29 +02:00
|
|
|
[[package]]
|
|
|
|
name = "shlex"
|
|
|
|
version = "1.3.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
|
|
|
|
|
2023-09-03 16:39:44 +02:00
|
|
|
[[package]]
|
|
|
|
name = "signal-hook-registry"
|
|
|
|
version = "1.4.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1"
|
|
|
|
dependencies = [
|
|
|
|
"libc",
|
|
|
|
]
|
|
|
|
|
2023-11-19 21:21:24 +01:00
|
|
|
[[package]]
|
|
|
|
name = "signature"
|
|
|
|
version = "2.2.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de"
|
|
|
|
dependencies = [
|
|
|
|
"rand_core",
|
|
|
|
]
|
|
|
|
|
2022-11-13 00:23:14 +01:00
|
|
|
[[package]]
|
|
|
|
name = "slab"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.4.9"
|
2022-11-13 00:23:14 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67"
|
2022-11-13 00:23:14 +01:00
|
|
|
dependencies = [
|
|
|
|
"autocfg",
|
|
|
|
]
|
|
|
|
|
2022-12-29 21:39:28 +01:00
|
|
|
[[package]]
|
|
|
|
name = "sled"
|
|
|
|
version = "0.34.7"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "7f96b4737c2ce5987354855aed3797279def4ebf734436c6aa4552cf8e169935"
|
|
|
|
dependencies = [
|
|
|
|
"crc32fast",
|
|
|
|
"crossbeam-epoch",
|
|
|
|
"crossbeam-utils",
|
|
|
|
"fs2",
|
|
|
|
"fxhash",
|
|
|
|
"libc",
|
|
|
|
"log",
|
2023-09-16 17:20:34 +02:00
|
|
|
"parking_lot 0.11.2",
|
2022-12-29 21:39:28 +01:00
|
|
|
]
|
|
|
|
|
2022-08-11 22:52:55 +02:00
|
|
|
[[package]]
|
|
|
|
name = "smallvec"
|
2024-01-17 07:45:55 +01:00
|
|
|
version = "1.13.1"
|
2022-08-11 22:52:55 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-01-17 07:45:55 +01:00
|
|
|
checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7"
|
2022-08-11 22:52:55 +02:00
|
|
|
|
2022-08-04 15:44:49 +02:00
|
|
|
[[package]]
|
|
|
|
name = "smol_str"
|
2024-08-19 15:57:26 +02:00
|
|
|
version = "0.2.2"
|
2022-08-04 15:44:49 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-19 15:57:26 +02:00
|
|
|
checksum = "dd538fb6910ac1099850255cf94a94df6551fbdd602454387d0adb2d1ca6dead"
|
2022-08-04 15:44:49 +02:00
|
|
|
dependencies = [
|
|
|
|
"serde",
|
|
|
|
]
|
|
|
|
|
2024-03-01 17:00:53 +01:00
|
|
|
[[package]]
|
|
|
|
name = "snafu"
|
|
|
|
version = "0.7.5"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "e4de37ad025c587a29e8f3f5605c00f70b98715ef90b9061a815b9e59e9042d6"
|
|
|
|
dependencies = [
|
|
|
|
"doc-comment",
|
|
|
|
"snafu-derive",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "snafu-derive"
|
|
|
|
version = "0.7.5"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "990079665f075b699031e9c08fd3ab99be5029b96f3b78dc0709e8f77e4efebf"
|
|
|
|
dependencies = [
|
2024-08-28 23:42:29 +02:00
|
|
|
"heck 0.4.1",
|
2024-04-19 15:07:14 +02:00
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
2024-03-01 17:00:53 +01:00
|
|
|
"syn 1.0.109",
|
|
|
|
]
|
|
|
|
|
2022-11-13 00:23:14 +01:00
|
|
|
[[package]]
|
|
|
|
name = "socket2"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.5.5"
|
refactor(tvix/store/blobsvc): make BlobStore async
We previously kept the trait of a BlobService sync.
This however had some annoying consequences:
- It became more and more complicated to track when we're in a context
with an async runtime in the context or not, producing bugs like
https://b.tvl.fyi/issues/304
- The sync trait shielded away async clients from async worloads,
requiring manual block_on code inside the gRPC client code, and
spawn_blocking calls in consumers of the trait, even if they were
async (like the gRPC server)
- We had to write our own custom glue code (SyncReadIntoAsyncRead)
to convert a sync io::Read into a tokio::io::AsyncRead, which already
existed in tokio internally, but upstream ia hesitant to expose.
This now makes the BlobService trait async (via the async_trait macro,
like we already do in various gRPC parts), and replaces the sync readers
and writers with their async counterparts.
Tests interacting with a BlobService now need to have an async runtime
available, the easiest way for this is to mark the test functions
with the tokio::test macro, allowing us to directly .await in the test
function.
In places where we don't have an async runtime available from context
(like tvix-cli), we can pass one down explicitly.
Now that we don't provide a sync interface anymore, the (sync) FUSE
library now holds a pointer to a tokio runtime handle, and needs to at
least have 2 threads available when talking to a blob service (which is
why some of the tests now use the multi_thread flavor).
The FUSE tests got a bit more verbose, as we couldn't use the
setup_and_mount function accepting a callback anymore. We can hopefully
move some of the test fixture setup to rstest in the future to make this
less repetitive.
Co-Authored-By: Connor Brewster <cbrewster@hey.com>
Change-Id: Ia0501b606e32c852d0108de9c9016b21c94a3c05
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9329
Reviewed-by: Connor Brewster <cbrewster@hey.com>
Tested-by: BuildkiteCI
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
2023-09-13 14:20:21 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9"
|
refactor(tvix/store/blobsvc): make BlobStore async
We previously kept the trait of a BlobService sync.
This however had some annoying consequences:
- It became more and more complicated to track when we're in a context
with an async runtime in the context or not, producing bugs like
https://b.tvl.fyi/issues/304
- The sync trait shielded away async clients from async worloads,
requiring manual block_on code inside the gRPC client code, and
spawn_blocking calls in consumers of the trait, even if they were
async (like the gRPC server)
- We had to write our own custom glue code (SyncReadIntoAsyncRead)
to convert a sync io::Read into a tokio::io::AsyncRead, which already
existed in tokio internally, but upstream ia hesitant to expose.
This now makes the BlobService trait async (via the async_trait macro,
like we already do in various gRPC parts), and replaces the sync readers
and writers with their async counterparts.
Tests interacting with a BlobService now need to have an async runtime
available, the easiest way for this is to mark the test functions
with the tokio::test macro, allowing us to directly .await in the test
function.
In places where we don't have an async runtime available from context
(like tvix-cli), we can pass one down explicitly.
Now that we don't provide a sync interface anymore, the (sync) FUSE
library now holds a pointer to a tokio runtime handle, and needs to at
least have 2 threads available when talking to a blob service (which is
why some of the tests now use the multi_thread flavor).
The FUSE tests got a bit more verbose, as we couldn't use the
setup_and_mount function accepting a callback anymore. We can hopefully
move some of the test fixture setup to rstest in the future to make this
less repetitive.
Co-Authored-By: Connor Brewster <cbrewster@hey.com>
Change-Id: Ia0501b606e32c852d0108de9c9016b21c94a3c05
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9329
Reviewed-by: Connor Brewster <cbrewster@hey.com>
Tested-by: BuildkiteCI
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
2023-09-13 14:20:21 +02:00
|
|
|
dependencies = [
|
|
|
|
"libc",
|
|
|
|
"windows-sys 0.48.0",
|
|
|
|
]
|
|
|
|
|
2023-10-12 20:38:28 +02:00
|
|
|
[[package]]
|
|
|
|
name = "spin"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.9.8"
|
2023-10-12 20:38:28 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67"
|
2023-10-12 20:38:28 +02:00
|
|
|
|
2023-11-19 21:21:24 +01:00
|
|
|
[[package]]
|
|
|
|
name = "spki"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.7.3"
|
2023-11-19 21:21:24 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d"
|
2023-11-19 21:21:24 +01:00
|
|
|
dependencies = [
|
|
|
|
"base64ct",
|
|
|
|
"der",
|
|
|
|
]
|
|
|
|
|
feat(tvix/eval): use lexical-core to format float
Apparently our naive implementation of float formatting, which simply
used {:.5}, and trimmed trailing "0" strings not sufficient.
It wrongly trimmed numbers with zeroes but no decimal point, like
`10000` got trimmed to `1`.
Nix uses `std::to_string` on the double, which according to
https://en.cppreference.com/w/cpp/string/basic_string/to_string
is equivalent to `std::sprintf(buf, "%f", value)`.
https://en.cppreference.com/w/cpp/io/c/fprintf mentions this is treated
like this:
> Precision specifies the exact number of digits to appear after
> the decimal point character. The default precision is 6. In the
> alternative implementation decimal point character is written even if
> no digits follow it. For infinity and not-a-number conversion style
> see notes.
This doesn't seem to be the case though, and Nix uses scientific
notation in some cases.
There's a whole bunch of strategies to determine which is a more compact
notation, and which notation should be used for a given number.
https://github.com/rust-lang/rust/issues/24556 provides some pointers
into various rabbit holes for those interested.
This gist seems to be that currently a different formatting is not
exposed in rust directly, at least not for public consumption.
There is the
[lexical-core](https://github.com/Alexhuszagh/rust-lexical) crate
though, which provides a way to format floats with various strategies
and formats.
Change our implementation of `TotalDisplay` for the `Value::Float` case
to use that. We still need to do some post-processing, because Nix
always adds the sign in scientific notation (and there's no way to
configure lexical-core to do that), and lexical-core in some cases keeps
the trailing zeros.
Even with all that in place, there as a difference in `eval-okay-
fromjson.nix` (from tvix-tests), which I couldn't get to work. I updated
the fixture to a less problematic number.
With this, the testsuite passes again, and does for the upcoming CL
introducing builtins.fromTOML, and enabling the nix testsuite bits for
it, too.
Change-Id: Ie6fba5619e1d9fd7ce669a51594658b029057acc
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7922
Tested-by: BuildkiteCI
Autosubmit: flokli <flokli@flokli.de>
Reviewed-by: tazjin <tazjin@tvl.su>
2023-01-24 19:27:20 +01:00
|
|
|
[[package]]
|
|
|
|
name = "static_assertions"
|
|
|
|
version = "1.1.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
|
|
|
|
|
2022-08-11 22:52:55 +02:00
|
|
|
[[package]]
|
|
|
|
name = "str-buf"
|
|
|
|
version = "1.0.6"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "9e08d8363704e6c71fc928674353e6b7c23dcea9d82d7012c8faf2a3a025f8d0"
|
|
|
|
|
2022-09-18 21:59:59 +02:00
|
|
|
[[package]]
|
|
|
|
name = "strsim"
|
|
|
|
version = "0.10.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
|
|
|
|
|
2024-08-28 23:42:29 +02:00
|
|
|
[[package]]
|
|
|
|
name = "strsim"
|
|
|
|
version = "0.11.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
|
|
|
|
|
2022-09-17 19:52:02 +02:00
|
|
|
[[package]]
|
|
|
|
name = "structmeta"
|
2023-03-26 22:14:32 +02:00
|
|
|
version = "0.1.6"
|
2022-09-17 19:52:02 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-03-26 22:14:32 +02:00
|
|
|
checksum = "104842d6278bf64aa9d2f182ba4bde31e8aec7a131d29b7f444bb9b344a09e2a"
|
2022-09-17 19:52:02 +02:00
|
|
|
dependencies = [
|
2024-04-19 15:07:14 +02:00
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
2022-09-17 19:52:02 +02:00
|
|
|
"structmeta-derive",
|
2023-03-16 13:31:28 +01:00
|
|
|
"syn 1.0.109",
|
2022-09-17 19:52:02 +02:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "structmeta-derive"
|
2023-03-26 22:14:32 +02:00
|
|
|
version = "0.1.6"
|
2022-09-17 19:52:02 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-03-26 22:14:32 +02:00
|
|
|
checksum = "24420be405b590e2d746d83b01f09af673270cf80e9b003a5fa7b651c58c7d93"
|
2022-09-17 19:52:02 +02:00
|
|
|
dependencies = [
|
2024-04-19 15:07:14 +02:00
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
2023-03-16 13:31:28 +01:00
|
|
|
"syn 1.0.109",
|
2022-09-17 19:52:02 +02:00
|
|
|
]
|
|
|
|
|
2022-12-06 14:47:02 +01:00
|
|
|
[[package]]
|
|
|
|
name = "subtle"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "2.5.0"
|
2022-12-06 14:47:02 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc"
|
2022-12-06 14:47:02 +01:00
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "syn"
|
2023-03-16 13:31:28 +01:00
|
|
|
version = "1.0.109"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-03-16 13:31:28 +01:00
|
|
|
checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
|
2022-08-25 17:04:07 +02:00
|
|
|
dependencies = [
|
2024-04-19 15:07:14 +02:00
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
2023-03-26 22:14:32 +02:00
|
|
|
"unicode-ident",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "syn"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "2.0.76"
|
2023-03-26 22:14:32 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "578e081a14e0cefc3279b0472138c513f37b41a08d5a3cca9b6e4e8ceb6cd525"
|
2023-03-26 22:14:32 +02:00
|
|
|
dependencies = [
|
2024-04-19 15:07:14 +02:00
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
2022-08-25 17:04:07 +02:00
|
|
|
"unicode-ident",
|
|
|
|
]
|
|
|
|
|
2022-11-13 00:23:14 +01:00
|
|
|
[[package]]
|
|
|
|
name = "sync_wrapper"
|
2023-02-01 18:54:30 +01:00
|
|
|
version = "0.1.2"
|
2022-11-13 00:23:14 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-02-01 18:54:30 +01:00
|
|
|
checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160"
|
2022-11-13 00:23:14 +01:00
|
|
|
|
2024-05-14 13:55:43 +02:00
|
|
|
[[package]]
|
|
|
|
name = "sync_wrapper"
|
|
|
|
version = "1.0.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394"
|
2024-08-28 23:42:29 +02:00
|
|
|
dependencies = [
|
|
|
|
"futures-core",
|
|
|
|
]
|
2024-05-14 13:55:43 +02:00
|
|
|
|
2022-08-13 20:29:30 +02:00
|
|
|
[[package]]
|
|
|
|
name = "tabwriter"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "1.4.0"
|
2022-08-13 20:29:30 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "a327282c4f64f6dc37e3bba4c2b6842cc3a992f204fa58d917696a89f691e5f6"
|
2022-08-13 20:29:30 +02:00
|
|
|
dependencies = [
|
|
|
|
"unicode-width",
|
|
|
|
]
|
|
|
|
|
2022-09-17 19:52:02 +02:00
|
|
|
[[package]]
|
|
|
|
name = "tempfile"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "3.12.0"
|
2022-09-17 19:52:02 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64"
|
2022-09-17 19:52:02 +02:00
|
|
|
dependencies = [
|
|
|
|
"cfg-if",
|
|
|
|
"fastrand",
|
2024-08-28 23:42:29 +02:00
|
|
|
"once_cell",
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
"rustix",
|
2024-08-28 23:42:29 +02:00
|
|
|
"windows-sys 0.59.0",
|
2022-09-17 19:52:02 +02:00
|
|
|
]
|
|
|
|
|
2022-09-11 23:34:25 +02:00
|
|
|
[[package]]
|
|
|
|
name = "termcolor"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "1.4.1"
|
2022-09-11 23:34:25 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755"
|
2022-09-11 23:34:25 +02:00
|
|
|
dependencies = [
|
|
|
|
"winapi-util",
|
|
|
|
]
|
|
|
|
|
2022-09-17 19:52:02 +02:00
|
|
|
[[package]]
|
|
|
|
name = "test-strategy"
|
|
|
|
version = "0.2.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "62d6408d1406657be2f9d1701fbae379331d30d2f6e92050710edb0d34eeb480"
|
|
|
|
dependencies = [
|
2024-04-19 15:07:14 +02:00
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
2022-09-17 19:52:02 +02:00
|
|
|
"structmeta",
|
2023-03-16 13:31:28 +01:00
|
|
|
"syn 1.0.109",
|
2022-09-17 19:52:02 +02:00
|
|
|
]
|
|
|
|
|
2022-08-04 15:44:49 +02:00
|
|
|
[[package]]
|
|
|
|
name = "text-size"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "1.1.1"
|
2022-08-04 15:44:49 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "f18aa187839b2bdb1ad2fa35ead8c4c2976b64e4363c386d45ac0f7ee85c9233"
|
2022-08-04 15:44:49 +02:00
|
|
|
|
2022-08-11 22:52:55 +02:00
|
|
|
[[package]]
|
|
|
|
name = "thiserror"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "1.0.63"
|
2022-08-11 22:52:55 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724"
|
2022-08-11 22:52:55 +02:00
|
|
|
dependencies = [
|
|
|
|
"thiserror-impl",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "thiserror-impl"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "1.0.63"
|
2022-08-11 22:52:55 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261"
|
2022-08-11 22:52:55 +02:00
|
|
|
dependencies = [
|
2024-04-19 15:07:14 +02:00
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
2024-08-28 23:42:29 +02:00
|
|
|
"syn 2.0.76",
|
2022-08-11 22:52:55 +02:00
|
|
|
]
|
|
|
|
|
2022-12-28 17:17:53 +01:00
|
|
|
[[package]]
|
|
|
|
name = "thread_local"
|
2023-03-16 13:31:28 +01:00
|
|
|
version = "1.1.7"
|
2022-12-28 17:17:53 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-03-16 13:31:28 +01:00
|
|
|
checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152"
|
2022-12-28 17:17:53 +01:00
|
|
|
dependencies = [
|
2023-03-16 13:31:28 +01:00
|
|
|
"cfg-if",
|
2022-12-28 17:17:53 +01:00
|
|
|
"once_cell",
|
|
|
|
]
|
|
|
|
|
2024-06-16 10:43:48 +02:00
|
|
|
[[package]]
|
|
|
|
name = "threadpool"
|
|
|
|
version = "1.8.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa"
|
|
|
|
dependencies = [
|
|
|
|
"num_cpus",
|
|
|
|
]
|
|
|
|
|
2024-03-19 11:12:03 +01:00
|
|
|
[[package]]
|
|
|
|
name = "time"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "0.3.36"
|
2024-03-19 11:12:03 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885"
|
2024-03-19 11:12:03 +01:00
|
|
|
dependencies = [
|
|
|
|
"deranged",
|
|
|
|
"itoa",
|
|
|
|
"num-conv",
|
|
|
|
"powerfmt",
|
|
|
|
"serde",
|
|
|
|
"time-core",
|
|
|
|
"time-macros",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "time-core"
|
|
|
|
version = "0.1.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3"
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "time-macros"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "0.2.18"
|
2024-03-19 11:12:03 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf"
|
2024-03-19 11:12:03 +01:00
|
|
|
dependencies = [
|
|
|
|
"num-conv",
|
|
|
|
"time-core",
|
|
|
|
]
|
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "tinytemplate"
|
|
|
|
version = "1.2.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc"
|
|
|
|
dependencies = [
|
|
|
|
"serde",
|
|
|
|
"serde_json",
|
|
|
|
]
|
|
|
|
|
2023-06-09 18:07:00 +02:00
|
|
|
[[package]]
|
|
|
|
name = "tinyvec"
|
|
|
|
version = "1.6.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
|
|
|
|
dependencies = [
|
|
|
|
"tinyvec_macros",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "tinyvec_macros"
|
|
|
|
version = "0.1.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
|
|
|
|
|
2022-11-13 00:23:14 +01:00
|
|
|
[[package]]
|
|
|
|
name = "tokio"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "1.39.3"
|
2022-11-13 00:23:14 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "9babc99b9923bfa4804bd74722ff02c0381021eafa4db9949217e3be8e84fff5"
|
2022-11-13 00:23:14 +01:00
|
|
|
dependencies = [
|
refactor(tvix/store/blobsvc): make BlobStore async
We previously kept the trait of a BlobService sync.
This however had some annoying consequences:
- It became more and more complicated to track when we're in a context
with an async runtime in the context or not, producing bugs like
https://b.tvl.fyi/issues/304
- The sync trait shielded away async clients from async worloads,
requiring manual block_on code inside the gRPC client code, and
spawn_blocking calls in consumers of the trait, even if they were
async (like the gRPC server)
- We had to write our own custom glue code (SyncReadIntoAsyncRead)
to convert a sync io::Read into a tokio::io::AsyncRead, which already
existed in tokio internally, but upstream ia hesitant to expose.
This now makes the BlobService trait async (via the async_trait macro,
like we already do in various gRPC parts), and replaces the sync readers
and writers with their async counterparts.
Tests interacting with a BlobService now need to have an async runtime
available, the easiest way for this is to mark the test functions
with the tokio::test macro, allowing us to directly .await in the test
function.
In places where we don't have an async runtime available from context
(like tvix-cli), we can pass one down explicitly.
Now that we don't provide a sync interface anymore, the (sync) FUSE
library now holds a pointer to a tokio runtime handle, and needs to at
least have 2 threads available when talking to a blob service (which is
why some of the tests now use the multi_thread flavor).
The FUSE tests got a bit more verbose, as we couldn't use the
setup_and_mount function accepting a callback anymore. We can hopefully
move some of the test fixture setup to rstest in the future to make this
less repetitive.
Co-Authored-By: Connor Brewster <cbrewster@hey.com>
Change-Id: Ia0501b606e32c852d0108de9c9016b21c94a3c05
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9329
Reviewed-by: Connor Brewster <cbrewster@hey.com>
Tested-by: BuildkiteCI
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
2023-09-13 14:20:21 +02:00
|
|
|
"backtrace",
|
2022-11-13 00:23:14 +01:00
|
|
|
"bytes",
|
|
|
|
"libc",
|
2024-08-28 23:42:29 +02:00
|
|
|
"mio 1.0.2",
|
2022-11-13 00:23:14 +01:00
|
|
|
"pin-project-lite",
|
2023-09-03 16:39:44 +02:00
|
|
|
"signal-hook-registry",
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
"socket2",
|
2022-11-13 00:23:14 +01:00
|
|
|
"tokio-macros",
|
2024-08-28 23:42:29 +02:00
|
|
|
"windows-sys 0.52.0",
|
2022-11-13 00:23:14 +01:00
|
|
|
]
|
|
|
|
|
2023-09-23 02:45:01 +02:00
|
|
|
[[package]]
|
|
|
|
name = "tokio-listener"
|
2024-07-20 20:15:42 +02:00
|
|
|
version = "0.4.3"
|
2023-09-23 02:45:01 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-07-20 20:15:42 +02:00
|
|
|
checksum = "914a439d123292125bc806649c396d23e1aac5da4052f0d97b23137b38782f46"
|
2023-09-23 02:45:01 +02:00
|
|
|
dependencies = [
|
2024-08-28 18:35:08 +02:00
|
|
|
"axum",
|
2024-06-30 21:29:11 +02:00
|
|
|
"clap",
|
2023-09-23 02:45:01 +02:00
|
|
|
"document-features",
|
|
|
|
"futures-core",
|
2024-03-15 21:53:43 +01:00
|
|
|
"futures-util",
|
2024-08-28 18:35:08 +02:00
|
|
|
"hyper",
|
2024-05-14 13:55:43 +02:00
|
|
|
"hyper-util",
|
2023-09-23 02:45:01 +02:00
|
|
|
"nix 0.26.4",
|
|
|
|
"pin-project",
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
"socket2",
|
2023-09-23 02:45:01 +02:00
|
|
|
"tokio",
|
2024-03-15 21:53:43 +01:00
|
|
|
"tokio-util",
|
2024-08-28 18:35:08 +02:00
|
|
|
"tonic",
|
2024-05-14 13:55:43 +02:00
|
|
|
"tower",
|
|
|
|
"tower-service",
|
2023-09-23 02:45:01 +02:00
|
|
|
"tracing",
|
|
|
|
]
|
|
|
|
|
2022-11-13 00:23:14 +01:00
|
|
|
[[package]]
|
|
|
|
name = "tokio-macros"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "2.4.0"
|
2022-11-13 00:23:14 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752"
|
2022-11-13 00:23:14 +01:00
|
|
|
dependencies = [
|
2024-04-19 15:07:14 +02:00
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
2024-08-28 23:42:29 +02:00
|
|
|
"syn 2.0.76",
|
2022-11-13 00:23:14 +01:00
|
|
|
]
|
|
|
|
|
2023-10-08 13:33:43 +02:00
|
|
|
[[package]]
|
|
|
|
name = "tokio-retry"
|
|
|
|
version = "0.3.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "7f57eb36ecbe0fc510036adff84824dd3c24bb781e21bfa67b69d556aa85214f"
|
|
|
|
dependencies = [
|
|
|
|
"pin-project",
|
|
|
|
"rand",
|
|
|
|
"tokio",
|
|
|
|
]
|
|
|
|
|
2024-07-20 20:15:42 +02:00
|
|
|
[[package]]
|
|
|
|
name = "tokio-rustls"
|
|
|
|
version = "0.26.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4"
|
|
|
|
dependencies = [
|
2024-08-28 18:35:08 +02:00
|
|
|
"rustls",
|
2024-07-20 20:15:42 +02:00
|
|
|
"rustls-pki-types",
|
|
|
|
"tokio",
|
|
|
|
]
|
|
|
|
|
2022-11-13 00:23:14 +01:00
|
|
|
[[package]]
|
|
|
|
name = "tokio-stream"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "0.1.15"
|
2022-11-13 00:23:14 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af"
|
2022-11-13 00:23:14 +01:00
|
|
|
dependencies = [
|
|
|
|
"futures-core",
|
|
|
|
"pin-project-lite",
|
|
|
|
"tokio",
|
|
|
|
]
|
|
|
|
|
2024-02-23 20:42:52 +01:00
|
|
|
[[package]]
|
|
|
|
name = "tokio-tar"
|
|
|
|
version = "0.3.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "9d5714c010ca3e5c27114c1cdeb9d14641ace49874aa5626d7149e47aedace75"
|
|
|
|
dependencies = [
|
|
|
|
"filetime",
|
|
|
|
"futures-core",
|
|
|
|
"libc",
|
|
|
|
"redox_syscall 0.3.5",
|
|
|
|
"tokio",
|
|
|
|
"tokio-stream",
|
|
|
|
"xattr",
|
|
|
|
]
|
|
|
|
|
feat(nix-compat/wire): add low-level wire format primitives code
This brings some initial Nix wire format parsing code, used in the nix
daemon protocol, remote store/builder protocol, as well as the NAR
format itself (note we already have more specialized code for the last
one).
Thanks to embr, this code already exists, in
https://codeberg.org/gorgon/gorgon/src/branch/main/nix-daemon/src/wire.rs,
and we can vendor it into here, as EUPL is compatible with GPL (in that
direction).
The code uses the tokio::io Reader and Writer traits, not the ones from
the `futures` crate, as they provide some more convenient `read_u64_le`
functions.
More application-specific parsing code, as well as code to read strings,
or bytes are left out for now, as we want to be be more restrictive
w.r.t allowed max sizes, and need to parse bytes, not strings.
The code slightly diverges, as we have clippy looped into CI.
`Ok(…?)` can be turned into just the inner expression, and
some .and_then can be expressed in a simpler fashion.
Change-Id: Ie3adcb485e9d66786673b1962a08d4e5df3781d9
Reviewed-on: https://cl.tvl.fyi/c/depot/+/11148
Autosubmit: flokli <flokli@flokli.de>
Tested-by: BuildkiteCI
Reviewed-by: picnoir picnoir <picnoir@alternativebit.fr>
2024-03-14 14:08:05 +01:00
|
|
|
[[package]]
|
|
|
|
name = "tokio-test"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "0.4.4"
|
feat(nix-compat/wire): add low-level wire format primitives code
This brings some initial Nix wire format parsing code, used in the nix
daemon protocol, remote store/builder protocol, as well as the NAR
format itself (note we already have more specialized code for the last
one).
Thanks to embr, this code already exists, in
https://codeberg.org/gorgon/gorgon/src/branch/main/nix-daemon/src/wire.rs,
and we can vendor it into here, as EUPL is compatible with GPL (in that
direction).
The code uses the tokio::io Reader and Writer traits, not the ones from
the `futures` crate, as they provide some more convenient `read_u64_le`
functions.
More application-specific parsing code, as well as code to read strings,
or bytes are left out for now, as we want to be be more restrictive
w.r.t allowed max sizes, and need to parse bytes, not strings.
The code slightly diverges, as we have clippy looped into CI.
`Ok(…?)` can be turned into just the inner expression, and
some .and_then can be expressed in a simpler fashion.
Change-Id: Ie3adcb485e9d66786673b1962a08d4e5df3781d9
Reviewed-on: https://cl.tvl.fyi/c/depot/+/11148
Autosubmit: flokli <flokli@flokli.de>
Tested-by: BuildkiteCI
Reviewed-by: picnoir picnoir <picnoir@alternativebit.fr>
2024-03-14 14:08:05 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "2468baabc3311435b55dd935f702f42cd1b8abb7e754fb7dfb16bd36aa88f9f7"
|
feat(nix-compat/wire): add low-level wire format primitives code
This brings some initial Nix wire format parsing code, used in the nix
daemon protocol, remote store/builder protocol, as well as the NAR
format itself (note we already have more specialized code for the last
one).
Thanks to embr, this code already exists, in
https://codeberg.org/gorgon/gorgon/src/branch/main/nix-daemon/src/wire.rs,
and we can vendor it into here, as EUPL is compatible with GPL (in that
direction).
The code uses the tokio::io Reader and Writer traits, not the ones from
the `futures` crate, as they provide some more convenient `read_u64_le`
functions.
More application-specific parsing code, as well as code to read strings,
or bytes are left out for now, as we want to be be more restrictive
w.r.t allowed max sizes, and need to parse bytes, not strings.
The code slightly diverges, as we have clippy looped into CI.
`Ok(…?)` can be turned into just the inner expression, and
some .and_then can be expressed in a simpler fashion.
Change-Id: Ie3adcb485e9d66786673b1962a08d4e5df3781d9
Reviewed-on: https://cl.tvl.fyi/c/depot/+/11148
Autosubmit: flokli <flokli@flokli.de>
Tested-by: BuildkiteCI
Reviewed-by: picnoir picnoir <picnoir@alternativebit.fr>
2024-03-14 14:08:05 +01:00
|
|
|
dependencies = [
|
|
|
|
"async-stream",
|
|
|
|
"bytes",
|
|
|
|
"futures-core",
|
|
|
|
"tokio",
|
|
|
|
"tokio-stream",
|
|
|
|
]
|
|
|
|
|
2022-11-13 00:23:14 +01:00
|
|
|
[[package]]
|
|
|
|
name = "tokio-util"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "0.7.11"
|
2022-11-13 00:23:14 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1"
|
2022-11-13 00:23:14 +01:00
|
|
|
dependencies = [
|
|
|
|
"bytes",
|
|
|
|
"futures-core",
|
2023-10-09 23:06:02 +02:00
|
|
|
"futures-io",
|
2022-11-13 00:23:14 +01:00
|
|
|
"futures-sink",
|
|
|
|
"pin-project-lite",
|
|
|
|
"tokio",
|
|
|
|
]
|
|
|
|
|
2023-01-24 15:54:29 +01:00
|
|
|
[[package]]
|
|
|
|
name = "toml"
|
|
|
|
version = "0.6.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "4fb9d890e4dc9298b70f740f615f2e05b9db37dce531f6b24fb77ac993f9f217"
|
|
|
|
dependencies = [
|
|
|
|
"serde",
|
|
|
|
"serde_spanned",
|
2024-07-21 19:17:16 +02:00
|
|
|
"toml_datetime 0.5.1",
|
|
|
|
"toml_edit 0.18.1",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "toml"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "0.8.19"
|
2024-07-21 19:17:16 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e"
|
2024-07-21 19:17:16 +02:00
|
|
|
dependencies = [
|
|
|
|
"serde",
|
|
|
|
"serde_spanned",
|
2024-08-28 23:42:29 +02:00
|
|
|
"toml_datetime 0.6.8",
|
|
|
|
"toml_edit 0.22.20",
|
2023-01-24 15:54:29 +01:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "toml_datetime"
|
|
|
|
version = "0.5.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "4553f467ac8e3d374bc9a177a26801e5d0f9b211aa1673fb137a403afd1c9cf5"
|
|
|
|
dependencies = [
|
|
|
|
"serde",
|
|
|
|
]
|
|
|
|
|
2024-07-21 19:17:16 +02:00
|
|
|
[[package]]
|
|
|
|
name = "toml_datetime"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "0.6.8"
|
2024-07-21 19:17:16 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41"
|
2024-07-21 19:17:16 +02:00
|
|
|
dependencies = [
|
|
|
|
"serde",
|
|
|
|
]
|
|
|
|
|
2023-01-24 15:54:29 +01:00
|
|
|
[[package]]
|
|
|
|
name = "toml_edit"
|
2023-02-01 18:54:30 +01:00
|
|
|
version = "0.18.1"
|
2023-01-24 15:54:29 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-02-01 18:54:30 +01:00
|
|
|
checksum = "56c59d8dd7d0dcbc6428bf7aa2f0e823e26e43b3c9aca15bbc9475d23e5fa12b"
|
2023-01-24 15:54:29 +01:00
|
|
|
dependencies = [
|
2023-03-01 00:37:08 +01:00
|
|
|
"indexmap 1.9.3",
|
2023-01-24 15:54:29 +01:00
|
|
|
"nom8",
|
|
|
|
"serde",
|
|
|
|
"serde_spanned",
|
2024-07-21 19:17:16 +02:00
|
|
|
"toml_datetime 0.5.1",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "toml_edit"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "0.22.20"
|
2024-07-21 19:17:16 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d"
|
2024-07-21 19:17:16 +02:00
|
|
|
dependencies = [
|
|
|
|
"indexmap 2.1.0",
|
|
|
|
"serde",
|
|
|
|
"serde_spanned",
|
2024-08-28 23:42:29 +02:00
|
|
|
"toml_datetime 0.6.8",
|
2024-07-21 19:17:16 +02:00
|
|
|
"winnow",
|
2023-01-24 15:54:29 +01:00
|
|
|
]
|
|
|
|
|
2024-07-20 20:15:42 +02:00
|
|
|
[[package]]
|
|
|
|
name = "tonic"
|
2024-08-28 18:30:03 +02:00
|
|
|
version = "0.12.2"
|
2024-07-20 20:15:42 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 18:30:03 +02:00
|
|
|
checksum = "c6f6ba989e4b2c58ae83d862d3a3e27690b6e3ae630d0deb59f3697f32aa88ad"
|
2024-07-20 20:15:42 +02:00
|
|
|
dependencies = [
|
|
|
|
"async-stream",
|
|
|
|
"async-trait",
|
2024-08-28 18:35:08 +02:00
|
|
|
"axum",
|
2024-07-20 20:15:42 +02:00
|
|
|
"base64 0.22.1",
|
|
|
|
"bytes",
|
2024-08-28 18:35:08 +02:00
|
|
|
"h2",
|
|
|
|
"http",
|
|
|
|
"http-body",
|
2024-07-20 20:15:42 +02:00
|
|
|
"http-body-util",
|
2024-08-28 18:35:08 +02:00
|
|
|
"hyper",
|
|
|
|
"hyper-timeout",
|
2024-07-20 20:15:42 +02:00
|
|
|
"hyper-util",
|
|
|
|
"percent-encoding",
|
|
|
|
"pin-project",
|
2024-08-28 18:35:08 +02:00
|
|
|
"prost",
|
|
|
|
"rustls-native-certs",
|
|
|
|
"rustls-pemfile",
|
2024-07-20 20:15:42 +02:00
|
|
|
"socket2",
|
|
|
|
"tokio",
|
2024-08-28 18:35:08 +02:00
|
|
|
"tokio-rustls",
|
2024-07-20 20:15:42 +02:00
|
|
|
"tokio-stream",
|
|
|
|
"tower",
|
|
|
|
"tower-layer",
|
|
|
|
"tower-service",
|
|
|
|
"tracing",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "tonic-build"
|
2024-08-28 18:30:03 +02:00
|
|
|
version = "0.12.2"
|
2024-07-20 20:15:42 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 18:30:03 +02:00
|
|
|
checksum = "fe4ee8877250136bd7e3d2331632810a4df4ea5e004656990d8d66d2f5ee8a67"
|
2024-07-20 20:15:42 +02:00
|
|
|
dependencies = [
|
|
|
|
"prettyplease",
|
|
|
|
"proc-macro2",
|
2024-08-28 18:35:08 +02:00
|
|
|
"prost-build",
|
2024-04-19 15:07:14 +02:00
|
|
|
"quote",
|
2024-08-28 23:42:29 +02:00
|
|
|
"syn 2.0.76",
|
2022-11-13 00:23:14 +01:00
|
|
|
]
|
|
|
|
|
2024-07-22 15:41:32 +02:00
|
|
|
[[package]]
|
|
|
|
name = "tonic-health"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "0.12.2"
|
2024-07-22 15:41:32 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "ec0a34e6f706bae26b2b490e1da5c3f6a6ff87cae442bcbc7c881bab9631b5a7"
|
2024-07-22 15:41:32 +02:00
|
|
|
dependencies = [
|
|
|
|
"async-stream",
|
2024-08-28 18:35:08 +02:00
|
|
|
"prost",
|
2024-07-22 15:41:32 +02:00
|
|
|
"tokio",
|
|
|
|
"tokio-stream",
|
2024-08-28 18:35:08 +02:00
|
|
|
"tonic",
|
2024-07-22 15:41:32 +02:00
|
|
|
]
|
|
|
|
|
2022-11-26 02:14:02 +01:00
|
|
|
[[package]]
|
|
|
|
name = "tonic-reflection"
|
2024-08-27 12:02:14 +02:00
|
|
|
version = "0.12.2"
|
2022-11-26 02:14:02 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-27 12:02:14 +02:00
|
|
|
checksum = "7b56b874eedb04f89907573b408eab1e87c1c1dce43aac6ad63742f57faa99ff"
|
2022-11-26 02:14:02 +01:00
|
|
|
dependencies = [
|
2024-08-28 18:35:08 +02:00
|
|
|
"prost",
|
|
|
|
"prost-types",
|
2022-11-26 02:14:02 +01:00
|
|
|
"tokio",
|
|
|
|
"tokio-stream",
|
2024-08-28 18:35:08 +02:00
|
|
|
"tonic",
|
2022-11-26 02:14:02 +01:00
|
|
|
]
|
|
|
|
|
2022-11-13 00:23:14 +01:00
|
|
|
[[package]]
|
|
|
|
name = "tower"
|
|
|
|
version = "0.4.13"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c"
|
|
|
|
dependencies = [
|
|
|
|
"futures-core",
|
|
|
|
"futures-util",
|
2023-03-01 00:37:08 +01:00
|
|
|
"indexmap 1.9.3",
|
2022-11-13 00:23:14 +01:00
|
|
|
"pin-project",
|
|
|
|
"pin-project-lite",
|
2023-10-08 13:03:22 +02:00
|
|
|
"rand",
|
2022-11-13 00:23:14 +01:00
|
|
|
"slab",
|
|
|
|
"tokio",
|
|
|
|
"tokio-util",
|
|
|
|
"tower-layer",
|
|
|
|
"tower-service",
|
|
|
|
"tracing",
|
|
|
|
]
|
|
|
|
|
2024-07-02 12:50:43 +02:00
|
|
|
[[package]]
|
|
|
|
name = "tower-http"
|
|
|
|
version = "0.5.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5"
|
|
|
|
dependencies = [
|
2024-08-28 23:42:29 +02:00
|
|
|
"bitflags 2.6.0",
|
2024-07-02 12:50:43 +02:00
|
|
|
"bytes",
|
2024-08-28 18:35:08 +02:00
|
|
|
"http",
|
|
|
|
"http-body",
|
2024-07-02 12:50:43 +02:00
|
|
|
"http-body-util",
|
|
|
|
"pin-project-lite",
|
|
|
|
"tower-layer",
|
|
|
|
"tower-service",
|
|
|
|
"tracing",
|
|
|
|
]
|
|
|
|
|
2022-11-13 00:23:14 +01:00
|
|
|
[[package]]
|
|
|
|
name = "tower-layer"
|
|
|
|
version = "0.3.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0"
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "tower-service"
|
|
|
|
version = "0.3.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52"
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "tracing"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.1.40"
|
2022-11-13 00:23:14 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef"
|
2022-11-13 00:23:14 +01:00
|
|
|
dependencies = [
|
feat(tvix/store/directorysvc): add gRPC client
This provides a GRPCDirectoryService struct implementing
DirectoryService, allowing a client to Directory objects from a (remote)
tvix-store.
Remote in this case is anything outside the current process, be it
another process, or an endpoint on the network.
To keep the sync interface in the `DirectoryService` trait, a handle to
some tokio runtime needs to be passed into the constructor, and the two
methods use `self.tokio_handle.spawn` to start an async function, and
`self.tokio_handle.block_on` to wait for its completion.
The client handle, called `grpc_client` itself is easy to clone, and
treats concurrent requests internally. This means, even though we keep
the `DirectoryService` trait sync, there's nothing preventing it from
being used concurrently, let's say from multiple threads.
There's still two limitations for now:
1) The trait doesn't make use of the `recursive` request, which
currently leads to a N+1 query problem. This can be fixed
by `GRPCDirectoryService` having a reference to another
`DirectoryService` acting as the local side.
I want to wait for general store composition code to pop up before
manually coding this here.
2) It's currently only possible to put() leaf directory nodes, as the
request normally requires uploading a whole closure. We might want
to add another batch function to upload a whole closure, and/or do
this batching in certain cases. This still needs some more thinking.
Change-Id: I7ffec791610b72c0960cf5307cefbb12ec946dc9
Reviewed-on: https://cl.tvl.fyi/c/depot/+/8336
Tested-by: BuildkiteCI
Autosubmit: flokli <flokli@flokli.de>
Reviewed-by: tazjin <tazjin@tvl.su>
2023-03-23 13:49:57 +01:00
|
|
|
"log",
|
2022-11-13 00:23:14 +01:00
|
|
|
"pin-project-lite",
|
|
|
|
"tracing-attributes",
|
|
|
|
"tracing-core",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "tracing-attributes"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.1.27"
|
2022-11-13 00:23:14 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
|
2022-11-13 00:23:14 +01:00
|
|
|
dependencies = [
|
2024-04-19 15:07:14 +02:00
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
2024-08-28 23:42:29 +02:00
|
|
|
"syn 2.0.76",
|
2022-11-13 00:23:14 +01:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "tracing-core"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.1.32"
|
2022-11-13 00:23:14 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54"
|
2022-11-13 00:23:14 +01:00
|
|
|
dependencies = [
|
|
|
|
"once_cell",
|
2022-12-28 17:17:53 +01:00
|
|
|
"valuable",
|
2022-11-13 00:23:14 +01:00
|
|
|
]
|
|
|
|
|
2024-03-19 11:12:03 +01:00
|
|
|
[[package]]
|
|
|
|
name = "tracing-futures"
|
|
|
|
version = "0.2.5"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2"
|
|
|
|
dependencies = [
|
|
|
|
"pin-project",
|
|
|
|
"tracing",
|
|
|
|
]
|
|
|
|
|
2024-04-17 18:44:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "tracing-indicatif"
|
|
|
|
version = "0.3.6"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "069580424efe11d97c3fef4197fa98c004fa26672cc71ad8770d224e23b1951d"
|
|
|
|
dependencies = [
|
|
|
|
"indicatif",
|
|
|
|
"tracing",
|
|
|
|
"tracing-core",
|
|
|
|
"tracing-subscriber",
|
|
|
|
]
|
|
|
|
|
2023-03-01 00:37:08 +01:00
|
|
|
[[package]]
|
|
|
|
name = "tracing-log"
|
|
|
|
version = "0.2.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3"
|
|
|
|
dependencies = [
|
|
|
|
"log",
|
|
|
|
"once_cell",
|
|
|
|
"tracing-core",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "tracing-opentelemetry"
|
2024-05-14 14:00:54 +02:00
|
|
|
version = "0.23.0"
|
2023-03-01 00:37:08 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-05-14 14:00:54 +02:00
|
|
|
checksum = "a9be14ba1bbe4ab79e9229f7f89fab8d120b865859f10527f31c033e599d2284"
|
2023-03-01 00:37:08 +01:00
|
|
|
dependencies = [
|
|
|
|
"js-sys",
|
|
|
|
"once_cell",
|
2024-07-20 20:15:42 +02:00
|
|
|
"opentelemetry 0.22.0",
|
|
|
|
"opentelemetry_sdk 0.22.1",
|
|
|
|
"smallvec",
|
|
|
|
"tracing",
|
|
|
|
"tracing-core",
|
|
|
|
"tracing-log",
|
|
|
|
"tracing-subscriber",
|
|
|
|
"web-time",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "tracing-opentelemetry"
|
|
|
|
version = "0.25.0"
|
2024-07-22 14:09:47 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "a9784ed4da7d921bc8df6963f8c80a0e4ce34ba6ba76668acadd3edbd985ff3b"
|
2024-07-20 20:15:42 +02:00
|
|
|
dependencies = [
|
|
|
|
"js-sys",
|
|
|
|
"once_cell",
|
|
|
|
"opentelemetry 0.24.0",
|
|
|
|
"opentelemetry_sdk 0.24.1",
|
2023-03-01 00:37:08 +01:00
|
|
|
"smallvec",
|
|
|
|
"tracing",
|
|
|
|
"tracing-core",
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
"tracing-log",
|
2023-03-01 00:37:08 +01:00
|
|
|
"tracing-subscriber",
|
|
|
|
"web-time",
|
|
|
|
]
|
|
|
|
|
2022-12-28 17:17:53 +01:00
|
|
|
[[package]]
|
|
|
|
name = "tracing-subscriber"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.3.18"
|
2022-12-28 17:17:53 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b"
|
2022-12-28 17:17:53 +01:00
|
|
|
dependencies = [
|
2024-03-17 20:09:06 +01:00
|
|
|
"matchers",
|
2022-12-28 17:17:53 +01:00
|
|
|
"nu-ansi-term",
|
2024-03-17 20:09:06 +01:00
|
|
|
"once_cell",
|
|
|
|
"regex",
|
2022-12-28 17:17:53 +01:00
|
|
|
"sharded-slab",
|
|
|
|
"smallvec",
|
|
|
|
"thread_local",
|
2024-03-17 20:09:06 +01:00
|
|
|
"tracing",
|
2022-12-28 17:17:53 +01:00
|
|
|
"tracing-core",
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
"tracing-log",
|
2022-12-28 17:17:53 +01:00
|
|
|
]
|
|
|
|
|
2024-06-14 13:10:57 +02:00
|
|
|
[[package]]
|
|
|
|
name = "tracing-tracy"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "0.11.2"
|
2024-06-14 13:10:57 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "c6a90519f16f55e5c62ffd5976349f10744435a919ecff83d918300575dfb69b"
|
2024-06-14 13:10:57 +02:00
|
|
|
dependencies = [
|
|
|
|
"tracing-core",
|
|
|
|
"tracing-subscriber",
|
|
|
|
"tracy-client",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "tracy-client"
|
|
|
|
version = "0.17.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "59fb931a64ff88984f86d3e9bcd1ae8843aa7fe44dd0f8097527bc172351741d"
|
|
|
|
dependencies = [
|
|
|
|
"loom",
|
|
|
|
"once_cell",
|
|
|
|
"tracy-client-sys",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "tracy-client-sys"
|
|
|
|
version = "0.22.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "9d104d610dfa9dd154535102cc9c6164ae1fa37842bc2d9e83f9ac82b0ae0882"
|
|
|
|
dependencies = [
|
|
|
|
"cc",
|
|
|
|
]
|
|
|
|
|
2022-11-13 00:23:14 +01:00
|
|
|
[[package]]
|
|
|
|
name = "try-lock"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.2.5"
|
2022-11-13 00:23:14 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
|
2022-11-13 00:23:14 +01:00
|
|
|
|
2024-07-22 16:51:42 +02:00
|
|
|
[[package]]
|
|
|
|
name = "trybuild"
|
|
|
|
version = "1.0.99"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "207aa50d36c4be8d8c6ea829478be44a372c6a77669937bb39c698e52f1491e8"
|
|
|
|
dependencies = [
|
|
|
|
"glob",
|
|
|
|
"serde",
|
|
|
|
"serde_derive",
|
|
|
|
"serde_json",
|
|
|
|
"termcolor",
|
2024-08-28 23:42:29 +02:00
|
|
|
"toml 0.8.19",
|
2024-07-22 16:51:42 +02:00
|
|
|
]
|
|
|
|
|
2023-12-09 09:49:47 +01:00
|
|
|
[[package]]
|
|
|
|
name = "tvix-build"
|
|
|
|
version = "0.1.0"
|
|
|
|
dependencies = [
|
2023-12-09 11:53:17 +01:00
|
|
|
"bytes",
|
2024-01-15 18:22:01 +01:00
|
|
|
"clap",
|
2024-08-28 23:42:29 +02:00
|
|
|
"itertools 0.12.1",
|
2024-08-07 23:21:26 +02:00
|
|
|
"mimalloc",
|
2024-08-28 18:35:08 +02:00
|
|
|
"prost",
|
|
|
|
"prost-build",
|
2024-04-19 13:04:11 +02:00
|
|
|
"rstest",
|
2024-01-05 14:53:26 +01:00
|
|
|
"thiserror",
|
2024-01-15 18:15:45 +01:00
|
|
|
"tokio",
|
2024-01-15 18:22:01 +01:00
|
|
|
"tokio-listener",
|
2024-08-28 18:35:08 +02:00
|
|
|
"tonic",
|
|
|
|
"tonic-build",
|
2023-12-09 09:49:47 +01:00
|
|
|
"tonic-reflection",
|
2024-01-15 17:43:15 +01:00
|
|
|
"tracing",
|
2023-12-09 09:49:47 +01:00
|
|
|
"tvix-castore",
|
2024-06-06 15:44:11 +02:00
|
|
|
"tvix-tracing",
|
2024-01-15 18:15:45 +01:00
|
|
|
"url",
|
2023-12-09 09:49:47 +01:00
|
|
|
]
|
|
|
|
|
2023-09-21 21:32:44 +02:00
|
|
|
[[package]]
|
|
|
|
name = "tvix-castore"
|
|
|
|
version = "0.1.0"
|
|
|
|
dependencies = [
|
2024-05-16 10:33:23 +02:00
|
|
|
"async-compression",
|
2024-03-19 11:12:03 +01:00
|
|
|
"async-process",
|
2023-09-21 21:32:44 +02:00
|
|
|
"async-stream",
|
2023-12-17 01:22:01 +01:00
|
|
|
"async-tempfile",
|
2024-03-19 11:12:03 +01:00
|
|
|
"bigtable_rs",
|
2023-09-21 21:32:44 +02:00
|
|
|
"blake3",
|
2023-10-11 00:06:45 +02:00
|
|
|
"bstr",
|
2023-09-21 21:32:44 +02:00
|
|
|
"bytes",
|
|
|
|
"data-encoding",
|
2024-03-03 13:40:54 +01:00
|
|
|
"digest",
|
2024-06-17 01:10:55 +02:00
|
|
|
"erased-serde",
|
2024-03-01 17:00:53 +01:00
|
|
|
"fastcdc",
|
chore(tvix): move store/fs to castore/fs
With the recent introduction of the RootNodes trait, there's nothing in
the fs module pulling in tvix-store dependencies, so it can live in
tvix-castore.
This allows other crates to make use of TvixStoreFS, without having to
pull in tvix-store.
For example, a tvix-build using a fuse mountpoint at /nix/store doesn't
need a PathInfoService to hold the root nodes that should be present,
but just a list.
tvix-store now has a pathinfoservice/fs module, which contains the
necessary glue logic to implement the RootNodes trait for a
PathInfoService.
To satisfy Rust orphan rules for trait implementations, we had to add a
small wrapper struct. It's mostly hidden away by the make_fs helper
function returning a TvixStoreFs.
It can't be entirely private, as its still leaking into the concrete
type of TvixStoreFS.
tvix-store still has `fuse` and `virtiofs` features, but they now simply
enable these features in the `tvix-castore` crate they depend on.
The tests for the fuse functionality stay in tvix-store for now, as
they populate the root nodes through a PathInfoService.
Once above mentioned "list of root nodes" implementation exists, we
might want to shuffle this around one more time.
Fixes b/341.
Change-Id: I989f664827a5a361b23b34368d242d10c157c756
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10378
Autosubmit: flokli <flokli@flokli.de>
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
2023-12-16 23:16:22 +01:00
|
|
|
"fuse-backend-rs",
|
2023-09-21 21:32:44 +02:00
|
|
|
"futures",
|
2023-10-27 03:12:26 +02:00
|
|
|
"hex-literal",
|
2024-07-20 20:15:42 +02:00
|
|
|
"hyper-util",
|
2023-09-21 21:32:44 +02:00
|
|
|
"lazy_static",
|
chore(tvix): move store/fs to castore/fs
With the recent introduction of the RootNodes trait, there's nothing in
the fs module pulling in tvix-store dependencies, so it can live in
tvix-castore.
This allows other crates to make use of TvixStoreFS, without having to
pull in tvix-store.
For example, a tvix-build using a fuse mountpoint at /nix/store doesn't
need a PathInfoService to hold the root nodes that should be present,
but just a list.
tvix-store now has a pathinfoservice/fs module, which contains the
necessary glue logic to implement the RootNodes trait for a
PathInfoService.
To satisfy Rust orphan rules for trait implementations, we had to add a
small wrapper struct. It's mostly hidden away by the make_fs helper
function returning a TvixStoreFs.
It can't be entirely private, as its still leaking into the concrete
type of TvixStoreFS.
tvix-store still has `fuse` and `virtiofs` features, but they now simply
enable these features in the `tvix-castore` crate they depend on.
The tests for the fuse functionality stay in tvix-store for now, as
they populate the root nodes through a PathInfoService.
Once above mentioned "list of root nodes" implementation exists, we
might want to shuffle this around one more time.
Fixes b/341.
Change-Id: I989f664827a5a361b23b34368d242d10c157c756
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10378
Autosubmit: flokli <flokli@flokli.de>
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
2023-12-16 23:16:22 +01:00
|
|
|
"libc",
|
2024-03-01 17:00:53 +01:00
|
|
|
"object_store",
|
2024-07-20 10:03:47 +02:00
|
|
|
"parking_lot 0.12.3",
|
fix(tvix/castore/directory): fix graph traversal
Use a proper graph library to ensure all nodes are reachable from the
root.
We had a bit of that handrolled during add(), as well as later, which
had an annoying bug:
Redundant nodes were omitted during insert, but when returning the list
during finalize, we did not properly account they need to be introduced
before their parents are sent.
We now simply populate a petgraph DiGraph during insert (skipping
inserting nodes we already saw), and use petgraph's DfsPostOrder to
traverse the graph during finalize.
If the number of returned indices equals the total number of nodes in
the graph, all nodes are reachable from the root, we can consume the
graph and return the nodes as a vec, in the same order as the traversal
(and insertion).
Providing a regression test for the initial bug is challenging, as the
current code uses a bunch of HashSets. I manually tested ingesting a
full NixOS closure using this mechanism (via gRPC, which exposes this
problem, as it validates twice), and it now works.
Change-Id: Ic1d5e3e981f2993cc08c5c6b60ad895e578326dc
Reviewed-on: https://cl.tvl.fyi/c/depot/+/11418
Autosubmit: flokli <flokli@flokli.de>
Reviewed-by: Connor Brewster <cbrewster@hey.com>
Tested-by: BuildkiteCI
2024-04-13 22:33:18 +02:00
|
|
|
"petgraph",
|
2023-09-21 21:32:44 +02:00
|
|
|
"pin-project-lite",
|
2024-08-28 18:35:08 +02:00
|
|
|
"prost",
|
|
|
|
"prost-build",
|
2024-07-21 00:36:19 +02:00
|
|
|
"redb",
|
2024-03-23 21:49:49 +01:00
|
|
|
"rstest",
|
|
|
|
"rstest_reuse",
|
2024-03-19 11:12:03 +01:00
|
|
|
"serde",
|
2024-06-17 01:10:55 +02:00
|
|
|
"serde_json",
|
2024-03-19 11:12:03 +01:00
|
|
|
"serde_qs",
|
2024-06-17 01:10:55 +02:00
|
|
|
"serde_tagged",
|
2024-03-19 11:12:03 +01:00
|
|
|
"serde_with",
|
2023-09-21 21:32:44 +02:00
|
|
|
"sled",
|
|
|
|
"tempfile",
|
|
|
|
"thiserror",
|
2024-06-16 10:43:48 +02:00
|
|
|
"threadpool",
|
2023-09-21 21:32:44 +02:00
|
|
|
"tokio",
|
2023-10-08 13:33:43 +02:00
|
|
|
"tokio-retry",
|
2023-09-21 21:32:44 +02:00
|
|
|
"tokio-stream",
|
2024-02-24 01:55:07 +01:00
|
|
|
"tokio-tar",
|
2023-09-21 21:32:44 +02:00
|
|
|
"tokio-util",
|
2024-08-28 18:35:08 +02:00
|
|
|
"tonic",
|
|
|
|
"tonic-build",
|
2023-09-21 21:32:44 +02:00
|
|
|
"tonic-reflection",
|
|
|
|
"tower",
|
|
|
|
"tracing",
|
2024-04-17 18:44:07 +02:00
|
|
|
"tracing-indicatif",
|
2024-06-16 18:22:11 +02:00
|
|
|
"tvix-tracing",
|
2023-09-21 21:32:44 +02:00
|
|
|
"url",
|
chore(tvix): move store/fs to castore/fs
With the recent introduction of the RootNodes trait, there's nothing in
the fs module pulling in tvix-store dependencies, so it can live in
tvix-castore.
This allows other crates to make use of TvixStoreFS, without having to
pull in tvix-store.
For example, a tvix-build using a fuse mountpoint at /nix/store doesn't
need a PathInfoService to hold the root nodes that should be present,
but just a list.
tvix-store now has a pathinfoservice/fs module, which contains the
necessary glue logic to implement the RootNodes trait for a
PathInfoService.
To satisfy Rust orphan rules for trait implementations, we had to add a
small wrapper struct. It's mostly hidden away by the make_fs helper
function returning a TvixStoreFs.
It can't be entirely private, as its still leaking into the concrete
type of TvixStoreFS.
tvix-store still has `fuse` and `virtiofs` features, but they now simply
enable these features in the `tvix-castore` crate they depend on.
The tests for the fuse functionality stay in tvix-store for now, as
they populate the root nodes through a PathInfoService.
Once above mentioned "list of root nodes" implementation exists, we
might want to shuffle this around one more time.
Fixes b/341.
Change-Id: I989f664827a5a361b23b34368d242d10c157c756
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10378
Autosubmit: flokli <flokli@flokli.de>
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
2023-12-16 23:16:22 +01:00
|
|
|
"vhost",
|
|
|
|
"vhost-user-backend",
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
"virtio-bindings 0.2.2",
|
chore(tvix): move store/fs to castore/fs
With the recent introduction of the RootNodes trait, there's nothing in
the fs module pulling in tvix-store dependencies, so it can live in
tvix-castore.
This allows other crates to make use of TvixStoreFS, without having to
pull in tvix-store.
For example, a tvix-build using a fuse mountpoint at /nix/store doesn't
need a PathInfoService to hold the root nodes that should be present,
but just a list.
tvix-store now has a pathinfoservice/fs module, which contains the
necessary glue logic to implement the RootNodes trait for a
PathInfoService.
To satisfy Rust orphan rules for trait implementations, we had to add a
small wrapper struct. It's mostly hidden away by the make_fs helper
function returning a TvixStoreFs.
It can't be entirely private, as its still leaking into the concrete
type of TvixStoreFS.
tvix-store still has `fuse` and `virtiofs` features, but they now simply
enable these features in the `tvix-castore` crate they depend on.
The tests for the fuse functionality stay in tvix-store for now, as
they populate the root nodes through a PathInfoService.
Once above mentioned "list of root nodes" implementation exists, we
might want to shuffle this around one more time.
Fixes b/341.
Change-Id: I989f664827a5a361b23b34368d242d10c157c756
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10378
Autosubmit: flokli <flokli@flokli.de>
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
2023-12-16 23:16:22 +01:00
|
|
|
"virtio-queue",
|
|
|
|
"vm-memory",
|
|
|
|
"vmm-sys-util",
|
2023-09-21 21:32:44 +02:00
|
|
|
"walkdir",
|
2024-04-14 17:01:24 +02:00
|
|
|
"xattr",
|
2024-03-01 17:00:53 +01:00
|
|
|
"zstd",
|
2023-09-21 21:32:44 +02:00
|
|
|
]
|
|
|
|
|
2022-12-08 22:19:22 +01:00
|
|
|
[[package]]
|
|
|
|
name = "tvix-cli"
|
|
|
|
version = "0.1.0"
|
|
|
|
dependencies = [
|
2023-07-19 17:52:50 +02:00
|
|
|
"bytes",
|
2023-12-09 18:26:40 +01:00
|
|
|
"clap",
|
2022-12-08 22:19:22 +01:00
|
|
|
"dirs",
|
2024-07-06 15:00:46 +02:00
|
|
|
"expect-test",
|
2024-08-07 23:21:26 +02:00
|
|
|
"mimalloc",
|
2023-01-31 14:45:42 +01:00
|
|
|
"nix-compat",
|
2024-05-27 20:15:38 +02:00
|
|
|
"rnix",
|
2024-07-05 05:46:20 +02:00
|
|
|
"rowan",
|
2024-07-28 18:11:41 +02:00
|
|
|
"rustc-hash 2.0.0",
|
2022-12-08 22:19:22 +01:00
|
|
|
"rustyline",
|
2024-07-05 05:46:20 +02:00
|
|
|
"smol_str",
|
2023-01-26 23:42:10 +01:00
|
|
|
"thiserror",
|
refactor(tvix/store/blobsvc): make BlobStore async
We previously kept the trait of a BlobService sync.
This however had some annoying consequences:
- It became more and more complicated to track when we're in a context
with an async runtime in the context or not, producing bugs like
https://b.tvl.fyi/issues/304
- The sync trait shielded away async clients from async worloads,
requiring manual block_on code inside the gRPC client code, and
spawn_blocking calls in consumers of the trait, even if they were
async (like the gRPC server)
- We had to write our own custom glue code (SyncReadIntoAsyncRead)
to convert a sync io::Read into a tokio::io::AsyncRead, which already
existed in tokio internally, but upstream ia hesitant to expose.
This now makes the BlobService trait async (via the async_trait macro,
like we already do in various gRPC parts), and replaces the sync readers
and writers with their async counterparts.
Tests interacting with a BlobService now need to have an async runtime
available, the easiest way for this is to mark the test functions
with the tokio::test macro, allowing us to directly .await in the test
function.
In places where we don't have an async runtime available from context
(like tvix-cli), we can pass one down explicitly.
Now that we don't provide a sync interface anymore, the (sync) FUSE
library now holds a pointer to a tokio runtime handle, and needs to at
least have 2 threads available when talking to a blob service (which is
why some of the tests now use the multi_thread flavor).
The FUSE tests got a bit more verbose, as we couldn't use the
setup_and_mount function accepting a callback anymore. We can hopefully
move some of the test fixture setup to rstest in the future to make this
less repetitive.
Co-Authored-By: Connor Brewster <cbrewster@hey.com>
Change-Id: Ia0501b606e32c852d0108de9c9016b21c94a3c05
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9329
Reviewed-by: Connor Brewster <cbrewster@hey.com>
Tested-by: BuildkiteCI
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
2023-09-13 14:20:21 +02:00
|
|
|
"tokio",
|
2023-09-02 20:16:35 +02:00
|
|
|
"tracing",
|
2024-06-13 09:32:57 +02:00
|
|
|
"tracing-indicatif",
|
2024-01-16 12:14:07 +01:00
|
|
|
"tvix-build",
|
2023-09-21 21:32:44 +02:00
|
|
|
"tvix-castore",
|
2022-12-08 22:19:22 +01:00
|
|
|
"tvix-eval",
|
2023-11-03 12:34:37 +01:00
|
|
|
"tvix-glue",
|
2023-05-14 20:21:27 +02:00
|
|
|
"tvix-store",
|
2024-06-06 15:44:11 +02:00
|
|
|
"tvix-tracing",
|
refactor(tvix/cli): use Wu-Manber string scanning for drv references
Switch out the string-scanning algorithm used in the reference scanner.
The construction of aho-corasick automata made up the vast majority of
runtime when evaluating nixpkgs previously. While the actual scanning
with a constructed automaton is relatively fast, we almost never scan
for the same set of strings twice and the cost is not worth it.
An algorithm that better matches our needs is the Wu-Manber multiple
string match algorithm, which works efficiently on *long* and *random*
strings of the *same length*, which describes store paths (up to their
hash component).
This switches the refscanner crate to a Rust implementation[0][1] of
this algorithm.
This has several implications:
1. This crate does not provide a way to scan streams. I'm not sure if
this is an inherent problem with the algorithm (probably not, but
it would need buffering). Either way, related functions and
tests (which were actually unused) have been removed.
2. All strings need to be of the same length. For this reason, we
truncate the known paths after their hash part (they are still
unique, of course).
3. Passing an empty set of matches, or a match that is shorter than
the length of a store path, causes the crate to panic. We safeguard
against this by completely skipping the refscanning if there are no
known paths (i.e. when evaluating the first derivation of an eval),
and by bailing out of scanning a string that is shorter than a
store path.
On the upside, this reduces overall runtime to less 1/5 of what it was
before when evaluating `pkgs.stdenv.drvPath`.
[0]: Frankly, it's a random, research-grade MIT-licensed
crate that I found on Github:
https://github.com/jneem/wu-manber
[1]: We probably want to rewrite or at least fork the above crate, and
add things like a three-byte wide scanner. Evaluating large
portions of nixpkgs can easily lead to more than 65k derivations
being scanned for.
Change-Id: I08926778e1e5d5a87fc9ac26e0437aed8bbd9eb0
Reviewed-on: https://cl.tvl.fyi/c/depot/+/8017
Tested-by: BuildkiteCI
Reviewed-by: flokli <flokli@flokli.de>
2023-02-02 13:51:59 +01:00
|
|
|
"wu-manber",
|
2022-12-08 22:19:22 +01:00
|
|
|
]
|
|
|
|
|
2022-08-04 15:29:38 +02:00
|
|
|
[[package]]
|
|
|
|
name = "tvix-eval"
|
|
|
|
version = "0.1.0"
|
2022-08-04 15:44:49 +02:00
|
|
|
dependencies = [
|
fix(tvix): Represent strings as byte arrays
C++ nix uses C-style zero-terminated char pointers to represent strings
internally - however, up to this point, tvix has used Rust `String` and
`str` for string values. Since those are required to be valid utf-8, we
haven't been able to properly represent all the string values that Nix
supports.
To fix that, this change converts the internal representation of the
NixString struct from `Box<str>` to `BString`, from the `bstr` crate -
this is a wrapper around a `Vec<u8>` with extra functions for treating
that byte vector as a "morally string-like" value, which is basically
exactly what we need.
Since this changes a pretty fundamental assumption about a pretty core
type, there are a *lot* of changes in a lot of places to make this work,
but I've tried to keep the general philosophy and intent of most of the
code in most places intact. Most notably, there's nothing that's been
done to make the derivation stuff in //tvix/glue work with non-utf8
strings everywhere, instead opting to just convert to String/str when
passing things into that - there *might* be something to be done there,
but I don't know what the rules should be and I don't want to figure
them out in this change.
To deal with OS-native paths in a way that also works in WASM for
tvixbolt, this also adds a dependency on the "os_str_bytes" crate.
Fixes: b/189
Fixes: b/337
Change-Id: I5e6eb29c62f47dd91af954f5e12bfc3d186f5526
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10200
Reviewed-by: tazjin <tazjin@tvl.su>
Reviewed-by: flokli <flokli@flokli.de>
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: aspen <root@gws.fyi>
Tested-by: BuildkiteCI
2023-12-05 23:25:52 +01:00
|
|
|
"bstr",
|
2023-07-19 17:52:50 +02:00
|
|
|
"bytes",
|
2022-09-01 14:52:48 +02:00
|
|
|
"codemap",
|
2022-09-11 23:34:25 +02:00
|
|
|
"codemap-diagnostic",
|
2022-08-25 17:04:07 +02:00
|
|
|
"criterion",
|
2024-02-21 17:49:07 +01:00
|
|
|
"data-encoding",
|
2022-08-11 23:26:05 +02:00
|
|
|
"dirs",
|
2023-02-26 17:00:25 +01:00
|
|
|
"genawaiter",
|
2024-08-28 23:42:29 +02:00
|
|
|
"itertools 0.12.1",
|
feat(tvix/eval): use lexical-core to format float
Apparently our naive implementation of float formatting, which simply
used {:.5}, and trimmed trailing "0" strings not sufficient.
It wrongly trimmed numbers with zeroes but no decimal point, like
`10000` got trimmed to `1`.
Nix uses `std::to_string` on the double, which according to
https://en.cppreference.com/w/cpp/string/basic_string/to_string
is equivalent to `std::sprintf(buf, "%f", value)`.
https://en.cppreference.com/w/cpp/io/c/fprintf mentions this is treated
like this:
> Precision specifies the exact number of digits to appear after
> the decimal point character. The default precision is 6. In the
> alternative implementation decimal point character is written even if
> no digits follow it. For infinity and not-a-number conversion style
> see notes.
This doesn't seem to be the case though, and Nix uses scientific
notation in some cases.
There's a whole bunch of strategies to determine which is a more compact
notation, and which notation should be used for a given number.
https://github.com/rust-lang/rust/issues/24556 provides some pointers
into various rabbit holes for those interested.
This gist seems to be that currently a different formatting is not
exposed in rust directly, at least not for public consumption.
There is the
[lexical-core](https://github.com/Alexhuszagh/rust-lexical) crate
though, which provides a way to format floats with various strategies
and formats.
Change our implementation of `TotalDisplay` for the `Value::Float` case
to use that. We still need to do some post-processing, because Nix
always adds the sign in scientific notation (and there's no way to
configure lexical-core to do that), and lexical-core in some cases keeps
the trailing zeros.
Even with all that in place, there as a difference in `eval-okay-
fromjson.nix` (from tvix-tests), which I couldn't get to work. I updated
the fixture to a less problematic number.
With this, the testsuite passes again, and does for the upcoming CL
introducing builtins.fromTOML, and enabling the nix testsuite bits for
it, too.
Change-Id: Ie6fba5619e1d9fd7ce669a51594658b029057acc
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7922
Tested-by: BuildkiteCI
Autosubmit: flokli <flokli@flokli.de>
Reviewed-by: tazjin <tazjin@tvl.su>
2023-01-24 19:27:20 +01:00
|
|
|
"lazy_static",
|
|
|
|
"lexical-core",
|
2024-02-21 17:49:07 +01:00
|
|
|
"md-5",
|
2024-08-07 23:21:26 +02:00
|
|
|
"mimalloc",
|
2024-07-28 18:50:09 +02:00
|
|
|
"nohash-hasher",
|
fix(tvix): Represent strings as byte arrays
C++ nix uses C-style zero-terminated char pointers to represent strings
internally - however, up to this point, tvix has used Rust `String` and
`str` for string values. Since those are required to be valid utf-8, we
haven't been able to properly represent all the string values that Nix
supports.
To fix that, this change converts the internal representation of the
NixString struct from `Box<str>` to `BString`, from the `bstr` crate -
this is a wrapper around a `Vec<u8>` with extra functions for treating
that byte vector as a "morally string-like" value, which is basically
exactly what we need.
Since this changes a pretty fundamental assumption about a pretty core
type, there are a *lot* of changes in a lot of places to make this work,
but I've tried to keep the general philosophy and intent of most of the
code in most places intact. Most notably, there's nothing that's been
done to make the derivation stuff in //tvix/glue work with non-utf8
strings everywhere, instead opting to just convert to String/str when
passing things into that - there *might* be something to be done there,
but I don't know what the rules should be and I don't want to figure
them out in this change.
To deal with OS-native paths in a way that also works in WASM for
tvixbolt, this also adds a dependency on the "os_str_bytes" crate.
Fixes: b/189
Fixes: b/337
Change-Id: I5e6eb29c62f47dd91af954f5e12bfc3d186f5526
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10200
Reviewed-by: tazjin <tazjin@tvl.su>
Reviewed-by: flokli <flokli@flokli.de>
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: aspen <root@gws.fyi>
Tested-by: BuildkiteCI
2023-12-05 23:25:52 +01:00
|
|
|
"os_str_bytes",
|
2022-08-12 17:52:48 +02:00
|
|
|
"path-clean",
|
2022-08-16 14:33:50 +02:00
|
|
|
"pretty_assertions",
|
2022-09-17 19:52:02 +02:00
|
|
|
"proptest",
|
2022-10-13 00:45:52 +02:00
|
|
|
"regex",
|
2022-08-04 15:44:49 +02:00
|
|
|
"rnix",
|
2022-08-16 22:43:45 +02:00
|
|
|
"rowan",
|
2024-01-14 16:31:04 +01:00
|
|
|
"rstest",
|
2024-07-28 18:11:41 +02:00
|
|
|
"rustc-hash 2.0.0",
|
2022-10-13 14:23:45 +02:00
|
|
|
"serde",
|
2022-10-10 06:32:57 +02:00
|
|
|
"serde_json",
|
2024-02-21 17:49:07 +01:00
|
|
|
"sha1",
|
|
|
|
"sha2",
|
2022-08-11 18:02:19 +02:00
|
|
|
"smol_str",
|
2022-08-13 20:29:30 +02:00
|
|
|
"tabwriter",
|
2023-10-08 13:03:22 +02:00
|
|
|
"tempfile",
|
2022-09-17 19:52:02 +02:00
|
|
|
"test-strategy",
|
2024-07-21 19:17:16 +02:00
|
|
|
"toml 0.6.0",
|
2022-11-06 00:50:31 +01:00
|
|
|
"tvix-eval-builtin-macros",
|
refactor(tvix/eval): ensure VM operations fit in a single byte
This replaces the OpCode enum with a new Op enum which is guaranteed to fit in a
single byte. Instead of carrying enum variants with data, every variant that has
runtime data encodes it into the `Vec<u8>` that a `Chunk` now carries.
This has several advantages:
* Less stack space is required at runtime, and fewer allocations are required
while compiling.
* The OpCode doesn't need to carry "weird" special-cased data variants anymore.
* It is faster (albeit, not by much). On my laptop, results consistently look
approximately like this:
Benchmark 1: ./before -E '(import <nixpkgs> {}).firefox.outPath' --log-level ERROR --no-warnings
Time (mean ± σ): 8.224 s ± 0.272 s [User: 7.149 s, System: 0.688 s]
Range (min … max): 7.759 s … 8.583 s 10 runs
Benchmark 2: ./after -E '(import <nixpkgs> {}).firefox.outPath' --log-level ERROR --no-warnings
Time (mean ± σ): 8.000 s ± 0.198 s [User: 7.036 s, System: 0.633 s]
Range (min … max): 7.718 s … 8.334 s 10 runs
See notes below for why the performance impact might be less than expected.
* It is faster while at the same time dropping some optimisations we previously
performed.
This has several disadvantages:
* The code is closer to how one would write it in C or Go.
* Bit shifting!
* There is (for now) slightly more code than before.
On performance I have the following thoughts at the moment:
In order to prepare for adding GC, there's a couple of places in Tvix where I'd
like to fence off certain kinds of complexity (such as mutating bytecode, which,
for various reaons, also has to be part of data that is subject to GC). With
this change, we can drop optimisations like retroactively modifying existing
bytecode and *still* achieve better performance than before.
I believe that this is currently worth it to pave the way for changes that are
more significant for performance.
In general this also opens other avenues of optimisation: For example, we can
profile which argument sizes actually exist and remove the copy overhead of
varint decoding (which does show up in profiles) by using more adequately sized
types for, e.g., constant indices.
Known regressions:
* Op::Constant is no longer printing its values in disassembly (this can be
fixed, I just didn't get around to it, will do separately).
Change-Id: Id9b3a4254623a45de03069dbdb70b8349e976743
Reviewed-on: https://cl.tvl.fyi/c/depot/+/12191
Tested-by: BuildkiteCI
Reviewed-by: flokli <flokli@flokli.de>
2024-08-10 22:59:38 +02:00
|
|
|
"vu128",
|
2022-11-06 00:50:31 +01:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "tvix-eval-builtin-macros"
|
|
|
|
version = "0.0.1"
|
|
|
|
dependencies = [
|
2024-04-19 15:07:14 +02:00
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
2023-03-16 13:31:28 +01:00
|
|
|
"syn 1.0.109",
|
2022-12-06 14:47:02 +01:00
|
|
|
"tvix-eval",
|
|
|
|
]
|
|
|
|
|
2022-12-31 16:13:59 +01:00
|
|
|
[[package]]
|
2023-11-03 12:34:37 +01:00
|
|
|
name = "tvix-glue"
|
|
|
|
version = "0.1.0"
|
|
|
|
dependencies = [
|
2024-02-23 20:42:52 +01:00
|
|
|
"async-compression",
|
feat(tvix/glue/derivationStrict): support __structuredAttrs
This adds support to handle the __structuredAttrs argument, which can be
passed to builtins.derivationStrict.
If __structuredAttrs is passed, and set to true, most of the arguments
passed to builtins.derivationStrict are not simply coerced to a string
and passed down to "environments", but instead kept in a more structured
fashion.
Inside ATerm, which is what's relevant as far as path calculation is
concerned, a virtual `__json` environment variable is present,
containing these structured values.
Inside Builds, these structured values are not made available as an
environment variable, but a JSON file (and source-able bash script).
This will need to be respected once we start emitting BuildRequests,
and for that we can probably just parse the `__json` key in
Derivation.environment again - or keep this additionally in
non-serialized form around during Evaluation.
No matter what, this is left for a followup CL.
The existing handle_derivation_parameters and populate_outputs helper
function were removed, as __structuredAttrs causes quite a change
in behaviour, and so handling both in the same place makes it more
readable.
There's some open questions w.r.t. string contexts for structured attrs
itself. A TODO is left for this, but at least path calculation for
individual structured attrs derivations are correct now.
Part of b/366.
Change-Id: Ic293822266ced6f8c4826d8ef0d2e098a4adccaa
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10604
Tested-by: BuildkiteCI
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
2024-01-11 14:44:31 +01:00
|
|
|
"bstr",
|
2023-11-03 12:34:37 +01:00
|
|
|
"bytes",
|
2024-07-21 16:41:09 +02:00
|
|
|
"clap",
|
2023-12-09 17:45:39 +01:00
|
|
|
"criterion",
|
2023-12-30 03:01:59 +01:00
|
|
|
"data-encoding",
|
feat(tvix/glue): drive builds on IO
That's one possible abstraction to drive builds.
Whenever IO into a store path is requested, we look up the root node,
and in case we don't have it in PathInfoService, but KnownPaths gives us
a Derivation for that output path, trigger a build and await the result.
This recursively might trigger builds for parent paths if they haven't
been built yet.
Another option would be to simply expose a PathInfoService interface for
a builder too, and loop all building into IO via PathInfoService
composition - but let's start with something.
Note tvix-cli doesn't have a configurable BuildService yet, it's plugged
to the DummyBuildService, so whenever it needs to do a build, it'll fail,
but that's how it can be provoked:
```
(builtins.readFile (import <nixpkgs> {}).hello.outPath + "/bin/hello")
[…]
error[E029]: I/O error: /nix/store/cg8a576pz2yfc1wbhxm1zy4x7lrk8pix-hello-2.12.1: builds are not supported with DummyBuildService
--> [code]:1:2
|
1 | (builtins.readFile (import <nixpkgs> {}).hello.outPath + "/bin/hello")
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
```
Note how this fails, while pure output path calculation
(`(import <nixpkgs> {}).hello.outPath + "/bin/hello")`) still succeeds.
Change-Id: Id2075d8a2b18554d0dd608b4b29146a8cd411e7f
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10793
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
Tested-by: BuildkiteCI
2024-01-16 20:14:38 +01:00
|
|
|
"futures",
|
2024-02-17 07:10:13 +01:00
|
|
|
"hex-literal",
|
2023-12-09 11:53:17 +01:00
|
|
|
"lazy_static",
|
2024-02-23 20:42:52 +01:00
|
|
|
"magic",
|
refactor(tvix/glue): move Fetch[er] into its own types, fetch lazily
We actually want to delay fetching until we actually need the file. A
simple evaluation asking for `.outPath` or `.drvPath` should work even
in a pure offline environment.
Before this CL, the fetching logic was quite distributed between
tvix_store_io, and builtins/fetchers.rs.
Rather than having various functions and conversions between structs,
describe a Fetch as an enum type, with the fields describing the fetch.
Define a store_path() function on top of `Fetch` which can be used to
ask for the calculated store path (if the digest has been provided
upfront).
Have a `Fetcher` struct, and give it a `fetch_and_persist` function,
taking a `Fetch` as well as a desired name, and have it deal with all
the logic of persisting the PathInfos. It also returns a StorePathRef,
similar to the `.store_path()` method on a `Fetch` struct.
In a followup CL, we can extend KnownPaths to track fetches AND
derivations, and then use `Fetcher` when we need to do IO into that
store path.
Change-Id: Ib39a96baeb661750a8706b461f8ba4abb342e777
Reviewed-on: https://cl.tvl.fyi/c/depot/+/11500
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
Autosubmit: flokli <flokli@flokli.de>
Tested-by: BuildkiteCI
2024-04-22 13:02:48 +02:00
|
|
|
"md-5",
|
2024-08-07 23:21:26 +02:00
|
|
|
"mimalloc",
|
2024-01-17 07:45:55 +01:00
|
|
|
"nix 0.27.1",
|
2023-11-03 12:34:37 +01:00
|
|
|
"nix-compat",
|
2024-02-23 20:42:52 +01:00
|
|
|
"pin-project",
|
2024-01-14 01:41:16 +01:00
|
|
|
"pretty_assertions",
|
2024-02-23 16:09:20 +01:00
|
|
|
"reqwest",
|
2024-01-14 01:41:16 +01:00
|
|
|
"rstest",
|
feat(tvix/glue/derivationStrict): support __structuredAttrs
This adds support to handle the __structuredAttrs argument, which can be
passed to builtins.derivationStrict.
If __structuredAttrs is passed, and set to true, most of the arguments
passed to builtins.derivationStrict are not simply coerced to a string
and passed down to "environments", but instead kept in a more structured
fashion.
Inside ATerm, which is what's relevant as far as path calculation is
concerned, a virtual `__json` environment variable is present,
containing these structured values.
Inside Builds, these structured values are not made available as an
environment variable, but a JSON file (and source-able bash script).
This will need to be respected once we start emitting BuildRequests,
and for that we can probably just parse the `__json` key in
Derivation.environment again - or keep this additionally in
non-serialized form around during Evaluation.
No matter what, this is left for a followup CL.
The existing handle_derivation_parameters and populate_outputs helper
function were removed, as __structuredAttrs causes quite a change
in behaviour, and so handling both in the same place makes it more
readable.
There's some open questions w.r.t. string contexts for structured attrs
itself. A TODO is left for this, but at least path calculation for
individual structured attrs derivations are correct now.
Part of b/366.
Change-Id: Ic293822266ced6f8c4826d8ef0d2e098a4adccaa
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10604
Tested-by: BuildkiteCI
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
2024-01-11 14:44:31 +01:00
|
|
|
"serde",
|
|
|
|
"serde_json",
|
refactor(tvix/glue): move Fetch[er] into its own types, fetch lazily
We actually want to delay fetching until we actually need the file. A
simple evaluation asking for `.outPath` or `.drvPath` should work even
in a pure offline environment.
Before this CL, the fetching logic was quite distributed between
tvix_store_io, and builtins/fetchers.rs.
Rather than having various functions and conversions between structs,
describe a Fetch as an enum type, with the fields describing the fetch.
Define a store_path() function on top of `Fetch` which can be used to
ask for the calculated store path (if the digest has been provided
upfront).
Have a `Fetcher` struct, and give it a `fetch_and_persist` function,
taking a `Fetch` as well as a desired name, and have it deal with all
the logic of persisting the PathInfos. It also returns a StorePathRef,
similar to the `.store_path()` method on a `Fetch` struct.
In a followup CL, we can extend KnownPaths to track fetches AND
derivations, and then use `Fetcher` when we need to do IO into that
store path.
Change-Id: Ib39a96baeb661750a8706b461f8ba4abb342e777
Reviewed-on: https://cl.tvl.fyi/c/depot/+/11500
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
Autosubmit: flokli <flokli@flokli.de>
Tested-by: BuildkiteCI
2024-04-22 13:02:48 +02:00
|
|
|
"sha1",
|
2024-01-02 13:17:02 +01:00
|
|
|
"sha2",
|
2023-12-13 10:34:17 +01:00
|
|
|
"tempfile",
|
2023-11-03 12:34:37 +01:00
|
|
|
"thiserror",
|
|
|
|
"tokio",
|
2024-02-23 20:42:52 +01:00
|
|
|
"tokio-tar",
|
2024-07-22 15:44:42 +02:00
|
|
|
"tokio-test",
|
2024-02-23 16:09:20 +01:00
|
|
|
"tokio-util",
|
2023-11-03 12:34:37 +01:00
|
|
|
"tracing",
|
2024-06-12 23:17:18 +02:00
|
|
|
"tracing-indicatif",
|
2023-12-09 11:53:17 +01:00
|
|
|
"tvix-build",
|
2023-11-03 12:34:37 +01:00
|
|
|
"tvix-castore",
|
|
|
|
"tvix-eval",
|
|
|
|
"tvix-store",
|
2024-06-12 23:17:18 +02:00
|
|
|
"tvix-tracing",
|
2024-04-22 19:05:49 +02:00
|
|
|
"url",
|
2024-01-17 07:45:55 +01:00
|
|
|
"walkdir",
|
2023-11-03 12:34:37 +01:00
|
|
|
"wu-manber",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
2022-12-31 16:13:59 +01:00
|
|
|
name = "tvix-serde"
|
|
|
|
version = "0.1.0"
|
|
|
|
dependencies = [
|
fix(tvix): Represent strings as byte arrays
C++ nix uses C-style zero-terminated char pointers to represent strings
internally - however, up to this point, tvix has used Rust `String` and
`str` for string values. Since those are required to be valid utf-8, we
haven't been able to properly represent all the string values that Nix
supports.
To fix that, this change converts the internal representation of the
NixString struct from `Box<str>` to `BString`, from the `bstr` crate -
this is a wrapper around a `Vec<u8>` with extra functions for treating
that byte vector as a "morally string-like" value, which is basically
exactly what we need.
Since this changes a pretty fundamental assumption about a pretty core
type, there are a *lot* of changes in a lot of places to make this work,
but I've tried to keep the general philosophy and intent of most of the
code in most places intact. Most notably, there's nothing that's been
done to make the derivation stuff in //tvix/glue work with non-utf8
strings everywhere, instead opting to just convert to String/str when
passing things into that - there *might* be something to be done there,
but I don't know what the rules should be and I don't want to figure
them out in this change.
To deal with OS-native paths in a way that also works in WASM for
tvixbolt, this also adds a dependency on the "os_str_bytes" crate.
Fixes: b/189
Fixes: b/337
Change-Id: I5e6eb29c62f47dd91af954f5e12bfc3d186f5526
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10200
Reviewed-by: tazjin <tazjin@tvl.su>
Reviewed-by: flokli <flokli@flokli.de>
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: aspen <root@gws.fyi>
Tested-by: BuildkiteCI
2023-12-05 23:25:52 +01:00
|
|
|
"bstr",
|
2022-12-31 16:13:59 +01:00
|
|
|
"serde",
|
|
|
|
"tvix-eval",
|
|
|
|
]
|
|
|
|
|
2022-12-06 14:47:02 +01:00
|
|
|
[[package]]
|
2023-03-14 22:36:10 +01:00
|
|
|
name = "tvix-store"
|
2022-12-06 14:47:02 +01:00
|
|
|
version = "0.1.0"
|
|
|
|
dependencies = [
|
2022-12-27 18:10:46 +01:00
|
|
|
"anyhow",
|
2024-04-30 11:17:20 +02:00
|
|
|
"async-compression",
|
2024-04-05 15:54:50 +02:00
|
|
|
"async-process",
|
2023-09-19 18:46:41 +02:00
|
|
|
"async-stream",
|
2024-04-05 15:54:50 +02:00
|
|
|
"bigtable_rs",
|
2022-12-06 14:47:02 +01:00
|
|
|
"blake3",
|
2024-02-20 06:12:37 +01:00
|
|
|
"bstr",
|
refactor(tvix/store): remove ChunkService
Whether chunking is involved or not, is an implementation detail of each
Blobstore. Consumers of a whole blob shouldn't need to worry about that.
It currently is not visible in the gRPC interface either. It
shouldn't bleed into everything.
Let the BlobService trait provide `open_read` and `open_write` methods,
which return handles providing io::Read or io::Write, and leave the
details up to the implementation.
This means, our custom BlobReader module can go away, and all the
chunking bits in there, too.
In the future, we might still want to add more chunking-aware syncing,
but as a syncing strategy some stores can expose, not as a fundamental
protocol component.
This currently needs "SyncReadIntoAsyncRead", taken and vendored in from
https://github.com/tokio-rs/tokio/pull/5669.
It provides a AsyncRead for a sync Read, which is necessary to connect
our (sync) BlobReader interface to a GRPC server implementation.
As an alternative, we could also make the BlobReader itself async, and
let consumers of the trait (EvalIO) deal with the async-ness, but this
is less of a change for now.
In terms of vendoring, I initially tried to move our tokio crate to
these commits, but ended up in version incompatibilities, so let's
vendor it in for now.
Change-Id: I5969ebbc4c0e1ceece47981be3b9e7cfb3f59ad0
Reviewed-on: https://cl.tvl.fyi/c/depot/+/8551
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2023-05-11 14:49:01 +02:00
|
|
|
"bytes",
|
2023-12-09 18:26:40 +01:00
|
|
|
"clap",
|
2023-02-13 16:47:22 +01:00
|
|
|
"count-write",
|
2022-12-30 16:40:58 +01:00
|
|
|
"data-encoding",
|
2024-07-22 15:09:10 +02:00
|
|
|
"ed25519",
|
|
|
|
"ed25519-dalek",
|
refactor(tvix/store): remove ChunkService
Whether chunking is involved or not, is an implementation detail of each
Blobstore. Consumers of a whole blob shouldn't need to worry about that.
It currently is not visible in the gRPC interface either. It
shouldn't bleed into everything.
Let the BlobService trait provide `open_read` and `open_write` methods,
which return handles providing io::Read or io::Write, and leave the
details up to the implementation.
This means, our custom BlobReader module can go away, and all the
chunking bits in there, too.
In the future, we might still want to add more chunking-aware syncing,
but as a syncing strategy some stores can expose, not as a fundamental
protocol component.
This currently needs "SyncReadIntoAsyncRead", taken and vendored in from
https://github.com/tokio-rs/tokio/pull/5669.
It provides a AsyncRead for a sync Read, which is necessary to connect
our (sync) BlobReader interface to a GRPC server implementation.
As an alternative, we could also make the BlobReader itself async, and
let consumers of the trait (EvalIO) deal with the async-ness, but this
is less of a change for now.
In terms of vendoring, I initially tried to move our tokio crate to
these commits, but ended up in version incompatibilities, so let's
vendor it in for now.
Change-Id: I5969ebbc4c0e1ceece47981be3b9e7cfb3f59ad0
Reviewed-on: https://cl.tvl.fyi/c/depot/+/8551
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2023-05-11 14:49:01 +02:00
|
|
|
"futures",
|
2024-07-20 20:15:42 +02:00
|
|
|
"hyper-util",
|
2022-12-27 17:41:31 +01:00
|
|
|
"lazy_static",
|
2024-05-10 06:51:18 +02:00
|
|
|
"lru",
|
2024-08-07 23:21:26 +02:00
|
|
|
"mimalloc",
|
2023-01-31 12:18:03 +01:00
|
|
|
"nix-compat",
|
2024-07-20 10:03:47 +02:00
|
|
|
"parking_lot 0.12.3",
|
refactor(tvix/store/blobsvc): make BlobStore async
We previously kept the trait of a BlobService sync.
This however had some annoying consequences:
- It became more and more complicated to track when we're in a context
with an async runtime in the context or not, producing bugs like
https://b.tvl.fyi/issues/304
- The sync trait shielded away async clients from async worloads,
requiring manual block_on code inside the gRPC client code, and
spawn_blocking calls in consumers of the trait, even if they were
async (like the gRPC server)
- We had to write our own custom glue code (SyncReadIntoAsyncRead)
to convert a sync io::Read into a tokio::io::AsyncRead, which already
existed in tokio internally, but upstream ia hesitant to expose.
This now makes the BlobService trait async (via the async_trait macro,
like we already do in various gRPC parts), and replaces the sync readers
and writers with their async counterparts.
Tests interacting with a BlobService now need to have an async runtime
available, the easiest way for this is to mark the test functions
with the tokio::test macro, allowing us to directly .await in the test
function.
In places where we don't have an async runtime available from context
(like tvix-cli), we can pass one down explicitly.
Now that we don't provide a sync interface anymore, the (sync) FUSE
library now holds a pointer to a tokio runtime handle, and needs to at
least have 2 threads available when talking to a blob service (which is
why some of the tests now use the multi_thread flavor).
The FUSE tests got a bit more verbose, as we couldn't use the
setup_and_mount function accepting a callback anymore. We can hopefully
move some of the test fixture setup to rstest in the future to make this
less repetitive.
Co-Authored-By: Connor Brewster <cbrewster@hey.com>
Change-Id: Ia0501b606e32c852d0108de9c9016b21c94a3c05
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9329
Reviewed-by: Connor Brewster <cbrewster@hey.com>
Tested-by: BuildkiteCI
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
2023-09-13 14:20:21 +02:00
|
|
|
"pin-project-lite",
|
2024-08-28 18:35:08 +02:00
|
|
|
"prost",
|
|
|
|
"prost-build",
|
2024-07-21 00:36:19 +02:00
|
|
|
"redb",
|
2023-11-18 11:44:38 +01:00
|
|
|
"reqwest",
|
2024-06-27 10:27:29 +02:00
|
|
|
"reqwest-middleware",
|
2024-03-27 12:11:39 +01:00
|
|
|
"rstest",
|
|
|
|
"rstest_reuse",
|
2024-04-05 15:54:50 +02:00
|
|
|
"serde",
|
2024-04-12 18:23:25 +02:00
|
|
|
"serde_json",
|
2024-04-05 15:54:50 +02:00
|
|
|
"serde_qs",
|
|
|
|
"serde_with",
|
2023-09-22 11:59:15 +02:00
|
|
|
"sha2",
|
2022-12-29 21:39:28 +01:00
|
|
|
"sled",
|
|
|
|
"tempfile",
|
2022-12-27 18:10:46 +01:00
|
|
|
"thiserror",
|
2022-12-28 16:40:28 +01:00
|
|
|
"tokio",
|
2023-09-23 02:45:01 +02:00
|
|
|
"tokio-listener",
|
2023-10-08 13:40:20 +02:00
|
|
|
"tokio-retry",
|
2022-12-28 16:40:28 +01:00
|
|
|
"tokio-stream",
|
2023-03-11 21:21:40 +01:00
|
|
|
"tokio-util",
|
2024-08-28 23:42:29 +02:00
|
|
|
"toml 0.8.19",
|
2024-08-28 18:35:08 +02:00
|
|
|
"tonic",
|
|
|
|
"tonic-build",
|
2024-07-22 15:41:32 +02:00
|
|
|
"tonic-health",
|
2022-11-26 02:14:02 +01:00
|
|
|
"tonic-reflection",
|
feat(tvix/store/directorysvc): add gRPC client
This provides a GRPCDirectoryService struct implementing
DirectoryService, allowing a client to Directory objects from a (remote)
tvix-store.
Remote in this case is anything outside the current process, be it
another process, or an endpoint on the network.
To keep the sync interface in the `DirectoryService` trait, a handle to
some tokio runtime needs to be passed into the constructor, and the two
methods use `self.tokio_handle.spawn` to start an async function, and
`self.tokio_handle.block_on` to wait for its completion.
The client handle, called `grpc_client` itself is easy to clone, and
treats concurrent requests internally. This means, even though we keep
the `DirectoryService` trait sync, there's nothing preventing it from
being used concurrently, let's say from multiple threads.
There's still two limitations for now:
1) The trait doesn't make use of the `recursive` request, which
currently leads to a N+1 query problem. This can be fixed
by `GRPCDirectoryService` having a reference to another
`DirectoryService` acting as the local side.
I want to wait for general store composition code to pop up before
manually coding this here.
2) It's currently only possible to put() leaf directory nodes, as the
request normally requires uploading a whole closure. We might want
to add another batch function to upload a whole closure, and/or do
this batching in certain cases. This still needs some more thinking.
Change-Id: I7ffec791610b72c0960cf5307cefbb12ec946dc9
Reviewed-on: https://cl.tvl.fyi/c/depot/+/8336
Tested-by: BuildkiteCI
Autosubmit: flokli <flokli@flokli.de>
Reviewed-by: tazjin <tazjin@tvl.su>
2023-03-23 13:49:57 +01:00
|
|
|
"tower",
|
2024-07-20 20:15:42 +02:00
|
|
|
"tower-http",
|
2022-12-28 17:17:53 +01:00
|
|
|
"tracing",
|
2024-04-17 18:44:07 +02:00
|
|
|
"tracing-indicatif",
|
2023-09-21 21:32:44 +02:00
|
|
|
"tvix-castore",
|
2024-06-06 15:44:11 +02:00
|
|
|
"tvix-tracing",
|
2023-06-09 18:07:00 +02:00
|
|
|
"url",
|
2023-02-27 13:03:53 +01:00
|
|
|
"walkdir",
|
2022-08-04 15:44:49 +02:00
|
|
|
]
|
2022-08-10 17:52:42 +02:00
|
|
|
|
2024-06-06 15:44:11 +02:00
|
|
|
[[package]]
|
|
|
|
name = "tvix-tracing"
|
|
|
|
version = "0.1.0"
|
|
|
|
dependencies = [
|
2024-08-28 18:35:08 +02:00
|
|
|
"axum",
|
|
|
|
"http",
|
2024-06-06 15:44:11 +02:00
|
|
|
"indicatif",
|
|
|
|
"lazy_static",
|
2024-07-20 20:15:42 +02:00
|
|
|
"opentelemetry 0.24.0",
|
2024-06-20 11:39:09 +02:00
|
|
|
"opentelemetry-http",
|
2024-06-06 15:44:11 +02:00
|
|
|
"opentelemetry-otlp",
|
2024-07-20 20:15:42 +02:00
|
|
|
"opentelemetry_sdk 0.24.1",
|
2024-06-27 10:27:29 +02:00
|
|
|
"reqwest-tracing",
|
2024-06-10 17:49:45 +02:00
|
|
|
"thiserror",
|
|
|
|
"tokio",
|
2024-08-28 18:35:08 +02:00
|
|
|
"tonic",
|
2024-06-06 15:44:11 +02:00
|
|
|
"tracing",
|
|
|
|
"tracing-indicatif",
|
2024-07-20 20:15:42 +02:00
|
|
|
"tracing-opentelemetry 0.25.0",
|
2024-06-06 15:44:11 +02:00
|
|
|
"tracing-subscriber",
|
2024-06-14 13:10:57 +02:00
|
|
|
"tracing-tracy",
|
2024-06-06 15:44:11 +02:00
|
|
|
]
|
|
|
|
|
2024-06-17 01:10:55 +02:00
|
|
|
[[package]]
|
|
|
|
name = "typeid"
|
|
|
|
version = "1.0.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "059d83cc991e7a42fc37bd50941885db0888e34209f8cfd9aab07ddec03bc9cf"
|
|
|
|
|
2022-12-06 14:47:02 +01:00
|
|
|
[[package]]
|
|
|
|
name = "typenum"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "1.17.0"
|
2022-12-06 14:47:02 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
|
2022-12-06 14:47:02 +01:00
|
|
|
|
2024-03-19 11:12:03 +01:00
|
|
|
[[package]]
|
|
|
|
name = "typetag"
|
|
|
|
version = "0.2.16"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "661d18414ec032a49ece2d56eee03636e43c4e8d577047ab334c0ba892e29aaf"
|
|
|
|
dependencies = [
|
|
|
|
"erased-serde",
|
|
|
|
"inventory",
|
|
|
|
"once_cell",
|
|
|
|
"serde",
|
|
|
|
"typetag-impl",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "typetag-impl"
|
|
|
|
version = "0.2.16"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "ac73887f47b9312552aa90ef477927ff014d63d1920ca8037c6c1951eab64bb1"
|
|
|
|
dependencies = [
|
2024-04-19 15:07:14 +02:00
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
2024-08-28 23:42:29 +02:00
|
|
|
"syn 2.0.76",
|
2024-03-19 11:12:03 +01:00
|
|
|
]
|
|
|
|
|
2023-03-16 13:31:28 +01:00
|
|
|
[[package]]
|
|
|
|
name = "unarray"
|
|
|
|
version = "0.1.4"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94"
|
|
|
|
|
2024-03-19 11:12:03 +01:00
|
|
|
[[package]]
|
|
|
|
name = "unicase"
|
|
|
|
version = "2.7.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89"
|
|
|
|
dependencies = [
|
|
|
|
"version_check",
|
|
|
|
]
|
|
|
|
|
2023-06-09 18:07:00 +02:00
|
|
|
[[package]]
|
|
|
|
name = "unicode-bidi"
|
2024-01-17 07:45:55 +01:00
|
|
|
version = "0.3.15"
|
2023-06-09 18:07:00 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-01-17 07:45:55 +01:00
|
|
|
checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75"
|
2023-06-09 18:07:00 +02:00
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "unicode-ident"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "1.0.12"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
|
2022-08-25 17:04:07 +02:00
|
|
|
|
2023-06-09 18:07:00 +02:00
|
|
|
[[package]]
|
|
|
|
name = "unicode-normalization"
|
|
|
|
version = "0.1.22"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
|
|
|
|
dependencies = [
|
|
|
|
"tinyvec",
|
|
|
|
]
|
|
|
|
|
2022-08-11 22:52:55 +02:00
|
|
|
[[package]]
|
|
|
|
name = "unicode-segmentation"
|
2023-02-01 18:54:30 +01:00
|
|
|
version = "1.10.1"
|
2022-08-11 22:52:55 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-02-01 18:54:30 +01:00
|
|
|
checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36"
|
2022-08-11 22:52:55 +02:00
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "unicode-width"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.1.11"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85"
|
2022-08-25 17:04:07 +02:00
|
|
|
|
2023-10-12 20:38:28 +02:00
|
|
|
[[package]]
|
|
|
|
name = "untrusted"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.9.0"
|
2023-10-12 20:38:28 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
|
2023-10-12 20:38:28 +02:00
|
|
|
|
2023-06-09 18:07:00 +02:00
|
|
|
[[package]]
|
|
|
|
name = "url"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "2.5.2"
|
2023-06-09 18:07:00 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c"
|
2023-06-09 18:07:00 +02:00
|
|
|
dependencies = [
|
|
|
|
"form_urlencoded",
|
|
|
|
"idna",
|
|
|
|
"percent-encoding",
|
|
|
|
]
|
|
|
|
|
2023-03-01 00:37:08 +01:00
|
|
|
[[package]]
|
|
|
|
name = "urlencoding"
|
|
|
|
version = "2.1.3"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da"
|
|
|
|
|
2022-08-11 22:52:55 +02:00
|
|
|
[[package]]
|
|
|
|
name = "utf8parse"
|
2023-03-16 13:31:28 +01:00
|
|
|
version = "0.2.1"
|
2022-08-11 22:52:55 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2023-03-16 13:31:28 +01:00
|
|
|
checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
|
2022-08-11 22:52:55 +02:00
|
|
|
|
2023-12-17 01:22:01 +01:00
|
|
|
[[package]]
|
|
|
|
name = "uuid"
|
2024-01-17 07:45:55 +01:00
|
|
|
version = "1.7.0"
|
2023-12-17 01:22:01 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-01-17 07:45:55 +01:00
|
|
|
checksum = "f00cc9702ca12d3c81455259621e676d0f7251cec66a21e98fe2e9a37db93b2a"
|
2023-12-17 01:22:01 +01:00
|
|
|
dependencies = [
|
|
|
|
"getrandom",
|
|
|
|
]
|
|
|
|
|
2022-12-28 17:17:53 +01:00
|
|
|
[[package]]
|
|
|
|
name = "valuable"
|
|
|
|
version = "0.1.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
|
|
|
|
|
2024-02-23 20:42:52 +01:00
|
|
|
[[package]]
|
|
|
|
name = "vcpkg"
|
|
|
|
version = "0.2.15"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
|
|
|
|
|
2022-09-18 21:59:59 +02:00
|
|
|
[[package]]
|
|
|
|
name = "version_check"
|
|
|
|
version = "0.9.4"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
|
|
|
|
|
2023-09-16 20:58:52 +02:00
|
|
|
[[package]]
|
|
|
|
name = "vhost"
|
|
|
|
version = "0.6.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "a6769e8dbf5276b4376439fbf36bb880d203bf614bf7ef444198edc24b5a9f35"
|
|
|
|
dependencies = [
|
2023-11-05 19:18:01 +01:00
|
|
|
"bitflags 1.3.2",
|
2023-09-16 20:58:52 +02:00
|
|
|
"libc",
|
|
|
|
"vm-memory",
|
|
|
|
"vmm-sys-util",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "vhost-user-backend"
|
|
|
|
version = "0.8.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "9f237b91db4ac339d639fb43398b52d785fa51e3c7760ac9425148863c1f4303"
|
|
|
|
dependencies = [
|
|
|
|
"libc",
|
|
|
|
"log",
|
|
|
|
"vhost",
|
|
|
|
"virtio-bindings 0.1.0",
|
|
|
|
"virtio-queue",
|
|
|
|
"vm-memory",
|
|
|
|
"vmm-sys-util",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "virtio-bindings"
|
|
|
|
version = "0.1.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "3ff512178285488516ed85f15b5d0113a7cdb89e9e8a760b269ae4f02b84bd6b"
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "virtio-bindings"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.2.2"
|
2023-09-16 20:58:52 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "878bcb1b2812a10c30d53b0ed054999de3d98f25ece91fc173973f9c57aaae86"
|
2023-09-16 20:58:52 +02:00
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "virtio-queue"
|
|
|
|
version = "0.7.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "3ba81e2bcc21c0d2fc5e6683e79367e26ad219197423a498df801d79d5ba77bd"
|
|
|
|
dependencies = [
|
|
|
|
"log",
|
|
|
|
"virtio-bindings 0.1.0",
|
|
|
|
"vm-memory",
|
|
|
|
"vmm-sys-util",
|
|
|
|
]
|
|
|
|
|
2023-09-16 17:20:34 +02:00
|
|
|
[[package]]
|
|
|
|
name = "vm-memory"
|
|
|
|
version = "0.10.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "688a70366615b45575a424d9c665561c1b5ab2224d494f706b6a6812911a827c"
|
|
|
|
dependencies = [
|
2023-09-16 20:58:52 +02:00
|
|
|
"arc-swap",
|
2023-09-16 17:20:34 +02:00
|
|
|
"libc",
|
|
|
|
"winapi",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "vmm-sys-util"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.11.2"
|
2023-09-16 17:20:34 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "48b7b084231214f7427041e4220d77dfe726897a6d41fddee450696e66ff2a29"
|
2023-09-16 17:20:34 +02:00
|
|
|
dependencies = [
|
2023-11-05 19:18:01 +01:00
|
|
|
"bitflags 1.3.2",
|
2023-09-16 17:20:34 +02:00
|
|
|
"libc",
|
|
|
|
]
|
|
|
|
|
2024-04-17 18:44:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "vt100"
|
|
|
|
version = "0.15.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "84cd863bf0db7e392ba3bd04994be3473491b31e66340672af5d11943c6274de"
|
|
|
|
dependencies = [
|
|
|
|
"itoa",
|
|
|
|
"log",
|
|
|
|
"unicode-width",
|
|
|
|
"vte",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "vte"
|
|
|
|
version = "0.11.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "f5022b5fbf9407086c180e9557be968742d839e68346af7792b8592489732197"
|
|
|
|
dependencies = [
|
|
|
|
"arrayvec",
|
|
|
|
"utf8parse",
|
|
|
|
"vte_generate_state_changes",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "vte_generate_state_changes"
|
|
|
|
version = "0.1.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "d257817081c7dffcdbab24b9e62d2def62e2ff7d00b1c20062551e6cccc145ff"
|
|
|
|
dependencies = [
|
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
|
|
|
]
|
|
|
|
|
refactor(tvix/eval): ensure VM operations fit in a single byte
This replaces the OpCode enum with a new Op enum which is guaranteed to fit in a
single byte. Instead of carrying enum variants with data, every variant that has
runtime data encodes it into the `Vec<u8>` that a `Chunk` now carries.
This has several advantages:
* Less stack space is required at runtime, and fewer allocations are required
while compiling.
* The OpCode doesn't need to carry "weird" special-cased data variants anymore.
* It is faster (albeit, not by much). On my laptop, results consistently look
approximately like this:
Benchmark 1: ./before -E '(import <nixpkgs> {}).firefox.outPath' --log-level ERROR --no-warnings
Time (mean ± σ): 8.224 s ± 0.272 s [User: 7.149 s, System: 0.688 s]
Range (min … max): 7.759 s … 8.583 s 10 runs
Benchmark 2: ./after -E '(import <nixpkgs> {}).firefox.outPath' --log-level ERROR --no-warnings
Time (mean ± σ): 8.000 s ± 0.198 s [User: 7.036 s, System: 0.633 s]
Range (min … max): 7.718 s … 8.334 s 10 runs
See notes below for why the performance impact might be less than expected.
* It is faster while at the same time dropping some optimisations we previously
performed.
This has several disadvantages:
* The code is closer to how one would write it in C or Go.
* Bit shifting!
* There is (for now) slightly more code than before.
On performance I have the following thoughts at the moment:
In order to prepare for adding GC, there's a couple of places in Tvix where I'd
like to fence off certain kinds of complexity (such as mutating bytecode, which,
for various reaons, also has to be part of data that is subject to GC). With
this change, we can drop optimisations like retroactively modifying existing
bytecode and *still* achieve better performance than before.
I believe that this is currently worth it to pave the way for changes that are
more significant for performance.
In general this also opens other avenues of optimisation: For example, we can
profile which argument sizes actually exist and remove the copy overhead of
varint decoding (which does show up in profiles) by using more adequately sized
types for, e.g., constant indices.
Known regressions:
* Op::Constant is no longer printing its values in disassembly (this can be
fixed, I just didn't get around to it, will do separately).
Change-Id: Id9b3a4254623a45de03069dbdb70b8349e976743
Reviewed-on: https://cl.tvl.fyi/c/depot/+/12191
Tested-by: BuildkiteCI
Reviewed-by: flokli <flokli@flokli.de>
2024-08-10 22:59:38 +02:00
|
|
|
[[package]]
|
|
|
|
name = "vu128"
|
2024-07-20 11:25:04 +02:00
|
|
|
version = "1.1.0"
|
refactor(tvix/eval): ensure VM operations fit in a single byte
This replaces the OpCode enum with a new Op enum which is guaranteed to fit in a
single byte. Instead of carrying enum variants with data, every variant that has
runtime data encodes it into the `Vec<u8>` that a `Chunk` now carries.
This has several advantages:
* Less stack space is required at runtime, and fewer allocations are required
while compiling.
* The OpCode doesn't need to carry "weird" special-cased data variants anymore.
* It is faster (albeit, not by much). On my laptop, results consistently look
approximately like this:
Benchmark 1: ./before -E '(import <nixpkgs> {}).firefox.outPath' --log-level ERROR --no-warnings
Time (mean ± σ): 8.224 s ± 0.272 s [User: 7.149 s, System: 0.688 s]
Range (min … max): 7.759 s … 8.583 s 10 runs
Benchmark 2: ./after -E '(import <nixpkgs> {}).firefox.outPath' --log-level ERROR --no-warnings
Time (mean ± σ): 8.000 s ± 0.198 s [User: 7.036 s, System: 0.633 s]
Range (min … max): 7.718 s … 8.334 s 10 runs
See notes below for why the performance impact might be less than expected.
* It is faster while at the same time dropping some optimisations we previously
performed.
This has several disadvantages:
* The code is closer to how one would write it in C or Go.
* Bit shifting!
* There is (for now) slightly more code than before.
On performance I have the following thoughts at the moment:
In order to prepare for adding GC, there's a couple of places in Tvix where I'd
like to fence off certain kinds of complexity (such as mutating bytecode, which,
for various reaons, also has to be part of data that is subject to GC). With
this change, we can drop optimisations like retroactively modifying existing
bytecode and *still* achieve better performance than before.
I believe that this is currently worth it to pave the way for changes that are
more significant for performance.
In general this also opens other avenues of optimisation: For example, we can
profile which argument sizes actually exist and remove the copy overhead of
varint decoding (which does show up in profiles) by using more adequately sized
types for, e.g., constant indices.
Known regressions:
* Op::Constant is no longer printing its values in disassembly (this can be
fixed, I just didn't get around to it, will do separately).
Change-Id: Id9b3a4254623a45de03069dbdb70b8349e976743
Reviewed-on: https://cl.tvl.fyi/c/depot/+/12191
Tested-by: BuildkiteCI
Reviewed-by: flokli <flokli@flokli.de>
2024-08-10 22:59:38 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-07-20 11:25:04 +02:00
|
|
|
checksum = "b18da3bd753c6f4373511e5f025423986560dfe4a5e7d642cc9a0266847f9fdd"
|
refactor(tvix/eval): ensure VM operations fit in a single byte
This replaces the OpCode enum with a new Op enum which is guaranteed to fit in a
single byte. Instead of carrying enum variants with data, every variant that has
runtime data encodes it into the `Vec<u8>` that a `Chunk` now carries.
This has several advantages:
* Less stack space is required at runtime, and fewer allocations are required
while compiling.
* The OpCode doesn't need to carry "weird" special-cased data variants anymore.
* It is faster (albeit, not by much). On my laptop, results consistently look
approximately like this:
Benchmark 1: ./before -E '(import <nixpkgs> {}).firefox.outPath' --log-level ERROR --no-warnings
Time (mean ± σ): 8.224 s ± 0.272 s [User: 7.149 s, System: 0.688 s]
Range (min … max): 7.759 s … 8.583 s 10 runs
Benchmark 2: ./after -E '(import <nixpkgs> {}).firefox.outPath' --log-level ERROR --no-warnings
Time (mean ± σ): 8.000 s ± 0.198 s [User: 7.036 s, System: 0.633 s]
Range (min … max): 7.718 s … 8.334 s 10 runs
See notes below for why the performance impact might be less than expected.
* It is faster while at the same time dropping some optimisations we previously
performed.
This has several disadvantages:
* The code is closer to how one would write it in C or Go.
* Bit shifting!
* There is (for now) slightly more code than before.
On performance I have the following thoughts at the moment:
In order to prepare for adding GC, there's a couple of places in Tvix where I'd
like to fence off certain kinds of complexity (such as mutating bytecode, which,
for various reaons, also has to be part of data that is subject to GC). With
this change, we can drop optimisations like retroactively modifying existing
bytecode and *still* achieve better performance than before.
I believe that this is currently worth it to pave the way for changes that are
more significant for performance.
In general this also opens other avenues of optimisation: For example, we can
profile which argument sizes actually exist and remove the copy overhead of
varint decoding (which does show up in profiles) by using more adequately sized
types for, e.g., constant indices.
Known regressions:
* Op::Constant is no longer printing its values in disassembly (this can be
fixed, I just didn't get around to it, will do separately).
Change-Id: Id9b3a4254623a45de03069dbdb70b8349e976743
Reviewed-on: https://cl.tvl.fyi/c/depot/+/12191
Tested-by: BuildkiteCI
Reviewed-by: flokli <flokli@flokli.de>
2024-08-10 22:59:38 +02:00
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "walkdir"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "2.5.0"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
|
2022-08-25 17:04:07 +02:00
|
|
|
dependencies = [
|
|
|
|
"same-file",
|
|
|
|
"winapi-util",
|
|
|
|
]
|
|
|
|
|
2022-11-13 00:23:14 +01:00
|
|
|
[[package]]
|
|
|
|
name = "want"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.3.1"
|
2022-11-13 00:23:14 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e"
|
2022-11-13 00:23:14 +01:00
|
|
|
dependencies = [
|
|
|
|
"try-lock",
|
|
|
|
]
|
|
|
|
|
2022-08-11 22:52:55 +02:00
|
|
|
[[package]]
|
|
|
|
name = "wasi"
|
|
|
|
version = "0.11.0+wasi-snapshot-preview1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
|
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "wasm-bindgen"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.2.90"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "b1223296a201415c7fad14792dbefaace9bd52b62d33453ade1c5b5f07555406"
|
2022-08-25 17:04:07 +02:00
|
|
|
dependencies = [
|
|
|
|
"cfg-if",
|
|
|
|
"wasm-bindgen-macro",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "wasm-bindgen-backend"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.2.90"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "fcdc935b63408d58a32f8cc9738a0bffd8f05cc7c002086c6ef20b7312ad9dcd"
|
2022-08-25 17:04:07 +02:00
|
|
|
dependencies = [
|
|
|
|
"bumpalo",
|
|
|
|
"log",
|
|
|
|
"once_cell",
|
2024-04-19 15:07:14 +02:00
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
2024-08-28 23:42:29 +02:00
|
|
|
"syn 2.0.76",
|
2022-08-25 17:04:07 +02:00
|
|
|
"wasm-bindgen-shared",
|
|
|
|
]
|
|
|
|
|
2023-11-18 11:44:38 +01:00
|
|
|
[[package]]
|
|
|
|
name = "wasm-bindgen-futures"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.4.40"
|
2023-11-18 11:44:38 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "bde2032aeb86bdfaecc8b261eef3cba735cc426c1f3a3416d1e0791be95fc461"
|
2023-11-18 11:44:38 +01:00
|
|
|
dependencies = [
|
|
|
|
"cfg-if",
|
|
|
|
"js-sys",
|
|
|
|
"wasm-bindgen",
|
|
|
|
"web-sys",
|
|
|
|
]
|
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "wasm-bindgen-macro"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.2.90"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "3e4c238561b2d428924c49815533a8b9121c664599558a5d9ec51f8a1740a999"
|
2022-08-25 17:04:07 +02:00
|
|
|
dependencies = [
|
2024-04-19 15:07:14 +02:00
|
|
|
"quote",
|
2022-08-25 17:04:07 +02:00
|
|
|
"wasm-bindgen-macro-support",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "wasm-bindgen-macro-support"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.2.90"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "bae1abb6806dc1ad9e560ed242107c0f6c84335f1749dd4e8ddb012ebd5e25a7"
|
2022-08-25 17:04:07 +02:00
|
|
|
dependencies = [
|
2024-04-19 15:07:14 +02:00
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
2024-08-28 23:42:29 +02:00
|
|
|
"syn 2.0.76",
|
2022-08-25 17:04:07 +02:00
|
|
|
"wasm-bindgen-backend",
|
|
|
|
"wasm-bindgen-shared",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "wasm-bindgen-shared"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.2.90"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "4d91413b1c31d7539ba5ef2451af3f0b833a005eb27a631cec32bc0635a8602b"
|
2022-08-25 17:04:07 +02:00
|
|
|
|
2023-11-18 11:44:38 +01:00
|
|
|
[[package]]
|
|
|
|
name = "wasm-streams"
|
2024-07-20 20:15:42 +02:00
|
|
|
version = "0.4.0"
|
2023-11-18 11:44:38 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-07-20 20:15:42 +02:00
|
|
|
checksum = "b65dc4c90b63b118468cf747d8bf3566c1913ef60be765b5730ead9e0a3ba129"
|
2023-11-18 11:44:38 +01:00
|
|
|
dependencies = [
|
|
|
|
"futures-util",
|
|
|
|
"js-sys",
|
|
|
|
"wasm-bindgen",
|
|
|
|
"wasm-bindgen-futures",
|
|
|
|
"web-sys",
|
|
|
|
]
|
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "web-sys"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.3.67"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "58cd2333b6e0be7a39605f0e255892fd7418a682d8da8fe042fe25128794d2ed"
|
2022-08-25 17:04:07 +02:00
|
|
|
dependencies = [
|
|
|
|
"js-sys",
|
|
|
|
"wasm-bindgen",
|
|
|
|
]
|
|
|
|
|
2023-03-01 00:37:08 +01:00
|
|
|
[[package]]
|
|
|
|
name = "web-time"
|
2024-05-14 14:00:54 +02:00
|
|
|
version = "1.1.0"
|
2023-03-01 00:37:08 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-05-14 14:00:54 +02:00
|
|
|
checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb"
|
2023-03-01 00:37:08 +01:00
|
|
|
dependencies = [
|
|
|
|
"js-sys",
|
|
|
|
"wasm-bindgen",
|
|
|
|
]
|
|
|
|
|
2022-08-25 17:04:07 +02:00
|
|
|
[[package]]
|
|
|
|
name = "winapi"
|
|
|
|
version = "0.3.9"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
|
|
|
|
dependencies = [
|
|
|
|
"winapi-i686-pc-windows-gnu",
|
|
|
|
"winapi-x86_64-pc-windows-gnu",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "winapi-i686-pc-windows-gnu"
|
|
|
|
version = "0.4.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "winapi-util"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.1.6"
|
2022-08-25 17:04:07 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596"
|
2022-08-25 17:04:07 +02:00
|
|
|
dependencies = [
|
|
|
|
"winapi",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "winapi-x86_64-pc-windows-gnu"
|
|
|
|
version = "0.4.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
|
2022-08-11 22:52:55 +02:00
|
|
|
|
2024-06-14 13:10:57 +02:00
|
|
|
[[package]]
|
|
|
|
name = "windows"
|
|
|
|
version = "0.54.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "9252e5725dbed82865af151df558e754e4a3c2c30818359eb17465f1346a1b49"
|
|
|
|
dependencies = [
|
|
|
|
"windows-core 0.54.0",
|
2024-08-28 23:42:29 +02:00
|
|
|
"windows-targets 0.52.6",
|
2024-06-14 13:10:57 +02:00
|
|
|
]
|
|
|
|
|
2024-03-01 17:00:53 +01:00
|
|
|
[[package]]
|
|
|
|
name = "windows-core"
|
|
|
|
version = "0.52.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
|
|
|
|
dependencies = [
|
2024-08-28 23:42:29 +02:00
|
|
|
"windows-targets 0.52.6",
|
2024-06-14 13:10:57 +02:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "windows-core"
|
|
|
|
version = "0.54.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "12661b9c89351d684a50a8a643ce5f608e20243b9fb84687800163429f161d65"
|
|
|
|
dependencies = [
|
2024-08-28 23:42:29 +02:00
|
|
|
"windows-result 0.1.2",
|
|
|
|
"windows-targets 0.52.6",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "windows-registry"
|
|
|
|
version = "0.2.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0"
|
|
|
|
dependencies = [
|
|
|
|
"windows-result 0.2.0",
|
|
|
|
"windows-strings",
|
|
|
|
"windows-targets 0.52.6",
|
2024-06-14 13:10:57 +02:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "windows-result"
|
|
|
|
version = "0.1.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8"
|
|
|
|
dependencies = [
|
2024-08-28 23:42:29 +02:00
|
|
|
"windows-targets 0.52.6",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "windows-result"
|
|
|
|
version = "0.2.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e"
|
|
|
|
dependencies = [
|
|
|
|
"windows-targets 0.52.6",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "windows-strings"
|
|
|
|
version = "0.1.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10"
|
|
|
|
dependencies = [
|
|
|
|
"windows-result 0.2.0",
|
|
|
|
"windows-targets 0.52.6",
|
2024-03-01 17:00:53 +01:00
|
|
|
]
|
|
|
|
|
2022-08-11 22:52:55 +02:00
|
|
|
[[package]]
|
|
|
|
name = "windows-sys"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.48.0"
|
2022-08-11 22:52:55 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
|
2022-08-11 22:52:55 +02:00
|
|
|
dependencies = [
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
"windows-targets 0.48.5",
|
2022-08-11 22:52:55 +02:00
|
|
|
]
|
|
|
|
|
2023-02-04 10:05:13 +01:00
|
|
|
[[package]]
|
|
|
|
name = "windows-sys"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.52.0"
|
2023-02-04 10:05:13 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
|
2023-02-04 10:05:13 +01:00
|
|
|
dependencies = [
|
2024-08-28 23:42:29 +02:00
|
|
|
"windows-targets 0.52.6",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "windows-sys"
|
|
|
|
version = "0.59.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
|
|
|
|
dependencies = [
|
|
|
|
"windows-targets 0.52.6",
|
2023-02-04 10:05:13 +01:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "windows-targets"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.48.5"
|
2023-02-04 10:05:13 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
|
2023-02-04 10:05:13 +01:00
|
|
|
dependencies = [
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
"windows_aarch64_gnullvm 0.48.5",
|
|
|
|
"windows_aarch64_msvc 0.48.5",
|
|
|
|
"windows_i686_gnu 0.48.5",
|
|
|
|
"windows_i686_msvc 0.48.5",
|
|
|
|
"windows_x86_64_gnu 0.48.5",
|
|
|
|
"windows_x86_64_gnullvm 0.48.5",
|
|
|
|
"windows_x86_64_msvc 0.48.5",
|
2023-05-01 16:29:20 +02:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "windows-targets"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "0.52.6"
|
2023-05-01 16:29:20 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
|
2023-05-01 16:29:20 +02:00
|
|
|
dependencies = [
|
2024-08-28 23:42:29 +02:00
|
|
|
"windows_aarch64_gnullvm 0.52.6",
|
|
|
|
"windows_aarch64_msvc 0.52.6",
|
|
|
|
"windows_i686_gnu 0.52.6",
|
2024-06-14 13:10:57 +02:00
|
|
|
"windows_i686_gnullvm",
|
2024-08-28 23:42:29 +02:00
|
|
|
"windows_i686_msvc 0.52.6",
|
|
|
|
"windows_x86_64_gnu 0.52.6",
|
|
|
|
"windows_x86_64_gnullvm 0.52.6",
|
|
|
|
"windows_x86_64_msvc 0.52.6",
|
2023-02-04 10:05:13 +01:00
|
|
|
]
|
|
|
|
|
2022-11-23 04:42:06 +01:00
|
|
|
[[package]]
|
|
|
|
name = "windows_aarch64_gnullvm"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.48.5"
|
2022-11-23 04:42:06 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
|
2022-11-23 04:42:06 +01:00
|
|
|
|
2023-05-01 16:29:20 +02:00
|
|
|
[[package]]
|
|
|
|
name = "windows_aarch64_gnullvm"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "0.52.6"
|
2023-05-01 16:29:20 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
|
2023-05-01 16:29:20 +02:00
|
|
|
|
2022-08-11 22:52:55 +02:00
|
|
|
[[package]]
|
|
|
|
name = "windows_aarch64_msvc"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.48.5"
|
2022-08-11 22:52:55 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
|
2022-08-11 22:52:55 +02:00
|
|
|
|
2023-05-01 16:29:20 +02:00
|
|
|
[[package]]
|
|
|
|
name = "windows_aarch64_msvc"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "0.52.6"
|
2023-05-01 16:29:20 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
|
2023-05-01 16:29:20 +02:00
|
|
|
|
2022-08-11 22:52:55 +02:00
|
|
|
[[package]]
|
|
|
|
name = "windows_i686_gnu"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.48.5"
|
2022-08-11 22:52:55 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
|
2022-08-11 22:52:55 +02:00
|
|
|
|
2023-05-01 16:29:20 +02:00
|
|
|
[[package]]
|
|
|
|
name = "windows_i686_gnu"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "0.52.6"
|
2024-06-14 13:10:57 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
|
2024-06-14 13:10:57 +02:00
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "windows_i686_gnullvm"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "0.52.6"
|
2023-05-01 16:29:20 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
|
2023-05-01 16:29:20 +02:00
|
|
|
|
2022-08-11 22:52:55 +02:00
|
|
|
[[package]]
|
|
|
|
name = "windows_i686_msvc"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.48.5"
|
2022-08-11 22:52:55 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
|
2022-08-11 22:52:55 +02:00
|
|
|
|
2023-05-01 16:29:20 +02:00
|
|
|
[[package]]
|
|
|
|
name = "windows_i686_msvc"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "0.52.6"
|
2023-05-01 16:29:20 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
|
2023-05-01 16:29:20 +02:00
|
|
|
|
2022-08-11 22:52:55 +02:00
|
|
|
[[package]]
|
|
|
|
name = "windows_x86_64_gnu"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.48.5"
|
2022-11-23 04:42:06 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
|
2022-11-23 04:42:06 +01:00
|
|
|
|
2023-05-01 16:29:20 +02:00
|
|
|
[[package]]
|
|
|
|
name = "windows_x86_64_gnu"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "0.52.6"
|
2023-05-01 16:29:20 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
|
2023-05-01 16:29:20 +02:00
|
|
|
|
2022-11-23 04:42:06 +01:00
|
|
|
[[package]]
|
|
|
|
name = "windows_x86_64_gnullvm"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.48.5"
|
2022-08-11 22:52:55 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
|
2022-08-11 22:52:55 +02:00
|
|
|
|
2023-05-01 16:29:20 +02:00
|
|
|
[[package]]
|
|
|
|
name = "windows_x86_64_gnullvm"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "0.52.6"
|
2023-05-01 16:29:20 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
|
2023-05-01 16:29:20 +02:00
|
|
|
|
2022-08-11 22:52:55 +02:00
|
|
|
[[package]]
|
|
|
|
name = "windows_x86_64_msvc"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
version = "0.48.5"
|
2022-08-11 22:52:55 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
fix(tvix/eval): `getContext` merges underlying values
Previously, we were assembling very naively an attribute set composed of context we saw.
But it was forgetting that `"${drv}${drv.drvPath}"` would contain 2 contexts with the same key, but
with different values, one with `outputs = [ "out" ];` and `allOutputs = true;`.
Following this reasoning and comparing with what Nix does, we ought to merge underlying values systematically.
Hence, I bring `itertools` to perform a group by on the key and merge everything on the fly, it's not
beautiful but it's the best I could find, notice that I don't use
`group_by` but I talk about group by, that is, because `group_by` is a
`group_by_consecutive`, see
https://github.com/rust-itertools/itertools/issues/374.
Initially, I tried to do it without a `into_grouping_map_by`, it was akin to assemble the final `NixAttrs` directly,
it was less readable and harder to pull out because we don't have a lot of in-place mutable functions on
our data structures.
Change-Id: I9933c9bd88ffe04de50dda14f21879b60d8b8cd4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10620
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2024-01-14 02:40:07 +01:00
|
|
|
checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
|
2022-08-16 14:33:50 +02:00
|
|
|
|
2023-05-01 16:29:20 +02:00
|
|
|
[[package]]
|
|
|
|
name = "windows_x86_64_msvc"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "0.52.6"
|
2023-05-01 16:29:20 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
|
2023-05-01 16:29:20 +02:00
|
|
|
|
2024-07-21 19:17:16 +02:00
|
|
|
[[package]]
|
|
|
|
name = "winnow"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "0.6.18"
|
2024-07-21 19:17:16 +02:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f"
|
2024-07-21 19:17:16 +02:00
|
|
|
dependencies = [
|
|
|
|
"memchr",
|
|
|
|
]
|
|
|
|
|
refactor(tvix/cli): use Wu-Manber string scanning for drv references
Switch out the string-scanning algorithm used in the reference scanner.
The construction of aho-corasick automata made up the vast majority of
runtime when evaluating nixpkgs previously. While the actual scanning
with a constructed automaton is relatively fast, we almost never scan
for the same set of strings twice and the cost is not worth it.
An algorithm that better matches our needs is the Wu-Manber multiple
string match algorithm, which works efficiently on *long* and *random*
strings of the *same length*, which describes store paths (up to their
hash component).
This switches the refscanner crate to a Rust implementation[0][1] of
this algorithm.
This has several implications:
1. This crate does not provide a way to scan streams. I'm not sure if
this is an inherent problem with the algorithm (probably not, but
it would need buffering). Either way, related functions and
tests (which were actually unused) have been removed.
2. All strings need to be of the same length. For this reason, we
truncate the known paths after their hash part (they are still
unique, of course).
3. Passing an empty set of matches, or a match that is shorter than
the length of a store path, causes the crate to panic. We safeguard
against this by completely skipping the refscanning if there are no
known paths (i.e. when evaluating the first derivation of an eval),
and by bailing out of scanning a string that is shorter than a
store path.
On the upside, this reduces overall runtime to less 1/5 of what it was
before when evaluating `pkgs.stdenv.drvPath`.
[0]: Frankly, it's a random, research-grade MIT-licensed
crate that I found on Github:
https://github.com/jneem/wu-manber
[1]: We probably want to rewrite or at least fork the above crate, and
add things like a three-byte wide scanner. Evaluating large
portions of nixpkgs can easily lead to more than 65k derivations
being scanned for.
Change-Id: I08926778e1e5d5a87fc9ac26e0437aed8bbd9eb0
Reviewed-on: https://cl.tvl.fyi/c/depot/+/8017
Tested-by: BuildkiteCI
Reviewed-by: flokli <flokli@flokli.de>
2023-02-02 13:51:59 +01:00
|
|
|
[[package]]
|
|
|
|
name = "wu-manber"
|
|
|
|
version = "0.1.0"
|
2023-07-30 00:38:55 +02:00
|
|
|
source = "git+https://github.com/tvlfyi/wu-manber.git#0d5b22bea136659f7de60b102a7030e0daaa503d"
|
refactor(tvix/cli): use Wu-Manber string scanning for drv references
Switch out the string-scanning algorithm used in the reference scanner.
The construction of aho-corasick automata made up the vast majority of
runtime when evaluating nixpkgs previously. While the actual scanning
with a constructed automaton is relatively fast, we almost never scan
for the same set of strings twice and the cost is not worth it.
An algorithm that better matches our needs is the Wu-Manber multiple
string match algorithm, which works efficiently on *long* and *random*
strings of the *same length*, which describes store paths (up to their
hash component).
This switches the refscanner crate to a Rust implementation[0][1] of
this algorithm.
This has several implications:
1. This crate does not provide a way to scan streams. I'm not sure if
this is an inherent problem with the algorithm (probably not, but
it would need buffering). Either way, related functions and
tests (which were actually unused) have been removed.
2. All strings need to be of the same length. For this reason, we
truncate the known paths after their hash part (they are still
unique, of course).
3. Passing an empty set of matches, or a match that is shorter than
the length of a store path, causes the crate to panic. We safeguard
against this by completely skipping the refscanning if there are no
known paths (i.e. when evaluating the first derivation of an eval),
and by bailing out of scanning a string that is shorter than a
store path.
On the upside, this reduces overall runtime to less 1/5 of what it was
before when evaluating `pkgs.stdenv.drvPath`.
[0]: Frankly, it's a random, research-grade MIT-licensed
crate that I found on Github:
https://github.com/jneem/wu-manber
[1]: We probably want to rewrite or at least fork the above crate, and
add things like a three-byte wide scanner. Evaluating large
portions of nixpkgs can easily lead to more than 65k derivations
being scanned for.
Change-Id: I08926778e1e5d5a87fc9ac26e0437aed8bbd9eb0
Reviewed-on: https://cl.tvl.fyi/c/depot/+/8017
Tested-by: BuildkiteCI
Reviewed-by: flokli <flokli@flokli.de>
2023-02-02 13:51:59 +01:00
|
|
|
|
2024-02-23 20:42:52 +01:00
|
|
|
[[package]]
|
|
|
|
name = "xattr"
|
|
|
|
version = "1.3.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f"
|
|
|
|
dependencies = [
|
|
|
|
"libc",
|
|
|
|
"linux-raw-sys",
|
|
|
|
"rustix",
|
|
|
|
]
|
|
|
|
|
2023-11-18 11:44:38 +01:00
|
|
|
[[package]]
|
|
|
|
name = "xz2"
|
|
|
|
version = "0.1.7"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "388c44dc09d76f1536602ead6d325eb532f5c122f17782bd57fb47baeeb767e2"
|
|
|
|
dependencies = [
|
|
|
|
"lzma-sys",
|
|
|
|
]
|
|
|
|
|
2022-08-16 14:33:50 +02:00
|
|
|
[[package]]
|
|
|
|
name = "yansi"
|
|
|
|
version = "0.5.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec"
|
2022-12-29 21:39:28 +01:00
|
|
|
|
2024-05-10 06:51:18 +02:00
|
|
|
[[package]]
|
|
|
|
name = "zerocopy"
|
|
|
|
version = "0.7.34"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "ae87e3fcd617500e5d106f0380cf7b77f3c6092aae37191433159dda23cfb087"
|
|
|
|
dependencies = [
|
|
|
|
"zerocopy-derive",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "zerocopy-derive"
|
|
|
|
version = "0.7.34"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b"
|
|
|
|
dependencies = [
|
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
2024-08-28 23:42:29 +02:00
|
|
|
"syn 2.0.76",
|
2024-05-10 06:51:18 +02:00
|
|
|
]
|
|
|
|
|
2023-11-19 21:21:24 +01:00
|
|
|
[[package]]
|
|
|
|
name = "zeroize"
|
|
|
|
version = "1.7.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d"
|
|
|
|
|
2022-12-29 21:39:28 +01:00
|
|
|
[[package]]
|
|
|
|
name = "zstd"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "0.13.2"
|
2022-12-29 21:39:28 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "fcf2b778a664581e31e389454a7072dab1647606d44f7feea22cd5abb9c9f3f9"
|
2022-12-29 21:39:28 +01:00
|
|
|
dependencies = [
|
|
|
|
"zstd-safe",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "zstd-safe"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "7.2.1"
|
2022-12-29 21:39:28 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "54a3ab4db68cea366acc5c897c7b4d4d1b8994a9cd6e6f841f8964566a419059"
|
2022-12-29 21:39:28 +01:00
|
|
|
dependencies = [
|
|
|
|
"zstd-sys",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "zstd-sys"
|
2024-08-28 23:42:29 +02:00
|
|
|
version = "2.0.13+zstd.1.5.6"
|
2022-12-29 21:39:28 +01:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2024-08-28 23:42:29 +02:00
|
|
|
checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa"
|
2022-12-29 21:39:28 +01:00
|
|
|
dependencies = [
|
|
|
|
"cc",
|
2024-03-07 15:37:27 +01:00
|
|
|
"pkg-config",
|
2022-12-29 21:39:28 +01:00
|
|
|
]
|