owned this note changed a year ago
Published Linked with GitHub

Nushell core team meeting 2023-10-18

Attendees

  • Antoine
  • JT
  • Michael
  • JokeyRhyme
  • Jakub
  • Stefan
  • Darren

Agenda

  • Observations from the 0.86 release
    • Winget recap
      This works in ci
    ​​​​    - name: Setup Rust toolchain and cache
    ​​​​      uses: actions-rust-lang/setup-rust-toolchain@v1.5.0
    ​​​​      with:
    ​​​​        rustflags: '' 
    
    This does not work in ci
    ​​​​    - name: Setup Rust toolchain and cache
    ​​​​      uses: actions-rust-lang/setup-rust-toolchain@v1.5.0
    
  • nu lsp implementation
  • Check-in on the "big issue" items
  • Reserving words for our core built-in functionality
  • sccache in our ci discord link. 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

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:

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

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
the issues which needs-core-team-attention

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Note
to list all the PRs currently opened in nushell/nushell:

gh pr list --json url,number,author,title
| from json
| each {|i|
    $"- [($i.number)]\(($i.url)\) ($i.title) \(@($i.author.login)\)"
}
| reverse
| to text
Select a repo