# Nushell core team meeting 2024-04-17 ## Attendees - Filip - Ian - Stefan - Jack - Michael - Devyn - Andy - Wind - Jakub - Darren ## Agenda - [x] benchmarks - [x] `echo` - [x] [#12344](https://github.com/nushell/nushell/pull/12344) use of `--` and how to be consistent, re: [#11435](https://github.com/nushell/nushell/pull/11435)? - [x] Any final thoughts on [plugin commands](https://hackmd.io/lG8T5nTETaGuHO4GgFKK_w)? - [ ] Stepped ranges [#12537](https://github.com/nushell/nushell/pull/12537): syntax change or possibly removal? ## Discussed Topics ### Benchmark - different frameworks available (Filip has several competing PRs) - [divan](https://github.com/nvzqz/divan) - fresh - no file output - simpler code - manual work needed to compare changes (Filip built a manual parsing script) - [criterion](https://github.com/bheisler/criterion.rs) - old - statistics/file output - [tango](https://github.com/bazhenov/tango) - really young - A/B testing of two commits/branches in parallel - (you can still run a single) - little bit more setup - supports file output - doesn't use proc macros :smile: - not supported on Windows without nightly - Filip has been in active contact with the dev - [callgrind](https://valgrind.org/docs/manual/cl-manual.html) - *no current PR* - not a library, not a Rust thing - would need a script - not timing-sensitive (should be more comparable) → Use Tango without git. ## `echo` change to the `echo` semantics stirring debates previously trying to emulate bash expectations - if redirected just yielding a value - if bare trying to print Strong muscle memory present for both edge cases: ```nushell # echo and then echo in a closure, redirecting the whole thing do { echo a; echo b } | lines # this would have printed a and then returned [b] # now it just returns [b] ``` reasons to use `echo`: ```nushell echo foo | save foo.txt # rather than "foo" | save foo.txt # it makes lists echo a b c # ⇒ [a b c] ``` ## `--` arguments when invoking `nu` - argument quoting challenges - let's not build our own command injection risk - `--` as a consistent marker for no more special (flags) parsing? - Should `nu -c` get special input? - step by step, devyn taking the lead ## `plugin` family of commands (replacing `register`) - [Plugin commands (`register` replacement) proposal](/lG8T5nTETaGuHO4GgFKK_w) - Devyn: probably be able to keep `register` for 1 deprecated release - `plugin add` would not have to be a hard parser keyword - packaging/distribution of plugins - nupm is designed with plugins in mind - plugins can be written in any language / arbitrary binary - uses a build script for nupm - you could hide a download in here as well (no guaranteed signature validation through that) - Jack?: pre-built distribution - security/build-infra? - target matrix to support (tier-1 targets and how to handle the oddbals) - custom plugin files for: - development - overlays/custom virtualenvs ## `nupm` - General chat on supply chain security/challenges providing sound builds - worth comparing notes with - [AUR](https://aur.archlinux.org/) - cargo folks - Darren: are we getting ready to include it with the standard library? - Jakub: registry work to share packages ## `..........` or the ranges ``` 1..2..10 # is going with a step 1 # as the syntax is indicating the **next** element ``` counting vs striding style - counting: mathy continuation - e.g. haskell enumeration syntax - striding: define the step we take - e.g. Python's slice operator/`range` This doesn't currently work: Tool for slicing ```nushell [1 2 3 4 5 6 7] | range 0..2..6 # expect ⇒ [1 3 5 7] ```