# 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
> ```