Subject: CVS commit: pkgsrc/shells/nushell
From: pin
Date: 2023-03-15 11:04:00
Message id: 20230315100400.268C6FA90@cvs.NetBSD.org

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)

Files:
RevisionActionfile
1.30modifypkgsrc/shells/nushell/Makefile
1.18modifypkgsrc/shells/nushell/cargo-depends.mk
1.22modifypkgsrc/shells/nushell/distinfo