# Nushell core team meeting 2022-06-01 ## Attendees - Jakub - Michael - Fernando - Andres - Reilly - sholderbach (note-taking) - jt ## Open Topics - Hook and overlays getting everything to work - Dataframe overlay ## Discussed topics ### Arrow and dataframes - Arrow provides efficient operations and memory representation - core arrow: memory format spec - Where to get our query planning from? - arrow rust is currently fragmented into two implementations. - polars with `arrow2` - other projects use `arrow` - Ideas - Everything in memory vs chunked. - Backing storage if likely going out of memory (e.g. parquet files) - Good examples of using Arrow and Dataframes - [Iox](https://github.com/influxdata/influxdb_iox) - [Ballista](https://github.com/apache/arrow-ballista) ### Detour: Asynchronous execution model - Q: Is it a fit for nushell after engine-q? - JT reports from/about tokio - Obvious: UI interactiveness - But: traditional shell use not many tasks like a webserver - Shell has some significant (file) I/O - For direct use in the nu language we would need language components (select the first succeeding, collect unordered, collect in sequence) ### Thought to sleep on: Who is the client of nushell? - Jakt's design was so fast due to the explicit rails of the SerenityOS project. Nushell is more than one thing but what do we want to address - Nushell as a toolbox (current developments: overlays, "overloading") ### Nu is more than just shell - Do we want to drop `shell` from `nushell` in official communication as we can more than just traditional shell work with the language? - Reaching out to get github `.nu` support - Resolving the name/syntax highlighting conflict with the current but abandoned `nu` ### Permeable/Transparent/Environment touching blocks - Idea JT: split closure / block - Special sigil for immediate evalution on the block to create environment effects. - would not be available for functions - Corner case: overlays already provide defs etc. and are special scopes - maybe requires two modes: basic environment affecting and overlay definition affecting - Kubouch: define at the callsite (like rust unsafe block?) - but do we really want those annotations to become viral (annotation on every function that might be affected by use of `@env`)? ``` def-env foo [x: int] { let-env FOO = $x + 10 } foo 10 # Very common use case users expect @env @overlay if 4 > 2 { overlay add spam } else { overlay add eggs } ``` ``` def foo [x: Closure] { @overlay do $x # ???? who knows what happened } ```