mirror of
https://github.com/tweag/nickel.git
synced 2024-10-04 23:27:15 +03:00
52 lines
1.8 KiB
Markdown
52 lines
1.8 KiB
Markdown
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.
|