Time for another update from the Tweag Nix team:
Nix
Nothing big on the Nix side, mostly some small stabilization changes before the 2.4 release.
-
@edolstra fixed some issues with Non-blocking garbage collector by edolstra · Pull Request #5149 · NixOS/nix · GitHub .
The PR isn’t fully ready yet (at the very least, the OSX CI is hanging forever), but pretty close. - @thufschmitt noticed that the test suite was partially broken − some tests that were supposedly disabled when the daemon was too old were actually unconditionally disabled. This got fixed in Fix the `isDaemonNewer` guard in the testsuite by thufschmitt · Pull Request #5390 · NixOS/nix · GitHub
- @thufschmitt also worked on making the substitution of content-addressed derivations faster as it’s currently adding a significant overhead when building (each derivation has to query the cache twice, and this is currently done fully sequentially with the rest of the build, easily adding minutes to the total time).
Nickel
The two main focuses on the nickel side are currently:
-
Performance. @Accacia has been working on internally sharing some data-structures.
Everything isn’t ready so far, but the work is incredibly promising, showing some huge performance improvements (around 60% faster on most benchmarks) (Rc richterm by Acaccia · Pull Request #426 · tweag/nickel · GitHub) -
LSP server. On top of the first implementation that was presented in the last update (Tweag+Nix dev updates #19), @ysndr started making use of the “server” part to keep the typechecking information in memory, allowing new features like hover and goto-definition (and goto-usage) in [Language Server] Type and reference accumulaton by ysndr · Pull Request #419 · tweag/nickel · GitHub . And building on top of that, he also started working on tracking scopes, eventually making a p
@thufschmitt also added the small missing bit of glue code needed to get this LSP server built with Nix. This means that
nix build nickel
will get you both thenickel
executable and thenls
language server.
On top of that, @yannham wrote a promising proposal to make the contracts behave as (runtime) refinment types: Base types for contracts (or contracts seen as refinement types) · Issue #420 · tweag/nickel · GitHub
Conflang
The conflang conference took place last week. In addition to having no less than three Tweagers in the organizing comitee, it also featured a great talk by @yannham:
(And a lot of other great talks too, of course. All of them have a recording attached to the conference program, so don’t hesitate to check them out.)
And that’s all, folks