Key points in this release from @anki-code:
- This release is highly recommended. Please update your xonsh and be ready to update to upcoming xonsh >= 0.18.2 with refactoring.
- Added stripping the trailing new line character - the long awaited feature. So now you can run just
id $(whoami)
. - Added
$XONSH_SUBPROC_OUTPUT_FORMAT
to manage the output format. - Added
SpecModifierAlias
that allows manage the specification of the process in the command e.g.j = $(@json curl http://)
. See examples in xontrib-spec-mod, #5481, #5443, #5494. UPD: will be renamed toSpecDecoratorAlias
in next release. - Fixed a bunch of issues around treating the process signals, exit codes and cases when process was suspended by OS.
- Fixed a bunch of "Bad file descriptor" and IO issues that were related to big refactoring in the past.
- We started https://xonsh.zulipchat.com to publish news, solve cases and chatting.
- Huge amount of other changes and fixes that were covered by many new tests.
Added:
- Added
$XONSH_SUBPROC_OUTPUT_FORMAT
to switch the way to return the output lines.
Defaultstream_lines
to return text. Alternativelist_lines
to return
the list of lines. Now you can rundu $(ls)
without additional stripping.
Also supported custom lambda function to process lines (if you're looking for
alternative to bash IFS). Use #5481 if you want to manage output in the command. (by @anki-code) - Added
SpecModifierAlias
class to have an ability to create alias that modifies spec before run e.g.xthread
alias. (by @anki-code) - Saving history in case of any type of exiting the shell (by @anki-code).
- Added
xthread
andxunthread
aliases to force command running as threaded and unthreaded. (by @anki-code) - Reading stop signals from the process and update the process state (#5361) (by @anki-code).
- Now last executed CommandPipeline is available in
__xonsh__.last
. (by @anki-code) - Added
xonsh --no-env
option to run xonsh without inheriting the environment variables. Now by runningxonsh --no-rc --no-env
you have pure xonsh session. (by @anki-code) - Added support of NixOS core tools in
predict_threadable
. (by @anki-code) - Added catching an exceptions during load a history backend to avoid shell exiting e.g. on permission error (by @anki-code).
- Added catching an exception when cache file is not writable (by @anki-code).
- Saving history on SIGINT. Development tools like PyCharm send SIGINT before killing the run
and doing this is the last chance to save history. (by @anki-code) - Added FuncAlias to process callable aliases (by @anki-code).
- Added alias name printing in case of exception in alias (by @anki-code).
- Added thread class, name, func and alias names to thread exception for easy understanding the source of issue. (by @anki-code)
- Added
spec.raise_subproc_error
for fine-tuning exceptions viaSpecModifierAlias
(#5494). (by @anki-code) - Added catching ChildProcessError in jobs. Avoiding hanging aliases in some cases (by @anki-code).
- Added mode
$XONSH_TRACE_SUBPROC=3
to show more information about pipeline. (by @anki-code) - Added
env.detype_all()
to get all available variables that is possible to detype (by @anki-code). - Added "Callable alias and capturing" to the tutorial. (by @anki-code)
- Xonfig: show sensitive env variables that could affect the shell behavior. (by @anki-code)
- Added section "Use the Nix Package manager with Xonsh" to "Platform-specific tips and tricks" (by @anki-code).
- Added xonsh support into Jupytext project! Jupytext is to store Jupyter notebooks as a plain text documents.
- Added shortcut
-st
for--shell-type
. (by @anki-code)
Changed:
- Now the ending new line symbol
\n
will be stripped from the single line output.
For$(whoami)
you will get'user'
instead of'user\n'
. (by @anki-code) - The home based
~/.xonshrc
will not be executed in non-interactive mode (#5491). (by @anki-code) - Env variables completion: now use substring for search and then sort results by the position of substring and then alphabetically. PR 5388. (by @anki-code)
- Xonsh AppImage downgraded to Python 3.11. We need to resolve 3.12 parser support (5166) before upgrade. (by @anki-code)
- jobs: default representation changed to dict. (by @anki-code)
- The CommandPipeline repr will not show descriptors by default. Use XONSH_DEBUG mode to see them. (by @anki-code)
- Cleaning logic and functions around threading and capturing in
procs/specs.py
file. (by @anki-code) - Prompt:
env_name
will have yellow color by default. (by @anki-code) - Show
root
and@#
in prompt if user is superuser. (by @anki-code) $XONSH_TRACE_SUBPROC=2
returns more useful details. (by @anki-code)- Minor cleanup of
commands_cache
, unifying behavior across platforms. (by @jaraco)
Removed:
- No longer is
.
implied for running commands on Windows. Instead the behavior is the same across platforms. Windows users will need to prefix./
or.\
to run commands from the current directory (#5476). (by @jaraco) - Unpin prompt-toolkit version (#5438). (by @anki-code)
Fixed:
- Fixed populating the return code for interrupted process. (by @anki-code)
- Fixed
Bad file descriptor
and I/O errors after running callable alias (#5435). (by @anki-code) - Fixed processing exit signals and exceptions (e.g. SIGHUP in #5381) to provide careful exiting with right exit code and TTY cleaning. (by @anki-code)
- Fixed redirect with python substitution e.g.
echo 1 > @('/tmp/file')
is working now. (by @anki-code) - Fixed
xonsh -DVAR=VAL
behavior: initiate env variables before shell initialization. (by @anki-code) - Prevent exception on start up if
dircolors
util is wrong. (by @anki-code) - Fixed showing exception message in some cases. (by @anki-code)
- Fixed empty stacktrace for CalledProcessError. (by @anki-code)
- Fixed showing alias description using superhelp e.g.
which?
. (by @anki-code) - Fixed
TypeError
in xoreutils. (by @anki-code) - Commands on Windows now honor the case as they appear on the file system (#5469). (by @jaraco)
- Windows: fixed path to RC file in
xonfig web
. (by @anki-code)
Authors:
- anki-code @anki-code
- Jason R. Coombs @jaraco
- Gil Forsyth @gforsyth
- Noortheen Raja @jnoortheen
- Peter Ye @yaxollum
- doronz88 @doronz88
- jyn @jyn514
- l-no @l-no
- amacfie-tc @amacfie-tc