tvl-depot/tvix/eval/src/builtins
Adam Joseph 1ac57b0d1c feat(tvix/eval): nonrecursive coerce_to_string()
After this commit, the only non-builtins uses of generators are:

  - coerce_to_string() uses generators::request_enter_lambda()
  - Thunk::force() uses generators::request_enter_lambda()

That's it!  Once those two are taken care of, GenCo can become an
implementation detail of `builtins::BuiltinGen`.  No more crazy
nonlocal flow control within the interpreter: if you've got a GenCo
floating around in your code it's because you're writing a builtin,
which isn't part of the core interpreter.  The interpreter won't
need GenCos to talk to itself anymore.

Technically generators::request_path_import() is also used by
coerce_to_string(), but that's just because the io_handle happens to
be part of the VM.  There's no recursion-depth issue there, so the
call doesn't need to go through the generator mechanism
(request_path_import() doesn't call back to the interpreter!)

Change-Id: I83ce5774d49b88fdafdd61160975b4937a435bb0
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10256
Reviewed-by: tazjin <tazjin@tvl.su>
Tested-by: BuildkiteCI
Autosubmit: Adam Joseph <adam@westernsemico.com>
2023-12-12 14:54:46 +00:00
..
impure.rs fix(tvix/eval): fix b/281 by adding Value::Catchable 2023-09-24 21:54:10 +00:00
mod.rs feat(tvix/eval): nonrecursive coerce_to_string() 2023-12-12 14:54:46 +00:00
to_xml.rs fix(tvix/eval): fix b/281 by adding Value::Catchable 2023-09-24 21:54:10 +00:00
versions.rs chore(tvix/eval): fix all current clippy lints 2022-09-29 11:47:47 +00:00