v6.1
v6.1
This release sees a massive jump in event-driven capabilities as well as several new features and bug fixes.
Breaking Changes
core: FID output refactored in
runtime
anddebug
. However the output of these builtins shouldn't be depended on as a stable API. They exist for manual inspection and debuggingruntime
:--flush-cache
flag has been renamed to--clear-cache
events: key names for namespaced events switched from interrupt_name to name.interrupt. The only event impacted by this change is
onPrompt
and even there, the only time this change should be noticeable is when manually removing an event read moreANSI Constants:
{F1}
,{F2}
,{F3}
,{F4}
now produce the same escape sequences as{F1-VT100}
(...and so on). This is to bring F1 to F4 keys inline with xterm, and thus all other compatible terminal emulators. You can still use the previous escape codes via{F1-VT220}
(...and so on).{F5}
and above are unchanged (read more)
Deprecation Warnings
Please read out compatibility commitment to understand how features are deprecated.
the
?
pipe will be deprecated to make way for a the ternary operator. You can achieve the same result with<err> <!out>
, egcommand <err> <!out> parameters... | next-command ...
the
=
andlet
builtins are now officially deprecated. They've been marked as deprecated in the documentation for a couple of years but you'll now receive a deprecation warning when using them. This warning will not impact any functions that call them (they bypass the stdout and stderr pipes and write directly to your TTY) but it is still recommended that you update any existing code not to use it. The change is very simple, Murex supported expressions as first class primitives, so you can simply drop the=
andlet
command names from your expressions
Features
Features marked as EXPERIMENTAL are provided without assurances of future breaking changes. All other features are considered stable as part of Murex's compatibility commitment.
preview: support added for ChatGPT. This feature is disabled by default. (read more) EXPERIMENTAL
preview: support added for
Makefile
snew event:
onPreview
(read more) EXPERIMENTALonKeyPress
: event completely redesigned (read more) EXPERIMENTALnew builtin:
key-code
. This builtin allows for easy inspection of what control sequences your terminal emulator is sending to the shell (read more) EXPERIMENTALevents: support added for return values -- allowing events to modify state safely (used in onPreview & onKeyPress)
events: smarter error handling
runtime
: new flags:--integrations
,--event-types
,--cache-db-enabled
,--cache-db-path
,--cache-namespaces
(read more)core: map added for default mimes per Murex data type (read more)
get
: support added to default aContent-Type
header based on stdin data type (read more)post
: support added to default aContent-Type
header based on stdin data type (read more)readline:
home
andend
hotkeys added to preview for quick navigation (read more)man-summary
now returns a non-zero exit number if no man page is found (read more)datetime
: improved error messages (read more)hint text: improved status message for
cd
(PR #806)autocomplete: improved autocomplete for
go
(integrations/go_any.mx)optimization: removed various nil checks and pipe dependent checks from release builds (improves performance slightly, albeit in the realm of micro-optimisations)
core: new flag:
--quiet
(issue #797)core: env pipes without
=
will now pass the local variable of the same namecore: crash handling added. While the shell rarely panics these days, such incidents are not caught. This was intentional so that a stack trace could be produced for debugging. However we are now at the point where catching panics is more valuable than a full stack trace
dev tooling: new
debug
flag,panic
, raises an exception to test crashing the shell (read more)dev tooling: added tracing tools for debugging Murex's source code (commit 0a158b0 & commit 6454955)
documentation: lots of new docs written!
dev tooling: CI/CD support for latest Go versions
dev tooling: new functions added to
docgen
Bug Fixes
caching:
cache.db
is now opened on demand. This should allow for better support accessing the cache from multiple Murex sessions in parallelcsv: missing flush from CSV marshaller (issue #801)
readline: missing whitespace trimming from recall word (issue #808)
readline: unicode support added for preview -- thus fixing some rendering glitches with non-ASCII characters
core: improved garbage collection for forks
readline: improved garbage collection for preview
readline: include errors in preview
profile:
openagent
forimage
data type wasn't passing path to image correctlyprofile:
openagent
forimage
data type wasn't autodetecting shell correctlyprofile:
openagent
default profile included references to deprecated maths libsafe-commands:
td
should have beentr
safe-commands:
let
removed due to deprecation of maths libcore: 'executing' state was defined too early. Now happens at last moment before process executes
readline: check a builtin is compiled before defaulting to builtin docs in preview
readline: pane shouldn't jump to top when loading multiple previews
get
: fix bug in generated docsget
: remove unused parameter from dial timeoutcore: JSON profiles sometimes weren't getting closed properly (PR #800)
readline: preview now reports if there is nothing to preview
readline: out-of-bounds error fixed in preview
readline: allow slimmer terminal widths in preview (issue #805)
readline: override
MaxTabCompleterRows
on short terminals (issue #804)readline: incorrect clear line ANSI escape sequences
core: multiline comments parsed incorrectly inside code blocks
core: fixed out-of-range crash when handling specially named scalers
autocomplete: incorrectly name scaler for
yarn
completion was causing it to fail
Special Thanks
Thank yous for this release goes to everyone in the discussions group for raising bug reports and their design discussions.
Plus an extra special thank you to this releases contributors: tiymat, testwill and u9g, plus everyone who has helped peer review and test.
You rock!
Published: 17.06.2024 at 22:54
See Also
- ANSI Constants: Infixed constants that return ANSI escape sequences
- ChatGPT: How to enable ChatGPT hints
- Contributing: Guide to contributing to Murex
- Interactive Shell: What's different about Murex's interactive shell?
- Terminal Hotkeys: A list of all the terminal hotkeys and their uses
autocomplete
: Set definitions for tab-completion in the command linedatetime
: A date and/or time conversion tool (likeprintf
but for date and time values)debug
: Debugging informationevent
: Event driven programming for shell scriptsget
: Makes a standard HTTP request and returns the result as a JSON objectkey-code
: Returns character sequences for any key pressed (ie sent from the terminal)man-summary
: Outputs a man page summary of a commandonKeyPress
: Custom definable key bindings and macrosonPreview
: Full screen previews for files and command documentationonPrompt
: Events triggered by changes in state of the interactive shellopenagent
: Creates a handler function foropen
post
: HTTP POST request with a JSON-parsable returnruntime
: Returns runtime information on the internal state of Murex
This document was generated from gen/changelog/v6.1_doc.yaml.