# Nushell core team meeting 2023-10-18
## Attendees
- Antoine
- JT
- Michael
- JokeyRhyme
- Jakub
- Stefan
- Darren
## Agenda
- [x] Observations from the `0.86` release
- [x] Winget recap
This works in ci
```yaml
- name: Setup Rust toolchain and cache
uses: actions-rust-lang/setup-rust-toolchain@v1.5.0
with:
rustflags: ''
```
This does not work in ci
```yaml
- name: Setup Rust toolchain and cache
uses: actions-rust-lang/setup-rust-toolchain@v1.5.0
```
- [x] [BSD build fail due to breakage in `trash` crate](https://github.com/nushell/nushell/issues/10750)
- Stefan's draft of a [Nushell platform support policy](/bBuZlJ0VSgad-0621ARCTA)
- [x] nu lsp implementation
- [x] Check-in on the "big issue" items
- [x] Reserving words for our core built-in functionality
- [x] sccache in our ci [discord link]( https://discord.com/channels/601130461678272522/1164195654470488167/1164195791846506577). Would be good to test it out.
## Discussed Topics
### Release recap:
- Winget failed due to a small change. `rustflags` need to be explicitly unset else the installer fails.
- Warning comments have been added!!!!!!!!!!!!
- additional CI
- Small breaking change in our release script JT had to fix.
- BSD failed due to an upstream change.
- they can patch the lockfile
- annoyance but probably not to the level of requiring a hotfix
#### Platform support policy
read and discuss offline
### `nuls`
jokeyrhyme picked up writing a Rust implementation of an LSP for nushell: https://github.com/jokeyrhyme/nuls
uses `tower-lsp` crate as the foundation (`tokio`, `tower` stack)
Currently standalone (like JS impl in the VS Code extension)
Calls the `--ide` flags
- PR for `vscode-...` https://github.com/nushell/vscode-nushell-lang/pull/162
Separate effort: https://github.com/nushell/nushell/pull/10723
- Directly integrates itself into `nu`
- different lsp foundational crate
#### state of nuls
- offset bugs that need some work
- throttling/debouncing needs some tweaking
- async-rust experience wanted
#### JT: vision for LSP support
- often two separate "compilers" rustc + rustanalyzer
- as so many editors support LSP now
- lets just ship it in one
- could we find a hybrid: efficient lsp integrated into `nu` binary (best of both PRs)
- currently engine internals are really tweaked for REPL use (parse/typecheck and then eval) how well is that tuned for multithreaded access?
Jokeyrhyme:
- would love to do an incremental approach. start from the calling into the process.
- not particularly attached to the multithreading effort (nice byproduct of `tower-lsp`) still somewhat of a challenge.
- can we transform it into a workspace crate
- JT: multithreading for latency (depends on how malleable how our engine is)
- nuls has some more features
- Darren: have seen the crates used by the other PR lsp-types, lsp-server
- Darren: Q about developing LSP/Nu inside Windows existing session
- potentially easier with a separate executable (like rust-analyzer)
- Darren: incrementality is fine/great. e.g. allow the extension to move over to the new rust implemented lsp
### Big ticket items:
- [Bullet ownership](/z28xTn7LQGG8wsrIkTWsEw)
### News from the new-nu-parser land - reserved words
arises from the new-nu-parser work
- observation implementing lsp queries on this architectures was blazingly fast (JT's different project with that arch)
Staging:
- first parsing
- typechecking and name resolution
stage 1 is much easier with reserved true keywords (full on grammar for most of the basic constructs)
-> folks are ok with us commiting to the keywords
stage 2 may lead us to a vm for the implementation of the reserved word ops
### `sccache` instead of the `target/` caching in CI
- fasterthanlime shared an impressive improvement from 9 min to 1-2 min for CI times
- worth trying out:
## 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
> ```