tvix-eval impure feature smells

#404
Opened by flokli at 2024-05-30T16·34+00

tvix-eval currently has an "impure" feature, controlling whether some EvalIO implementations are compiled in or not.

I wonder if this is the right approach though - if a user writes nix code importing from paths, and we're in a context where we don't want this to happen, we might be better off "just not having this part of the supported language" in first place, rather than failing at eval time (or silently not, due to laziness).

It's still up to the user of the tvix-eval crate to decide which EvalIO implementation to pass in, and it's still possible for tvix-eval to disable certain implementations on certain architectures where they're not available (like raw filesystem access on WASM).

This showed up during https://cl.tvl.fyi/c/depot/+/11722/comment/5d8d86e9_327a7df1/, where we realized some VM requests were never constructed if the impure feature is disabled.