Skip to content

1.5.0

Compare
Choose a tag to compare
@yannham yannham released this 12 Mar 18:52
· 1 commit to 1.5.0-release since this release
13ffc85

Nickel 1.5 is a major release (albeit not literally), with new core language features and improved LSP. In particular, Nickel 1.5 introduces:

  • Full blown pattern matching. Patterns were previously restricted to destructuring let-bindings. They can now be used within match expressions as well (which only supported simple enum tags before).
  • Enum variants. Enum variants are a new language construct. Enum variants are enum tags with associated data (they are applied to an argument). They can be seen as form of algebraic data types (ADT). Patterns, enum types, typechecking and other parts of the language are extended accordingly to support them.
  • Background evaluation in the LSP. The LSP now performs evaluation of the current document in the background to report evaluation errors directly in your editor, and in particular contract errors.
  • A new section of the manual on writing modular configurations.

Please refer to the manual for more details on those new features.

Core language

Stdlib

  • Add array.zip_with and array.map_with_index to the standard library by @vkleen in #1797
  • fixed std.array.split_at behavior at right boundary. by @suimong in #1803
  • Update stdlib for ADTs by @yannham in #1822

Tooling

Documentation

  • Add patterns to the syntax section of the manual by @yannham in #1832
  • Improve the description of identifier syntax in the manual by @vkleen in #1839
  • Add subsection on enum types in the manual by @yannham in #1836
  • Fix old CLI syntax in documentation by @cydparser in #1844
  • Add manual section on modular configurations by @yannham in #1841
  • Update/refresh examples using latest Nickel idioms by @yannham in #1849

Fixes

New Contributors

Full Changelog: 1.4.1...1.5.0