# Nushell core team meeting 2023-10-04 ## Attendees - Darren - JT - Antoine - Jakub - Michael - Stefan - WindSoilder ## Agenda - [x] Should there be a separate type for a table compatible with any narrower table or could table without columns suffice? [#10594](https://github.com/nushell/nushell/pull/10594) - [x] (@amtoine) do we agree on renaming all *date*s to *datetime*s? ([#10332](https://github.com/nushell/nushell/issues/10332)) - [x] (@storm) make some of the nushell crate apis similar to the [reedline api](https://docs.rs/reedline/0.24.0/reedline/) which rocks (is really good) - [x] New parser updates/aspirations [Parser walkthrough](/LhZpgCQjQju7O9-l0ditIA) - [x] How to do tests? - [x] do we add `rustls` behind a feature? ([#9798](https://github.com/nushell/nushell/pull/9798)) ## Discussed Topics ### unspecified table or record return type Question posed by [#10594](https://github.com/nushell/nushell/pull/10594), should there be a separate `AnyTable`/`AnyRecord` return type that will be accepted by any constraining specific table e.g. `table<foo:int>`. JT: in practice it would make sense to just accept `table<>` as the any type Stefan: simpler to teach Darren: are there possible scenarios? Revisit if it turns out there is a problem ### `date`/`datetime` - `into datetime`, `datetime now` - should we leave just the `date ...` commands? - only rename the type related things? - JT: bifocal glasses metaphor from the PowerShell dev history book - consistency is not the endgoal: ergonomics ### API docs - docs.rs - reedline has `#[warn(missing_docs)]` enabled - READMEs per crate. - also relevant subdirectories - the latter harder to keep up to date ### New nu parser - Walkthrough during the state of https://github.com/jntrnr/new-nu-parser - Michael:? Role of the lex - Darren: Lossless parsing (inspiration rust-analyzer) - preserving comments - nufmt discussion - attributes - Jakub: `def --env` flag is floating at the moment. would this fit - could be done even in the keywordy - Darren:? is this parser more introspectable/tracing - tracing should be possible as part of development - user should not care too much about particular details of parse time - engine probably more impactful - Kubouch: how should we go about the integration into the existing nushell. - ast/syntaxshape - span refactor vol2 engine boogaloo (from span -> spanid -> nodeid) Goals: - readability/maintainability - optimizability through flat ast repr - get more folks comfortable with the parser! ### Test runner for nu code - Kubouch: `nupm tests` - check for module, read `scope commands` - downside: can't be inline in the same module - need to spawn nu for each test and still parse the whole module under test (and its deps) - current test runner for the stdlib: lookup of annotation through manual reparsing of source - `#[test]` - Keyword/Annotation syntax? - not the hard part to punch out syntax/parsing - but hard to nail down the whole test framework that makes sense for nushell (constraints of nushell) - setup - teardown - also benchmarks - `eVaL` for reflection - nu `comptime` reflection to emit a limited set of "macros" - or just write some test facilities in `nu` rust - deep introspection - resetting of the engine possible (butterfly meme: is this eval) - general desire for annotations/attributes/conditionals ### Rustls - OpenSSL proven, problems known - rustls unknown - CVE management harder compared to dynamically linked to system OpenSSL - early adopter tax for compatiblility on platforms/configs - Additional feature to maintain, make a call about for 1.0 Conclusion: Don't take it now as we try to be conservative. Recommend that they can maintain a fork/patch we will share if folks are interested in running it for their system. Storm will follow up with this person and let them know that the core team has agreed to link to the doc explaining how folks who want to link in rustls can do so. Also, for folks who are interested in rustls they can talk to other folks in discord about how to build rustls on their own. ## 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 > ```