2023-08-01 10:04:27 by pin | Files touched by this commit (3) | |
Log message: shells/nushell: update to 0.83.1 Nushell 0.83.1 (hot-fix) A few days ago, we released the 0.83 version of Nushell. As you can see in the release notes, the release included a major upgrade to the type system as well as wide-reaching breaking changes. Extensive efforts were made before the release to mitigate these changes to make them easier to adopt when 0.93 was released, and included: - quite a lot of command signatures have been updated to keep functionalities at the same level while adding better type checking - major integration scripts from 3rd-party applications have been fixed prior to the release However, as you might have noticed and thanks to the feedback of you the community, more issues and bugs have been found. Many commands needed additional updates to play well with the updated type system. We decided to release a hotfix release to address what had been found, and this is that release. You can find out more about the hotfix in Tracking issue for 0.83.0 fixup #9812 What does the hot-fix release address? Most of the type-system-related issues have been fixed, hopefully bringing most of the command set of Nushell back to its previous feature level with the nice addition of better input/output type checking and annotations. In a few places, the type system itself was fixed, as with the case of $rest args now type-checking correctly in a pipeline. What will the hot-fix release NOT address? Bring the let-env command back to life. Thankfully, the community helped by updating their Nushell integrations and releasing corresponding new versions. Please, check your tools like starship for updates. Fully fix the dataframe integration. When upgrading the type system for the 0.83, we removed a semi-working system that enabled the dataframe commands to run both in a lazy and eager mode, but only if the types were known at parse-time. Due to the complexity of reworking this and the dataframe support currently being a tier-two feature in Nushell, we won't be able to fully fix this with this patch release. Thankfully @ayax79 started work in #9858 which promises to make the dataframe commands work again within the general Nushell type system. Breaking changes for plugin authors With the type system changes in 0.83.0 any plugins that declared that their signature "vectorizes_over_list": true were not able to automatically \ broadcast their operation for a type T (e.g. number) over a list<T> input. With this \ patch release, we removed this field from nu-protocol. You need to add the list<T> signature if necessary. Also recompile your plugins using nu-plugin 0.83.1 or remove the vectorizes_over_list field from the signature information if you don't use nu-plugin (e.g. plugins not implemented in Rust). Breaking changes for plugin users You may need to recompile or update your plugins and then re-register your plugins. |
2023-07-26 21:36:37 by pin | Files touched by this commit (3) | |
Log message: shells/nushell: update to 0.83.0 Themes of this release / New features Since last release, some commands have changed and some have been created, here is a list of some changes and what they mean: - amtoine in #9646 : which returns the type of the command instead of only whether it is builtin or not and uses more explicit column names - atahabaki in #9750 : str expand now allows empty member in brace expansion, e.g. A{,B,C} would expand to [A, AB, AC] - fdncred in #9669 : keybinding listen gives more information about keys like home and end, namely their kind and state - NotLebedev in #9453 : input listen allows to query for a single key press, e.g. the following will take a 4-char input 1..4 | each { input listen } | where key_type == char | get code | str join - kubouch in #9687 : path commands lose the -c flag; instead, use update to update table columns Command set refinement efforts Again with this new release, we are continuing refining our set of core commands. As part of this, another set of commands have moved to extra. Thanks to folks who are helping our efforts on the road to 1.0! Note No command has been removed completely, they have just been moved in the extra feature of Nushell. simply use cargo ... --features extra to reenable them. Math commands have been moved by @stormasm in #9674, #9657 and #9647 and the following commands have been moved in #9404 : fmt, each while, roll, roll down, roll left, roll right, roll up, rotate, update cells, decode hex, encode hex, from url, to html, ansi gradient, ansi linkand format Language improvements Since last release, a few changes have happened to the Nu language itself. Declaration and assignment of variables Until now, declaration keywords such as let and mut have required the use of parentheses around pipelines to assign the output of a chain of command to a variable. Thanks to @jntrnr in #9658 and #9589, this syntax has been relaxed for let and mut. Another parser improvement has to do with the use of if and match in variable assignment. In #9650, @Windsoilder Input / output type checking and annotations (@jntrnr) Nushell as a language is more strictly typed than other shell languages. However, not everything was type-checked nor possible to annotate and this new release tries to fill this gap a bit more. First, #9686 makes the input / output type signatures clearer in the help pages of commands. Then, #9690 and #9680 enable input / output type annotations on custom commands and enforce a strong type checking on the input and output of commands. This means a few things: - the input / output of custom commands can be annotated - some type-invalid calls to commands are now parsed as an error, e.g. 123 | get foo gives the an error. This is still a work in progress, so some commands might have incorrect or missing input / output type annotations 😮 This is expected and we worked and are working on this to fix all incorrect signatures (#9755, #9749, #9707, #9706, #9695, #9683, #9775, #9741, #9742, #9739 and #9778)! Shoutouts In between the two releases, @1Kinoti has worked on some nice improvements to the language - match guards have been added to the match command in #9621 - table types can now have parameters, just as records and lists can, thansk to #9613 - structural subtyping has been improved in #9614 and allow to match structured types regardless of the orders of the fields Configuration tweaks Contributions have been made to give a more consistent and sensible default experience in Nushell, both when using the default_config.nu config file or when not having a config, e.g. with nu -n. A better right prompt has been written in #9585 and #9581 and the default configuration has been polished in #9676 The standard library The biggest topic in this 0.83 release for the standard library has been the test runner! Thanks to @Yethal, the test runner of the standard library can now use annotations to decide whether or not to run a command as part of the test suite of a project: #9628, #9622, #9611 and #9406 and std testing run-tests would successfully run the addition test, no need to define tests with test_ in their names! Thanks to @Hofer-Julian (#9607), the standard library now also comes with a pwd command that tells you were you are in the filesystem. Breaking changes PLEASE NOTE: there are some big breaking changes in this release. These include: - Removal of let-env (now use the $env.FOO = "BAR" form instead) - Stricter checking of input/output types - Transitioning of a set of commands to now be avialable via extra feature rather than default |
2023-06-28 10:57:14 by pin | Files touched by this commit (3) | |
Log message: shells/nushell: update to 0.82.0 Today, we're releasing version 0.82 of Nu. This release focuses on polishing the user experience. Note: Beginning with this release, Nushell is switching to a four-week release schedule. For details see, https://www.nushell.sh/blog/2023-06-27-road-to-1_0.html NOTE: The optional dataframe functionality is available using --features=dataframe This feature is not enabled by default on pkgsrc. To compile with this feature add 'dataframe' to the list of features defined (CARGO_FEATURES+=) in the package Makefile. As part of this release, we also publish a set of optional plugins. Themes of this release/New features: - Custom datetime format (@fnordpig) Until now, Nushell did not allow changing the default format of dates and times, leading quite often to undesired rendering, e.g. seeing 'A year ago' in the output of ls when one wants to know the exact time. #9500 introduces a new config option to change the default output of dates and times. - Support for comments in multiline pipes (@WindSoilder) From now on, either in the REPL, in scripts or in modules, you can comment out any line of a multiline pipe without breaking its execution. This hopefully makes debugging and testing part of a pipeline much easier! - Continuing cratification effort On the road to 1.0, we have started moving commands around to make place for those which really matter. As this process involves the creation of some new Rust crates, e.g. nu-cmd-extra, we call it cratification 😃 With this new release, the bytes commands have been moved behind the extra feature (use cargo build --features extra to activate them back). Apart from moving less stable or common ocmmands behind flag, this should also improve compile times for everyone. - Splitting the $nu variable (@jntrnr) Nushell 0.82 introduces a new familly of stat commands, the scope ... commands. These commands allow you to access some information about the current Nushell instance that were previously available in the $nu variable! e.g. $nu.scope.commands now becomes scope commands. On the other hand, $nu becomes much smaller and only holds simple paths and constants. - Entering Linguist support (@hustcer) With the efforts of @hustcer, Nushell is now an official language of Linguist, allowing for better language support in GitHub. - REPL: Mark line entries as excluded from the history by leading with a space (samlich) In some situations you may want to avoid storing an entry inside your shell history. For example if it includes a secret or running it again in a different context could be dangerous. To stop nushell from storing a particular line in its history you can now start with a space and it will be ignored. You can still recall your last entry once by pressing the Up-Arrow but the command will never be written to disk and disappear as soon as you submit another command. - New commands http options scope aliases scope commands scope engine-stats scope modules scope variables scope - Breaking changes #9509 Cratification moves the bytes commands to nu-cmd-extra. They are thus only accessible with --features extra #9496 Clean up config by removing legacy options that were previously deprecated. #9487 Split $nu variable into scope commands and simpler $nu #9427 The filesize prefixes Z/Zi have been removed as their underlying values where not correctly representable. #9407 In the ls --long output the uid column has been renamed to user to be consistent with group #9368 Don't allow save command to save both stdout and stderr to the same file |
2023-06-07 16:37:52 by pin | Files touched by this commit (3) | |
Log message: shells/nushell: update to 0.81.0 Themes of this release / New features Polishing the experience This release focuses on improving the user experience, fixing some long-standing bugs, and adding a few helpful features. One of the bugs that was fixed for 0.81 was a long-standing issue with reedline, Nushell's line editor. Now, Nushell will prefer to move to make room for text that had been output rather than risking writing over top of it. This maybe improve the general experience of working in the terminal, resizing, and more. There have also been fixes to table printing to make it work better for more cases. Startup time improvements Startup times have also been improved. Through a combination of various fixes to both how the standard library files were handles and how the parser worked, we've been able to see significant improvements, sometimes as high as 30-50% faster. Breaking changes We had to remove ARMv7 and RISC-V from this release due to a breaking change in one of the dependencies. We hope to resolve this for future releases. Exclude globs now need square brackets view source now works over rest arguments alias calls are now position dependent |
2023-05-17 23:33:35 by pin | Files touched by this commit (3) | |
Log message: shells/nushell: update to 0.80.0 Themes of this release / New features - Record type annotations (@1Kinoti) Starting with this release, you can add more information about the type of a record your command expects. For example: def okay [person: record<name: string age: int>] {} The above will require two fields to be present, a name that's a string, and an age that's an int. The current version requires that the record has exactly these fields, though we may loosen this in future releases to allow for structural subtyping. - Modules from directories (@Kubouch) It is now possible to create a module from a directory. The directory must contain mod.nu and all other .nu files are added as a submodule of the module. This allows some traditional shell patterns such as dumping completion files into a directory to be loaded automatically. Check out the newly updated book chapter for more details and examples. The enabling feature for module directories was organizing modules into submodule structure instead of solely relying on re-importing symbols with export use. module and especially export module have been added as a result of this change. While not immediately visible, the module update allows for cleaner submodule oganization without relying on re-exporting symbols with export use. Since modules are now aware of their submodules, in the future we hope to improve discoverability of definitions within modules, enhancing our IDE support (such as our LSP). - Stdlib update ([@amtoine, @EmilySeville7cfg, @skelly37, @YummyOreo] [std-lib PRs]) Breaking changes - #8940 Change type of parameter default values to Option<Value> - #9007 Fix unexpected flattening of data by par-each (Issue #8497) - #9056 REFACTOR: remove deprecated commands (old-alias) |
2023-04-27 09:16:17 by pin | Files touched by this commit (3) | |
Log message: shells/nushell: update to 0.79.0 Themes of this release / New features - Standard library (@amtoine, @bobhy, @fdncred, @presidento, ...) This is it. We finally release the standard library with this 0.79! It's been on the mind of the core team of Nushell for some time and it was made real between the two releases. But first of all... what is the standard library? The nushell standard library is a collection of nushell scripts that are automatically loaded in the nushell binary and reachable via the use command without any additional setup. Note: some of the commands from the standard library are used without human intervention as part of what we call the prelude. As said above, the other commands are available with the use command. The goal of this library is, as its name suggests, to provide a standard experience and a standardized set of commands and tools to any Nushell user. In std, one can find things like: - a test framework to write robust Nushell scripts, modules and libraries - implementation of builtin commands once written in rust - logging commands with several log levels - ... Note: yes, you heard right, in the future, the standard library might become a sanctuary for non-time-critical commands that were once written in rust as part of the built-in set of commands! Right now, we are actively trying to move the help commands from the nushell core implementation to the library. With this release, the library comes with the following custom commands: std assert, std dirs, std help, std iter, std log and xml module See https://www.nushell.sh/blog/2023-04-25-nushell_0_79.html for a description of these and a list of available sub-commands. some other commands live under the std namespace, without any module: clip, path add and run-tests. - TL;DR As there has been quite a lot of contributions already (see the 50 closed PRs at the time i'm writing this), i'm just gonna give some hints and links in this release note, leaving the rest to the amazing work of other contributors who wrote parts of the lib and its documents (shout out to @bobhy, @fdncred and @presidento) - the library can be used and tested with or use direct imports, such as use std dirs - one can follow the activity of the library in the roadmap - the library comes with a test framework; see the Testing your Nushell code chapter of the book - the long term information, changelog and updates shall be found in the Standard library chapter of the Nushell book - if you are a contributor willing to help out, everything happens in the nu-std crate, especially the CONTRIBUTING.md document which explains all there is to know about "developing with std" in great details. If, for some reason, you want to load Nushell without the standard library, start nu with the --no-std-lib. This can be the case if you find the startup times much longer than before. We're aiming to improve the loading speed in the future. - enhanced IDE support in our VS code extension (JT, fdncred) Nushell now has a first LSP (Language Server Protocol) implementation with a VSCode integration. If you install the latest version of our VSCode plugin, you'll see hovers, inlays, tooltips, error squigglies and other features. We are still very early in the LSP development, but the extension is already very usable and definitely moves the experience of writing Nu code to another level! While currently we have only VSCode integration, the server itself is standalone and we welcome projects adding the LSP support to more editors. - atuin now supports Nushell Thanks to @stevenxxiu you can now use atuin with Nushell. We are happy to see Nushell supported by more projects and we welcome PRs adding more integrations. - Relaxed parsing rules (JT) We listened to your feedback around the syntax changes introduced with 0.78 and decided to revert to the old behavior around the parsing rules for numeric literals as well as the compulsory || for closures. - Removed old alias implementation (kubouch) While there are still some missing pieces, we removed the old alias implementation. This means that old-alias is no longer available. We decided to remove it to clean up the code. It makes further fixes to aliases easier as you do not need to remember which alias implementation a piece of code belongs to. There are two notable missing features from the old aliases: - Missing completions with external completers. - Most parser keywords (such as source) cannot be aliased but adding support for aliasing them should be possible in most cases. - Not possible to alias with environment shorthands (e.g., alias foo = FOO=bar spam) - Some presentation issues, such as the output of which and the alias usage pointing at the aliased call instead of the alias itself. - Changes to default files locations (ito-hiroki) $nu.config-path and $nu.env-path are now set based on --config and --env-config flags passed to Nushell and also use the path after resolving symlinks. This means that they no longer guarantee pointing at the default Nushell's config directory. To be able to refere to the default config directory, $nu.default-config-dir was added and used in default env.nu to always point NU_LIB_DIRS to the scripts directory under the default config directory. Related to that, $env.CURRENT_FILE was added to be able to show the currently evaluated file. - Breaking changes #8797 old-alias is no longer available #8724 str index-of -r now uses ranges #8792 config nu and config env now open $nu.config-path and $nu.env-path, respectively. #8779 Aliasing math expressions now shows error immediately instead of failing silently and showing a confusing error later. #8917 exec inherits Nushell's environment variables #8887 NU_LIB_DIRS definition in env.nu changed |
2023-04-05 10:05:14 by pin | Files touched by this commit (3) | |
Log message: shell/nushell: update to 0.78.0 Themes of this release / New features - Pattern matching (jt) With 0.78, Nushell now comes with the match expression, which allows you to do pattern matching on a value. It supports a variety of different kinds of patterns, which can be mixed and matched to create more complicated patterns. - Alias changes (kubouch) - Aliases now can shadow We've updated the new alias command we introduced in 0.77 to work more closely to the previous one. - Alias can be named the same as the aliased command - Old alias still keeps working Since there are still some remaining issues to fix with the new alias implementation, we still keep old-alias around for this release. - Speed improvements (jt) We've sped up the performance of tight loops like for and while considerably in this release. - Optional cell path members (rgwood) In Nu 0.78, you can use ? in cell paths to suppress errors from missing data. ? is a more convenient+powerful version of the -i/--ignore-errors flag on get and select. - better error handling in error make (amtoine in #8511 and #8570) The error make command now gives better hints about why the format is not a valid error make format: - with an empty format, error make {} will say that there is a "missing required member $.msg" - with an empty $.label, error make {msg: "message", label: {}} \ will say there is a "missing required member $.label.text" - finally, when $.label.start / $.label.end is not defined while the other is, error make will give a hint as to add the missing one to the format! The second change disallow the use of a $.label.start greater than $.label.end as a span. - Support for pretty output format in to nuon (amtoine) The to nuon command can now output pretty NUON data with whitespaces for better readability. The default behaviour still is to output everything on a single line, encouraging users to leverage the compactness of the NUON data format. - New math exp command (lesves) To complement the math ln command, we now include a math exp command for exponentiation with the base e. Breaking changes - let requires surrounding parentheses for saving command output let x = ls will not run the ls command anymore. If you need to save the output of a command, you need to wrap it in parentheses: let x = (ls). - || now required in closures To help differentiate between blocks (which can mutate variables) and closures (which can be used in a pipeline), we've changed the syntax of closures to require ||. This means the simplest closure now looks like {|| } - We no longer automatically print values as part of a script We've changed the automatic-printing rules for scripts and the REPL to now only automatically print the last value. This means two major breaking changes: - We no longer automatically print loop values - We no longer print the results of every line automatically, requiring you to do it manually - Bare words can't start with a number Words that start with a number or are in some way number-like must now must be wrapped in backticks to be treated at a bare word or wrapped in quotes to be a string - Fields can only be defined once You can no longer redefine a field in a record during initialization - Thread configuration moves to par-each Nushell no longer accepts the -t/--threads flag to the binary as it's now part of par-each - Ranges become the standard range specifier str substring now only accepts ranges as does bytes at - Alias recursion has been disabled - Empty lists handled more consistently [] | select foo now returns an empty list instead of null and sort, uniq, sort-by, and uniq-by now return empty lists when given an empty list (previously they would throw an error) These changes make it easier to work with lists of unknown size. - Comparison operators now allow null Previously expressions like 1 < null would error; now they return null |
2023-03-17 11:40:31 by pin | Files touched by this commit (2) | |
Log message: shells/nushell: update to 0.77.1 The 0.77.1 release is a hotfix release of 0.77. It fixes an issue related to subexpressions not properly handling output values. |
2023-03-15 11:04:00 by pin | Files touched by this commit (3) | |
Log message: shells/nushell: update to 0.77.0 Themes of this release / New features - Reworked aliases (Breaking changes!) (kubouch) Aliases have been a constant source of panics and growing code complexity as a result of trying to patch the panics. In this release, we re-implement aliases from scratch. Instead of replacing spans of expressions, aliases are implemented as another type of command, quite like extern is used to implement known externals. Alias is a command that wraps another command call. As a result, in some cases, aliases do not behave exactly the same as before. Here are the key facts: - Alias can only alias another command call. For example, alias la = ls -a works, but the following does not: - alias foo = "foo" "foo" is not a command call, use alias foo = echo \ "foo" instead - alias lsn = (ls | sort-by type name -i) subexpression is not a command call, use a custom command instead - Alias cannot alias command named the same as the alias. E.g., alias ls = ls -a is not possible currently, and gives an unhelpful error message. We plan to fix this as soon as possible and in the future we aim for this to work. - Some parser keywords are not allowed to be aliased. Currently, overlay commands can be aliased but the other parser keywords can not. We can add support for aliasing more parser keywords in the future. If some of the above is too limiting for you, the old aliases are still unchanged and available as old-alias. Just change alias to old-alias and it should work the same as before. If there are no more problems with the new alias implementation, and we manage to iron out the recursive alias issue, we will remove old-alias in the next release, otherwise, we'll keep it around longer. - More consistent timestamp handling (bobhy) Simplified conversion between Nushell date type and unix timestamps (#8244). Nushell now standardizes on representing a Unix timestamp as a number of nanoseconds relative to the unix epoch 1970-01-01 00:00:00 +0000 (UTC). Since the timestamp is stored in a (64 bit signed) Nushell int type, this limits the range of dates that can be represented to approximately 21-sep-1677 through 11-apr-2262. In prior versions, Nushell attempted to extend the range of representable dates by allowing multiple resolutions of timestamps (seconds, milliseconds as well as nanoseconds) to be stored and relied on arbitrary range check heuristics to disambiguate the value intended. However, there were bugs in the checks and incorrect results could be produced. With this change <int> | into datetime assumes the input is a number of nanoseconds and can never produce a date outside this range. The timestamp epoch is the standard unix epoch. Note the timezone is UTC/GMT. <datetime> | into int can now produce an error if the input is outside the supported range. And finally, although not strictly required by the above fix, <date> | date to-record and <date> | date to-table now have a \ nanosecond field containing the subsecond residue of the input value (however it was produced). - New XML format (NotLebedev) New format for xml data created and accepted by from xml and to xml commands (#7947). Commands from xml and to xml now use format where each xml entry is represented by a single {tag: <tag name> attributes: <tag attributes> content: [<child entries>]} record. Special xml entries also use this record, replacing irrelevant fields with null for easier use. Creating a little html page. In case of to xml one can deviate from rigid structure and omit empty fields of records. - New additions to $nu (StevenDoesStuffs, amtoine) The builtin $nu variable now contains new entries: - is-interactive: Nushell was launched in interactive mode - is-login: Nushell was launched in login mode - startup_time: Nushell's startup time - Reworked http subcommands (jaudiger) The http command now has more subcommands and existing subcommands have been reworked. Make sure to browse the help messages of these commands. They contain fully functional examples thanks to pointing at www.example.com. - Breaking changes - Alias changes, see above - env command has been removed, use $env instead (https://github.com/nushell/nushell/pull/8185) - str trim no longer has --all, --both, and --format flags. str replace should be an adequate replacement; please let us know if it is not (#8205) - The changes to timestamp handling noted above (#8244) can require code changes to existing scripts: - Saved data containing the results of an old datetime-to-timestamp conversion will not deserialize correctly when read back by the current version of Nushell. In general, Nushell will produce incorrect datetime values without noting an error. - <int> | into datetime now assumes nanosecond scaling for all \ timestamps. You must ensure all timestamps computed by your script or retrieved from external sources are scaled appropriately. - <date> | into int can now fail, as noted above. You cannot rely on this operation to persist a arbitrary date. - The change to from xml and to xml commands noted above (#7947) will require to update scripts relying on old output/input format. - mkdir, cp, mv and rm return nothing. Errors and actions with --verbose flag are printed to stderr instead (#8014). - Plugin authors relying on nu_protocol::Value may need to update their code to account for a change to Value::Error (#8375 ) - Different types of lists can now be appended. This can break scripts that were relying on the stricter behavior (https://github.com/nushell/nushell/pull/8157) |
2023-02-23 08:33:55 by pin | Files touched by this commit (3) | |
Log message: shells/nushell: update to 0.76.0 Debugging We've added a few new commands to help with nushell debugging. - ast - The ast command works the same as before and produces an ast for any pipeline you give it. - debug - The debug command works the same as before and produces some output about nushell values. - explain - Provides detailed information about pipeline contents in a closure The explain command attempts to explain to you how the pipeline, in the passed in block, is going to be interpreted. It shows the pipeline and command index, the looked up and found command name, the command argument data type, and argument details, among other things. Note that spans are also included and can be used with view span. - inspect - Immediately prints out the contents of a pipeline The purpose of the inspect command is to help to debug pipelines. It works by allowing you to inject the inspect command into a pipeline at any point. Then it shows you what the input description is and what the input values are that are passed into inspect. With each step it prints this information out while also passing the value information on to the next step in the pipeline. - metadata - The metadata command works the same as before. - profile - Recursively profile pipelines and pipeline elements within a closure. Enables fine-grained profiling of individual pipeline elements and recursively stepping into blocks/closures. The recursion depth can be controlled (default is 1) and it can optionally collect the profiled source segments for easier orientation and value in each step for easier debugging. Note: There are known limitations that the profiler can't run. For example, it can't collect data from subexpressions and loop iterations. It is caused by profiling data being collected as pipeline metadata and a known bug that pipeline metadata is not preserved in some cases. - timeit (formerly known as benchmark, same functionality) - view files - Lists source code inputs loaded into Nushell since the beginning of the session view files lists the files and entries loaded into nushell's EngineState memory. Note the spans, for use with view span and the size of each file's contents stored. - view source (formerly known as view-source, same functionality) - view span - View contents of a span Spans are important to nushell. One of their uses is to show where errors are. For instance, in this example below, the leader lines pointing to parts of the command line are able to point to 10, /, and "bob" because each of \ those items have a span. In an effort to have a little more organization, we've assigned a category of Debug to all commands that participate in nushell script debugging. Here is a list of commands that are in that category now. -ast -debug -explain -inspect -metadata -profile -timeit -view -view files -view source -view span - "Multiplication" of strings and lists is now supported. (WindSoilder) Like in Python you can now use the multiplication operator * to create n concatenated copies of a string or list. Here n has to be an int value. This can be useful if you want to quickly build ASCII art 😃! Note that the operation is commutative. - Dataframe commands are again explicitly separated from core nushell commands. (#7998) - Dataframe commands have all been renamed in order to avoid confusion with nushell commands. It also makes our help commands less confusing. For instance, you can now do help select and understand how to use the traditional nushell select command and you can do help dfr select and understand how to use the dataframe specific select command. Previously this was a source of cryptic error messages that were confusing to users. -PATH vs Path (#8003) We fixed a PATH vs. Path bug in completions, so now you should be able to do commands like cod<tab> and get completions like code and code.cmd across all operating systems. - More commands become plugins and plugins get first-class help support (WindSoilder, #7984, #7942) In an effort to both make the core nushell binary smaller and to improve our plugins system along the way we moved the commands for several less common file formats to nu_plugin_formats. To make sure you still have a first-class experience while using these commands, our plugins can now support code examples in the help and F1 menu. As a result, plugin authors need to slightly update their command Signature to PluginSignature which supports the examples and recompile. - Improved error messages for int and string literals Nushell now gives more specific and helpful messages when it detects syntax errors. In this release we've improved errors for string and int literals but we hope to improve more in the future. #7952 Errors in the format of escapes within double-quoted strings are reported specifically. Invalid digits in radix-prefixed int literals are now flagged as a specific error. The old parser treated these invalid ints as bare strings. - General housekeeping in the Nu codebase (Hofer-Julian, fdncred, rgwood, sholderbach) We are very lucky that we recently had a number of new contributors starting to help out with bug fixes and improvements to Nushell. We want to thank you and want to welcome you all! In the background a number of contributors spent some time improving and refactoring the codebase to get us up-to-date and make it more approachable for newcomers. This includes work to break up less readable code in important places, and a significant effort to get us up-to-speed on some coding standards. We also updated a number of dependencies and want to continue to improve our dependency tree. We recently enlisted the relentless help of the dependabot. Furthermore, we enabled rudimentary tracking of test coverage through codecov.io. This should help us identify areas were additional tests are needed and can be a great contribution to the project. - Breaking changes - load-env can not accidentally set $env.PWD anymore (#7963) - The --numbered flag to enumerate entries has been removed from each, par-each, each while, and reduce. Use the enumerate command added in 0.75 instead. (#7777) - Plugin system: nu_plugin::Plugin::signature has changed from fn signature(&self) -> Vec<Signature> to fn signature(&self) -> Vec<PluginSignature> to support examples on plugin commands. Plugin \ authors have to update the relative structure to apply these changes. Normally you just need to perform a global search/replace from Signature to PluginSignature, then rebuild and run with the latest nushell version. (#7984) - benchmark renamed to timeit (#8018) - dataframe commands renamed with a prefix of dfr (#7998) - view-source renamed to view source (#7989) - Plugin commands can now include examples, which necessitated a change to the plugin signature, which causes all plugins to need to be recompiled for use. (#7984) - str lpad and str rpad have been superceeded by fill in order to provide alignment (7846) - from ini, from vcf, from ics, from eml commands are moved to plugin called nu_plugin_formats to reduce the number of commands in nushell core, you need to install and register the plugin manually to use these command. (#7942) - http get -t,--timeout parameter is now -m,--max-time (8088) - Filesystem commands now print to stderr when using --verbose flag (8014) - The parse command will now create 0 indexed columns instead of 1 indexed (7897) |