---
# System prepended metadata

title: Nushell core team meeting 2025-06-18

---

# 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