2.92 release blog post #39
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "jade/2.92-blog"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
a4ca7f4bd3
to4e1ab677ca
This release post brings joy to me. It's written in a thoughtful way with occasional playful jabs. It's what I would like the release notes to be.
As it happens, there are some things to improve! Nothing major, mostly just nitpicks and small areas of improvement. Those are bound to appear when the text in review has taken a lot of time to write.
Excellent job!
@ -0,0 +31,4 @@
Once this work is done, protocol replacement work can commence, which will enable much better visibility into the daemon and make managing large builds a lot clearer.
Lix 2.92 brings a significant refactoring of the build state machine of the daemon to use modern async.
This is expected to bring about a performance improvement while building large numbers of derivations in parallel, but is primarily an improvement in maintainability.
These 2 paragraphs read a little bit awkwardly. It goes back and forth in what is says. Reading sentence by sentence, the sentiment is: "we'll replace legacy protocol in the future" -> "here's what we've done" -> "but the replacement will be in the future" -> "here's what we've done" -> "it's a bit better, but the main improvement will be in the future". It's a bit of a wild ride.
May I suggest grouping the topics together? It would be something like "we're planning to replace the protocol, it will have benefits and give better visibility into the daemon, it's also easier to maintain", and then "to that end, we have refactored the build state machine to use modern async, you may see performance improvements on large builds as a result"? Paraphrasing, of course.
@ -0,0 +41,4 @@
`x:x` is a URL literal and thus a string, which is confusing since it looks kind of like a lambda.
Supporting these also slows down our parser relatively substantially.
nit: "relatively" is redundant here. If it's substantial, then it's already relative to everything else; if it's not, then the sentence lacks the thing you are being "relative" of.
@ -0,0 +48,4 @@
3
```
This is not terribly useful because it only exists for a very limited list of operators and was an implementation shortcut leaking rather than an intended feature.
nit: there already was "not terribly useful" in the previous sentence, you can trim it in one place or the other, or paraphrase.
@ -0,0 +65,4 @@
```
- The legacy `let` syntax of `let { a = 2; body = a; }`.
These features should not be used in new Nix code anyway, and are neither acceptable nor used in nixpkgs today.
This sentence reads a little weird? It's a little "heavy", if that makes sense. How about "these features are problematic, and Nix code that uses them is rejected in Nixpkgs and other modern Nix projects" instead?
As per my proposed addition above, I'd just remove this sentence
@ -0,0 +73,4 @@
[lang-wiki]: https://wiki.lix.systems/books/lix-contributors/page/nix-lang-v2
### Potentially-breaking changes
I'm not sure how to feel about this header. Are those changes actually "breaking" or not? What does it mean to be "potentially" breaking?
From what I see, those changes are actually breaking: so maybe change the header to "breaking changes"? If you want to emphasize that they shouldn't affect many people, best do so in a paragraph following the header. Though I'm not sure if that's even needed: you've already justified those breaking changes well enough, you justify them in place too, and you provide migration paths where possible; that's all one could ask for!
@ -0,0 +83,4 @@
S3 and git+ssh and suchlike use a different system and are unaffected.
Sorry to anyone using Lix to connect to Gopher servers!
Or, to devious catgirls abusing Gopher for server-side request forgery or posting to IRC from the evaluator.
I love those lines. Seriously. This puts a smile on my face and makes me reassured; this is a good feeling to invoke in the release notes! Love it.
@ -0,0 +239,4 @@
- `builtins.fetchGit` is better behaved thanks to [ma27]: you can now pass tag names as `ref =` and it will work.
This restores compatibility with CppNix 2.3.
- `auto-optimise-store` no longer possibly causes store corruption on macOS, thanks to [lilyball].
nit: "no longer possibly causes" is weirdly worded. Maybe "stopped causing", "no longer causes", "can no longer cause", or "no longer causes possible store corruption"?
@ -0,0 +244,4 @@
- S3 binary cache stores now use the proxy environment variables thanks to the sleuthing of [jade].
- Flakes and restricted evaluation mode now correctly check whether paths are allowed thanks to [eldritch horrors].
Thanks to the reporter for telling us about this via the security report process.
nit: would be helpful to have the hyperlink to the info on security report process here!
@ -0,0 +246,4 @@
- Flakes and restricted evaluation mode now correctly check whether paths are allowed thanks to [eldritch horrors].
Thanks to the reporter for telling us about this via the security report process.
This was treated as a minor security bug, but it is not a violation of the security model as documented: Nix code being evaluated should be assumed, for security purposes, to be able to see whatever the user running the evaluator can see, since the Lix evaluator is not a security boundary.
This is a little too security-minded. Can you dumb it down? Something like "we treated it like a minor security bug; Lix evaluator isn't a security boundary and shouldn't be treated like such", maybe?
Also, would be very helpful to include the hyperlink to the "security model as documented" here!
@ -0,0 +299,4 @@
[beta-guide]: https://wiki.lix.systems/books/lix-contributors/page/lix-beta-guide
Onwards and upwards for the next release.
We look forward to continuing to work together with everyone to build a better foundation for the future evolution of Nix.
nit: doesn't "evolution" already imply "future" in this context?
(My browser crashed and doesn't show me the comments, lets hope they will show up if I send it)
@ -0,0 +35,4 @@
[KJ]: https://github.com/capnproto/capnproto
On the language side, Lix intends to first deprecate into an error (while still accepting such code with an optional setting) the most problematic unused features of the existing Nix language like the ones listed below.
I should have absolutely communicated better about this far earlier, but this is the one that's actually going to break some peoples' stuff who are not super pedantic about code quality, and probably should have been a warning :/
These do need to get out of the ecosystem though.
@ -0,0 +36,4 @@
[KJ]: https://github.com/capnproto/capnproto
On the language side, Lix intends to first deprecate into an error (while still accepting such code with an optional setting) the most problematic unused features of the existing Nix language like the ones listed below.
Then, we will implement a language versioning scheme so that the language can be evolved in a more robust way with auto-migration of the majority of code to new versions.
Please remove that line, I don't want to be too loud about this yet. Moreover, the deprecations are related but separate efforts to my Nix 2 experiments.
The section on language deprecations needs a bit of rework, rest looks good to me
@ -0,0 +66,4 @@
- The legacy `let` syntax of `let { a = 2; body = a; }`.
These features should not be used in new Nix code anyway, and are neither acceptable nor used in nixpkgs today.
Lix 2.92 implements the first part of our plan by turning these legacy language constructs into soft errors (big thanks to [piegames]!).
Actually most of them already are errors. Instead:
@ -0,0 +75,4 @@
### Potentially-breaking changes
- The above-listed legacy language constructs generate an error unless you enable the appropriate `deprecated-features` thanks to [piegames].
and [eldritch horrors] !
LGTM on my end.
4e1ab677ca
toeea889083e