docs(web/tvl): rewrite blog post to be more "milestoney"
Suggested by zimbatm. Change-Id: I5979cf820943dd44c8a759f226b340c37f9b0446 Reviewed-on: https://cl.tvl.fyi/c/depot/+/6572 Tested-by: BuildkiteCI Reviewed-by: eta <tvl@eta.st>
This commit is contained in:
parent
162e21f2bb
commit
e5a9581682
1 changed files with 27 additions and 20 deletions
|
@ -28,24 +28,10 @@ and [sterni][].
|
||||||
|
|
||||||
### So, what's working now?
|
### So, what's working now?
|
||||||
|
|
||||||
The answer is *most things*! However, there are some unfinished and
|
The answer is *most things*! You can enter many Nix language
|
||||||
important feature areas:
|
expressions in [Tvixbolt][] and observe how they are evaluated.
|
||||||
|
|
||||||
1. The majority of Nix's `builtins` are not yet implemented (including
|
There's a lot of interesting stuff going on under-the-hood, notably:
|
||||||
fundamental ones such as `import` and `derivation`).
|
|
||||||
|
|
||||||
2. Recursive attribute sets (`rec`) are not yet implemented. This is
|
|
||||||
actually not because of the recursion in itself, but because of the
|
|
||||||
handling of nested keys (such as `a.b`), for which we are designing
|
|
||||||
a more efficient solution than what is currently in place.
|
|
||||||
|
|
||||||
In both cases we have mostly figured out how to do the remaining work
|
|
||||||
and it is simply a question of time until we've done it. Progress is
|
|
||||||
steady and can of course be tracked [in the source][src] (viewer
|
|
||||||
without Javascript [here][src-noscript]).
|
|
||||||
|
|
||||||
At the same time, we've already implemented some basics that are
|
|
||||||
hopefully going to have a huge impact further down, such as:
|
|
||||||
|
|
||||||
* The Tvix compiler is built to be able to emit warnings & errors
|
* The Tvix compiler is built to be able to emit warnings & errors
|
||||||
without failing early, as well as retaining as much source
|
without failing early, as well as retaining as much source
|
||||||
|
@ -66,7 +52,13 @@ hopefully going to have a huge impact further down, such as:
|
||||||
differently based on whether it is empty, a `name/value` pair or a
|
differently based on whether it is empty, a `name/value` pair or a
|
||||||
larger set.
|
larger set.
|
||||||
|
|
||||||
### How does this all work?
|
We've also (constrained by the available features) run some initial
|
||||||
|
benchmarks against C++ Nix, and in most cases Tvix evaluation is an
|
||||||
|
order of magnitude faster. However, these benchmarks are in no way
|
||||||
|
indicative of real-life performance when evaluating something like
|
||||||
|
`nixpkgs` yet, so stay tuned for more information on performance.
|
||||||
|
|
||||||
|
### How does it all work?
|
||||||
|
|
||||||
Tvix's evaluator is implemented using a custom abstract machine with a
|
Tvix's evaluator is implemented using a custom abstract machine with a
|
||||||
very Nix-specific instruction set, as well as a compiler that
|
very Nix-specific instruction set, as well as a compiler that
|
||||||
|
@ -89,8 +81,23 @@ towards).
|
||||||
|
|
||||||
### What's next for tvix-eval?
|
### What's next for tvix-eval?
|
||||||
|
|
||||||
Apart from the missing language features outlined above, the next
|
Despite everything, there are some unfinished and important feature
|
||||||
steps are:
|
areas:
|
||||||
|
|
||||||
|
1. The majority of Nix's `builtins` are not yet implemented (including
|
||||||
|
fundamental ones such as `import` and `derivation`).
|
||||||
|
|
||||||
|
2. Recursive attribute sets (`rec`) are not yet implemented. This is
|
||||||
|
actually not because of the recursion in itself, but because of the
|
||||||
|
handling of nested keys (such as `a.b`), for which we are designing
|
||||||
|
a more efficient solution than what is currently in place.
|
||||||
|
|
||||||
|
In both cases we have mostly figured out how to do the remaining work
|
||||||
|
and it is simply a question of time until we've done it. Progress is
|
||||||
|
steady and can of course be tracked [in the source][src] (viewer
|
||||||
|
without Javascript [here][src-noscript]).
|
||||||
|
|
||||||
|
Apart from that, the next steps are:
|
||||||
|
|
||||||
* Comprehensive benchmarking. We are standing up an infrastructure for
|
* Comprehensive benchmarking. We are standing up an infrastructure for
|
||||||
continuous benchmarking to measure the impact of changes, and to be
|
continuous benchmarking to measure the impact of changes, and to be
|
||||||
|
|
Loading…
Reference in a new issue