github tweag/nickel 0.1.0

latest releases: 1.8.1, 1.8.0, 1.7.0...
2 years ago

Version 0.1 (2022-03-10)

First release! The main focus has been the design of the Nickel language itself.

Language features

  • Gradual type system with row types, polymorphism and type inference
  • Contract system for data validation
  • Merge system for recursive records that supports one level of overriding
  • Metadata annotations (default values, documentation, etc.)
  • Unified syntax for terms, types and contracts (RFC002)
  • Record destructuring

Tooling

  • The main binary supports the following subcommands:

    • nickel query to show metadata and documentation of library functions,
      the field of a configuration, etc.
    • nickel export to serialize to JSON, YAML, or TOML
    • nickel repl to launch an REPL
    • nickel typecheck to do typechecking without evaluating
  • An LSP-server is included

Documentation

  • User manual sections on syntax, correctness (types and contracts), and
    merging
  • The standard library has been documented in-code (use
    nickel query/:query to retrieve it)

Known limitations

  • The roadmap for overriding and the merge system (RFC001) has not been
    implemented fully yet.

  • Performance has not been prioritized.

  • Due to the use of reference counting as a memory management strategy,
    mutually recursive record fields are currently leaking memory. This
    shouldn't be an issue in a standard workflow.

  • Standard library APIs and language features are subject to change. There
    is no backward compatibility guarantees for this version. In general, this
    release is meant for experimenting and getting user feedback, but isn't
    intended to be used in production.

Don't miss a new nickel release

NewReleases is sending notifications on new releases.