Skip to content

stdlib: make the library a standalone crate#8770

Merged
sholderbach merged 16 commits intonushell:mainfrom
amtoine:refactor/stdlib/move-the-crate
Apr 7, 2023
Merged

stdlib: make the library a standalone crate#8770
sholderbach merged 16 commits intonushell:mainfrom
amtoine:refactor/stdlib/move-the-crate

Conversation

@amtoine
Copy link
Copy Markdown
Member

@amtoine amtoine commented Apr 6, 2023

Description

as we now have a prelude thanks to #8627, i'd like to work on the structure of the library 😋

and i think the first step is to make it a true standalone crate 😏

this PR

  • moves all the library from crates/nu-utils/standard_library/ to crates/nu-std/
  • moves the rust loading code from src/run.rs to crates/nu-std/src/lib.rs

User-Facing Changes

$nothing

Tests + Formatting

  • 🟢 toolkit fmt
  • 🟢 toolkit clippy
  • 🔴 toolkit test => fails on the unrelated
---- commands::each::each_implicit_it_in_block stdout ----
=== stderr

thread 'commands::each::each_implicit_it_in_block' panicked at 'assertion failed: `(left == right)`
  left: `""`,
 right: `"ace"`', crates/nu-command/tests/commands/each.rs:72:5

cargo test --workspace test_stdlib passes 👍

  • 🟢 toolkit test stdlib

After Submitting

$nothing

amtoine added 2 commits April 6, 2023 18:58
Command used
```bash
[.github/**/* **/*.rs **/*.nu]
| each {|target|
    sd 'crates/nu-utils/standard_library' 'crates/standard_library' $target
}
```

i used this complex command because of
```bash
>_ sd 'crates/nu-utils/standard_library' 'crates/standard_library' **/*
Error: nu::shell::external_command

  × External command failed
   ╭─[entry nushell#67:1:1]
 1 │ sd 'crates/nu-utils/standard_library' 'crates/standard_library' **/*
   · ─┬
   ·  ╰── can't run executable
   ╰────
  help: Argument list too long (os error 7)
```
@amtoine amtoine mentioned this pull request Apr 6, 2023
7 tasks
@fdncred
Copy link
Copy Markdown
Contributor

fdncred commented Apr 6, 2023

For consistency, I'd call it nu-std. It would be nice to have nu-something since that's the name of all our other crates. We also have to have some rust code I think in order to publish. Not sure what that is though.

amtoine added 2 commits April 7, 2023 17:56
Command used:
```bash
mv crates/standard_library/ crates/nu-std
``
Command used:
```bash
[.github/**/* **/*.rs **/*.nu]
| each {|target|
    sd 'crates/standard_library' 'crates/nu-std' $target
}
```
@amtoine
Copy link
Copy Markdown
Member Author

amtoine commented Apr 7, 2023

For consistency, I'd call it nu-std. It would be nice to have nu-something since that's the name of all our other crates.

oh yeah that is soooo much better 😮
moved again in 4467177 and 3c9c508

We also have to have some rust code I think in order to publish. Not sure what that is though.

i know exactly what to add there 😏

i'll do that once this lands 👍

This adds the `help` commands from nushell#8505 and the `assert skip`
from nushell#8748.
@amtoine
Copy link
Copy Markdown
Member Author

amtoine commented Apr 7, 2023

and conflict solved 👌

@sholderbach
Copy link
Copy Markdown
Member

Without a Cargo.toml (and maybe even either a lib.rs or main.rs) it is not yet a crate.

There is some potential configuration what non-.rs files get bundled when publishing a crate to crates.io https://doc.rust-lang.org/cargo/reference/manifest.html#the-exclude-and-include-fields

Furthermore the code like this is not publishable, as you are referencing assets across crate boundaries right now.

src/run.rs Outdated
Comment on lines 14 to 16
fn get_standard_library() -> &'static str {
include_str!("../crates/nu-utils/standard_library/std.nu")
include_str!("../crates/nu-std/std.nu")
}
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this would need to live in the nu-std crate and imported here via nu_std::get_standard_library()

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yup that's exactly what i have in mind 😋

@amtoine
Copy link
Copy Markdown
Member Author

amtoine commented Apr 7, 2023

@sholderbach

could we call this a "crate" for this very instant?
i'll populate this directory with rust source asap, but i thought it would be appropriate to do that into two distinct PRs 😋

crates/nu-std is not in the members of the workspace for now 😌

@amtoine amtoine changed the title stdlib: move the crate stdlib: move the library to future crate Apr 7, 2023
@amtoine
Copy link
Copy Markdown
Member Author

amtoine commented Apr 7, 2023

i've changed the title and the message of the PR, they were too vague, sorry for this 😢

@sholderbach
Copy link
Copy Markdown
Member

Alternatively we could place it in some non crates asset folder that gets packaged with the nu crate. This would limit the standard library to only be used with the nu binary as shipped by us but simpler (and more in line with the current test setup "It's just a file).

There are some folks that want to build upon nushell crates. e.g. @stormasm and also the couchbase-shell folks. Moving everything into the nu crate would possibly deny them access to help and friends. (not the top priority for the mainline nushell project but something to keep in mind)

@amtoine
Copy link
Copy Markdown
Member Author

amtoine commented Apr 7, 2023

i can move all the directory to another place but i'd place it again here in the next PR with the rust source... 🤔

you tell me 😉

@sholderbach
Copy link
Copy Markdown
Member

My take is, then it should be one PR :P
The main branch should always be in a state where you only need to update the Cargo.tomls to be ready to publish.

@amtoine
Copy link
Copy Markdown
Member Author

amtoine commented Apr 7, 2023

My take is, then it should be one PR :P The main branch should always be in a state where you only need to update the Cargo.tomls to be ready to publish.

this is a perfect argument, will do that right now 😇

@amtoine amtoine marked this pull request as draft April 7, 2023 16:43
amtoine added 9 commits April 7, 2023 19:01
Commands used:
```bash
[nu-cli nu-parser nu-protocol]
| each {|dep|
    cargo add --package nu-std $dep --path ("crates/" | path join $dep)
}
cargo add --package nu-std miette@5.6.0 --features [fancy-no-backtrace]
```
This is to allow it to be used in `run.rs`
@amtoine amtoine marked this pull request as ready for review April 7, 2023 17:47
@amtoine amtoine changed the title stdlib: move the library to future crate stdlib: make the library a standalone crate Apr 7, 2023
@amtoine
Copy link
Copy Markdown
Member Author

amtoine commented Apr 7, 2023

@sholderbach @fdncred

i think we're good now 😌

@amtoine
Copy link
Copy Markdown
Member Author

amtoine commented Apr 7, 2023

that's fun, we all decided to edit this one piece of run.rs at the exact same time 😆

that should be the last conflict merge 😌

Copy link
Copy Markdown
Member

@sholderbach sholderbach left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks looks good to me!

@stormasm
Copy link
Copy Markdown
Contributor

stormasm commented Apr 7, 2023

@amtoine this looks good to me as well !

Thanks for doing this work...
After this lands and we get a sense for it...

One of the first things I think I would do is try and remove the dependency in this crate from nu-cli.
It looks like the only reason you are depending on it is because of a few functions
that are currently in nu-cli
could probably be moved somewhere else...

And then both nu-cli and nu-std will depend upon those functions...
We will have to see how that shakes out...

The advantage of doing it this way --- is it will enable developers to use our nu-std crate and build their own cli for their application...

Once this lands and a few days have passed of testing etc...
we can discuss further...

This looks good to me for starters though, excellent effort, I am excited to have this code in its own crate 😄

@sholderbach sholderbach merged commit 5d8bedf into nushell:main Apr 7, 2023
@fdncred
Copy link
Copy Markdown
Contributor

fdncred commented Apr 7, 2023

I think we need the LICENSE file in the crate folder too.

@stormasm
Copy link
Copy Markdown
Contributor

stormasm commented Apr 7, 2023

@fdncred thanks for catching this I just added it 😄

@amtoine amtoine deleted the refactor/stdlib/move-the-crate branch April 8, 2023 07:17
@amtoine
Copy link
Copy Markdown
Member Author

amtoine commented Apr 8, 2023

@fdncred @stormasm
very good remarks, and i saw the PRs, so thanks 😋

@fdncred fdncred added the A:std-library Defining and improving the standard library written in Nu label Apr 8, 2023
sophiajt pushed a commit that referenced this pull request Apr 9, 2023
> **Note**
> waiting for
> - #8770
> - #8815

# Description
this PR adds a very basic completion support to the `help`
implementations of the `std`.

# User-Facing Changes
completion on all the `std help ...` commands, based on the names in
`$nu.scope.`

# Tests + Formatting
- ⚫ `toolkit fmt`
- ⚫ `toolkit clippy`
- ⚫ `toolkit test`
- ⚫ `toolkit test stdlib`

# After Submitting
```
$nothing
```
MariaSolOs added a commit to MariaSolOs/nushell that referenced this pull request Apr 12, 2023
commit 8ee52b6
Author: JT <547158+jntrnr@users.noreply.github.com>
Date:   Wed Apr 12 05:21:52 2023 +1200

    Relax the closure syntax, highlight differently (nushell#8846)

    This relaxes the closure syntax so that `||` is no longer required. This
    allows for `ls | each { $in.name }` for example.

    I've gone ahead and changed the syntax highlighting so that blocks and
    closures are distinct for now.

    Removes `||` requirement for closures.

    Don't forget to add tests that cover your changes.

    Make sure you've run and fixed any issues with these commands:

    - `cargo fmt --all -- --check` to check standard code formatting (`cargo
    fmt --all` applies these changes)
    - `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -A
    clippy::needless_collect` to check that you're using the standard code
    style
    - `cargo test --workspace` to check that all tests pass
    - `cargo run -- crates/nu-std/tests/run.nu` to run the tests for the
    standard library

    > **Note**
    > from `nushell` you can also use the `toolkit` as follows
    > ```bash
    > use toolkit.nu # or use an `env_change` hook to activate it
    automatically
    > toolkit check pr
    > ```

    If your PR had any user-facing changes, update [the
    documentation](https://github.com/nushell/nushell.github.io) after the
    PR is merged, if necessary. This will help us keep the docs up to date.

commit 46dba88
Author: JT <547158+jntrnr@users.noreply.github.com>
Date:   Wed Apr 12 05:21:31 2023 +1200

    Revert numberlike parsing restriction (nushell#8845)

    This effectively reverts nushell#8635. We shipped this change with 0.78 and
    received many comments/issues related to this restriction feeling like a
    step backward.

    fixes: nushell#8844
    (and probably other issues)

    Returns numbers and number-like values to being allowed to be bare
    words. Examples: `3*`, `1fb43`, `4,5`, and related.

    Don't forget to add tests that cover your changes.

    Make sure you've run and fixed any issues with these commands:

    - `cargo fmt --all -- --check` to check standard code formatting (`cargo
    fmt --all` applies these changes)
    - `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -A
    clippy::needless_collect` to check that you're using the standard code
    style
    - `cargo test --workspace` to check that all tests pass
    - `cargo run -- crates/nu-std/tests/run.nu` to run the tests for the
    standard library

    > **Note**
    > from `nushell` you can also use the `toolkit` as follows
    > ```bash
    > use toolkit.nu # or use an `env_change` hook to activate it
    automatically
    > toolkit check pr
    > ```

    If your PR had any user-facing changes, update [the
    documentation](https://github.com/nushell/nushell.github.io) after the
    PR is merged, if necessary. This will help us keep the docs up to date.

commit eb4d19f
Author: federico viscomi <federicoviscomi@gmail.com>
Date:   Mon Apr 10 22:52:51 2023 +0100

    Parser panic for signature with multibyte char for short flag nushell#8821 (nushell#8849)

    Hey I'm a developer and I'm still new to nushell and rust but I would
    like to learn more about both. This is my first PR for this project.

    The intent of my change is to allow to use multibyte utf-8 characters in
    commands short flags.

commit c367876
Author: Máté FARKAS <fm@farkas-mate.hu>
Date:   Mon Apr 10 22:42:11 2023 +0200

    stdlib test runner: implement `setup` and `teardown` commands to unit tests (nushell#8776)

    As in other testing frameworks, the `setup` runs before every test case,
    and the `teardown` after that. A context can be created in `setup`,
    which will be in the `$in` variable in the test cases, and in the
    `teardown`. The `teardown` is called regardless of the test is passed,
    skipped, or failed.

    For example:

    ```nushell
    use std.nu *

    export def setup [] {
        log debug "Setup is running"
        {msg: "This is the context"}
    }

    export def teardown [] {
        log debug $"Teardown is running. Context: ($in)"
    }

    export def test_assert_pass [] {
        log debug $"Assert is running. Context: ($in)"
    }

    export def test_assert_skip [] {
        log debug $"Assert is running. Context: ($in)"
        assert skip
    }

    export def test_assert_fail_skipped_by_default [] {
        log debug $"Assert is running. Context: ($in)"
        assert false
    }
    ```

    ![image](https://user-images.githubusercontent.com/282320/230466359-9908cc72-edbd-4150-9aff-d15fe42c0cc7.png)

    I'll update the documentation.

    ---------

    Co-authored-by: Mate Farkas <Mate.Farkas@oneidentity.com>

commit 9bb2c8f
Author: Justin Ma <hustcer@outlook.com>
Date:   Tue Apr 11 04:10:41 2023 +0800

    Upgrade to nu v0.78 for binaries release workflow (nushell#8840)

    Upgrade to nu v0.78 for binary packages release workflow

    Test Release: https://github.com/hustcer/nu-release/releases/tag/v0.78.2
    Release workflow running output:
    https://github.com/hustcer/nu-release/actions/runs/4656319252/jobs/8239828202

    _(List of all changes that impact the user experience here. This helps
    us keep track of breaking changes.)_

    Don't forget to add tests that cover your changes.

    Make sure you've run and fixed any issues with these commands:

    - `cargo fmt --all -- --check` to check standard code formatting (`cargo
    fmt --all` applies these changes)
    - `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -A
    clippy::needless_collect` to check that you're using the standard code
    style
    - `cargo test --workspace` to check that all tests pass
    - `cargo run -- crates/nu-std/tests/run.nu` to run the tests for the
    standard library

    > **Note**
    > from `nushell` you can also use the `toolkit` as follows
    > ```bash
    > use toolkit.nu # or use an `env_change` hook to activate it
    automatically
    > toolkit check pr
    > ```

    If your PR had any user-facing changes, update [the
    documentation](https://github.com/nushell/nushell.github.io) after the
    PR is merged, if necessary. This will help us keep the docs up to date.

commit 74dcac3
Author: nibon7 <nibon7@163.com>
Date:   Tue Apr 11 02:52:42 2023 +0800

    Fix process_range on 32-bit platforms (nushell#8842)

    This PR fixes
    `commands::str_::substrings_the_input_and_treats_end_index_as_length_if_blank_end_index_given`
    testcase on 32-bit platform.

    ```
    failures:
    ---- commands::str_::substrings_the_input_and_treats_end_index_as_length_if_blank_end_index_given stdout ----
    === stderr
    thread 'commands::str_::substrings_the_input_and_treats_end_index_as_length_if_blank_end_index_given' panicked at 'assertion failed: `(left == right)`
      left: `"arepa"`,
     right: `"arepas"`', crates/nu-command/tests/commands/str_/mod.rs:363:9
    failures:
        commands::str_::substrings_the_input_and_treats_end_index_as_length_if_blank_end_index_given
    test result: FAILED. 1072 passed; 1 failed; 23 ignored; 0 measured; 0 filtered out; finished in 2.98s
    error: test failed, to rerun pass `-p nu-command --test main`
    ```

    https://gitlab.alpinelinux.org/nibon7/aports/-/jobs/1005935#L3864
    https://gitlab.alpinelinux.org/nibon7/aports/-/jobs/1005931#L3867

    N/A

    Don't forget to add tests that cover your changes.

    Make sure you've run and fixed any issues with these commands:

    - `cargo fmt --all -- --check` to check standard code formatting (`cargo
    fmt --all` applies these changes)
    - `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -A
    clippy::needless_collect` to check that you're using the standard code
    style
    - `cargo test --workspace` to check that all tests pass
    - `cargo run -- crates/nu-std/tests/run.nu` to run the tests for the
    standard library

    > **Note**
    > from `nushell` you can also use the `toolkit` as follows
    > ```bash
    > use toolkit.nu # or use an `env_change` hook to activate it
    automatically
    > toolkit check pr
    > ```

    If your PR had any user-facing changes, update [the
    documentation](https://github.com/nushell/nushell.github.io) after the
    PR is merged, if necessary. This will help us keep the docs up to date.

commit 6d51e34
Author: Antoine Stevan <44101798+amtoine@users.noreply.github.com>
Date:   Mon Apr 10 20:32:33 2023 +0200

    stdlib: make helper modules available in std (nushell#8841)

    > **Note**
    > waiting for the following to land
    > - nushell#8824 to avoid conflicts,
    i'll add this to `CONTRIBUTING.md` once it's ready 👍

    should close nushell#8839
    this PR moves the `log` submodule of `std` to the top of the call stack,
    making it available in the rest of the library as `log`.
    i've added some comments around the `submodules` list in
    `load_standard_library` to make it clear how it should work.
    `log` and `assert` are now available in the rest of `std`.
    - 🟢 `toolkit fmt`
    - 🟢 `toolkit clippy`
    - ⚫ `toolkit test`
    - 🟢 `toolkit test stdlib`
    ```
    $nothing
    ```

commit de76c7a
Author: WindSoilder <WindSoilder@outlook.com>
Date:   Tue Apr 11 01:23:22 2023 +0800

    Remove autoprinting of `for` loop (nushell#8843)

    It's an addition to nushell#8618
    And I think it's good to keep the same behavior when we use for loop for
    list.

    Don't forget to add tests that cover your changes.

    Make sure you've run and fixed any issues with these commands:

    - `cargo fmt --all -- --check` to check standard code formatting (`cargo
    fmt --all` applies these changes)
    - `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -A
    clippy::needless_collect` to check that you're using the standard code
    style
    - `cargo test --workspace` to check that all tests pass
    - `cargo run -- crates/nu-std/tests/run.nu` to run the tests for the
    standard library

    > **Note**
    > from `nushell` you can also use the `toolkit` as follows
    > ```bash
    > use toolkit.nu # or use an `env_change` hook to activate it
    automatically
    > toolkit check pr
    > ```

    If your PR had any user-facing changes, update [the
    documentation](https://github.com/nushell/nushell.github.io) after the
    PR is merged, if necessary. This will help us keep the docs up to date.

commit 0e23400
Author: Stefan Holderbach <sholderbach@users.noreply.github.com>
Date:   Mon Apr 10 03:42:43 2023 +0200

    Follow up nushell#8758 with a style fix (nushell#8822)

    The old comment around the question mark operator doesn't make sense
     to me based on the closure signature.
    The `match` expressions were thus superfluous.

    None

    No change

commit d0a83fe
Author: Antoine Stevan <44101798+amtoine@users.noreply.github.com>
Date:   Mon Apr 10 00:59:57 2023 +0200

    stdlib: add completion to `help` commands (nushell#8799)

    > **Note**
    > waiting for
    > - nushell#8770
    > - nushell#8815
    this PR adds a very basic completion support to the `help`
    implementations of the `std`.
    completion on all the `std help ...` commands, based on the names in
    `$nu.scope.`
    - ⚫ `toolkit fmt`
    - ⚫ `toolkit clippy`
    - ⚫ `toolkit test`
    - ⚫ `toolkit test stdlib`
    ```
    $nothing
    ```

commit 57510f2
Author: Stefan Holderbach <sholderbach@users.noreply.github.com>
Date:   Mon Apr 10 00:56:47 2023 +0200

    Move CLI related commands to `nu-cli` (nushell#8832)

    Part of the larger cratification effort.

    Moves all `reedline` or shell line editor specific commands to `nu-cli`.
    - `commandline`
    - This shouldn't have moved there. Doesn't directly depend on reedline
    but assumes parts in the engine state that are specific to the use of
    reedline or a REPL
    - `keybindings` and subcommands
      - `keybindings default`
      - `keybindings list`
      - `keybindings listen`
        - very `reedline` specific
    - `history`
      - needs `reedline`
    - `history session`
    Instead of having a separate `create_default_context()` that calls
    `nu-command`'s `create_default_context()`, I added a `add_cli_context()`
    that updates an `EngineState`

    None

    `cargo build --timings` from a `cargo clean --profile dev`
    main: 64 secs
    this: 59 secs

    branch | total| codegen | fraction
    ---|---|---|---
    main | 14.0s | 6.2s | (44%)
    this | 12.5s | 5.5s | (44%)

    `nu-cli` depends on `nu-command` at the moment.
    Thus it is built during the code-gen phase of `nu-command` (on 16
    virtual cores)

    I removed the `test_example()` facilities for now as we had not run any
    of the commands in an `Example` test and importing the right context for
    those tests seemed more of a hassle than the duplicated
    `test_examples()` implementations in `nu-cmd-lang` and `nu-command`

commit 58b96fd
Author: JT <547158+jntrnr@users.noreply.github.com>
Date:   Mon Apr 10 10:55:29 2023 +1200

    Add option to not load std-lib. Default tests to not use std-lib (nushell#8833)

    this adds a `--no-std-lib` flag. Moves `nu!` to use the `--no-std-lib`.
    Adds a new `nu_with_std!` macro for future tests that need the std-lib.

    _(Thank you for improving Nushell. Please, check our [contributing
    guide](../CONTRIBUTING.md) and talk to the core team before making major
    changes.)_

    _(Description of your pull request goes here. **Provide examples and/or
    screenshots** if your changes affect the user experience.)_

    _(List of all changes that impact the user experience here. This helps
    us keep track of breaking changes.)_

    Don't forget to add tests that cover your changes.

    Make sure you've run and fixed any issues with these commands:

    - `cargo fmt --all -- --check` to check standard code formatting (`cargo
    fmt --all` applies these changes)
    - `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -A
    clippy::needless_collect` to check that you're using the standard code
    style
    - `cargo test --workspace` to check that all tests pass
    - `cargo run -- crates/nu-std/tests/run.nu` to run the tests for the
    standard library

    > **Note**
    > from `nushell` you can also use the `toolkit` as follows
    > ```bash
    > use toolkit.nu # or use an `env_change` hook to activate it
    automatically
    > toolkit check pr
    > ```

    If your PR had any user-facing changes, update [the
    documentation](https://github.com/nushell/nushell.github.io) after the
    PR is merged, if necessary. This will help us keep the docs up to date.

commit 9e3d6c3
Author: JT <547158+jntrnr@users.noreply.github.com>
Date:   Mon Apr 10 08:55:47 2023 +1200

    Only add the std lib files once (nushell#8830)

    We were seeing duplicate entries for the std lib files, and this PR
    addresses that. Each file should now only be added once.

    Note: they are still parsed twice because it's hard to recover the
    module from the output of `parse` but a bit of clever hacking in a
    future PR might be able to do that.

    _(List of all changes that impact the user experience here. This helps
    us keep track of breaking changes.)_

    Don't forget to add tests that cover your changes.

    Make sure you've run and fixed any issues with these commands:

    - `cargo fmt --all -- --check` to check standard code formatting (`cargo
    fmt --all` applies these changes)
    - `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -A
    clippy::needless_collect` to check that you're using the standard code
    style
    - `cargo test --workspace` to check that all tests pass
    - `cargo run -- crates/nu-std/tests/run.nu` to run the tests for the
    standard library

    > **Note**
    > from `nushell` you can also use the `toolkit` as follows
    > ```bash
    > use toolkit.nu # or use an `env_change` hook to activate it
    automatically
    > toolkit check pr
    > ```

    If your PR had any user-facing changes, update [the
    documentation](https://github.com/nushell/nushell.github.io) after the
    PR is merged, if necessary. This will help us keep the docs up to date.

commit 4a955d7
Author: Antoine Stevan <44101798+amtoine@users.noreply.github.com>
Date:   Sun Apr 9 19:00:20 2023 +0200

    stdlib: refactor into a multi-module library (nushell#8815)

commit 637283f
Author: mike <98623181+1Kinoti@users.noreply.github.com>
Date:   Sat Apr 8 23:04:57 2023 +0300

    allow register to accept a const argument (nushell#8758)

    this pr allows `register` to be used with const variables
    ```nu
    const math_plugin = "~/.config/nushell/plugins/nu_plugin_math"
    register $math_plugin
    ```

    should close nushell#8208, previous work nushell#8435

commit 5afbfb5
Author: Maria José Solano <majosolano99@gmail.com>
Date:   Sat Apr 8 11:52:37 2023 -0700

    Use `pretty_assertions` in the root crate (nushell#8818)

    This PR is just a minor development improvement. While working on
    another feature, I noticed that the root crate lists the super useful
    `pretty_assertions` in the root crate but doesn't use it in most tests.
    With this change `pretty_assertions::assert_eq!` is used instead of
    `core::assert_eq!` for better diffs when debugging the tests.

    I thought of adding the dependency to other crates but I decided not to
    since I didn't want a huge disruptive PR :)

commit d128c0e
Author: Antoine Stevan <44101798+amtoine@users.noreply.github.com>
Date:   Sat Apr 8 14:35:16 2023 +0200

    stdlib: use the loaded library in tests and update `README` (nushell#8811)

    Should close nushell#8809.
    this PR uses the automatically loaded library from the tests by
    replacing `use std.nu ...` with `use std ...`.

    the `README` has been updated by
    - removing the very deprencated "concrete examples"
    - fixing the `use std` and the "run the tests" sections

    the `README` can be previewed
    [here](https://github.com/amtoine/nushell/blob/refactor/stdlib/use-std-in-tests-and-update-readme/crates/nu-std/README.md)
    👍
    ```
    $nothing
    ```
    - 🟢 `toolkit test stdlib`
    ```
    $nothing
    ```

commit 60e6ea5
Author: Michael Angerman <1809991+stormasm@users.noreply.github.com>
Date:   Sat Apr 8 04:53:43 2023 -0700

    remove nu_cli crate dependency from nu_std (nushell#8807)

    now nu_std only depends on nu_parser, nu_protocol and miette
    and removes the nu_cli dependency

    this enables developers moving forward to come along and implement their
    own CLI's without having to pull in a redundant nu-cli which will not be
    needed for them.

    I did this by moving report_error into nu_protocol
    which nu_std already has a dependency on anyway....

    - `cargo fmt --all -- --check` to check standard code formatting (`cargo
    fmt --all` applies these changes)
    - `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -A
    clippy::needless_collect` to check that you're using the standard code
    style
    - `cargo test --workspace` to check that all tests pass
    - `cargo run -- crates/nu-std/tests.nu` to run the tests for the
    standard library

    > **Note**
    > from `nushell` you can also use the `toolkit` as follows
    > ```bash
    > use toolkit.nu # or use an `env_change` hook to activate it
    automatically
    > toolkit check pr
    > ```

commit 4156077
Author: Antoine Stevan <44101798+amtoine@users.noreply.github.com>
Date:   Sat Apr 8 13:19:09 2023 +0200

    remove the "MODULE NOT FOUND" print from the parser (nushell#8816)

    related to nushell#8765.
    should close nushell#8812.
    this PR simply removes the `prinln("MODULE NOT FOUND")` from the parser.
    no more `MODULE NOT FOUND` while typing a `use` command
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A:std-library Defining and improving the standard library written in Nu

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants