# Nushell core team meeting 2025-04-02 ## Attendees - Darren - Jack - Rose - Andy - Douglas - LoicRiegel - Stefan ## Agenda - [x] vibe check: pipeline assignment operator - [x] Naming of `datetime` natural-language-conversion commands (see [this Discord thread and subsequent comments](https://discord.com/channels/601130461678272522/1348791953784836147/1353418672533798982)) We currently have: * `date humanize`: Formatting a datetime in a natural-language form. E.g.: ``` 2025-04-02T16:00:00-04:00 | date humanize # => in 3 days ``` * `into datetime`, which today *automatically* attempts to parse/interpret natural-language into a `datetime`, but will simply return `date now` if it fails. E.g. [#14790](https://github.com/nushell/nushell/issues/14790): ``` "next Monday" | into datetime # => Sun, 30 Mar 2025 09:44:05 -0400 (now) ``` The proposal is to make the natural-language-parsing *opt-in* by either requiring a flag on `into datetime` or moving it to a new command altogether. The question is what to name the flag/command and whether or not to rename `date humanize` to match. - [x] command internal column selection - prompted by [#15455](https://github.com/nushell/nushell/pull/15455) ```nushell { foo: (date now | into int), bar: (date now | into string), baz: ignore } | into datetime foo bar ``` - type-inference conflict with record -> type conversions ``` record -> record record -> datetime ``` following commands receive the wrong type (or an underspecified type if we are smarter in the inference) - If we remove it - `update $col {}` can only deal with one column per invocation - `update cells --columns [...$cols] {}` pretty wordy ## Topics for next meeting - [ ] how do we feel about renaming `$it` to `$in` for `where` condition ## Discussed Topics ### Pipeline assignment operator - https://github.com/nushell/nushell/issues/14870 - potential special case in impl ```nushell $foo |= $in | bla ``` Is the variable `$in` populated corrrectly in mutable assignment operators? ### human language datetime parsing/outputting - flag vs separate commands - flag lower fragmentation - separate command keeps the complexity out of the necessary core command for type conversions - as a separate parsing command for spoken language: `date from-human` seems acceptable - date parse may imply stricter parsing (following the rfcs) which we would keep on `into datetime` - `date humanize` seems acceptable ### input/output type challenge - case `into datetime` with record input - type cheapout: resort to any, RTTC only - type system enhancement: allow to specify `union[record, datetime]` which would static check with both `\ expect-record` and `\ expect-datetime` but then collapse the wave function at run time/ - dropping the cell path shorthand broadcast: would loose QoL vs `update cells` - all `into` variants have, especially useful during data ingestion Way forward: any for now, better type system when we get to ``` record -> any ``` According to Rose we could have the specific ones as documentations after the any case. Alternate route: separate commands for record to scalar conversions like `path join` / `url join`