owned this note changed 2 years ago
Published Linked with GitHub

Nushell core team meeting 2023-08-23-

Attendees

  • Darren
  • JT
  • Amtoine
  • Storm
  • Jakub
  • Stefan
  • AucaCoyan

Agenda

  • 0.84.0 release post-mortem
  • Today is Nushell's public birthday. Should we write something?
  • @amtoine's PRs: here
    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 →
  • uutils uu_cp PR is up here - 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)
  • are we ok now with the pinned/unpinned PRs based on the serde drama?
  • Next steps for parse-time evaluation:
    • Merge https://github.com/nushell/nushell/pull/9499
    • Which built-in commands to allow?
    • parse-time eval of if: use (if $constfoo { 'spam.nu' } else { 'eggs.nu' })
    • $nu
    • parse-time eval of custom commands (def vs. requiring const def)
  • Pushing forward with the span refactor
  • the future of extern-wrapped
    • simple rename (e.g., def-wrapped)
    • use flags on def (see Discussed Topics)
  • 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

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
  • 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)
  • great timing
  • should help with open-Value surgery
    -> Get it in before the despanning

extern-wrapped

Suggestion (chosen approach):

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):

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

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