Releases: lmorg/murex
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!
v5.2.7610
The v5.2 release introduces significant new features and improvements for those
using Murex as their interactive shell. Many of these features are unique to
Murex.
Breaking Changes
-
Change to experimental feature: all lambda variables now follow the
$.k
and$.v
convention (read more) -
Murex now requires Go compiler version 1.20 or above, however a C compiler is no longer required (though still supported)
-
expressions that return a boolean will no longer write
true
norfalse
to stdout if it is followed by a boolean operator (&&
or||
). This is marked as a breaking change because some of Murex's tests had to be updated to reflect this update, however this change actually fixes a number of bugs around expectations for how boolean expressions should work
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 ...
-
experimental TTY buffer was removed. This was disabled by default, would create a slight slow down to rendering when enabled, created a few rendering glitches when enabled, added to the overall code complexity, and the primary use case for this no longer requires buffering anyway
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.
-
debug
builtin now supports{ ... }
blocks (read more) -
new flags for
count
:--sum
/-s
and--sum-strict
-
Lambda support for arrays and objects re-written and now considered stable (read more)
-
f9
command line preview added -- this feature allows you to quickly build and test pipelines that might otherwise require iterating on trial and error to get right -
f1
autocomplete preview is no longer considered experimental. Several bug fixes included -
new pipe:
pty
. This behaves similarly to a regular pipe except it creates a pseudo-TTY -
f1
preview now includes cheat sheets from https://cheat.sh/ -
job control: builtins can now be stopped via
^z
(issue #716) -
docgen
has seen several new features added to improve the ease of writing documentation for Murex
Bug Fixes
-
readline: fixed regression bug introduced in preview release where vim keys wouldn't write their updated state to the terminal
-
f1
preview now resets the cursor position correctly when closed -
f1
preview has had autocomplete parameters rewritten to jump to the rightman
page flag more precisely -
f1
preview scrolling had an off-by-one error resulting in the last line sometimes getting cropped -
shebang (
#!/path/to/murex
) scripts should be loaded into a module namespace. This fixes module scoped config (read more) -
command lines passed via
-c
flag (egmurex -c "out hello world"
) are also loaded into a module namespace -
readline: trim whitespace before walking history
-
recommended optional builtins are now opt-out -- this is to make it easier to work with 3rd party package maintainers
-
job control: bug fixes around when to show and hide the interactive prompt (issue #716)
-
job control: processes invoked via
bg {...}
now support being brought to the foreground viafg
(this could be argued as a new feature) (issue #716) -
error handling added to
get-type
(read more) -
boolean expressions, eg
2+3==5
now work with boolean operators (&&
,||
). eg$USER == "bob" && out "Hello Bob"
.
Special Thanks
Special thank yous for this release goes to tiymat for their bug fixes and everyone in the discussions group for raising bug reports and design discussions.
You rock!
v5.1.2210
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
Features marked as EXPERIMENTAL are provided without assurances of future breaking changes.
-
new operator:
null-coalescing
, returns the left-most non-null value (read more) -
new operator:
elvis
returns the left-most non-falsy value (read more) -
new builtin:
is-null
checks if a variable is undefined or null (read more) -
new autocomplete:
signal
-
error message for
$1
variables, for when insufficient parameters passed, has been improved -
website: minor stylesheet updates, plus some new images added
Bug Fixes
-
readline: buffered screen writes to reduce rendering glitches and improve overall responsiveness (issue #744)
-
autocomplete:
gping
autocomplete updated to support--color
flag
Special Thanks
Special thank yous for this release goes to the following contributors:
- tsmish for helping to debug some of readline's rendering glitches
You rock!
v5.0.9310
v5.0.9200
Breaking Changes
- unquoted parameters that are formatted like
[alpha, numeric, underscore]\(...\)
will be parsed as a function rather than a string. egcommand foo(bar baz)
where foo will be treated as a subshell function with bar baz as its parameters - brace quotes without a leading
%
will be first parsed as an expression. eg%(valid string)
vs(valid expression)
Deprecation Warnings
These are changes to Murex defaults, however you shouldn't expect any breaking changes to Murex's behaviour:
$ARGV
now preferred instead of$ARGS
($ARGS
will remain supported for now)command: parameters ...
style syntax has been deprecated in favour of the more traditionalcommand parameters ...
(without a colon) syntax.
Features
-
new website!!
-
commands can now be inlined in expressions, eg
foobar = uptime()
(issue 676) -
commands can also be inlined into statements too, eg
echo uptime()
(issue 676) -
new event
onSignalReceived
for catching OS signals -
new builtin
signal
for sending OS signals -
new builtins
which
(issue 609) -
new builtin
type
(issue 609) -
cd
defaults to~
if now parameters are passed (issue 672) -
cd -
changes to previous directory (issue 672) -
$SELF.Interactive
value to detect if scope is running in an interactive shell (issue 685) -
$COLUMNS
reserved variable to output width of terminal -
$MUREX_ARGV
reserved variable to output command line parameters of Murex shell (not to be confused with the parameters of the running function, eg$ARGV
) -
csv
data type andselect
builtin now support converting maps (eg JSON objects) into tables (issue 689) -
murex-doc
/help
can now display a greater number of documents when offline -
improved man page parsing
-
improved man page displays in preview
-
alias
now storesFileRef
metadata (issue 124) -
packages can now be removed via
murex-package remove
(issue 687) -
a package creation wizard has been added via
murex-package new
-
another new flag for
murex-package
: git. Which allows you to rungit
commands on a package even when you're not in that package's working directory -
version constraints added to Murex packages (docs to follow)
-
readline:
up
anddown
arrows on a partial command line will cycle through history of only lines that contain your partial command line -
readline: new hotkey,
ctrl
+z
while readline is open will undo the previous key strokes -
EXPERIMENTAL: logical operators added to expressions:
||
and&&
(issue 708) -
EXPERIMENTAL: new command modifier
<pid:VARNAME>
sets $VARNAME with a commands process ID, if an external process (currently doesn't support local variables) -
EXPERIMENTAL: new command modifier
<fid:VARNAME>
sets $VARNAME with the Murex function ID of the command (currently doesn't support local variables) -
EXPERIMENTAL: new assignment operator
:=
, assigns a value but retains the former data type, thus converting the value when required (ideally I'd have preferred this as default option but it ran the risk of some serious and unexpected breaking changes to the behaviour of some existing shell scripts) -
EXPERIMENTAL: Various builtins that require variable names now support
$
sigils, egforeach $var { ... }
works as well asforeach var { ... }
-
EXPERIMENTAL: new variable group
$MOD
, like$GLOBAL
but scoped to the module level -
EXPERIMENTAL: official support added for a pure Go library for sqlite3 -- thus saving individuals from having to install
gcc
as well asgo
compilers. The reducedcgo
footprint has already reduced file sizes by a 3rd
Bug Fixes
- homebrew environment set on Intel macOS systems (previous only worked on ARM)
config
functions (eghint-text-func
) now execute with theFileRef
of the setter. Meaning they can call privates correctly- scalars fail expression pre-parser (issue 674)
- readline: prompt can now span multiple lines (issue 612)
- floating point numbers were not loosely compared correctly in expressions
- readline: delay timer hint text should disappear when completed
$PWDHIST
was corrupting upon first update- fixed bug with
git-commit
man page parsing, which caused the parser to hang and ramp up CPU usage ongit
autocompletions - fixed parsing of nested quotes inside curly braces (issue 697)
- don't carry non-zero exit numbers forward if unit test successful
- fixed instances where
FileRef
either wasn't being set, wasn't being set correctly, or was missing a timestamp (issue 696) printf
dependency removed fromaliases
function -- this meansaliases
now works on Windows too||
and&&
now parse correctly in expressions
Special Thanks
Special thank yous for this release goes to the following contributors:
- orefalo for building the new website (which is now small task!), documentation fixes, and general support
- tiymat for the high quality bug reports and beta testing
- All the downstream package maintainers, who publish Murex to their preferred operating systems/package managers thus making it easier for a wider audience to install and update Murex
You rock!