mirror of
https://github.com/tweag/nickel.git
synced 2024-09-11 11:47:03 +03:00
Rename and move workspace crates (#1399)
* Rename and move workspace crates nickel-lang -> nickel-lang-cli in cli/ nickel-lang-lib -> nickel-lang-core in core/ nickel-lang-utilities -> nickel-lang-utils in utils/ nickel-repl -> nickel-repl in wasm-repl/ * Finish renaming in rust sources * Update RELEASING.md * Move to workspace dependencies * Rename nickel-repl -> nickel-wasm-repl * Update RELEASING.md Co-authored-by: Taeer Bar-Yam <Radvendii@users.noreply.github.com> * Address suggestions from code review * Update HACKING.md Co-authored-by: Yann Hamdaoui <yann.hamdaoui@tweag.io> * Elaborate on the versioning scheme in RELEASING.md --------- Co-authored-by: Taeer Bar-Yam <Radvendii@users.noreply.github.com> Co-authored-by: Yann Hamdaoui <yann.hamdaoui@tweag.io>
This commit is contained in:
parent
f895fb3c65
commit
78e7a8814b
131
Cargo.lock
generated
131
Cargo.lock
generated
@ -324,17 +324,6 @@ dependencies = [
|
|||||||
"half",
|
"half",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "clap"
|
|
||||||
version = "2.34.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c"
|
|
||||||
dependencies = [
|
|
||||||
"bitflags",
|
|
||||||
"textwrap 0.11.0",
|
|
||||||
"unicode-width",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "clap"
|
name = "clap"
|
||||||
version = "3.2.23"
|
version = "3.2.23"
|
||||||
@ -344,7 +333,7 @@ dependencies = [
|
|||||||
"bitflags",
|
"bitflags",
|
||||||
"clap_lex 0.2.4",
|
"clap_lex 0.2.4",
|
||||||
"indexmap",
|
"indexmap",
|
||||||
"textwrap 0.16.0",
|
"textwrap",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -519,32 +508,6 @@ dependencies = [
|
|||||||
"cfg-if",
|
"cfg-if",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "criterion"
|
|
||||||
version = "0.3.6"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "b01d6de93b2b6c65e17c634a26653a29d107b3c98c607c765bf38d041531cd8f"
|
|
||||||
dependencies = [
|
|
||||||
"atty",
|
|
||||||
"cast",
|
|
||||||
"clap 2.34.0",
|
|
||||||
"criterion-plot 0.4.5",
|
|
||||||
"csv",
|
|
||||||
"itertools 0.10.5",
|
|
||||||
"lazy_static",
|
|
||||||
"num-traits",
|
|
||||||
"oorandom",
|
|
||||||
"plotters",
|
|
||||||
"rayon",
|
|
||||||
"regex",
|
|
||||||
"serde",
|
|
||||||
"serde_cbor",
|
|
||||||
"serde_derive",
|
|
||||||
"serde_json",
|
|
||||||
"tinytemplate",
|
|
||||||
"walkdir",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "criterion"
|
name = "criterion"
|
||||||
version = "0.4.0"
|
version = "0.4.0"
|
||||||
@ -556,7 +519,7 @@ dependencies = [
|
|||||||
"cast",
|
"cast",
|
||||||
"ciborium",
|
"ciborium",
|
||||||
"clap 3.2.23",
|
"clap 3.2.23",
|
||||||
"criterion-plot 0.5.0",
|
"criterion-plot",
|
||||||
"itertools 0.10.5",
|
"itertools 0.10.5",
|
||||||
"lazy_static",
|
"lazy_static",
|
||||||
"num-traits",
|
"num-traits",
|
||||||
@ -571,16 +534,6 @@ dependencies = [
|
|||||||
"walkdir",
|
"walkdir",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "criterion-plot"
|
|
||||||
version = "0.4.5"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "2673cc8207403546f45f5fd319a974b1e6983ad1a3ee7e6041650013be041876"
|
|
||||||
dependencies = [
|
|
||||||
"cast",
|
|
||||||
"itertools 0.10.5",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "criterion-plot"
|
name = "criterion-plot"
|
||||||
version = "0.5.0"
|
version = "0.5.0"
|
||||||
@ -890,19 +843,6 @@ version = "1.0.1"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "b5320ae4c3782150d900b79807611a59a99fc9a1d61d686faafc24b93fc8d7ca"
|
checksum = "b5320ae4c3782150d900b79807611a59a99fc9a1d61d686faafc24b93fc8d7ca"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "env_logger"
|
|
||||||
version = "0.9.3"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7"
|
|
||||||
dependencies = [
|
|
||||||
"atty",
|
|
||||||
"humantime",
|
|
||||||
"log",
|
|
||||||
"regex",
|
|
||||||
"termcolor",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "env_logger"
|
name = "env_logger"
|
||||||
version = "0.10.0"
|
version = "0.10.0"
|
||||||
@ -1360,12 +1300,16 @@ name = "lsp-harness"
|
|||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"env_logger 0.10.0",
|
"assert_cmd",
|
||||||
|
"env_logger",
|
||||||
|
"insta",
|
||||||
"log",
|
"log",
|
||||||
"lsp-server",
|
"lsp-server",
|
||||||
"lsp-types",
|
"lsp-types",
|
||||||
|
"nickel-lang-utils",
|
||||||
"serde",
|
"serde",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
|
"test-generator",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -1529,21 +1473,21 @@ dependencies = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "nickel-lang"
|
name = "nickel-lang-cli"
|
||||||
version = "1.0.0"
|
version = "1.0.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"clap 4.3.0",
|
"clap 4.3.0",
|
||||||
"directories",
|
"directories",
|
||||||
"insta",
|
"insta",
|
||||||
"nickel-lang-lib",
|
"nickel-lang-core",
|
||||||
"nickel-lang-utilities",
|
"nickel-lang-utils",
|
||||||
"serde",
|
"serde",
|
||||||
"test-generator",
|
"test-generator",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "nickel-lang-lib"
|
name = "nickel-lang-core"
|
||||||
version = "1.0.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"ansi_term",
|
"ansi_term",
|
||||||
"assert_matches",
|
"assert_matches",
|
||||||
@ -1551,7 +1495,7 @@ dependencies = [
|
|||||||
"codespan",
|
"codespan",
|
||||||
"codespan-reporting",
|
"codespan-reporting",
|
||||||
"comrak",
|
"comrak",
|
||||||
"criterion 0.4.0",
|
"criterion",
|
||||||
"indexmap",
|
"indexmap",
|
||||||
"indoc 2.0.1",
|
"indoc 2.0.1",
|
||||||
"js-sys",
|
"js-sys",
|
||||||
@ -1561,7 +1505,7 @@ dependencies = [
|
|||||||
"malachite",
|
"malachite",
|
||||||
"malachite-q",
|
"malachite-q",
|
||||||
"md-5",
|
"md-5",
|
||||||
"nickel-lang-utilities",
|
"nickel-lang-utils",
|
||||||
"once_cell",
|
"once_cell",
|
||||||
"pprof",
|
"pprof",
|
||||||
"pretty",
|
"pretty",
|
||||||
@ -1601,7 +1545,7 @@ dependencies = [
|
|||||||
"codespan-reporting",
|
"codespan-reporting",
|
||||||
"csv",
|
"csv",
|
||||||
"derive_more",
|
"derive_more",
|
||||||
"env_logger 0.9.3",
|
"env_logger",
|
||||||
"insta",
|
"insta",
|
||||||
"lalrpop",
|
"lalrpop",
|
||||||
"lalrpop-util",
|
"lalrpop-util",
|
||||||
@ -1610,8 +1554,8 @@ dependencies = [
|
|||||||
"lsp-harness",
|
"lsp-harness",
|
||||||
"lsp-server",
|
"lsp-server",
|
||||||
"lsp-types",
|
"lsp-types",
|
||||||
"nickel-lang-lib",
|
"nickel-lang-core",
|
||||||
"nickel-lang-utilities",
|
"nickel-lang-utils",
|
||||||
"pretty_assertions",
|
"pretty_assertions",
|
||||||
"regex",
|
"regex",
|
||||||
"serde",
|
"serde",
|
||||||
@ -1620,21 +1564,21 @@ dependencies = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "nickel-lang-utilities"
|
name = "nickel-lang-utils"
|
||||||
version = "1.0.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"codespan",
|
"codespan",
|
||||||
"criterion 0.3.6",
|
"criterion",
|
||||||
"nickel-lang-lib",
|
"nickel-lang-core",
|
||||||
"serde",
|
"serde",
|
||||||
"toml",
|
"toml",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "nickel-repl"
|
name = "nickel-wasm-repl"
|
||||||
version = "1.0.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"nickel-lang-lib",
|
"nickel-lang-core",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -1852,7 +1796,7 @@ checksum = "196ded5d4be535690899a4631cc9f18cdc41b7ebf24a79400f46f48e49a11059"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"backtrace",
|
"backtrace",
|
||||||
"cfg-if",
|
"cfg-if",
|
||||||
"criterion 0.4.0",
|
"criterion",
|
||||||
"findshlibs",
|
"findshlibs",
|
||||||
"inferno",
|
"inferno",
|
||||||
"libc",
|
"libc",
|
||||||
@ -1953,7 +1897,7 @@ name = "pyckel"
|
|||||||
version = "1.0.0"
|
version = "1.0.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"codespan-reporting",
|
"codespan-reporting",
|
||||||
"nickel-lang-lib",
|
"nickel-lang-core",
|
||||||
"pyo3",
|
"pyo3",
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -2309,16 +2253,6 @@ dependencies = [
|
|||||||
"wasm-bindgen",
|
"wasm-bindgen",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "serde_cbor"
|
|
||||||
version = "0.11.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "2bef2ebfde456fb76bbcf9f59315333decc4fda0b2b44b420243c11e0f5ec1f5"
|
|
||||||
dependencies = [
|
|
||||||
"half",
|
|
||||||
"serde",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "serde_derive"
|
name = "serde_derive"
|
||||||
version = "1.0.164"
|
version = "1.0.164"
|
||||||
@ -2650,9 +2584,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "termimad"
|
name = "termimad"
|
||||||
version = "0.23.0"
|
version = "0.23.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "749b18b17745261a883ab334d931adffc8c5e07e71c73a861e77124557e7b41f"
|
checksum = "e7df2ed35b86d796df56633f1bb1f0c15816134e221822d65bbc64d5265ce8d4"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"coolor",
|
"coolor",
|
||||||
"crossbeam",
|
"crossbeam",
|
||||||
@ -2690,15 +2624,6 @@ dependencies = [
|
|||||||
"syn 0.15.44",
|
"syn 0.15.44",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "textwrap"
|
|
||||||
version = "0.11.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
|
|
||||||
dependencies = [
|
|
||||||
"unicode-width",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "textwrap"
|
name = "textwrap"
|
||||||
version = "0.16.0"
|
version = "0.16.0"
|
||||||
|
71
Cargo.toml
71
Cargo.toml
@ -1,11 +1,11 @@
|
|||||||
[workspace]
|
[workspace]
|
||||||
members = [
|
members = [
|
||||||
"nickel-lang-lib",
|
"core",
|
||||||
"nickel-lang-cli",
|
"cli",
|
||||||
"lsp/nls",
|
"lsp/nls",
|
||||||
"lsp/lsp-harness",
|
"lsp/lsp-harness",
|
||||||
"utilities",
|
"utils",
|
||||||
"nickel-wasm-repl",
|
"wasm-repl",
|
||||||
"pyckel",
|
"pyckel",
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -17,3 +17,66 @@ edition = "2021"
|
|||||||
keywords = ["configuration", "language", "nix", "nickel"]
|
keywords = ["configuration", "language", "nix", "nickel"]
|
||||||
repository = "https://github.com/tweag/nickel"
|
repository = "https://github.com/tweag/nickel"
|
||||||
homepage = "https://nickel-lang.org"
|
homepage = "https://nickel-lang.org"
|
||||||
|
readme = "README.md"
|
||||||
|
|
||||||
|
[workspace.dependencies]
|
||||||
|
nickel-lang-core = { version = "0.1", path = "./core", default-features = false }
|
||||||
|
nickel-lang-utils = { version = "0.1", path = "./utils" }
|
||||||
|
lsp-harness = { version = "0.1", path = "./lsp/lsp-harness" }
|
||||||
|
|
||||||
|
# The `wasm-bindgen` version is pinned (`=`) because it must be a version
|
||||||
|
# available in Nixpkgs.
|
||||||
|
wasm-bindgen = "=0.2.83"
|
||||||
|
|
||||||
|
ansi_term = "0.12"
|
||||||
|
anyhow = "1.0"
|
||||||
|
assert_cmd = "2.0.11"
|
||||||
|
assert_matches = "1.5.0"
|
||||||
|
clap = "4.3"
|
||||||
|
codespan = "0.11"
|
||||||
|
codespan-lsp = "0.11"
|
||||||
|
codespan-reporting = "0.11"
|
||||||
|
comrak = "0.17.0"
|
||||||
|
criterion = "0.4"
|
||||||
|
csv = "1"
|
||||||
|
derive_more = "0.99"
|
||||||
|
directories = "4.0.1"
|
||||||
|
env_logger = "0.10"
|
||||||
|
indexmap = "1.9.3"
|
||||||
|
indoc = "2"
|
||||||
|
insta = "1.29.0"
|
||||||
|
js-sys = "0.3"
|
||||||
|
lalrpop = "0.19.9"
|
||||||
|
lalrpop-util = "0.19.9"
|
||||||
|
lazy_static = "1"
|
||||||
|
log = "0.4"
|
||||||
|
logos = "0.12"
|
||||||
|
lsp-server = "0.6"
|
||||||
|
lsp-types = "0.88"
|
||||||
|
malachite = "0.3.2"
|
||||||
|
malachite-q = "0.3.2"
|
||||||
|
md-5 = "0.10.5"
|
||||||
|
once_cell = "1.17.1"
|
||||||
|
pprof = "0.11.1"
|
||||||
|
pretty = "0.11.3"
|
||||||
|
pretty_assertions = "1.3.0"
|
||||||
|
pyo3 = "0.17.3"
|
||||||
|
regex = "1"
|
||||||
|
rustyline = "11.0"
|
||||||
|
rustyline-derive = "0.8.0"
|
||||||
|
serde = "1.0.164"
|
||||||
|
serde_json = "1.0.96"
|
||||||
|
serde_repr = "0.1"
|
||||||
|
serde-wasm-bindgen = "0.5.0"
|
||||||
|
serde_yaml = "0.9.19"
|
||||||
|
sha-1 = "0.10.0"
|
||||||
|
sha2 = "0.10.6"
|
||||||
|
similar = "2.2.1"
|
||||||
|
simple-counter = "0.1.0"
|
||||||
|
strip-ansi-escapes = "0.1.1"
|
||||||
|
termimad = "0.23.1"
|
||||||
|
test-generator = "0.3.1"
|
||||||
|
toml = "0.7.2"
|
||||||
|
typed-arena = "2.0.2"
|
||||||
|
unicode-segmentation = "1.10.1"
|
||||||
|
void = "1"
|
||||||
|
40
HACKING.md
40
HACKING.md
@ -13,15 +13,21 @@ long.
|
|||||||
|
|
||||||
## Content
|
## Content
|
||||||
|
|
||||||
The Nickel repository consist of 4 crates:
|
The Nickel repository consist of various crates:
|
||||||
|
|
||||||
- `nickel-lang-lib` (path: `nickel-lang-lib`). The main crate containing the interpreter
|
- `nickel-lang-core` (path: `core`). The main crate containing the interpreter
|
||||||
as a library.
|
as a library.
|
||||||
- `nickel-lang` (path: `nickel-lang-cli`). The `nickel` binary.
|
- `nickel-lang-cli` (path: `cli`). The `nickel` binary.
|
||||||
- `nickel-lang-lsp` (path: `lsp/nls/`). The Nickel Language Server (NLS), an LSP
|
- `nickel-lang-lsp` (path: `lsp/nls/`). The Nickel Language Server (NLS), an LSP
|
||||||
server for Nickel.
|
server for Nickel.
|
||||||
- `nickel-lang-utilities`: (path: `utilities/`). An auxiliary crate regrouping
|
- `nickel-lang-utils`: (path: `utils/`). An auxiliary crate regrouping
|
||||||
helpers for tests and benchmarks. Not required to build `nickel` itself.
|
helpers for tests and benchmarks. Not required to build `nickel` itself.
|
||||||
|
- `pyckel` (path: `pyckel`). Python bindings to `nickel-lang-core`.
|
||||||
|
- `lsp-harness` (path: `lsp/lsp-harness`). A testing harness for the Nickel Language
|
||||||
|
Server.
|
||||||
|
- `nickel-repl` (path: `wasm-repl`). An auxiliary crate, re-exporting
|
||||||
|
`nickel-lang-core` with the right settings for building a WASM repl. Primarily
|
||||||
|
used on [nickel-lang.org].
|
||||||
|
|
||||||
Other noteworthy items:
|
Other noteworthy items:
|
||||||
|
|
||||||
@ -58,16 +64,16 @@ nickel-lang-lsp 0.1.0
|
|||||||
|
|
||||||
### Nickel
|
### Nickel
|
||||||
|
|
||||||
To only build the main crate `nickel-lang-lib`, run:
|
To only build the main crate `nickel-lang-core`, run:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
cargo build -p nickel-lang-lib
|
cargo build -p nickel-lang-core
|
||||||
```
|
```
|
||||||
|
|
||||||
To build the interpreter CLI, run:
|
To build the interpreter CLI, run:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
$ cargo build -p nickel-lang
|
$ cargo build -p nickel-lang-cli
|
||||||
$ ./target/debug/nickel --version
|
$ ./target/debug/nickel --version
|
||||||
nickel-lang 0.1.0
|
nickel-lang 0.1.0
|
||||||
```
|
```
|
||||||
@ -88,8 +94,8 @@ nickel-lang-lsp 0.1.0
|
|||||||
|
|
||||||
There is a WebAssembly (WASM) version of the REPL, which is used for the online
|
There is a WebAssembly (WASM) version of the REPL, which is used for the online
|
||||||
playground on [nickel-lang.org][nickel-lang.org]. To ease the build, we use the
|
playground on [nickel-lang.org][nickel-lang.org]. To ease the build, we use the
|
||||||
`nickel-repl` located in `nickel-wasm-repl`, which just wraps and re-export
|
`nickel-repl` located in `wasm-repl`, which just wraps and re-export
|
||||||
the `nickel-lang-lib` with the right settings for building to WebAssembly.
|
the `nickel-lang-core` crate with the right settings for building to WebAssembly.
|
||||||
|
|
||||||
The Nix flake has also an output to do the whole build, but incremental
|
The Nix flake has also an output to do the whole build, but incremental
|
||||||
compilation is not as good as with direct usage of `cargo`.
|
compilation is not as good as with direct usage of `cargo`.
|
||||||
@ -124,8 +130,8 @@ LICENSE package.json nickel_lang_bg.js nickel_lang_bg.wasm [..]
|
|||||||
Tests are run via `cargo test`. They are two types of tests:
|
Tests are run via `cargo test`. They are two types of tests:
|
||||||
|
|
||||||
- Unit tests, located directly in the corresponding module.
|
- Unit tests, located directly in the corresponding module.
|
||||||
- Integration tests, located in the dedicated crate `nickel-lang-lib/tests/integration`.
|
- Integration tests, located in the dedicated crate `core/tests/integration`.
|
||||||
- Snapshot tests, located in `nickel-lang-cli/tests/smapshot`.
|
- Snapshot tests, located in `cli/tests/smapshot`.
|
||||||
|
|
||||||
### Test annotations
|
### Test annotations
|
||||||
|
|
||||||
@ -136,27 +142,27 @@ to mark examples, in the top-level subdirectory `examples`, with an expected
|
|||||||
failure condition if necessary.
|
failure condition if necessary.
|
||||||
|
|
||||||
Tests for the happy path - i.e., valid Nickel programs which do not raise errors
|
Tests for the happy path - i.e., valid Nickel programs which do not raise errors
|
||||||
are generally written in standalone Nickel files in the `nickel-lang-lib/tests/integration/pass`
|
are generally written in standalone Nickel files in the `core/tests/integration/pass`
|
||||||
directory. All `.ncl` files in this directory are automatically converted into
|
directory. All `.ncl` files in this directory are automatically converted into
|
||||||
Rust integration tests, which run the file and assert that no errors were
|
Rust integration tests, which run the file and assert that no errors were
|
||||||
raised during evaluation.
|
raised during evaluation.
|
||||||
|
|
||||||
Each of these `.ncl` files is structured as an array of `Bool` expressions, which
|
Each of these `.ncl` files is structured as an array of `Bool` expressions, which
|
||||||
is ultimately passed to a `check` function defined in
|
is ultimately passed to a `check` function defined in
|
||||||
`nickel-lang-lib/tests/integration/pass/lib/assert.ncl`.
|
`core/tests/integration/pass/lib/assert.ncl`.
|
||||||
This function applies an `Assert` contract to each value in the array, which
|
This function applies an `Assert` contract to each value in the array, which
|
||||||
checks that the value it is applied to evaluates to `true`. The benefit of using
|
checks that the value it is applied to evaluates to `true`. The benefit of using
|
||||||
a contract for this is that if a test fails we can simply run the file directly
|
a contract for this is that if a test fails we can simply run the file directly
|
||||||
using Nickel, which gives better error messages than the ones we get by default
|
using Nickel, which gives better error messages than the ones we get by default
|
||||||
from `cargo test`.
|
from `cargo test`.
|
||||||
|
|
||||||
Tests which are expected to fail may be written in Rust in `nickel-lang-lib/tests/integration`.
|
Tests which are expected to fail may be written in Rust in `core/tests/integration`.
|
||||||
However, simple failure test cases can make use of the test annotation support
|
However, simple failure test cases can make use of the test annotation support
|
||||||
and are located in `nickel-lang-lib/tests/integration/fail`.
|
and are located in `core/tests/integration/fail`.
|
||||||
|
|
||||||
### Snapshot testing
|
### Snapshot testing
|
||||||
|
|
||||||
The project also contains a suite of snapshot tests in the `nickel-lang-cli/tests/snapshot`
|
The project also contains a suite of snapshot tests in the `cli/tests/snapshot`
|
||||||
directory. Here, `.ncl` files written in the subdirectories of the `input`
|
directory. Here, `.ncl` files written in the subdirectories of the `input`
|
||||||
directory are run against the last-built Nickel binary, and their output is
|
directory are run against the last-built Nickel binary, and their output is
|
||||||
compared to the last-known output.
|
compared to the last-known output.
|
||||||
|
@ -77,7 +77,7 @@ Please follow the getting started guide for Nickel users on the [nickel-lang
|
|||||||
website](https://nickel-lang.org/getting-started). The instructions below are
|
website](https://nickel-lang.org/getting-started). The instructions below are
|
||||||
either reproduced for this document to be self-contained or because
|
either reproduced for this document to be self-contained or because
|
||||||
they are aimed toward hacking on the Nickel interpreter itself (e.g. building
|
they are aimed toward hacking on the Nickel interpreter itself (e.g. building
|
||||||
the `nickel-lang-lib` crate documentation).
|
the `nickel-lang-core` crate documentation).
|
||||||
|
|
||||||
### Run
|
### Run
|
||||||
|
|
||||||
|
58
RELEASING.md
58
RELEASING.md
@ -7,35 +7,53 @@ crates and dependent repositories (such as the website) in a consistent state.
|
|||||||
|
|
||||||
## Steps to make a release
|
## Steps to make a release
|
||||||
|
|
||||||
|
### About the version numbers
|
||||||
|
|
||||||
|
Some of the crates in the Nickel workspace are libraries and not versioned
|
||||||
|
according to the version number of the language itself. These are
|
||||||
|
|
||||||
|
- `nickel-lang-core`
|
||||||
|
- `nickel-lang-utils`
|
||||||
|
- `lsp-harness`
|
||||||
|
- `nickel-wasm-repl`
|
||||||
|
|
||||||
|
Their version numbers take the form `0.W.U` and their public APIs are not
|
||||||
|
considered stable. Consequently we bump their versions to `0.(W+1).0` on every
|
||||||
|
release.
|
||||||
|
|
||||||
|
Other crates carry the version number of the Nickel language. These are
|
||||||
|
|
||||||
|
- `nickel-lang-cli`
|
||||||
|
- `nickel-lang-lsp`
|
||||||
|
- `pyckel`
|
||||||
|
|
||||||
### Prepare
|
### Prepare
|
||||||
|
|
||||||
1. Branch out from `master` to a dedicated branch `X.Y.Z-release`:
|
1. Branch out from `master` to a dedicated branch `X.Y.Z-release`:
|
||||||
`git checkout -b X.Y.Z-release`
|
`git checkout -b X.Y.Z-release`
|
||||||
2. Bump the version number of all the crates of the workspace to `X.Y.Z`:
|
2. Bump the overall version number in `Cargo.toml` to `X.Y.Z`. This will be
|
||||||
- Bump the `version` attribute to `X.Y.Z` in `./Cargo.toml`,
|
automatically propagated to the CLI, the Nickel language server and Pyckel.
|
||||||
`./utilities/Cargo.toml`, `lsp/nls/Cargo.toml` and
|
3. Bump the version number of the other crates in the workspace:
|
||||||
`./nickel-wasm-repl/Cargo.toml`.
|
- `core/Cargo.toml`
|
||||||
- Bump the version of the interdependencies of the crates in `nickel-lang-cli`,
|
- `lsp/lsp-harness/Cargo.toml`
|
||||||
`nickel-lang-lib`, `lsp/nls` and `nickel-wasm-repl`. For example, `nickel-lang-lib`
|
- `utils/Cargo.toml`
|
||||||
has the following line in `./nickel-lang-lib/Cargo.toml` under `[dev-dependencies]`:
|
- `wasm-repl/Cargo.toml`
|
||||||
|
Afterwards, also adjust the version numbers in `Cargo.toml`. For example, in
|
||||||
|
|
||||||
```toml
|
```toml
|
||||||
nickel-lang-utilities = {path = "../utilities", version = "0.3.0"}
|
nickel-lang-core = { version = "0.1", path = "./core", default-features = false }
|
||||||
```
|
```
|
||||||
|
|
||||||
You have to bump the `version` number to `X.Y.Z` of such dependencies on
|
adjust the version `0.1` to reflect the new version number.
|
||||||
`nickel-lang-lib`, `nickel-lang-utilities`, or any other crate of the
|
|
||||||
workspace as well.
|
|
||||||
|
|
||||||
Commit and push your changes.
|
4. Make sure that everything builds: run `nix flake check` at the root of the
|
||||||
3. Make sure that everything builds: run `nix flake check` at the root of the
|
|
||||||
repository.
|
repository.
|
||||||
4. Add the changelog since the last release in RELEASES.md. GitHub is able to
|
5. Add the changelog since the last release in RELEASES.md. GitHub is able to
|
||||||
automatically generate release notes: refer to [this
|
automatically generate release notes: refer to [this
|
||||||
guide](https://docs.github.com/en/repositories/releasing-projects-on-github/automatically-generated-release-notes).
|
guide](https://docs.github.com/en/repositories/releasing-projects-on-github/automatically-generated-release-notes).
|
||||||
While the output needs to be reworked, it's a useful starting point. Commit
|
While the output needs to be reworked, it's a useful starting point. Commit
|
||||||
and push your changes.
|
and push your changes.
|
||||||
5. Set the `stable` branch to point to your new `X.Y.Z-release`. Because the
|
6. Set the `stable` branch to point to your new `X.Y.Z-release`. Because the
|
||||||
`stable` branch usually contains specific fixes, or cherry-picked commits,
|
`stable` branch usually contains specific fixes, or cherry-picked commits,
|
||||||
we'll have to force push. We advise to first save the previous state in a
|
we'll have to force push. We advise to first save the previous state in a
|
||||||
local branch:
|
local branch:
|
||||||
@ -63,9 +81,9 @@ crates and dependent repositories (such as the website) in a consistent state.
|
|||||||
|
|
||||||
### Release on crates.io
|
### Release on crates.io
|
||||||
|
|
||||||
1. Remove references to `nickel-lang-utilities` from the `[dev-dependencies]`
|
1. Remove references to `nickel-lang-utils` from the `[dev-dependencies]`
|
||||||
sections of the crates to be published: `./nickel-lang-lib/Cargo.toml` for
|
sections of the crates to be published: `./core/Cargo.toml` for
|
||||||
`nickel-lang-lib`, `./nickel-lang-cli/Cargo.toml` for `nickel-lang-cli` and
|
`nickel-lang-core`, `./cli/Cargo.toml` for `nickel-lang-cli` and
|
||||||
`./lsp/nls/Cargo.toml` for `nickel-lang-lsp` (work-around for
|
`./lsp/nls/Cargo.toml` for `nickel-lang-lsp` (work-around for
|
||||||
[cargo:#4242](https://github.com/rust-lang/cargo/issues/4242).
|
[cargo:#4242](https://github.com/rust-lang/cargo/issues/4242).
|
||||||
|
|
||||||
|
32
cli/Cargo.toml
Normal file
32
cli/Cargo.toml
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
[package]
|
||||||
|
name = "nickel-lang-cli"
|
||||||
|
description = "The Nickel interpreter CLI"
|
||||||
|
authors.workspace = true
|
||||||
|
edition.workspace = true
|
||||||
|
homepage.workspace = true
|
||||||
|
keywords.workspace = true
|
||||||
|
license.workspace = true
|
||||||
|
repository.workspace = true
|
||||||
|
version.workspace = true
|
||||||
|
|
||||||
|
[[bin]]
|
||||||
|
name = "nickel"
|
||||||
|
path = "bin/nickel.rs"
|
||||||
|
bench = false
|
||||||
|
|
||||||
|
[features]
|
||||||
|
default = ["repl", "doc"]
|
||||||
|
repl = ["nickel-lang-core/repl"]
|
||||||
|
doc = ["nickel-lang-core/doc"]
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
nickel-lang-core = { workspace = true, features = [ "markdown" ], default-features = false }
|
||||||
|
|
||||||
|
clap = { workspace = true, features = ["derive"] }
|
||||||
|
serde = { workspace = true, features = ["derive"] }
|
||||||
|
directories.workspace = true
|
||||||
|
|
||||||
|
[dev-dependencies]
|
||||||
|
nickel-lang-utils.workspace = true
|
||||||
|
test-generator.workspace = true
|
||||||
|
insta = { workspace = true, features = ["filters"] }
|
@ -1,13 +1,13 @@
|
|||||||
//! Entry point of the program.
|
//! Entry point of the program.
|
||||||
use core::fmt;
|
use core::fmt;
|
||||||
use nickel_lang_lib::error::{Error, IOError};
|
use nickel_lang_core::error::{Error, IOError};
|
||||||
use nickel_lang_lib::eval::cache::CacheImpl;
|
use nickel_lang_core::eval::cache::CacheImpl;
|
||||||
use nickel_lang_lib::program::Program;
|
use nickel_lang_core::program::Program;
|
||||||
use nickel_lang_lib::repl::query_print;
|
use nickel_lang_core::repl::query_print;
|
||||||
#[cfg(feature = "repl")]
|
#[cfg(feature = "repl")]
|
||||||
use nickel_lang_lib::repl::rustyline_frontend;
|
use nickel_lang_core::repl::rustyline_frontend;
|
||||||
use nickel_lang_lib::term::RichTerm;
|
use nickel_lang_core::term::RichTerm;
|
||||||
use nickel_lang_lib::{serialize, serialize::ExportFormat};
|
use nickel_lang_core::{serialize, serialize::ExportFormat};
|
||||||
use std::path::{Path, PathBuf};
|
use std::path::{Path, PathBuf};
|
||||||
use std::{
|
use std::{
|
||||||
fs::{self, File},
|
fs::{self, File},
|
@ -1,4 +1,4 @@
|
|||||||
use nickel_lang_utilities::{
|
use nickel_lang_utils::{
|
||||||
annotated_test::{read_annotated_test_case, TestCase},
|
annotated_test::{read_annotated_test_case, TestCase},
|
||||||
project_root::project_root,
|
project_root::project_root,
|
||||||
};
|
};
|
||||||
@ -24,7 +24,7 @@ macro_rules! assert_snapshot_filtered {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test_resources("nickel-lang-cli/tests/snapshot/inputs/*/*.ncl")]
|
#[test_resources("cli/tests/snapshot/inputs/*/*.ncl")]
|
||||||
fn check_snapshots(path: &str) {
|
fn check_snapshots(path: &str) {
|
||||||
let file = TestFile::from_project_path(path);
|
let file = TestFile::from_project_path(path);
|
||||||
|
|
108
core/Cargo.toml
Normal file
108
core/Cargo.toml
Normal file
@ -0,0 +1,108 @@
|
|||||||
|
[package]
|
||||||
|
name = "nickel-lang-core"
|
||||||
|
version = "0.1.0"
|
||||||
|
description = "Programmable configuration files."
|
||||||
|
authors.workspace = true
|
||||||
|
edition.workspace = true
|
||||||
|
homepage.workspace = true
|
||||||
|
keywords.workspace = true
|
||||||
|
license.workspace = true
|
||||||
|
repository.workspace = true
|
||||||
|
readme.workspace = true
|
||||||
|
|
||||||
|
[lib]
|
||||||
|
bench = false
|
||||||
|
|
||||||
|
[features]
|
||||||
|
default = ["markdown", "repl", "doc"]
|
||||||
|
markdown = ["termimad"]
|
||||||
|
repl = ["rustyline", "rustyline-derive", "ansi_term"]
|
||||||
|
repl-wasm = ["wasm-bindgen", "js-sys", "serde_repr"]
|
||||||
|
doc = ["comrak"]
|
||||||
|
|
||||||
|
[build-dependencies]
|
||||||
|
lalrpop.workspace = true
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
lalrpop-util.workspace = true
|
||||||
|
regex.workspace = true
|
||||||
|
simple-counter.workspace = true
|
||||||
|
clap = { workspace = true, features = ["derive"] }
|
||||||
|
codespan.workspace = true
|
||||||
|
codespan-reporting.workspace = true
|
||||||
|
logos.workspace = true
|
||||||
|
serde = { workspace = true, features = ["derive"] }
|
||||||
|
serde_json.workspace = true
|
||||||
|
serde_yaml.workspace = true
|
||||||
|
toml = { workspace = true, features = ["parse"] }
|
||||||
|
void.workspace = true
|
||||||
|
sha-1.workspace = true
|
||||||
|
sha2.workspace = true
|
||||||
|
md-5.workspace = true
|
||||||
|
unicode-segmentation.workspace = true
|
||||||
|
indoc.workspace = true
|
||||||
|
|
||||||
|
termimad = { workspace = true, optional = true }
|
||||||
|
ansi_term = { workspace = true, optional = true }
|
||||||
|
|
||||||
|
rustyline = { workspace = true, optional = true}
|
||||||
|
rustyline-derive = { workspace = true, optional = true }
|
||||||
|
|
||||||
|
wasm-bindgen = { workspace = true, optional = true, features = ["serde-serialize"] }
|
||||||
|
serde-wasm-bindgen.workspace = true
|
||||||
|
js-sys = { workspace = true, optional = true }
|
||||||
|
serde_repr = { workspace = true, optional = true }
|
||||||
|
pretty.workspace = true
|
||||||
|
|
||||||
|
comrak = { workspace = true, optional = true, features = [] }
|
||||||
|
once_cell.workspace = true
|
||||||
|
typed-arena.workspace = true
|
||||||
|
malachite = { workspace = true, features = ["enable_serde"] }
|
||||||
|
malachite-q.workspace = true
|
||||||
|
indexmap = { workspace = true, features = ["serde"] }
|
||||||
|
strip-ansi-escapes.workspace = true
|
||||||
|
|
||||||
|
[dev-dependencies]
|
||||||
|
pretty_assertions.workspace = true
|
||||||
|
assert_matches.workspace = true
|
||||||
|
criterion.workspace = true
|
||||||
|
pprof = { workspace = true, features = ["criterion", "flamegraph"] }
|
||||||
|
nickel-lang-utils.workspace = true
|
||||||
|
similar.workspace = true
|
||||||
|
test-generator.workspace = true
|
||||||
|
|
||||||
|
# Enable this to use flamegraphs
|
||||||
|
# [profile.release]
|
||||||
|
# debug = true
|
||||||
|
|
||||||
|
[[bench]]
|
||||||
|
name = "numeric"
|
||||||
|
harness = false
|
||||||
|
|
||||||
|
[[bench]]
|
||||||
|
name = "functions"
|
||||||
|
harness = false
|
||||||
|
|
||||||
|
[[bench]]
|
||||||
|
name = "arrays"
|
||||||
|
harness = false
|
||||||
|
|
||||||
|
# [[bench]]
|
||||||
|
# name = "records"
|
||||||
|
# harness = false
|
||||||
|
|
||||||
|
[[bench]]
|
||||||
|
name = "serialization"
|
||||||
|
harness = false
|
||||||
|
|
||||||
|
[[bench]]
|
||||||
|
name = "mantis"
|
||||||
|
harness = false
|
||||||
|
|
||||||
|
[[bench]]
|
||||||
|
name = "stdlib"
|
||||||
|
harness = false
|
||||||
|
|
||||||
|
[[bench]]
|
||||||
|
name = "typecheck-nixpkgs-lib"
|
||||||
|
harness = false
|
@ -1,11 +1,11 @@
|
|||||||
use std::rc::Rc;
|
use std::rc::Rc;
|
||||||
|
|
||||||
use criterion::{criterion_main, Criterion};
|
use criterion::{criterion_main, Criterion};
|
||||||
use nickel_lang_lib::term::{
|
use nickel_lang_core::term::{
|
||||||
array::{Array, ArrayAttrs},
|
array::{Array, ArrayAttrs},
|
||||||
Number, RichTerm, Term,
|
Number, RichTerm, Term,
|
||||||
};
|
};
|
||||||
use nickel_lang_utilities::{bench::EvalMode, ncl_bench_group};
|
use nickel_lang_utils::{bench::EvalMode, ncl_bench_group};
|
||||||
use pprof::criterion::{Output, PProfProfiler};
|
use pprof::criterion::{Output, PProfProfiler};
|
||||||
use pretty::{BoxAllocator, DocBuilder, Pretty};
|
use pretty::{BoxAllocator, DocBuilder, Pretty};
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user