# Nushell core team meeting 2023-11-08
## Attendees
- Darren
- Antoine
- Ysthakur
- Sophia
- Stefan
- Kubouch
- WindSoilder
## Agenda
- [x] invited ysthakur to discuss [spread operator](https://hackmd.io/YQIOzZ57SUyASI1DHYCa3w?view)
- [x] errors as values
- [x] nu-parser
- [x] `exec` for windows has landed, but differently
## Discussed Topics
### Spread operator
https://hackmd.io/@ysthakur/nu-spread
#### Initial design questions
@ysthakur
- Scoped: only inside list/records/ when calling commands
- What to do with string as the operand of a spread?
- e.g. python turns it into list like iterator
- What could be potential restrictions
Kubouch:
- I would like it in simple cases:
- we have some preexisting commands
- for the command calls it is tricky as we have some times type restriction and some times not. (parsing of ...rest list into sane parameters)
- `**kwargs` in python would be tricky as we have both positional and keyword arguments mixed
Sophia:
- How to spread mixed type lists
- JS spreading strings feels yucky: what is the sensible unit to split on
- don't spread strings
- we have explicit commands e.g. `split chars`
#### Detour: destructuring pattern matching in assignment
https://hackmd.io/@ysthakur/nu-spread#Example-3
Q: how to handle errrors if pattern doesn't match. strong assumptions about what the parser returns
#### good starting point
- spreading in list & record literals sounds straightforward
- Complication in table literal:
- should it spread to column/row
- validation
- call site would need some look into the type/checking
- crawl/walk/run
#### Syntax
`...` used in existing `...rest` params
`..` for match => should probably change at some point for consistency in a separate PR
`..$var` can be confused with a range
Go with `...` for spread
### Errors as Values
Errors are behaving pretty much like exceptions (raise out if they are part of a pipeline, get caught by `try`/`catch`)
Could Errors be just a tagged version of a `record` -> destructurable (opposite of `error make`)
JT:
```
match $foo {
error { msg, start, end } => {
print $msg
}
}
```
- this would disfavour enum like error style internally: we don't have enums in Nu atm
- error/codes link
Kubouch: give this `record` in the closure args of the `catch` block
- we currently pass the `Value::Error` which would immediately reraise taking it out of the argument
- implement serialization and this would become usable
### new-nu-parser
has been on the backburner but slow and steady we will move forward
### `exec` for windows
- unix side will still behave the same
- IanManske, ChrisDenton, Darren workshopped how Windows works
- behavior should follow how `cargo` solve the problem for win
- Darren hopes that in the future we could replace a running nushell with the new version after an update
## 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
> ```