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