* [release.sh] update to 1.5.0
* Fix LSP not compiling when format feat is disabled
* Add 1.5 release notes
* Don't mention current release in the manual intro
We used to mention the current release version in the manual intro, but
this is tedious to keep in sync, and not very valuable - this
information is really easy to get by many other mean. The original
intent was to insist that Nickel was past 1.0, and thus was considered
relatively stable and usable in production. The text has been reworded
to say that instead.
* Only update relevant deps in Cargo.lock
The release script needs to update Cargo.lock after having updated
Cargo.toml with the new version of various Nickel crates.
Indeed, we are running some checks via Nix, and Nix builds are sandboxed
without network access. This requires the Nix build to use `cargo
--frozen --offline`, which in turns require the Cargo.lock file to be
up-to-date or it will fail.
The previous version of the release script would do a simple `cargo
update`, which has the default of updating all dependencies. This commit
changes that to only udpate dependencies which we might have bumped.
* Add pause to commit release notes in release script
* Fix release script for LSP
The release script was missing a part: the removal of `lsp-harness` (a
local, unpublished util crates) from the nickel-lang-lsp package priori
to publication to crates.io.
Passing by, other small improvements and fixes are included as well.
* [release.sh] update to 1.4.0
* Specify 'do not commit' when updating release notes
* release guide: add missing step for lsp-harness removal
* Fix order of arguments for curried dot operator
* Add std.record.get to stdlib
* Update release note with breaking changes for (.)
Co-authored-by: jneem <joeneeman@gmail.com>
* Remove snapshot test for std.record.get
Unfortunately, the output of the error message shows a closure address
(in practice, a memory address), which makes it non-determinstic and
thus unfit for a snpashot test.
Instead, it's been replaced with an integration test, which
Unfortunately won't allow to detect a deterioriation in error reporting,
but at least ensure that the contract of `std.record.get` works as
expected.
---------
Co-authored-by: jneem <joeneeman@gmail.com>
* Bump version numbers for 1.3 release
* Add release notes (part 1)
* Bump latest version mentioned in READMEs to 1.3
* Bump latest version mentioned in manual to 1.3
* Update RELEASING guide
* Version bump: 1.0.0 -> 1.1.0
* Add release notes for 1.1
* Bump version - part 2, reset to 0.1 for new crates
* Add missing README to nickel-lang-cli
* Update Cargo.lock, make nickel-wasm-repl's version consistent
* Update releasing instructions for new crate layout
* Fix typo in RELEASES.md
* Update Cargo.lock
Currently `import` is treated as a very special function that only
accepts literal string as its first argument. It has following
downsides:
* Special handling of `import` is hidden. User can assume that its
just a function while it's a special keyword. User might expect to
be able to pass variables to it while it is only handled before
typechecking and evaluation.
* We can't extend `import` functionality without introducing new
keywords which is not backward-compatible.
This change makes `import` into another statement like `let` or `fun`,
which means it cannot be confused with a function anymore. It also means
that expressions like `import "foo.ncl" bar` and
`import "foo.ncl" & {..}` are invalid, and `import` statement need to be
put in parethesis: `(import "foo.ncl") bar`.
For more context, see discussion in
https://github.com/tweag/nickel/issues/329#issuecomment-1531333491
* Change enum token start from backtick to single-quote
* Get tests to pass
* Fix printing in Term::shallow_repr
* Fix benchmark enum tag syntax
* Change enum tags in the documentation to the new syntax
* Introduce std namespace
This commits put the different modules of the stdlib, previously living
directly at the top-leve in the initial environment (`array`, `string`,
etc.) under the `std` top-level record. This makes the stdlib more
structured, give an unified entry point (including for completion and
querying) and avoid polluting the environment with name that could clash
with e.g. local function parameters.
This changes came with a number of trade-offs. The LSP isn't happy if
something like `std` isn't defined in one location, so we have to write
or at least generated actual code for `std` (instead of programmatically
building the record, for example).
We also want the users to be able to read this file, even if generated,
because otherwise diagnosing a contract error would be quite hard.
There were also other subtleties with respect to typechecking mutually
recursive modules. In the end, the stdlib is currently squashed into one
file (plus the module internals, but which is special) `std.ncl`, which
content is bound to `std` in the initial environment.
* Update the LSP to work with new std namespace
* Update examples to use the new std namespace
* Update benches to use std namespace
* Update integration tests for the new std namespace
* Update snapshot tests for new std namespace
* Last fixes for test after std namespace change
* Please the clippy God 🙏
* Update RELEASES.md - std namespace + RFC005
* Apply suggestions from code review
Co-authored-by: Viktor Kleen <viktor.kleen@tweag.io>
* Update stdlib/std.ncl
Co-authored-by: Viktor Kleen <viktor.kleen@tweag.io>
* Update stdlib/std.ncl
Co-authored-by: Viktor Kleen <viktor.kleen@tweag.io>
* Fix the LSP completion for `std`
* Please the Clippy overlord
---------
Co-authored-by: Viktor Kleen <viktor.kleen@tweag.io>