# Nushell core team meeting 2023-08-23- ## Attendees - Darren - JT - Amtoine - Storm - Jakub - Stefan - AucaCoyan ## Agenda - [x] 0.84.0 release post-mortem - [x] Today is Nushell's public birthday. Should we write something? - [x] @amtoine's PRs: [here](https://github.com/nushell/nushell/pulls/amtoine) :eyes: - [x] uutils uu_cp PR is up [here](https://github.com/nushell/nushell/pull/10097) - We need to provide feedback on - to the OP questions/comments in the description - to the amount of parameters it currently has (29) i.e. we need to say when parameters we want and which we want to leave out (mentioned in the PR [here](https://github.com/nushell/nushell/pull/10097#issuecomment-1689156058)) - [x] are we ok now with the pinned/unpinned PRs based on the `serde` drama? - [x] Next steps for parse-time evaluation: - [x] Merge https://github.com/nushell/nushell/pull/9499 - [x] Which built-in commands to allow? - [x] parse-time eval of `if`: `use (if $constfoo { 'spam.nu' } else { 'eggs.nu' })` - [x] $nu - [x] parse-time eval of custom commands (`def` vs. requiring `const def`) - [x] Pushing forward with the span refactor - [x] the future of `extern-wrapped` - simple rename (e.g., `def-wrapped`) - use flags on `def` (see Discussed Topics) - [x] Question: Is the `:` in input/output type declaration necessary? Yes - `def foo []: int -> int { ... }` - can we remove the `:`? No - `def foo []: [int -> int, bool -> bool] { ... }` - can we remove the `:`? No ## Discussed Topics ### 0.84.0 first impression - No serious new problems mentioned - Publishing script failed through the wildcard dependency at first - Let's get something into CI to guard against - "Probably two lines of nushell" ### Public birthday of 4 years - JT started a blog post giving shoutouts to cool features - https://github.com/nushell/nushell.github.io/pull/1019 ### amtoine's PR backlog - As we are unblocked after the release, lets go through as we get to it, let's not keep amtoine hanging. ### Uutils based `cp` - https://github.com/nushell/nushell/pull/10097 - JT: Let's get some good testing in - Darren: PR author has questions we should help out with - 29 parameters we probably need to trim - Q: How many new dependencies - some cleanup work necessary/possible - Not yet ready as it fails to build due to local filepath deps ### `serde` kerfuffle - retrospective fixes - JT added a `Cargo.toml` version restriction during the time the binary blob was an active issue/discussion point - Now reverted on serde_derive side (restriction removed) - Darren: there was a fix for the fix #### related issue arrow2/polars - they broke semver somehow (you need to run `--locked` for now) - older polars version due to MSRV ### `const` future - parse time evaluation - how will we handle constness for custom commands / closure - explicit annotation versus inferring it - maybe wait with implementation work if we don't have the explicit requirement? - inference would enable using existing code in const context if allowed based on body - explicit annotation has API guarantee benefits - AucaCoyan: start with private functions? - let's get `$nu` const fast - should unlock some important config modularization work! - parse-time evaluation of custom commands we'll leave for later ### Big `Value` refactor First step JT started: Having Span in all `Value` cases Then the next step can be `struct SpannedValue` and the `enum UnspannedValue` A lot of places to adjust -> get the all-span value polished and then go step by step #### Degradation of span quality we need to experiment a bit - differences between literals and incoming data - config could be a good case with nested data (literals or value updates) #### Related `Record` PR v2 now up from IanManske - great timing - should help with open-Value surgery **-> Get it in before the despanning** ### `extern-wrapped` Suggestion (chosen approach): ```nushell def --env --wrapped spam [x: string, ...rest] -> string, string { str replace 'foo' $x } ``` BUT, you could be tempted swap the flag locations (maybe it's okay?): ``` def --env spam --wrapped [x: string, ...rest] -> string, string { str replace 'foo' $x } def --wrapped spam [x: string, ...rest] -> string, string { str replace 'foo' $x } --env def spam [x: string, ...rest] -> string, string --env { str replace 'foo' $x } --wrapped ``` Suggestion 2 (the env/wrapped is now a property of signature, not `def` => could be expanded to closures in general): ```nushell def spam [@env, @wrapped, x: string, ...rest] -> string, string { str replace 'foo' $x } ``` #### death-env -> `def --env` gonna ruffle some feathers --> appropriate deprecation update a lot of documentation/troubleshooting FAQ ## Issues > :bulb: the issues which [needs-core-team-attention](https://github.com/nushell/nushell/labels/needs-core-team-attention) > :bulb: **Note** > to list all the PRs currently [opened in `nushell/nushell`](https://github.com/nushell/nushell/pulls): > ```nu > gh pr list --json url,number,author,title > | from json > | each {|i| > $"- [($i.number)]\(($i.url)\) ($i.title) \(@($i.author.login)\)" > } > | reverse > | to text > ```