Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Releases: lmorg/murex

v7.1.4143

24 Oct 09:00
e59ab49

Choose a tag to compare

v7.1

This release focuses mainly on bugfixes and quality-of-life with the exception of three experimental new major additions:

  • foreach now supports running processes in parallel
  • fanout is a new builtin that allows sending stdout to the stdin of many processes
  • md is a new datatype added. Currently only supports rendering markdown tables but more features will follow in future releases

Breaking Changes

None

v7.1.xxxx

Features

  • fanout: new builtin (EXPERIMENTAL)
  • REPL: default prompt modernized
  • ANSI titlebar: Windows support added (PR)
  • autocomplete: add support for substring matches (discussion)
  • autocomplete: remove stat syscall from recursive directory lookups to improve performance
  • foreach: parallel support added (EXPERIMENTAL) (discussion)
  • macro vars: history support added (history stored in cache.db)
  • integrations: basti autocomplete
  • integrations: Charm Bracelet's freeze
  • tooling: Makefile added for simplified development on POSIX systems
  • runtime --about: GOMAXPROCS field added
  • xml: improved interop between CSV and XML
  • core: data types can now register what their layout type is. Allowing for format to better deduce how to reformat the data. eg next few refinements below
  • csv: support for JSON and YAML maps
  • yaml: convert tables to maps
  • json: convert tables to maps
  • select: support for maps
  • config: new option: syntax-completion-enabled
  • config: new option: history-write-enabled
  • md: new datatype, markdown (EXPERIMENTAL)
  • murex: new flag added: -ignore-whatsnew
  • core: hint text added for cd - (PR)
  • core: errors reformatted to make them slightly easier to read
  • test: default test report now uses the full width of the terminal, plus other minor readability improvements
  • docgen: new functions added
  • docgen: support for metadata
  • Update dependencies

Bug Fixes

  • datetime: stdout datatype set to str
  • fid-kill: autocomplete fix (issue)
  • exec: don't error on wait if PID is already closed (issue)
  • spellcheck: fixed bug causing users to be re-prompted when aspell isn't installed
  • REPL: fixed regression bug causing hint text not to display application hints
  • murex-package: working directory preserved when installing packages
  • readline: panic fixed in command line preview
  • cache.db: fixed potential race condition when checking if cache.db is enabled
  • REPL: fixed potential race condition when instantiating readline
  • tests: env test skips on Windows, uses full path on POSIX
  • tests: skip tilde parser test if username contains non-var chars (eg @)
  • readline: null check when using tab grid
  • readline: improved SGR detection
  • readline: fixed wider character rendering bug when using tab grid
  • readline: fixed potential race condition with read/write access to unicode slices
  • readline: fixed potential race condition with terminal width caching
  • readline: fixed potential race condition with asynchronous updates to tab completion
  • readline: fixed potential race condition with hint text height reporting
  • readline: fixed potential race condition with tab completion height reporting
  • readline: fixed potential race condition with previews
  • readline: fixed potential race condition with hint text cache

Special Thanks

Thank yous for this release goes to TheBearodactyl, JeffMelton, Th0rgal, lokalius, tiymat for your code, testing and feedback.

Also thank you to everyone in the discussions group and all who raise bug reports.

You rock!

v7.0.2107

02 Jul 22:37
bb72b6f

Choose a tag to compare

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 ...

  • 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

Breaking Changes

The following builtins have been removed in this release, having been marked as deprecated for 2 years or longer.

  • die has been removed because it 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.

  • the = and let builtins are now removed. These builtins were created back before expressions were a first class citizen in Murex. Now these serve no purpose and just add clutter to the language specification.

  • tread is now longer needed due to read supporting all tread's use cases.

You can still compile Murex to include these builtins via by including the following compile-time tag: deprecated_builtins. However we recommend you use the more modern syntax instead.

v7.0.0xxx

Features

  • xml: new data type support added (EXPERIMENTAL) ({{link "read more" "xml"}})
  • pretty: new flag added --type ({{link "read more" "pretty"}})
  • core: support added for running Murex scripts against specific versions of Murex
  • index: new behavior introduced for v8.0.x
  • runtime: new flag added --module-murex-version ({{link "read more" "runtime"}})
  • get & post: Body can now be marshalled into JSON. Even if Body was originally a different Content-Type, like XML ({{link "read more" "get"}})
  • onPrompt: new event interrupt: command-completion ({{link "read more" "onPrompt"}})
  • readline: VIM command mode ({{link "read more" "terminal-keys"}})
  • $MUREX_HISTORY: new environmental variable for changing the write location of Murex's history file ({{link "read more" "murex_history"}})
  • $MUREX_CONFIG_DIR: new environmental variable for changing the write location of all of Murex's config and profiles ({{link "read more" "murex_config_dir"}})
  • core: RISC-V 64 CPU support added (EXPERIMENTAL)
  • cd: support added for OSC 7 ANSI escape sequence ({{link "read more" "cd"}})
  • getfile & open: additional type inference logic for text/plain Content-Types ((issue #915)[https://github.com//issues/915], {{link "read more" "getfile"}})
  • core: system profile now loaded after .murex_preload
  • core: add support for preloading code in modules
  • integration: support added for OpenTofu
  • integration: support added for Orbstack
  • integration: support added for Ollama
  • integration: updates for Ttyphoon
  • readline: add support for line defaults
  • readline: ctrl+n for next line ((issue #924)[https://github.com//discussions/924], {{link "read more" "terminal-keys"}})
  • readline: ctrl+p for previous line ((issue #924)[https://github.com//discussions/924], {{link "read more" "terminal-keys"}})
  • source: support for loading modules

Bug Fixes

  • readline: fix end of line cursor position bug when using B with VIM keys
  • readline: don't show preview if no preview is set
  • core: file extension checks from HTTP was happening before content-type normalisation
  • core: <fid:var> was failing to set $var with FID

Special Thanks

Thank yous for this release goes to tiymat, atagen for your testing and feedback.

Also thank you to everyone in the discussions group and all who raise bug reports.

You rock!

v6.4.2063

15 Jan 23:05
b4c4296

Choose a tag to compare

v6.4.2xxx

Features

  • csv: when reformatting a generic or list of strings into a CSV, any preceding whitespace will now be trimmed. This behaviour can be disabled (ie reverted to pre-6.4.2xxx parsing) in config:

    config set csv left-trim false
    
  • core: improved memory usage. Garbage collection automatically deallocates memory after each prompt when in interactive mode (issue #896)

  • onPrompt: new interrupt: return performed after [Return] is pressed but while the cursor is still on the same line as the prompt (read more)

Bug Fixes

  • expr: integer comparisons weren't being compared correctly when strict types was disabled. This wouldn't affect typical use cases because Murex defaults to num types which are floats (discussion #902 issue #903)

v6.4.1005

10 Dec 23:50
60f05a2

Choose a tag to compare

v6.4.1xxx

Features

  • runtime: new flag: --about reports information about the Murex system. Useful for debugging (issue #896)

  • runtime: --go-gc now forces the garbage collector to deallocate memory rather than just marking memory as unused (issue #896)

Bug Fixes

  • expr fix panic when using parentheses in dot notation (issue #892)

  • versioning: only auto-version if $MUREX_DEV is set

  • versioning: 0 pad semver revision to 4 characters

v6.4.375

23 Nov 00:44
69c17da

Choose a tag to compare

This change brings a number of ergonomic improvements to job control, datetime and working with structures.

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

None

Features

  • IO redirection: smarter file pipes which solve the race condition seen in traditional shells where you try to write to the same file you're reading from (EXPERIMENTAL) (issue #851)

  • private functions: these can now be undefined (issue #429)

  • core: (expressions) are supported in dot notation. eg:

    » bob = %[foo bar baz]
    » out $bob.(1+1)
    baz
    
  • elements: negative values are supported for counting backwards. eg:

    » bob = %[foo bar baz]
    » out $(bob.-1)
    baz
    
  • core: support added for Bash-like job IDs (%n) in job control (issue #889)

  • bg / fg: support for command line parameters, as well as Bash-like job IDs (issue #889)

  • function: support for optional parameters when using named parameters (issue #888)

  • autocomplete: improved autocompletion for kill (issue #867)

  • datetime: numerous ergonomic improvements (read more, commit)

  • readline: MaxTabCompleterRows is now more granular (commit)

  • mxtty: updated csv support (commit, read more)

Bug Fixes

  • private functions: mutex added to mitigate a potential race condition (issue #883)

  • core: line numbering bugfix (commit)

  • readline: when in Vim mode, a and A should move the cursor right (commit)

  • index: support for null values (commit)

  • core: improvements with how raw command line parameters are passed to internal routines, which fixes a number of reporting bugs in process management tools

Special Thanks

Thank yous for this release goes to tiymat, atagen for your testing and feedback.

Also thank you to everyone in the discussions group and all who raise bug reports.

You rock!

v6.3.4225

18 Sep 21:13
c037883

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

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

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

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

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!