Tweag + Nix dev update #20

Time for another update from the Tweag Nix team:


Nothing big on the Nix side, mostly some small stabilization changes before the 2.4 release.


The two main focuses on the nickel side are currently:

  1. 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)

  2. 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 the nickel executable and the nls 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


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