Skip to content

Releases: lmorg/murex

v6.3.4225

18 Sep 21:13
c037883
Compare
Choose a tag to compare

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>, eg command <err> <!out> parameters... | next-command ...

  • the = and let 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 = and let command names from your expressions

  • tread has been deprecated for a while due to read supporting all tread'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 with exit 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 from git

  • 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() after os.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

29 Jul 20:27
d01afb5
Compare
Choose a tag to compare

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

19 Jul 08:02
a18cb26
Compare
Choose a tag to compare

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>, eg command <err> <!out> parameters... | next-command .... It will be officially removed in v7.0

  • the = and let 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 = and let 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 in murex-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

27 Jun 12:45
7ae0caf
Compare
Choose a tag to compare

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 and debug. 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>, eg command <err> <!out> parameters... | next-command ...

  • the = and let 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 = and let 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 Makefiles

  • 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 a Content-Type header based on stdin data type (read more)

  • post: support added to default a Content-Type header based on stdin data type (read more)

  • readline: home and end 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 for image data type wasn't passing path to image correctly

  • profile: openagent for image data type wasn't autodetecting shell correctly

  • profile: openagent default profile included references to deprecated maths lib

  • safe-commands: td should have been tr

  • 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

17 Feb 21:12
e081c89
Compare
Choose a tag to compare

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>, eg command <err> <!out> parameters... | next-command ...

  • the = and let 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 = and let 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 and whereis autocompletions were Linux specific. Now they're enabled for all platforms

  • grep and egrep aliases were Linux specific. Now they're enabled for all POSIX platforms

  • zero length environment variables are no longer being reported as null by is-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

06 Jan 21:22
0da5661
Compare
Choose a tag to compare

v5.3.7000

Features

  • None

Bug Fixes

  • object builder %{} was parsing bareword null 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

02 Jan 15:48
39c01d2
Compare
Choose a tag to compare

v5.3.6000

Features

  • Copyright messages update for 2024

Bug Fixes

  • ANSI escape code for string terminations was updated to incorrect values in preview release. This has been fixed here

v5.3.5000

19 Dec 21:00
96dc071
Compare
Choose a tag to compare

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

11 Dec 00:08
bd88e3c
Compare
Choose a tag to compare

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

08 Dec 13:23
c35c0d3
Compare
Choose a tag to compare

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>, eg command <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 and aws

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!