# Nushell core team meeting 2022-06-08 ## Attendees - Darren - Michael - Jakub - JT - Reilly - Stefan - Andrés ## Open topics ## Discussed topics - Compiler design lessons from jakt selfhost - Having a compiler stage struct that contains a list of errors to add. - Error convenience - Errors in a traceback - Experience currently depends heavily on the quality of the individual error emitting locations - Despanning - Lets try to move from `value.span()` to `expr.span()` instead of doing the hard refactor first - not carrying spans on `Value` should reduce the memory footprint and thus improve performance. - Flag passthrough - Should externs pass undocumented/able flags - Problem: positionals vs values for flags - Ordering has to be preserved! (Tools might only accept flags and positionals in a particular order) - ?: Workaround with annotations for the parameters or flags with `^` - Optimization for REPL vs IDE - Nushell is very static + deltas as an optimization for the repl but this is hard if we want to do IDE support for larger scripts. - Maybe take inspiration from jakts IDE approach - Treesitterability of nushell - Performance monitoring - Jakub introduced `$nu.scope.engine_state` to get statistics about what the engine is holding - We probably need a GC sooner rather than later. - Can we serialize stuff as parquet to keep the hot memory smaller. - Great place for serialized data might be `last_result` - Data(frame) optimized engine tradeoffs - Datafusion style engine - Sequential optimized shell engine - Dataframe highly efficient on a special subset of problems - How can we get nushell commands to dispatch on all different data representations. - SQlite history part 2 (land it in nushoell) - landed in reedline, nushell not yet adapted to the new API (independent of whether a text file or sqlite is used) - Goal: have the option in the config to toggle on the new history to test it. (Currently no tangible benefit yet) - Some TODOs in phiresky's code, porting of the `history` command. - Benefit of making it a compiler flag instead of config flag is minimal as the API adaptations have to be done anyways