Skip to content

Commit e59ab49

Browse files
authored
Merge pull request #930 from lmorg/develop
# 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](#931)) * autocomplete: add support for substring matches ([discussion](#934)) * autocomplete: remove `stat` syscall from recursive directory lookups to improve performance * `foreach`: parallel support added (EXPERIMENTAL) ([discussion](#933)) * 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](#951)) * 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](#949)) * exec: don't error on wait if PID is already closed ([issue](#946)) * 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](https://github.com/TheBearodactyl), [JeffMelton](https://github.com/JeffMelton), [Th0rgal](https://github.com/Th0rgal), [lokalius](https://github.com/lokalius), [tiymat](https://github.com/tiymat) for your code, testing and feedback. Also thank you to everyone in the [discussions group](https://github.com/lmorg/murex/discussions) and all who raise bug reports. You rock!
2 parents ad23f13 + 3bd8838 commit e59ab49

File tree

486 files changed

+31305
-2677
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

486 files changed

+31305
-2677
lines changed

.github/workflows/archlinux-aur-package.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ on:
77
workflow_dispatch:
88

99
env:
10-
GO_VERSION: "1.24"
10+
GO_VERSION: "1.25"
1111
PKGBUILD: ".github/workflows/aur/PKGBUILD"
1212
SRCINFO: ".github/workflows/aur/SRCINFO"
1313

.github/workflows/clean-build.yaml

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,17 @@ on:
55
paths:
66
- "**/*.go"
77
branches:
8-
- "!v*"
8+
- "develop"
99

1010
workflow_dispatch:
1111

1212
jobs:
13-
Clean-Build:
13+
Clean-Build-Bash:
1414

1515
runs-on: ubuntu-latest
1616
strategy:
1717
matrix:
18-
go-version: [ "1.21", "1.22", "1.23", "1.24" ]
18+
go-version: [ "1.21", "1.22", "1.23", "1.24", "1.25" ]
1919

2020
steps:
2121
- name: Setup Go ${{ matrix.go-version }}
@@ -28,9 +28,37 @@ jobs:
2828
go version
2929
3030
- name: Build Murex
31+
shell: bash
3132
run: |
3233
GOBIN="$(pwd)" go install -v github.com/lmorg/murex@${{ github.ref_name }}
3334
3435
- name: Display Murex version
3536
run: |
3637
./murex --version
38+
39+
Clean-Build-Powershell:
40+
41+
runs-on: ubuntu-latest
42+
strategy:
43+
matrix:
44+
go-version: [ "1.21", "1.22", "1.23", "1.24", "1.25" ]
45+
46+
steps:
47+
- name: Setup Go ${{ matrix.go-version }}
48+
uses: actions/setup-go@v4
49+
with:
50+
go-version: ${{ matrix.go-version }}
51+
52+
- name: Display Go version
53+
run: |
54+
go version
55+
56+
- name: Build Murex
57+
shell: pwsh
58+
run: |
59+
$env:GOBIN="$(pwd)"; & go install -v github.com/lmorg/murex@${{ github.ref_name }}
60+
61+
- name: Display Murex version
62+
run: |
63+
./murex --version
64+

.github/workflows/code-coverage.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ jobs:
1313
runs-on: ubuntu-latest
1414
strategy:
1515
matrix:
16-
go-version: [ "1.24" ]
16+
go-version: [ "1.25" ]
1717
env:
1818
MUREX_TEST_NO_EXEC_DEPS: true
1919
steps:

.github/workflows/deploy-dev-docs.yaml

Lines changed: 0 additions & 95 deletions
This file was deleted.

.github/workflows/deploy-docs.yaml

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ name: Deploy Docs
33
on:
44
push:
55
branches:
6+
- develop
7+
- website
68
- master
79
paths:
810
- "**/*.md"
@@ -14,6 +16,7 @@ on:
1416
- "**/*.jpeg"
1517
- "**/*.gif"
1618
- "**/*.svg"
19+
- "package.json"
1720

1821
workflow_dispatch:
1922

@@ -22,7 +25,7 @@ jobs:
2225
runs-on: ubuntu-latest
2326
strategy:
2427
matrix:
25-
go-version: [ "1.24" ]
28+
go-version: [ "1.25" ]
2629

2730
steps:
2831
- name: Checkout
@@ -49,6 +52,8 @@ jobs:
4952
run: |
5053
./docgen -panic -warning -config gen/docgen.yaml
5154
mv -v *.md *.svg docs/
55+
mkdir -p gen/vuepress/public/images
56+
cp -vR images/* gen/vuepress/public/images
5257
mv -v gen/vuepress docs/.vuepress
5358
5459
echo Lower case documents...
@@ -70,6 +75,7 @@ jobs:
7075
- name: Build Docs
7176
env:
7277
NODE_OPTIONS: --max_old_space_size=8192
78+
NODE_ENV: DEV
7379
run: |-
7480
pnpm run docs:build
7581
> docs/.vuepress/dist/.nojekyll
@@ -79,13 +85,17 @@ jobs:
7985
cp -v docs/.vuepress/dist/install.html docs/.vuepress/dist/INSTALL.html
8086
cp -v docs/.vuepress/dist/download.html docs/.vuepress/dist/DOWNLOAD.html
8187
cp -v docs/.vuepress/dist/contributing.html docs/.vuepress/dist/CONTRIBUTING.html
82-
88+
8389
- name: Deploy Docs
8490
env:
8591
AWS_ACCESS_KEY_ID: ${{ secrets.S3_ACCESS }}
8692
AWS_SECRET_ACCESS_KEY: ${{ secrets.S3_SECRET }}
8793
AWS_DEFAULT_REGION: eu-west-1
8894
AWS_DEFAULT_OUTPUT: json
95+
CLOUDFRONT_ID: ${{ github.ref == 'refs/heads/master' && secrets.CLOUDFRONT_DISTRIBUTION_ID_MASTER || secrets.CLOUDFRONT_DISTRIBUTION_ID_DEV }}
96+
S3_PREFIX: ${{ github.ref == 'refs/heads/master' && 'master' || 'develop' }}
8997
run: |
90-
aws s3 sync docs/.vuepress/dist s3://murex.rocks/master --exclude "*.md" --no-progress
91-
aws cloudfront create-invalidation --distribution-id "${{ secrets.CLOUDFRONT_DISTRIBUTION_ID_MASTER }}" --paths "/*"
98+
mv -v images/vhs* images/banner* docs/.vuepress/dist/
99+
aws s3 sync docs/.vuepress/dist s3://murex.rocks/${S3_PREFIX} --exclude "*.md" --no-progress --delete
100+
aws cloudfront create-invalidation --distribution-id "${CLOUDFRONT_ID}" --paths "/*"
101+

.github/workflows/murex-downloads.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ on:
88
workflow_dispatch:
99

1010
env:
11-
GO_VERSION: "1.24"
11+
GO_VERSION: "1.25"
1212

1313
jobs:
1414
Build-Downloads:

.github/workflows/murex-tests.yaml

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ jobs:
1313
runs-on: ubuntu-latest
1414
strategy:
1515
matrix:
16-
go-version: [ '1.21', '1.22', '1.23', "1.24" ]
16+
go-version: [ '1.21', '1.22', '1.23', "1.24", "1.25" ]
1717
env:
1818
MUREX_BUILD_FLAGS: --no-colour
1919
MUREX_TEST_NO_EXEC_DEPS: true
@@ -30,21 +30,17 @@ jobs:
3030
run: |
3131
go version
3232
33-
- name: Go Test
33+
- name: Build
3434
run: |
35-
go test ./... -tags $(cat builtins/optional/standard-opts.txt) -count 1 -race
35+
make build
3636
37-
- name: Build native target
37+
- name: Test
3838
run: |
39-
go build -tags $(cat builtins/optional/standard-opts.txt) -v github.com/lmorg/murex
40-
41-
- name: Behavioural tests
42-
run: |
43-
./murex -c 'g: behavioural/*.mx -> foreach: f { source $f }; test: run *'
39+
make test
4440
4541
- name: Build cross-compiled targets
4642
run: |
47-
./murex ./test/build_all_platforms.mx --no-colour
43+
./bin/murex ./test/build_all_platforms.mx --no-colour
4844
4945
- name: Build web assembly target
5046
run: |

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ wasm_exec.js
3232
*.prof
3333
*.pprof
3434
*local.*
35+
/local/*
3536

3637
debug.log
3738

INSTALL.md

Lines changed: 25 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,14 @@
66
<div id="toc">
77

88
- [Installing From A Package Manager](#installing-from-a-package-manager)
9-
- [ArchLinux](#archlinux)
10-
- [FreeBSD Ports](#freebsd-ports)
11-
- [Homebrew](#homebrew)
12-
- [MacPorts](#macports)
139
- [Pre-Compiled Binaries (HTTPS download)](#pre-compiled-binaries-https-download)
1410
- [Compiling From Source](#compiling-from-source)
1511
- [Prerequisites](#prerequisites)
1612
- [Compiling](#compiling)
13+
- [Bash: Linux, MacOS, UNIX](#bash-linux-macos-unix)
14+
- [Powershell: Windows](#powershell-windows)
15+
- [Makefile: Linux, MacOS, UNIX](#makefile-linux-macos-unix)
1716
- [External Dependencies (Optional)](#external-dependencies-optional)
18-
- [Recommended Terminal Typeface](#recommended-terminal-typeface)
1917

2018
</div>
2119

@@ -38,6 +36,7 @@ There is a more detailed breakdown of known compatibility issues in the
3836
3937
[![Packaging status](https://repology.org/badge/vertical-allrepos/murex.svg?exclude_unsupported=1)](https://repology.org/project/murex/versions)
4038

39+
4140
### ArchLinux
4241

4342
From AUR: [https://aur.archlinux.org/packages/murex](https://aur.archlinux.org/packages/murex)
@@ -65,6 +64,7 @@ brew install murex
6564
port install murex
6665
```
6766

67+
6868
## Pre-Compiled Binaries (HTTPS download)
6969

7070
[![Version](version.svg)](DOWNLOAD.md)
@@ -89,7 +89,7 @@ binaries.
8989

9090
You will need `go` (Golang) compiler, and `git` installed.
9191

92-
> Go 1.20 or higher is required.
92+
> Go 1.21 or higher is required.
9393
9494
These should be easy to install on most operating systems however Windows is a
9595
lot more tricky with regards to `gcc`. Please check with your operating systems
@@ -104,32 +104,38 @@ package manager first but see further reading below if you get stuck.
104104

105105
Installation from source is as simple as the following one liner:
106106

107+
#### Bash: Linux, MacOS, UNIX
108+
107109
```bash
108110
GOBIN="$(pwd)" go install -v github.com/lmorg/murex@latest
109111
```
110112

111-
However you can change the `GOBIN` value to point to any writable location you
112-
wish.
113+
#### Powershell: Windows
114+
115+
```powershell
116+
$env:GOBIN="$(pwd)"; & go install -v github.com/lmorg/murex@latest
117+
```
118+
119+
#### Makefile: Linux, MacOS, UNIX
120+
121+
We also provide a `Makefile`.
122+
123+
This is convenient if you already have the source downloaded or want to taylor
124+
the install. For example reintroduce a deprecated builtin, add optional
125+
builtins, or utilize a different backend library for networking and/or sqlite3.
126+
127+
For options available in the Makefile, run `make help`.
113128

114129
## External Dependencies (Optional)
115130

116131
Some of Murex's extended features will have additional external dependencies.
117132

118133
* `aspell`: This is used for spellchecking. Murex will automatically enable or
119134
disable spellchecking based on whether `aspell` can be found in your `$PATH`.
120-
[http://aspell.net](http://aspell.net)
135+
([GNU Aspell](http://aspell.net))
121136

122137
* `git`: This is used by Murex's package manager, `murex-package`.
123-
[How to install git](https://github.com/git-guides/install-git)
124-
125-
## Recommended Terminal Typeface
126-
127-
This is obviously just a subjective matter and everyone will have their own
128-
personal preference. However if I was asked what my preference was then that
129-
would be [Hasklig](https://github.com/i-tu/Hasklig). It's a clean typeface
130-
based off Source Code Pro but with a few added ligatures - albeit subtle ones
131-
designed to make Haskell more readable. Those ligatures also suite Murex
132-
pretty well. So the overall experience is a clean and readable terminal.
138+
([How to install git](https://github.com/git-guides/install-git))
133139

134140
## See Also
135141

0 commit comments

Comments
 (0)