<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/announcing-lix-2-96-bingsu--mvsleovth" -->

---
title: Announcing Lix 2.96 “Bingsu” | daily.dev
description: Lix 2.96 "Bingsu" ships improvements to the REPL and debugger (now backed by rustyline for UTF-8 support), introduces an experimental Cap'n'Proto RPC protocol...
canonical: https://daily.dev/posts/announcing-lix-2-96-bingsu--mvsleovth
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Announcing Lix 2.96 “Bingsu” | daily.dev
og:description: Lix 2.96 "Bingsu" ships improvements to the REPL and debugger (now backed by rustyline for UTF-8 support), introduces an experimental Cap'n'Proto RPC protocol...
og:url: https://daily.dev/posts/announcing-lix-2-96-bingsu--mvsleovth
og:image: https://api.daily.dev/og/posts/MVSlEoVtH.png
og:image:alt: Announcing Lix 2.96 “Bingsu”
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Announcing Lix 2.96 “Bingsu”

**[Lobsters](https://daily.dev/sources/lobsters)** · 10 min read · 0 upvotes · 0 comments

## Summary

Lix 2.96 "Bingsu" ships improvements to the REPL and debugger (now backed by rustyline for UTF-8 support), introduces an experimental Cap'n'Proto RPC protocol under the rpc-sockets feature flag, and deprecates ssh:// store URIs in favor of ssh-ng:// (removal planned for 2.97). Breaking changes include stricter flake.nix validation rules, floor/ceil builtins now erroring on precision loss, nix3 CLI commands no longer auto-building arguments, and search path shadowing becoming an error. New features include nested --arg/--argstr support, single-process input fetching to avoid duplicate downloads in CI, mimalloc for 5-12% faster evaluation, an expanded nix doctor, stable ssh-ng URIs, and zst-compressed channel tarballs. Rust integration continues via zngur interop, with the REPL, remote builder config, and hash conversion code now Rust-backed. A 2.96.1 patch with further fixes is planned.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://lix.systems/blog/2026-10-13-lix-2.96-release>

## Questions this post answers

### Is ssh:// store URI support being removed from Lix, and what should I use instead?

Yes, ssh:// store URIs are deprecated in Lix 2.96 and support will be removed entirely in Lix 2.97, while ssh-ng:// URIs remain supported and are now considered stable. The deprecation resolves security inconsistencies, since ssh-ng enforces stricter checks and no longer allows untrusted users to copy unsigned outputs to remote stores.

_Teams planning Nix infrastructure upgrades can track store URI changes like this one on daily.dev._

### What breaking changes come with Lix 2.96 for flake.nix validation?

Lix 2.96 changes flake.nix validation so the only rule is that no function calls are allowed outside of outputs, replacing the previous poorly documented triviality checks. This now permits let blocks and string interpolation in flake inputs. It is a breaking change because other Nix implementations may fail to evaluate flakes written against these newly permitted patterns.

_Developers maintaining flakes across Nix implementations can follow breaking changes like this on daily.dev._

### How does --arg handle dotted attribute names in Lix 2.96 compared to before?

In Lix 2.96, --arg foo.bar.baz 1 now produces the nested set { foo.bar.baz = 1; } with attribute merging applied, whereas previously it created a flat set with the literal key "foo.bar.baz". This makes it easier to pass arguments to functions expecting structured sets like nixpkgs' config. The old flat behavior can still be recovered by quoting the name.

_Nix users adjusting CLI argument handling after an upgrade can keep up with changes like this on daily.dev._

## Similar posts on daily.dev

- [Announcing Lix 2.95 “Kakigōri”](https://daily.dev/posts/announcing-lix-2-95-kakig-ri--0qw0cvpia) · Lobsters · 6 upvotes · 0 comments
- [Announcing Lix 2.94 “Açaí na tigela”](https://daily.dev/posts/announcing-lix-2-94-a-a-na-tigela--1zx3mdmed) · Lobsters · 0 upvotes · 0 comments
- [Changelog: a new upstream base, GC roots for nix eval, and a faster nix copy](https://daily.dev/posts/changelog-a-new-upstream-base-gc-roots-for-nix-eval-and-a-faster-nix-copy-a9ytihpvx) · Determinate Systems · 0 upvotes · 0 comments
- [A Nix store is three functions](https://daily.dev/posts/a-nix-store-is-three-functions-6ga9ijjfb) · Farid Zakaria’s Blog · 5 upvotes · 0 comments

---

Tags: [#rust](https://daily.dev/tags/rust), [#nixos](https://daily.dev/tags/nixos)

[View this post on daily.dev](https://daily.dev/posts/announcing-lix-2-96-bingsu--mvsleovth)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Announcing Lix 2.96 “Bingsu”","url":"https://daily.dev/posts/announcing-lix-2-96-bingsu--mvsleovth","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/announcing-lix-2-96-bingsu--mvsleovth"},"datePublished":"2026-10-14T08:57:24.068Z","dateModified":"2026-10-14T09:02:26.754Z","description":"Lix 2.96 \"Bingsu\" ships improvements to the REPL and debugger (now backed by rustyline for UTF-8 support), introduces an experimental Cap'n'Proto RPC protocol...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/14a1d12370ec055a82766e194131f930?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/14a1d12370ec055a82766e194131f930?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Lobsters","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Lobsters","logo":"https://media.daily.dev/image/upload/s--tl8v_Fku--/f_auto,t_logo/v1698841318/logos/lobste.jpg","url":"https://daily.dev/sources/lobsters"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/announcing-lix-2-96-bingsu--mvsleovth","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"rust,nixos","timeRequired":"PT10M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Lobsters","item":"https://daily.dev/sources/lobsters"},{"@type":"ListItem","position":3,"name":"Announcing Lix 2.96 “Bingsu”"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/announcing-lix-2-96-bingsu--mvsleovth#faq","mainEntity":[{"@type":"Question","name":"Is ssh:// store URI support being removed from Lix, and what should I use instead?","acceptedAnswer":{"@type":"Answer","text":"Yes, ssh:// store URIs are deprecated in Lix 2.96 and support will be removed entirely in Lix 2.97, while ssh-ng:// URIs remain supported and are now considered stable. The deprecation resolves security inconsistencies, since ssh-ng enforces stricter checks and no longer allows untrusted users to copy unsigned outputs to remote stores. Teams planning Nix infrastructure upgrades can track store URI changes like this one on daily.dev."}},{"@type":"Question","name":"What breaking changes come with Lix 2.96 for flake.nix validation?","acceptedAnswer":{"@type":"Answer","text":"Lix 2.96 changes flake.nix validation so the only rule is that no function calls are allowed outside of outputs, replacing the previous poorly documented triviality checks. This now permits let blocks and string interpolation in flake inputs. It is a breaking change because other Nix implementations may fail to evaluate flakes written against these newly permitted patterns. Developers maintaining flakes across Nix implementations can follow breaking changes like this on daily.dev."}},{"@type":"Question","name":"How does --arg handle dotted attribute names in Lix 2.96 compared to before?","acceptedAnswer":{"@type":"Answer","text":"In Lix 2.96, --arg foo.bar.baz 1 now produces the nested set { foo.bar.baz = 1; } with attribute merging applied, whereas previously it created a flat set with the literal key \"foo.bar.baz\". This makes it easier to pass arguments to functions expecting structured sets like nixpkgs' config. The old flat behavior can still be recovered by quoting the name. Nix users adjusting CLI argument handling after an upgrade can keep up with changes like this on daily.dev."}}]}
```

