This is a major release that brings a significant number of changes and improvements, including a complete overhaul of the parser. Backwards compatibility is a high priority however these new features bring greater readability and consistency to shell scripting. So while the older syntax remains for compatibility, it is worth migrating over to the newer syntax for all new code being written
Breaking Changes:
bson
. This was disabled by default and likely never used. So it has been removed to reduce Murex’s testing footprint. It can easily be re-added if anyone does actually use itcoreutils
. This was actually enabled by default for Windows builds. However rewriting Linux/UNIX coreutils for Windows support is a massive project in its own right and with the maturity of WSL there’s almost no reason to run Murex on “native Windows”. So the coreutils
builtin has been dropped to allow us to focus on the responsibilities of the shellFeatures:
5 * 5
or foobar = $foo + "bar"
, etc. This syntax can be used directly or specified specifically via the expr
builtin%{ foo: bar }
%[ foo bar ]
%()
(this is preferred over the, now deprecated, feature of parenthesis quotes)[]
(@[
is now deprecated)/# comment #/
. It is unfortunate this differs from C-style comments (/* comment */
) but this has to be the case because /*
is ambiguous for barewords in shells: is it a path and glob or a comment? Where as /#
isn’t a common term due to #
denoting a commentnull
as a data type across the pipe, it will be ignored. This solves the problem where functions that don’t write to STDOUT would still define the data typeconfig
@g
removed. It is no longer needed with expand-glob enabled by defaultcontinue
: skip subsequent processes in an iteration block and continue to next iterationbreak
: exit out of a block of code (eg in an iteration loop)[
): *1
: 1st row, *A
: 1st columnhelp
-> murex-docs
. This brings Murex a little more inline with Bash et al^
autocompletion addedgetfile
writes to disk if STDOUT is a TTYja
) now writes an integer array if range is integers. eg ja: [1..3]
. This change wouldn’t affect a
since that outputs as list of strings (for streaming performance reasons) rather than a data type aware documentdebug
(method) output tweakedNon-User Facing / Maintenance Changes:
ReadArray
API now requires a context.Context
egrep
references changed to grep -E
to work around GNU grep deprecating support for egrepboolean
, null
Variables.GetValue()
now errors instead of returns nil
when no variable setBug Fixes:
regexp
wasn’t erroring if nothing was matchedappend
and prepend
now type aware (no longer converts all arrays into string arrays)foreach
was setting variables as strings rather than honoring their original data typeyarn
autocompletion errors should be suppressedbreak
causing more occasionally incorrect instances of underlined wordsconfig
wasn’t passing data type when executing blocks via evaldebug
wasn’t setting data type when used as a functionPublished: 31.12.2022 at 08:10
[
(index): Outputs an element from an array, map or table[
(range): Outputs a ranged subset of data from STDINa
(mkarray): A sophisticated yet simple way to build an array or listappend
: Add data to the end of an arraybreak
: terminate execution of a block within your processes scopeconfig
: Query or define Murex runtime settingscontinue
: terminate process of a block within a caller functionexpr
: Expressions: mathematical, string comparisons, logical operatorsforeach
: Iterate through an arraygetfile
: Makes a standard HTTP request and return the contents as Murex-aware data type for passing along Murex pipelines.ja
(mkarray): A sophisticated yet simply way to build a JSON arraymurex-docs
: Displays the man pages for Murex builtinsprepend
: Add data to the start of an arrayregexp
: Regexp tools for arrays / lists of stringsThis site's content is rebuilt automatically from murex's source code after each merge to the master
branch. Downloadable murex binaries are also built with the website.
Last built on Fri May 19 22:45:48 UTC 2023 against commit 54b5f6754b5f67b250bbf7353e83c42ed187802584c3ae3.
Current version is 4.1.6140 which has been verified against 14045 tests cases.