mirror of
https://github.com/nushell/nushell.git
synced 2025-08-10 01:37:49 +02:00
Changes global allocator to mimalloc, improving performance. (#9415)
# Description <!-- 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. --> this PR makes nushell use mimalloc as the default allocator, this has the benefit of reducing startup time on my machine. `17%` on linux and `22%` on windows, when testing using hyperfine. the overhead to compile seem to be quite small, aswell as the increase of binary size quite small on linux the binary went from `33.1mb` to `33.2mb` linux  windows  # User-Facing Changes <!-- List of all changes that impact the user experience here. This helps us keep track of breaking changes. --> # Tests + Formatting <!-- 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 -A clippy::result_large_err` 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 > ``` --> # After Submitting <!-- 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. -->
This commit is contained in:
@ -117,6 +117,12 @@ pub fn version(
|
||||
vals.push(Value::string(build_rust_channel, call.head));
|
||||
}
|
||||
|
||||
cols.push("allocator".to_string());
|
||||
vals.push(Value::String {
|
||||
val: global_allocator().to_string(),
|
||||
span: call.head,
|
||||
});
|
||||
|
||||
cols.push("features".to_string());
|
||||
vals.push(Value::String {
|
||||
val: features_enabled().join(", "),
|
||||
@ -144,6 +150,14 @@ pub fn version(
|
||||
.into_pipeline_data())
|
||||
}
|
||||
|
||||
fn global_allocator() -> &'static str {
|
||||
if cfg!(feature = "mimalloc") {
|
||||
"mimalloc"
|
||||
} else {
|
||||
"standard"
|
||||
}
|
||||
}
|
||||
|
||||
fn features_enabled() -> Vec<String> {
|
||||
let mut names = vec!["default".to_string()];
|
||||
|
||||
|
Reference in New Issue
Block a user