# Nushell core team meeting 2025-06-18 ## Attendees - Piet - Michael - Stefan - Rose - Antoine - Bahex - Jan9103 - Douglas - Jack ## Agenda - [x] {%preview https://github.com/nushell/nushell/pull/15682 %} > 1. We need to reach consensus about whether this behavior is acceptable/desirable. > > ```nushell > > let val = [{foo: A}, {baz: B}] > > $val > > # => ╭───┬─────┬─────╮ > > # => │ # │ foo │ baz │ > > # => ├───┼─────┼─────┤ > > # => │ 0 │ A │ ❎ │ > > # => │ 1 │ ❎ │ B │ > > # => ╰───┴─────┴─────╯ > > > > $val.foo > > # throws an error as expected > > > > $val.foo.0 > > # before this PR, this also throws an error > > # but due to reordering the access to `$val.0.foo` > > # this works without issue and returns `A` > > ``` > > Whether this is a good thing or bad isn't really clear :shrug: > 2. Additional tests to catch any possible regressions (I would like some help with coming up with or generating test cases) > 3. Benchmarks > --- - [x] Consistent Flag Names - `get` needs a `--ignore-case`/`--insensitive` flag for convenience, which should not conflict with other flags. - `-i` shorthand is used both for `--ignore-case` and `--ignore-errors` flags, which was fine because no command needed both before. - the semantics of `--ignore-case` for `get` (affecting cell-paths) would be kind of inconsistent with every other command that has a `--ignore-case` flag (affecting values) - > @fdncred > i wonder if, in another pr, we should make all the `-i`'s `ignore-case` and change `ingore-errors` to `-e` to be consistent. I also bet there are several `-<letter>` that need to be made consistent within nushell commands. - `http` commands use `--allow-errors`/`-e` - `get`/`select`/`reject` could use `--optional`/`-o` rather than `--ignore-errors` - [ ] Backtick code formatting italic or no italic ## Discussed Topics ### cell-path reordering - intended for better perf on table access (with the colum name coming before the index) - Sidebar: perf - Stefan: tango bench seems to be broken to me on `interleave` benches - Let's get that fix to check for regressions - Generally we can show initial improvements with manual `bench`/`timeit`/`hyperfine` runs - different error semantics - could be more permissive in some circumstance with sparse table (disjoint records) - Question: is the behavior sane for non table nested structures of records and list - Piep: Feature flag / unstable features / experimental mode - how easy to toggle in this case: - bahex in this case seems to be pretty isolatable - where to configure the flag - Rose how much exposure would the different branches get - Piep also a way to recover behavior without patch release should it be an issue - Jan9103: nightly users may be more experimetn happy (enable the unstable for them) - Let's not block a decision on the PR on having the system - but Piep is exited for trying to build a feature flag system (so maybe see within the coming week how that is coming along) ### consistent flag name - primary clash: `--ignore-errors`/`--ignore-case` e.g. found on `get` (unclear role who gets the `-i` shortflag) - Rose: `--optional` (for the ones that "error" on cell path access) - Deprecation system currently can't represent change to just the short flag while the long flag stays the same - Suggestion `?`/`!` as used in cell paths as shortflag - pro mnenomic of the cell path - con: we don't use sigil or even digits in flags, could make it more confusing what is a regular flag or special syntax - migration challenge for short flag: each long flag in the parser can only have one short flag (no option to have a transition period) - Bahex, suggests: have `optional` as a transition and then move the short flag only after. ### nu-highlight in help