Skip to content

1.4.0

Compare
Choose a tag to compare
@yannham yannham released this 10 Jan 17:57
1fa5a79

Version 1.4

Nickel 1.4 is a maintenance release, at the exception of a breaking change (see below).

Breaking changes

  • The curried dot operator added in Nickel 1.3 was implemented the wrong way: the arguments were flipped, meaning that (.) foo bar was bar."%{foo}" instead of the expected foo."%{bar}". While the initial flipped implementation seems more useful for piping operations using the reverse application operator |>, it's inconsistent with all other curried operators, where (<operator>) is always defined as fun x y => x <operator> y. To ensure consistency, and because the initial behavior was an oversight and not a conscious design decision, we decided to change the definition of (.) to match the other curried operator by flipping its arguments.

    To fill the gap, Nickel 1.4 introduces std.record.get with the same definition as the (.) introduced in Nickel 1.3. To migrate from 1.3 to 1.4, you can either flip the arguments of the curried dot as a function (.) whenever possible, or you can just replace it with the new std.record.get.

    (implemented by @yannham in #1752)

Tooling

  • Search for imports in NICKEL_IMPORT_PATH by @jneem in #1716
  • Add a cli param --import-path to specify the search path by @jneem in #1721
  • LSP: Fix hover on assignments to subrecords by @jneem in #1725
  • Print something when nickel doc succeeds by @yannham in #1729
  • Add --error-format flag to serialize err diagnostics by @yannham in #1740

Core language

Fixes

  • format: don't fail silently on invalid input anymore by @yannham in #1749
  • LSP: get record completion in arrays by @jneem in #1746
  • Update Topiary dependencies to handle (.) in nickel format by @yannham in #1753

New Contributors

Full Changelog: 1.3.0...1.4.0