Repository: tweag/nickel
Pull request #636 (2022-03-04 15:48:58)

Rename crates nickel* to nickel-lang* for publication
The name `nickel` is already taken on crates.io by some web framework. This renames the crates of this repo to `nickel-lang*`, and add misc missing metadata to prepare their publication on crates.io.


Patch:
diff --git a/Cargo.lock b/Cargo.lock
index 0b81a994..5bb2a0b7 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -925,7 +925,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54"
 
 [[package]]
-name = "nickel"
+name = "nickel-lang"
 version = "0.1.0"
 dependencies = [
  "ansi_term 0.12.1",
@@ -939,6 +939,7 @@ dependencies = [
  "lalrpop-util",
  "logos",
  "md-5",
+ "nickel-lang-utilities",
  "pprof",
  "pretty_assertions",
  "regex 0.2.11",
@@ -954,11 +955,44 @@ dependencies = [
  "structopt",
  "termimad",
  "toml",
- "utilities",
  "void",
  "wasm-bindgen",
 ]
 
+[[package]]
+name = "nickel-lang-nls"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "assert_matches",
+ "codespan",
+ "codespan-lsp",
+ "codespan-reporting",
+ "csv",
+ "derive_more",
+ "env_logger",
+ "lalrpop",
+ "lalrpop-util",
+ "lazy_static",
+ "log",
+ "lsp-server",
+ "lsp-types",
+ "nickel-lang",
+ "pretty_assertions",
+ "serde",
+ "serde_json",
+ "structopt",
+]
+
+[[package]]
+name = "nickel-lang-utilities"
+version = "0.1.0"
+dependencies = [
+ "codespan",
+ "criterion",
+ "nickel-lang",
+]
+
 [[package]]
 name = "nix"
 version = "0.19.1"
@@ -984,31 +1018,6 @@ dependencies = [
  "memoffset",
 ]
 
-[[package]]
-name = "nls"
-version = "0.1.0"
-dependencies = [
- "anyhow",
- "assert_matches",
- "codespan",
- "codespan-lsp",
- "codespan-reporting",
- "csv",
- "derive_more",
- "env_logger",
- "lalrpop",
- "lalrpop-util",
- "lazy_static",
- "log",
- "lsp-server",
- "lsp-types",
- "nickel",
- "pretty_assertions",
- "serde",
- "serde_json",
- "structopt",
-]
-
 [[package]]
 name = "nodrop"
 version = "0.1.14"
@@ -1906,15 +1915,6 @@ version = "0.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "936e4b492acfd135421d8dca4b1aa80a7bfc26e702ef3af710e0752684df5372"
 
-[[package]]
-name = "utilities"
-version = "0.1.0"
-dependencies = [
- "codespan",
- "criterion",
- "nickel",
-]
-
 [[package]]
 name = "uuid"
 version = "0.8.2"
diff --git a/Cargo.toml b/Cargo.toml
index 30cbb067..130e0841 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,10 +1,13 @@
 [package]
-name = "nickel"
+name = "nickel-lang"
 version = "0.1.0"
-authors = ["Nicl team"]
-license = "MIT OR Apache-2.0"
+authors = ["Nickel team"]
+license = "MIT"
 readme = "README.md"
 description = "Programmable configuration files."
+homepage = "https://nickel-lang.org"
+repository = "https://github.com/tweag/nickel"
+keywords = ["configuration", "language", "nix"]
 edition = "2018"
 
 [[bin]]
@@ -57,7 +60,7 @@ pretty_assertions = "0.5.1"
 assert_matches = "1.4.0"
 criterion = "0.3"
 pprof = { version = "0.4.4", features = ["criterion", "flamegraph"] }
-utilities = {path = "utilities"}
+nickel-lang-utilities = {path = "utilities", version = "0.1.0"}
 
 [workspace]
 members = [
diff --git a/benches/arrays.rs b/benches/arrays.rs
index ca68e2d6..ec1dcaee 100644
--- a/benches/arrays.rs
+++ b/benches/arrays.rs
@@ -1,6 +1,6 @@
 use criterion::{criterion_group, criterion_main, Criterion};
+use nickel_lang_utilities::{bench, EvalMode};
 use pprof::criterion::{Output, PProfProfiler};
-use utilities::{bench, EvalMode};
 
 fn fold_strings(c: &mut Criterion) {
     bench(
diff --git a/benches/functions.rs b/benches/functions.rs
index 8cbb2330..00cd5077 100644
--- a/benches/functions.rs
+++ b/benches/functions.rs
@@ -1,7 +1,7 @@
 use criterion::{criterion_group, criterion_main, Criterion};
-use nickel::term::Term;
+use nickel_lang::term::Term;
+use nickel_lang_utilities::{bench_expect, EvalMode};
 use pprof::criterion::{Output, PProfProfiler};
-use utilities::{bench_expect, EvalMode};
 
 fn church(c: &mut Criterion) {
     let expect = |term| matches!(term, Term::Bool(true));
diff --git a/benches/numeric.rs b/benches/numeric.rs
index fe4572a1..5e7bc31f 100644
--- a/benches/numeric.rs
+++ b/benches/numeric.rs
@@ -1,6 +1,6 @@
 use criterion::{criterion_group, criterion_main, Criterion};
+use nickel_lang_utilities::{bench, EvalMode};
 use pprof::criterion::{Output, PProfProfiler};
-use utilities::{bench, EvalMode};
 
 fn fibonacci(c: &mut Criterion) {
     bench(
diff --git a/benches/records.rs b/benches/records.rs
index 7589f648..f5c9da3b 100644
--- a/benches/records.rs
+++ b/benches/records.rs
@@ -1,6 +1,6 @@
 use criterion::{criterion_group, criterion_main, Criterion};
+use nickel_lang_utilities::{bench_args, EvalMode};
 use pprof::criterion::{Output, PProfProfiler};
-use utilities::{bench_args, EvalMode};
 
 fn count_letters(c: &mut Criterion) {
     bench_args(
diff --git a/benches/serialization.rs b/benches/serialization.rs
index e8ffda8d..d25cd43b 100644
--- a/benches/serialization.rs
+++ b/benches/serialization.rs
@@ -1,5 +1,5 @@
 use criterion::{criterion_group, criterion_main, Criterion};
-use nickel::program::Program;
+use nickel_lang::program::Program;
 use pprof::criterion::{Output, PProfProfiler};
 use std::io::Cursor;
 use std::path::PathBuf;
diff --git a/doc/manual/introduction.md b/doc/manual/introduction.md
deleted file mode 100644
index 5f100933..00000000
--- a/doc/manual/introduction.md
+++ /dev/null
@@ -1,85 +0,0 @@
----
-slug: introduction
----
-
-# The Nickel User Manual
-
-Nickel is a generic configuration language.
-
-Its purpose is to automate the generation of static configuration files - think
-JSON, YAML, XML, or your favorite data representation language - that are then
-fed to another system. It is designed to have a simple, well-understood core: it
-is in essence JSON with functions.
-
-Nickel's salient traits are:
-
-- **Lightweight**: Nickel is easy to embed. An interpreter should be simple to
-    implement. The reference interpreter can be called from many programming
-    languages.
-- **Composable code**: the basic building blocks for computing are functions.
-    They are first-class citizens, which can be passed around, called and
-    composed.
-- **Composable data**: the basic building blocks for data are records
-    (called *objects* in JSON). In Nickel, records can be merged at will,
-    including associated metadata (documentation, default values, type
-    contracts, etc).
-- **Typed, but only when it helps**: static types improve code quality, serve as
-    documentation and eliminate bugs early. But application-specific
-    self-contained code will always evaluate to the same value, so type errors
-    will show up at runtime anyway. Some JSON is hard to type. There, types are
-    only a burden. Whereas reusable code - that is, *functions* - is evaluated
-    on potentially infinitely many different inputs, and is impossible to test
-    exhaustively. There, types are precious. Nickel has types, but you get to
-    choose when you want it or not, and it handles safely the interaction between
-    the typed and the untyped world.
-- **Design by contract**: complementary to the type system, contracts are
-    a principled approach to checking assertions. The interpreter automatically
-    inserts assertions at the boundary between typed and untyped code. Nickel
-    lets users add arbitrary assertions of their own and easily understand why
-    when assertions fail.
-
-The motto guiding Nickel's design is:
-> Great defaults, design for extensibility
-
-There should be a standard, clear path for common things. There should be no
-arbitrary restrictions that limit what you can do you the one day you need to go
-beyond.
-
-## Use cases
-
-Nickel is a good fit in any situation where you need to generate a complex
-configuration, be it for a single app, a machine, whole infrastructure, or a
-build system.
-
-The motivating use cases are in particular:
-- The [Nix package manager](https://nixos.org/): Nix is a declarative package
-    manager using its own language for specifying packages. Nickel is an
-    evolution of the Nix language, while trying to overcome some of its
-    limitations.
-- Infrastructure as code: infrastructure is becoming increasingly complex,
-    requiring a rigorous approach to deployment, modification and configuration.
-    This is where a declarative approach also shines, as adopted by
-    [Terraform](https://www.terraform.io/),
-    [NixOps](https://github.com/NixOS/nixops) or
-    [Kubernetes](https://kubernetes.io/), all requiring potentially complex
-    generation of configuration.
-- Build systems: build systems (like [Bazel](https://bazel.build/)) need
-    a specification of the dependency graph.
-
-
-## Getting started
-
-To get a Nickel binary working and run you first program, please follow the
-[Getting Started](https://nickel-lang.org/getting-started) section of the
-website.
-
-## Content
-
-This document is a detailed documentation on the main aspects of the language.
-It is composed of the following sections:
-
-1. [Syntax](./syntax.md)
-1. [Merging](./merging.md)
-1. [Correctness](./correctness.md)
-1. [Contracts](./contracts.md)
-1. [Typing](./typing.md)
diff --git a/flake.nix b/flake.nix
index b6b92f60..33bbb2ba 100644
--- a/flake.nix
+++ b/flake.nix
@@ -250,7 +250,7 @@
             # https://github.com/rust-lang/cargo/issues/1596
             # https://github.com/rust-lang/cargo/issues/1197
             # https://github.com/rust-lang/cargo/issues/5777
-            sed -i '/utilities/d' Cargo.toml
+            sed -i '/nickel-lang-utilities/d' Cargo.toml
           '';
 
           buildPhase = ''
@@ -261,7 +261,7 @@
             # (https://github.com/rustwasm/wasm-pack/issues/869), we have to
             # run wasm-opt manually
             echo "[Nix build script]Manually running wasm-opt..."
-            wasm-opt ${if optimize then "-O4 " else "-O0"} pkg/nickel_bg.wasm -o pkg/nickel_bg.wasm
+            wasm-opt ${if optimize then "-O4 " else "-O0"} pkg/nickel_lang_bg.wasm -o pkg/nickel_lang_bg.wasm
 
             runHook postBuild
           '';
diff --git a/lsp/nls/Cargo.toml b/lsp/nls/Cargo.toml
index 286cfc29..0def0403 100644
--- a/lsp/nls/Cargo.toml
+++ b/lsp/nls/Cargo.toml
@@ -1,5 +1,5 @@
 [package]
-name = "nls"
+name = "nickel-lang-nls"
 version = "0.1.0"
 authors = ["Nicl team"]
 license = "MIT OR Apache-2.0"
@@ -25,7 +25,7 @@ lsp-types = "0.88"
 log = "0.4"
 env_logger = "0.9"
 anyhow = "1.0"
-nickel = {path = "../../"}
+nickel-lang = {path = "../../", version = "0.1.0"}
 derive_more = "0.99"
 lazy_static = "1"
 csv = "1"
diff --git a/lsp/nls/src/cache.rs b/lsp/nls/src/cache.rs
index 6b1362f2..93f8887c 100644
--- a/lsp/nls/src/cache.rs
+++ b/lsp/nls/src/cache.rs
@@ -1,7 +1,7 @@
 use std::{collections::HashMap, ffi::OsString, io};
 
 use codespan::FileId;
-use nickel::{
+use nickel_lang::{
     cache::{Cache, CacheError, CacheOp, CachedTerm, EntryState},
     error::TypecheckError,
     typecheck,
diff --git a/lsp/nls/src/files.rs b/lsp/nls/src/files.rs
index d8329e3b..db295d1e 100644
--- a/lsp/nls/src/files.rs
+++ b/lsp/nls/src/files.rs
@@ -7,7 +7,7 @@ use lsp_types::{
     notification::{DidOpenTextDocument, Notification},
     DidChangeTextDocumentParams, DidOpenTextDocumentParams, PublishDiagnosticsParams, Url,
 };
-use nickel::{
+use nickel_lang::{
     cache::{CacheError, CacheOp},
     error::ToDiagnostic,
 };
diff --git a/lsp/nls/src/linearization/building.rs b/lsp/nls/src/linearization/building.rs
index 48e06f81..ef65f187 100644
--- a/lsp/nls/src/linearization/building.rs
+++ b/lsp/nls/src/linearization/building.rs
@@ -1,7 +1,7 @@
 use std::{collections::HashMap, mem};
 
 use log::debug;
-use nickel::{
+use nickel_lang::{
     identifier::Ident,
     term::{MetaValue, RichTerm, Term},
     typecheck::{
diff --git a/lsp/nls/src/linearization/completed.rs b/lsp/nls/src/linearization/completed.rs
index f7095e7f..21cd5d04 100644
--- a/lsp/nls/src/linearization/completed.rs
+++ b/lsp/nls/src/linearization/completed.rs
@@ -1,7 +1,7 @@
 use std::collections::HashMap;
 
 use codespan::ByteIndex;
-use nickel::{
+use nickel_lang::{
     term::MetaValue,
     typecheck::linearization::{LinearizationState, Scope, ScopeId},
 };
diff --git a/lsp/nls/src/linearization/interface.rs b/lsp/nls/src/linearization/interface.rs
index 89d9b2f9..80a0c797 100644
--- a/lsp/nls/src/linearization/interface.rs
+++ b/lsp/nls/src/linearization/interface.rs
@@ -1,6 +1,6 @@
 use std::collections::HashMap;
 
-use nickel::{identifier::Ident, typecheck::TypeWrapper, types::Types};
+use nickel_lang::{identifier::Ident, typecheck::TypeWrapper, types::Types};
 
 use super::building::ID;
 
diff --git a/lsp/nls/src/linearization/mod.rs b/lsp/nls/src/linearization/mod.rs
index 812123f2..8a59c57c 100644
--- a/lsp/nls/src/linearization/mod.rs
+++ b/lsp/nls/src/linearization/mod.rs
@@ -2,7 +2,7 @@ use std::collections::HashMap;
 
 use codespan::ByteIndex;
 use log::debug;
-use nickel::{
+use nickel_lang::{
     identifier::Ident,
     position::{RawSpan, TermPos},
     term::{MetaValue, RichTerm, Term, UnaryOp},
@@ -26,7 +26,7 @@ pub mod building;
 pub mod completed;
 pub mod interface;
 
-pub type Environment = nickel::environment::Environment<Ident, usize>;
+pub type Environment = nickel_lang::environment::Environment<Ident, usize>;
 
 /// A recorded item of a given state of resolution state
 /// Tracks a unique id used to build a reference table after finalizing
@@ -332,8 +332,8 @@ impl Linearizer for AnalysisHost {
                         Term::StrChunks(chunks) => chunks
                             .iter()
                             .filter_map(|chunk| match chunk {
-                                nickel::term::StrChunk::Literal(_) => None,
-                                nickel::term::StrChunk::Expr(rt, _) => Some(rt),
+                                nickel_lang::term::StrChunk::Literal(_) => None,
+                                nickel_lang::term::StrChunk::Expr(rt, _) => Some(rt),
                             })
                             .for_each(|rt| walk_terms(lin, host.scope(), rt)),
                         Term::App(rt1, rt2) => {
@@ -351,7 +351,7 @@ impl Linearizer for AnalysisHost {
                 fn walk_types(
                     lin: &mut Linearization<Building>,
                     outer_host: &mut AnalysisHost,
-                    t: &nickel::types::Types,
+                    t: &nickel_lang::types::Types,
                 ) {
                     let mut scope = outer_host.scope.clone();
                     let (scope_id, next_scope_id) = outer_host.next_scope_id.next();
diff --git a/lsp/nls/src/requests/goto.rs b/lsp/nls/src/requests/goto.rs
index 8a6ad5bd..aa874574 100644
--- a/lsp/nls/src/requests/goto.rs
+++ b/lsp/nls/src/requests/goto.rs
@@ -5,7 +5,7 @@ use lsp_server::{RequestId, Response, ResponseError};
 use lsp_types::{
     GotoDefinitionParams, GotoDefinitionResponse, Location, Range, ReferenceParams, Url,
 };
-use nickel::position::RawSpan;
+use nickel_lang::position::RawSpan;
 use serde_json::Value;
 
 use crate::{
diff --git a/lsp/nls/src/server.rs b/lsp/nls/src/server.rs
index 2aa18bcf..9d7e7dbb 100644
--- a/lsp/nls/src/server.rs
+++ b/lsp/nls/src/server.rs
@@ -16,8 +16,8 @@ use lsp_types::{
     TextDocumentSyncOptions, WorkDoneProgressOptions,
 };
 
-use nickel::cache::Cache;
-use nickel::typecheck::Environment;
+use nickel_lang::cache::Cache;
+use nickel_lang::typecheck::Environment;
 
 use crate::{
     linearization::completed::Completed,
diff --git a/lsp/nls/src/term.rs b/lsp/nls/src/term.rs
index 449064a8..0b29e4a2 100644
--- a/lsp/nls/src/term.rs
+++ b/lsp/nls/src/term.rs
@@ -1,7 +1,7 @@
 use std::ops::Range;
 
 use codespan::FileId;
-use nickel::position::RawSpan;
+use nickel_lang::position::RawSpan;
 
 pub trait RawSpanExt {
     fn to_range(self) -> (FileId, Range<usize>);
diff --git a/src/bin/nickel.rs b/src/bin/nickel.rs
index fef15923..31afda7e 100644
--- a/src/bin/nickel.rs
+++ b/src/bin/nickel.rs
@@ -1,11 +1,11 @@
 //! Entry point of the program.
-use nickel::error::{Error, IOError};
-use nickel::program::Program;
-use nickel::repl::query_print;
+use nickel_lang::error::{Error, IOError};
+use nickel_lang::program::Program;
+use nickel_lang::repl::query_print;
 #[cfg(feature = "repl")]
-use nickel::repl::rustyline_frontend;
-use nickel::term::{RichTerm, Term};
-use nickel::{serialize, serialize::ExportFormat};
+use nickel_lang::repl::rustyline_frontend;
+use nickel_lang::term::{RichTerm, Term};
+use nickel_lang::{serialize, serialize::ExportFormat};
 use std::path::PathBuf;
 use std::{fs, process};
 // use std::ffi::OsStr;
diff --git a/src/term.rs b/src/term.rs
index e28be5a1..fd78f28d 100644
--- a/src/term.rs
+++ b/src/term.rs
@@ -1220,7 +1220,7 @@ impl From<Term> for RichTerm {
 ///
 /// It is used somehow as a match statement, going from
 /// ```
-/// # use nickel::term::{RichTerm, Term};
+/// # use nickel_lang::term::{RichTerm, Term};
 /// let rt = RichTerm::from(Term::Num(5.0));
 ///
 /// match rt.term.into_owned() {
@@ -1231,8 +1231,8 @@ impl From<Term> for RichTerm {
 /// ```
 /// to
 /// ```
-/// # use nickel::term::{RichTerm, Term};
-/// # use nickel::match_sharedterm;
+/// # use nickel_lang::term::{RichTerm, Term};
+/// # use nickel_lang::match_sharedterm;
 /// let rt = RichTerm::from(Term::Num(5.0));
 ///
 /// match_sharedterm!{rt.term, with {
diff --git a/utilities/Cargo.lock b/utilities/Cargo.lock
index c192e64a..aa8794d9 100644
--- a/utilities/Cargo.lock
+++ b/utilities/Cargo.lock
@@ -1613,7 +1613,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "936e4b492acfd135421d8dca4b1aa80a7bfc26e702ef3af710e0752684df5372"
 
 [[package]]
-name = "utilities"
+name = "nickel_lang_utilities"
 version = "0.1.0"
 dependencies = [
  "criterion",
diff --git a/utilities/Cargo.toml b/utilities/Cargo.toml
index 8fa9dd1f..1abb4908 100644
--- a/utilities/Cargo.toml
+++ b/utilities/Cargo.toml
@@ -1,7 +1,8 @@
 [package]
-name = "utilities"
+name = "nickel-lang-utilities"
 version = "0.1.0"
-authors = ["Yann Hamdaoui <yann.hamdaoui@gmail.com>"]
+authors = ["The Nickel Team <nickel-lang@protonmail.com>"]
+description = "Common helper functions for the tests and benchmarks of the nickel-lang crate."
 edition = "2018"
 
 [lib]
@@ -9,6 +10,6 @@ bench = false
 # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
 
 [dependencies]
-nickel = {path = "../"}
+nickel-lang = {path = "../", version = "0.1.0"}
 criterion = "0.3"
 codespan = "0.11"
diff --git a/utilities/src/lib.rs b/utilities/src/lib.rs
index e4a60952..aa52320a 100644
--- a/utilities/src/lib.rs
+++ b/utilities/src/lib.rs
@@ -1,7 +1,7 @@
 //! Helpers for tests and benches.
 use codespan::Files;
 use criterion::Criterion;
-use nickel::{
+use nickel_lang::{
     error::{Error, ParseError},
     parser::{grammar, lexer},
     program::Program,


Test patch:
diff --git a/tests/basics_fail.rs b/tests/basics_fail.rs
index 98053871..7b4d06ec 100644
--- a/tests/basics_fail.rs
+++ b/tests/basics_fail.rs
@@ -1,7 +1,7 @@
 use assert_matches::assert_matches;
-use nickel::error::{Error, EvalError};
+use nickel_lang::error::{Error, EvalError};
 
-use utilities::eval;
+use nickel_lang_utilities::eval;
 
 #[test]
 fn div_by_zero() {
diff --git a/tests/contracts_fail.rs b/tests/contracts_fail.rs
index 453606bf..a435eb19 100644
--- a/tests/contracts_fail.rs
+++ b/tests/contracts_fail.rs
@@ -1,8 +1,8 @@
 use assert_matches::assert_matches;
 use codespan::Files;
-use nickel::error::{Error, EvalError, ToDiagnostic};
+use nickel_lang::error::{Error, EvalError, ToDiagnostic};
 
-use utilities::eval;
+use nickel_lang_utilities::eval;
 
 macro_rules! assert_raise_blame {
     ($term:expr) => {{
@@ -134,7 +134,7 @@ fn records_contracts_poly() {
 
 #[test]
 fn lists_contracts() {
-    use nickel::label::ty_path::Elem;
+    use nickel_lang::label::ty_path::Elem;
 
     assert_matches!(
         eval("%deep_seq% ([1, \"a\"] | Array Num) 0"),
diff --git a/tests/destructuring.rs b/tests/destructuring.rs
index 672d4d29..deaa3ff5 100644
--- a/tests/destructuring.rs
+++ b/tests/destructuring.rs
@@ -1,8 +1,8 @@
 use assert_matches::assert_matches;
-use nickel::error::{Error, EvalError, TypecheckError};
-use nickel::term::Term;
+use nickel_lang::error::{Error, EvalError, TypecheckError};
+use nickel_lang::term::Term;
 
-use utilities::eval_file;
+use nickel_lang_utilities::eval_file;
 
 #[test]
 fn simple() {
diff --git a/tests/examples.rs b/tests/examples.rs
index 7a483af5..b6a0f4f2 100644
--- a/tests/examples.rs
+++ b/tests/examples.rs
@@ -1,7 +1,7 @@
 use assert_matches::assert_matches;
-use nickel::error::{Error, EvalError};
-use nickel::program::Program;
-use nickel::term::RichTerm;
+use nickel_lang::error::{Error, EvalError};
+use nickel_lang::program::Program;
+use nickel_lang::term::RichTerm;
 use std::path::PathBuf;
 
 fn eval_file(file: &str) -> Result<RichTerm, Error> {
diff --git a/tests/free_vars.rs b/tests/free_vars.rs
index 6597d428..a8d61069 100644
--- a/tests/free_vars.rs
+++ b/tests/free_vars.rs
@@ -1,9 +1,9 @@
-use nickel::{identifier::Ident, term::Term, transform::free_vars};
+use nickel_lang::{identifier::Ident, term::Term, transform::free_vars};
 
 use std::collections::{HashMap, HashSet};
 use std::iter::IntoIterator;
 
-use utilities::parse;
+use nickel_lang_utilities::parse;
 
 // fn is_subset_of<'a>(free_vars: impl IntoIterator<Item = &'a Ident>, rec_fields: &Vec<&Ident>) -> bool {
 //    free_vars.into_iter().all(|id| rec_fields.contains(&id))
diff --git a/tests/imports.rs b/tests/imports.rs
index 1e065a26..ba242860 100644
--- a/tests/imports.rs
+++ b/tests/imports.rs
@@ -1,7 +1,7 @@
 use assert_matches::assert_matches;
-use nickel::error::{Error, EvalError, TypecheckError};
-use nickel::program::Program;
-use nickel::term::Term;
+use nickel_lang::error::{Error, EvalError, TypecheckError};
+use nickel_lang::program::Program;
+use nickel_lang::term::Term;
 use std::io::BufReader;
 use std::path::PathBuf;
 
@@ -85,7 +85,7 @@ fn static_typing_fail() {
 
 #[test]
 fn serialize() {
-    use nickel::term::Term;
+    use nickel_lang::term::Term;
     let mut prog = Program::new_from_source(
         BufReader::new(
             format!(
diff --git a/tests/infinite_rec.rs b/tests/infinite_rec.rs
index 4db1d3db..e81a766c 100644
--- a/tests/infinite_rec.rs
+++ b/tests/infinite_rec.rs
@@ -1,7 +1,7 @@
 use assert_matches::assert_matches;
-use nickel::error::{Error, EvalError};
+use nickel_lang::error::{Error, EvalError};
 
-use utilities::eval;
+use nickel_lang_utilities::eval;
 
 #[test]
 fn infinite_loops() {
diff --git a/tests/merge_fail.rs b/tests/merge_fail.rs
index 633718a9..cd10d166 100644
--- a/tests/merge_fail.rs
+++ b/tests/merge_fail.rs
@@ -1,8 +1,8 @@
 use assert_matches::assert_matches;
-use nickel::error::{Error, EvalError};
-use nickel::position::TermPos;
-use nickel::program::Program;
-use nickel::term::RichTerm;
+use nickel_lang::error::{Error, EvalError};
+use nickel_lang::position::TermPos;
+use nickel_lang::program::Program;
+use nickel_lang::term::RichTerm;
 use std::io::Cursor;
 
 fn eval_full(s: &str) -> Result<RichTerm, Error> {
diff --git a/tests/pass.rs b/tests/pass.rs
index 6d43c1c8..a2b15a97 100644
--- a/tests/pass.rs
+++ b/tests/pass.rs
@@ -1,5 +1,5 @@
-use nickel::program::Program;
-use nickel::term::Term;
+use nickel_lang::program::Program;
+use nickel_lang::term::Term;
 use std::ffi::OsString;
 use std::path::PathBuf;
 use std::thread;
diff --git a/tests/query.rs b/tests/query.rs
index cab9b346..ebdd4563 100644
--- a/tests/query.rs
+++ b/tests/query.rs
@@ -1,5 +1,5 @@
-use nickel::program::Program;
-use nickel::term::{SharedTerm, Term};
+use nickel_lang::program::Program;
+use nickel_lang::term::{SharedTerm, Term};
 
 #[test]
 pub fn test_query_metadata_basic() {
diff --git a/tests/records_fail.rs b/tests/records_fail.rs
index 514e57a3..b0e96c5d 100644
--- a/tests/records_fail.rs
+++ b/tests/records_fail.rs
@@ -1,7 +1,7 @@
 use assert_matches::assert_matches;
-use nickel::error::{Error, EvalError, TypecheckError};
+use nickel_lang::error::{Error, EvalError, TypecheckError};
 
-use utilities::eval;
+use nickel_lang_utilities::eval;
 
 #[test]
 fn records_access() {
diff --git a/tests/stdlib_arrays_fail.rs b/tests/stdlib_arrays_fail.rs
index 5869b2db..4c6e6726 100644
--- a/tests/stdlib_arrays_fail.rs
+++ b/tests/stdlib_arrays_fail.rs
@@ -1,7 +1,7 @@
 use assert_matches::assert_matches;
-use nickel::error::{Error, EvalError};
+use nickel_lang::error::{Error, EvalError};
 
-use utilities::eval;
+use nickel_lang_utilities::eval;
 
 #[test]
 fn elem_at() {
diff --git a/tests/stdlib_typecheck.rs b/tests/stdlib_typecheck.rs
index 151594a8..2ed9894e 100644
--- a/tests/stdlib_typecheck.rs
+++ b/tests/stdlib_typecheck.rs
@@ -1,5 +1,5 @@
 use assert_matches::assert_matches;
-use nickel::cache::Cache;
+use nickel_lang::cache::Cache;
 
 #[test]
 fn stdlib_typecheck() {
diff --git a/tests/typecheck_fail.rs b/tests/typecheck_fail.rs
index f2a6daa8..165e633f 100644
--- a/tests/typecheck_fail.rs
+++ b/tests/typecheck_fail.rs
@@ -1,11 +1,11 @@
 use assert_matches::assert_matches;
 use codespan::Files;
-use nickel::cache::resolvers::DummyResolver;
-use nickel::error::TypecheckError;
-use nickel::parser::{grammar, lexer};
-use nickel::term::RichTerm;
-use nickel::typecheck::{type_check_in_env, Environment};
-use nickel::types::Types;
+use nickel_lang::cache::resolvers::DummyResolver;
+use nickel_lang::error::TypecheckError;
+use nickel_lang::parser::{grammar, lexer};
+use nickel_lang::term::RichTerm;
+use nickel_lang::typecheck::{type_check_in_env, Environment};
+use nickel_lang::types::Types;
 
 fn type_check(rt: &RichTerm) -> Result<Types, TypecheckError> {
     type_check_in_env(rt, &Environment::new(), &mut DummyResolver {})
diff --git a/tests/unbound_type_variables.rs b/tests/unbound_type_variables.rs
index 4aab826d..c564b8a6 100644
--- a/tests/unbound_type_variables.rs
+++ b/tests/unbound_type_variables.rs
@@ -2,12 +2,12 @@
 // unbound type variable error anymore. Instead, the variable is interpreted as a term variable:
 // the tests should still fail, but they can now fail with a standard unbound identifier error.
 use assert_matches::assert_matches;
-use nickel::{
+use nickel_lang::{
     error::{Error, EvalError, ParseError, ParseErrors, TypecheckError},
     identifier::Ident,
 };
 
-use utilities::eval;
+use nickel_lang_utilities::eval;
 
 macro_rules! assert_unbound {
     ( $term:expr, $var:expr ) => {