# Nushell core team meeting 2023-06-21 ## Attendees - Darren - Antoine - JT - Andres - Michael - Stefan - Jakub - AucaCoyan ## Agenda - [x] road to 1.0 - Blog post to announce direction and the change in release frequency: https://hackmd.io/@nucore/ByiV2Vl42 - [x] algorithmic speedup: stop accepting PRs with additional dependencies to nudge the focus of contributors towards the existing algorithms of Nushell - [x] Reworking strings proposal (with breaking changes) - [ ] parse-time evaluation: the block problem - [ ] contributor suggests a nu-plugin refactor to better separate nu and plugin side responsibilities https://github.com/nushell/nushell/issues/9469 - [x] https://github.com/nushell/nushell/pull/9455 our *python-virtualenv* tests are failing. Can we ignore these failures and go ahead and land the PR anyway ? # Discussed Topics ## String discussion - JT's proposal to kick off: single quote string would be unescaped and also allowed in the command position. remove the backticks - Darren: I still hate double quote escaping for Win - drag and drop paste is adding double quotes - Does nuon have to be a JSON superset? - Another argument for having escaping with double quotes: most programming languages do it (C, JS, Python etc...) - Shell specific escapes `\ ` are a different beast - Differentiating between those literals that expand expressions and those that keep them raw - Variable or expression expansion is a different complexity compared to path expansion (not just scope but also environment) - role of a quoted string in command position. is it a string or something to execute - Jakub: can we just stop having automatic execution of some string type without `^`, only use the caret to execution of quoted strings. True bare word would still work ## Parse-time evaluation: The block problem During parse-time evaluation, only permanent state (result from the previous parse) is visible. The current parsing results are not visible to the evaled commands, see: ```rust pub trait Command: Send + Sync + CommandClone { // What we have: fn run( &self, engine_state: &EngineState, stack: &mut Stack, call: &Call, input: PipelineData, ) -> Result<PipelineData, ShellError>; // What we need for a proper parse-time evaluation: fn run( &self, working_set: &StateWorkingSet, // <<<<<< stack: &mut Stack, call: &Call, input: PipelineData, ) -> Result<PipelineData, ShellError>; } ``` ## 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 > ``` ### old PRs https://github.com/nushell/nushell/pull/9170 https://github.com/nushell/nushell/pull/9083 https://github.com/nushell/nushell/pull/9032 https://github.com/nushell/nushell/pull/8938