# Nushell core team meeting 2024-04-03
## Attendees
- Jack
- Darren
- Filip
- Jakub
- Stefan
- Michael
- Antoine
- Ed
- Ian
- Andy (@ndyg)
- Devyn
- Yash
## Agenda
- [x] Release - patch release needed?
- [x] [12383 hook fix](https://github.com/nushell/nushell/pull/12383)
- [x] [12341 drop notification fix](https://github.com/nushell/nushell/pull/12341)
- [x] Nushell 1.0: Bringing crates to soft-1.0 in stages
1. Language (nu-parser, nu-protocol, nu-cmd-lang, nu-engine)
2. Commands (nu-command)
3. Standard library (nu-std)
4. Plugins (nu-plugin)
5. etc.
- [x] Safety and Security in/around/with Nushell
- "supply-chain"
- Safety: mistakes/bugs that can cause serious damage
- Security: which threats apply to users using Nushell?
- policies we can actually implement?
- [x] Derive macros & traits for converting structured Rust data to/from Values (Devyn)
- `FromValue`
- `ToValue`
- `UpdateFromValue` (for error-tolerant config pattern)
- compare this vs. trying to make serde work
- [x] Performance engineering
- benchmarks/visibility
- priorities
## Discussed Topics
## post 0.92.0
- Hook fix by Ian
- regression due to changes to stack/engine state (root stack)
- annoying as it breaks virtualenv activation logic (and potentially other similar env or overlay related)
- looking for willing testers
- Sentiment: worth a patch release
- drop notification behavior of plugins
- devyn started on a PR to address non-compliant behavior before the release
- stefan head some questions but not reviewed/signed off before release
- test of the wrong behavior that should now be fixed
- default_config.nu breaks on termux
- clipboard feature doesn't work on all platform but the file currently included a binding using the system clipboard
- (antoine's `nu_plugin_explore`)
- broke with the plugin protocol changes
- (Devyn: surprised that it worked even before)
- STDIN is not available to the plugin now
- Decision: patch release as soon as the relevant commits are ready
## Stabilization to 1.0
- Jakub: gradual stabilization strategy
- what can we leave out of the initial 1.0 date
- the volume of commands is overwhelming to get into a "we can guarantee stability" state
- Ed?: are there change planned with `new-nu-parser`
- different approach
- we don't expect too many deliberate language changes
- edge cases may change
- ripping out problematic ambiguity (may lead to changes)
- may affect our type checking logic
- Devyn: level of stabilization for internal crates
- need to maintain semver for the cargo build system
- but we could still keep the internal crates evolving
- The main promise
- any script written for 1.0 should work forever
- challenge compared to bash etc.
- we also contain a ton of commands
- thanks to the new plugin frontier we are able to implement more of the commands in plugins
- plugins
- strategy to ensure semver logic for plugin/engine compatibility check
- Jack:
- deprecation strategy
- what to do if we have to do a breaking change for good cause (do a major version bump)?
- plugin installation strategy
- this is currently hard to distribute if you don't live in the cargo ecosystem
- nupm -> become part of the 1.0 roadmap
- dataframe deprecation for 1 release than remove as the polars plugin
- Summary of things we want on the 1.0 roadmap
- nupm for plugin distribution
- new-nu-parser switch if possible
## Safety / Security
- Distinction: core of nushell and the surface of all the commands
- Examples for Security
- `query db` hardening against sql injection
- dependencies / supply-chain
- moving to plugins reduces our surface
- reducing
- Examples for Safety
- `mv` affected a user on discord
- using the uutils `mv`
- operation not fully atomic to roll back
- Devyn: should we make trash the default
- in the past we had it for a while
- pushback due to slowness on windows
- probably not good for scripts, so interactive mode only
- procedure/system
- responsible disclosure
- security email
## derive macros for core values
- serde does not get us at the span while parsing
- can we have an error tolerant version for config
- here the management of the manual code is hard
- Sophia: serde bit us in the past for performance reasons
- Darren: we were/are pretty strict on our "let's not write macros" rule
- exceptions exist: `record!`
- what is intuitive can be subjective
- maintainenance cost (fewer maintainer/contributors are macro proficient)
## perf engineering
- benchmarking
- divan vs criterion
- divan doesn't support machine output
- simpler
- faster local runs
- criterion is not moving as much
- overconfident
- more stuff to configure
- benchmark ideas
- more complex functions/scripts
- testing different conditions (e.g. operation, operation as a function, operation as a closure)
- overall diversity (math, fileops, load+mutate+save etc.)