Releases: lmorg/murex
v6.3.4225
v6.3
This is a massive release ahead of the v7.0. This brings notifications of new deprecations, new builtins, new flags, improved CI/CD flow, and changes to the website. Unfortunately it also carries 3 breaking changes.
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 -
tread
has been deprecated for a while due toread
supporting alltread
's use cases.tread
will officially be removed in the next release -
@[]
syntax for ranging has been deprecated for a while. It will be officially removed in the next release in favour of[]
-
backtick strings (````) has been an undocumented hack for several years. This release officially sees that hack as deprecated and will be removed in the next release
-
die
has been deprecated because it just adds a feature for no purpose. It was original borrowed from Perl but realistically you can do the same withexit 1
so this removal is to bring the language complexity down.
Breaking Changes
-
for
syntax change, switching from parenthesis to curly braces (discussion, documentation) -
tilde
~
sigil for home directories will now fail if username is not found (issue #840) -
support removed for string concatenation via
+=
. This isn't really needed in a shell with infixing support. Removing this feature allows for more common code with other operators and thus fewer bugs
Features
-
variables: tilde
~
sigil for home directories will now fail if username is not found (issue #840) -
new builtin + operator:
~>
to perform immutable merges (read more) -
count
: added support for--bytes
and--runes
(read more) -
variables: Lots of new variables added for POSIX compatibility (issue #873)
-
expressions: added support for sub-expressions inside object and array builders (issue #834)
-
core: added support for pseudo-variable pointers via parenthesis (issue #830)
-
expressions: added support for
++
and--
-
new builtin:
mjoin
created to join arrays into a string (read more) -
new builtin:
list.case
created to alter the text capitalizations on arrays and strings (read more) -
regexp
: new flag,M
, returns matches including first row. This is useful if first row is a headings (read more) -
murex
: new flag:setsid
provides better POSIX support with SID / GPID management. This breaks some of Murex's features so this flag is provided for edge cases where commands capture job control signals -
integrations: added wrapper for Helix editor to support job control
-
version
: now includes git's branch name, build date and license. (read more) -
core:
go generate
now builds and executes doc gen. As well as updates Murex's version number and build date -
docgen: added support for sub-categories and Vue menu generation
-
murex
: new environmental variable,MUREX_DEBUG
, enables--debug
flag without having to specify a parameter (eg when using Murex as a shell) -
integrations: new integration: orbstack.
-
regexp
: separator can now support separators which are characters larger than 1 byte, ie unicode characters (read more) -
murex
: new flag--execute
-- this behaves like-c
except that it takes@ARGV
parameters instead of a pipeline as a single string -
cicd: added support for Go v1.23
-
website: significant updates across all documents
-
readline: if terminal is small, the max completion rows is automatically reduced
Bug Fixes
-
core: better conversion of numbers from strings (issue #874)
-
config
: errors generated via dynamic config are now better surfaced -
alter
: fixed nil pointer error in--merge
(issue #850) -
autocomplete: fixed unit file completions for
systemctl
-
core: terminal no longer hangs if stdin is a term and
<!out>
defined in command -
autocomplete: removed deprecated
?
operator fromgit
-
expressions: sub-shell scalars inside object builders now return objects instead of strings (issue #853)
-
core: improved expression validator
-
core: statements are no longer forced to be parsed as expressions when the first parameter is
=
(issue #854) -
readline: ignore panics in VIM keys. In the edge cases where panics are raised, we'd want to exit that function regardless. So handling panics as exceptions is the cleanest way to handle errors (issue #866)
-
integrations: removed deprecated builtin,
=
, from Linux profile -
core: missing
Release()
afteros.FindProcess()
-
readline: preview displays error if terminal too small (issue #868)
Special Thanks
Thank yous for this release goes to tiymat, atagen and orefalo for your testing and feedback. Also thank you to everyone in the discussions group and all who raise bug reports.
You rock!
This discussion was created from the release v6.3.4221.
v6.2.4000
v6.2.4000
Breaking Changes
None
Features
- docs: minor updates to docs + website
Bug Fixes
- core: regression bug when comparing a non-str string (eg generic) with a string (issue #845)
v6.2.3000
v6.2
Bug fix release
Breaking Changes
None
Deprecation Warnings
Please read out compatibility commitment to understand how features are deprecated.
-
the
?
pipe is deprecated to make way for a the ternary operator. You can achieve the same result with<err> <!out>
, egcommand <err> <!out> parameters... | next-command ...
. It will be officially removed in v7.0 -
the
=
andlet
builtins are deprecated and will be removed in v7.0. They've been marked as deprecated in the documentation for several versions 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). 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: progress bar to show how far through the preview document
-
docs: more improvements to documentation
Bug Fixes
-
caching: suppress cache.db connect message when in debug mode (issue #825)
-
murex-package
: package errors should be ignored inmurex-package list
(issue #826 docs) -
export
: exporting a non-existing variable would cause a crash (issue #824) -
murex-docs
: integrations docs were missing from compiled executable (read more) -
integrations: ChatGPT preview instructions were incorrect (read more)
-
core: crash handler was always disabled due to incorrectly flipping a boolean
-
expr
: when run as a statement, only the first parameter was used (issue #827 docs)
Special Thanks
Thank yous for this release goes to everyone in the discussions group for raising bug reports and their design discussions.
You rock!
v6.1.8300
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 debugging -
runtime
:--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 more -
ANSI 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
s -
new event:
onPreview
(read more) EXPERIMENTAL -
onKeyPress
: event completely redesigned (read more) EXPERIMENTAL -
new builtin:
key-code
. This builtin allows for easy inspection of what control sequences your terminal emulator is sending to the shell (read more) EXPERIMENTAL -
events: 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 name -
core: 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 parallel -
csv: 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 correctly -
profile:
openagent
forimage
data type wasn't autodetecting shell correctly -
profile:
openagent
default profile included references to deprecated maths lib -
safe-commands:
td
should have beentr
-
safe-commands:
let
removed due to deprecation of maths lib -
core: '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 docs -
get
: remove unused parameter from dial timeout -
core: 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!
v6.0.1000
Despite this being a new major version release, it is a vary minor update.
Aside from a handful of bugfixes, the most significant change is notice of
deprecation for =
, let
, and ?
.
Breaking Changes
None
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.
- new integrations for the experimental
mxtty
terminal emulator (Github repo)
Bug Fixes
-
which
andwhereis
autocompletions were Linux specific. Now they're enabled for all platforms -
grep
andegrep
aliases were Linux specific. Now they're enabled for all POSIX platforms -
zero length environment variables are no longer being reported as
null
byis-null
(issue #786) -
fixed edge case where a zero length string could generate a panic when normalising paths (issue #789)
-
suppress sqlite3 cache error message. The error doesn't impact the operation of Murex, it just spooks users (issue #788)
Special Thanks
Special thank yous for this release goes to everyone in the discussions group for raising bug reports and their design discussions.
You rock!
v5.3.7000
v5.3.7000
Features
- None
Bug Fixes
-
object builder
%{}
was parsing barewordnull
as"null"
(string with null) instead of a null value (issue #781) -
variables were being tokenised in
is-null
parameters instead of being passed by reference (issue #781)
v5.3.6000
v5.3.5000
v5.3.5000
bugfix release
Features
- new
runtime
flag for managing cache:--flush-cache
Bug Fixes
-
Windows, Linux and Darwin (macOS) now default to GCO-less builds of sqlite3
-
ANSI escape code for window title changes changed from xterm-specific standard (
BELL
terminated) to ANSI standard (ST
terminated) -
integrations and default profile scripts have all be rewritten to follow latest Murex code style best practices
v5.3.4000
Bugfix release:
v5.3.4000
Features
- new
runtime
flags for managing cache:--cache
and--trim-cache
Bug Fixes
-
cache: sqlite3 would lock
cache.db
, breaking caching when multiple murex sessions were open at a time -
cache: cache.db wasn't getting set in
config
correctly (should have been enabled by default but was disabled by default instead)
v5.3.3000
Caching has been vastly improved in this release due to a new sqlite3-backed persistent cache.db
. There have also been some improvements to [f1]
help pages.
Breaking Changes
None
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 ...
Features
-
persistent cache added using sqlite3 backend. This cache is optional however it is enabled by default. You can disable it by placing the following into your
.murex_profile
:config set shell cache.db-enabled false
-
new
autocomplete
directive for[f1]
previews:DynamicPreview
-
dynamic previews added for
git
andaws
Bug Fixes
-
export
now supports whitespace like an expression (issue #679) -
bugfix: structures in variables would sometimes output base64 encoded values when converting those structures to arrays (issue #768)
-
some
ReadArrayWithType()
calls weren't handling the returned error (if there were an error). They're now all surfacing errors correctly -
whats new message moved to shell
Start()
Special Thanks
Special thank you to everyone in the community for raising bug reports and design discussions.
You rock!