owned this note changed 2 years ago
Published Linked with GitHub

Nushell core team meeting 2023-09-20

Attendees

  • JT
  • Stefan
  • Antoine
  • Michael
  • NotLebedev
  • Darren
  • FilipAnderson
  • Reilly
  • Jakub

Agenda

  • release issues? (lots of comments on faster startup)
  • complex type annotations (#10405)
  • Fuzzing the parser
  • Defaulting history to sqlite with history isolation versus plaintext 10440
    • Related: request for migration script/tooling #9403
    • What does history isolation mean ?
    • Negatives: Much more challenging to edit your history going forward
    • I (storm) have had cases where I "mess" up my history file by adding an entry I no longer want to appear in the history and so I have to go in and hand edit the file.
    • If we move in this direction we should have scripts that enable one to remove a particular history entry by running a nushell script and it should be documented ?
  • Long/multiline strings do we need a nicer way to create them?
  • Making progress on the "hard stuff"
    • stdout/stderr
    • signals and background tasks
    • resize + reedline
    • streams as values

Discussed Topics

Release issues

  • NetBSD: Issue delegated to uutils

Startup

  • Darren observed significant improvements
    • allocator
    • platform specific compilation on Mac Aarch64
  • [[[[[[[ worse case, possibly there was a problem even for sane parses
    • Kubouch doesn't observe bigger changes
  • Antoine: Major contribution of config/stdlib to startup delay
  • How to instrument contribution of parsing and evaluation of that
  • Darren: JT removed profile instrumentation, probably remove the command/collection
    • Kubouch on it

Complex type annotations

  • currently we don't report changes to inner types in commands
  • escaping to any is still frequently needed
  • JT: hack record<...> would be allowed in a more concrete requirement
  • NotLebedev fixed lexing stage of the parser
  • do the change to the semantics in the

we now have fuzz targets

Changes to the history

  • Julian Hofer improved history_isolation:
    • Sqlite only (at the moment)
    • parallel sessions will be isolated
    • but now you can still read your old history
  • Julian proposing to make this the default
  • Migration from text before landing
    • history migrate? as a command
  • Jakub: sync option to unify the sessions if needed
  • Michael: deletion of entries should be easy with the sqlite db as well

-> tracking issue and wait with making it default in a release

Long/multiline strings

Currently a bit unpleasant to type

Long strings examples:

let text = $"expected `$.type` to be one of [module, script,"
    + " custom], got ($package.type)"
throw-error ($"Module package '($package.name)' does not"
    + $" contain directory '($package.name)'")

Darren: the line editor will accept the example when pressing enter on the first line

Multiline strings example:

throw-error (
    [
        $"package_file_not_found(ansi reset):"
        $"no 'package.nuon' found in ($dir)"
    ]
    | str join (char nl))

Jakub: should we have the python like triple quote strings. not closing the quote to continue (tricky due to leading whitespace semantics)

  • e.g. long (external) command
  • Parentheses are adding a subexpression (collecting)
  • \ as a line continuation + windows path separator a problem
  • no easy/good continuation character
  • NotLebedev: % rarely used (missing new line indicator in some shells)
    • Q: is this valid syntax where it matters
    • used in Windows special variables
    • valid filename on linux
    • URLs
  • Jakub: For externals you can pass a list of arguments

Outstanding big issues: Making progress on the hard stuff

  • Background tasks
  • reedline rough edges

Scary to tackle, no progress from us at the moment

  • JT: Can we get folks chipping away at the big blockers
  • Stefan: Tracking issues collecting the research

Reedline

Parser

  • few people can review PRs and hack easily
  • incremental vs rewrite of large blocks
  • are we calcified in our design?
  • data oriented design enticing (possible performance)

Span separation

can we move to ids, smaller than our current Span

  • would already provide a compression
  • no separate logic with Spanned/UnspannedValue
  • cost only at error print time

Goal having those actual spans living with the AST. So no independent Span pairs (which would require separate GC), engine_state doesn't evict code currently anyways

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