Dreams
This page documents the dreams of the Lix team. These are features which we have generally not roadmapped yet, and which may not have complete and thoroughly thought-through plans, and which we would like to think about more completely before implementing. We are writing them down publicly so that others can dream with us.
- language versioning https://pad.lix.systems/lix-lang-version-investigation [PRIVATE LINK]
- split the evaluator into a separate process, interact with it only via rpc (horrors)
- bytecode evaluator with all the possible trappings (horrors)
- allows arbitrary runtime-define breakpoints, watchpoints, program inspection and manipulation
- interacts with rpc to allow perfect lsp hosts, better debuggers etc
- new gc for the evaluator to replace bdw, prototype/template for gc in eventual rust evaluator (horrors)
- flakes as a library of code that provides new nix subcommands (https://pad.lix.systems/NYy2nww5Tum68KCTduuU8Q#random-bits-that-should-be-noted-down-somewhere [PRIVATE LINK])
- all authoritative information about the store attached to store objects, not an sqlite database (eg in xattrs or similar) (horrors)
- would make overlayfs stores for containers/vms trivial
/nix/store/lazy/thing.zip/...) (horrors)
- notably do not use fuse for this, just a pure vfs implementation
- tvix has kind of done this with EvalIO, lix needs it too (otherwise the eval-process split will not be possible)
- "what attrpath was this accessed by to build"
- Obviously WebAssembly schenanigans involved
- CLI commands should be possible to actually deprecate (jade)
- currently nix has an async io model shoved into a sync runtime, and an async model that can't decide whether it's push or pull. this sucks
- and either haskell's $ or left pipe operator
dbg! https://doc.rust-lang.org/std/macro.dbg.html
a dependency graph for builds which explains why different dependencies are being built
- store path truncated to unique names in output...?
nom) style (slash bazel-style) output formatting (showing a live updating list of stuff being built/fetched, with warnings stacking up above it)
- web viewer for the build graph as it is happening with a nice live log viewer (jade)
- relatedly: show closure graphs nicely (jade)
- see e.g. https://git.lix.systems/lix-project/lix/issues/254
- overall improve the clarity of what is actually running on the daemon vs the client (jade)
nix profile with something not broken with a clear ramp to either have a manifest mutably in the store or operate mutably against a configuration directory. ideally out of tree. (jade)