github tweag/nickel 1.10.0

19 hours ago

Nickel 1.10 includes various bug fixes and quality of life improvements. Nickel now comes with more prebuilt binary packages (adding Windows and arm-based MacOS), is now built with LTO (Link-Time Optimization), and comes with official python bindings to be published on PyPI together with this release.

Under the hood, a lot of work has been devoted to internal refactorings in order to prepare the implementation of a bytecode compiler and virtual machine (RFC007). Those changes shouldn't have any noticeable effects currently for users.

Breaking changes

  • Record freezing (#2113, #2131). To fix an unsound and unexpected behavior appearing when first altering a record with dictionary operations (std.record.remove, std.record.insert or std.record.update - see #1877) and then overriding it, the aforementioned stdlib operations now freeze the returned record, which removes the possibility of performing further recursive overriding.

    Typically, the record returned by one of those operations is a static dictionary instead of a record with recursive dependencies. While you can still override specific fields through merging, the information about internal dependencies is lost and their reverse dependencies won't be updated automatically.

Documentation

Stdlib

  • Add the package std module by @jneem in #2104
  • Fix empty capture groups in regexes by @jneem in #2109
  • Add filter_map, dedup and some variants to the stdlib by @yannham in #2120

LSP

Tooling

New Contributors

Full Changelog: 1.9.1...1.10.0

Don't miss a new nickel release

NewReleases is sending notifications on new releases.