buninu 0.4.17 → 0.4.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.4.19 - 2026-10-12
4
+
5
+ - Sync bunmsh to 0.3.11: more POSIX syntax
6
+
7
+ ## 0.4.18 - 2026-09-29
8
+
9
+ - Sync jsgotty to 1.1.14: Kitty for Windows
10
+ - Sync bunmsh to 0.3.10: Fix several posix/gnu/external builtin commands
11
+
3
12
  ## 0.4.17 - 2026-09-26
4
13
 
5
14
  - readme: Add homepage URL
@@ -2,6 +2,49 @@
2
2
 
3
3
  All notable user-visible changes to bunmsh are documented here.
4
4
 
5
+ ## [0.3.11] - 2026-10-12
6
+
7
+ ### Fixed
8
+
9
+ - Keep multiline quoted words, command substitutions and here-documents
10
+ together when parsing compound-command bodies, rather than treating their
11
+ continuation lines as separate commands or compound keywords.
12
+
13
+ - Accept additional `if`/`elif` and `while`/`until` header layouts, including
14
+ `then` or `do` on the following line, and execute commands placed on the
15
+ same line after `then`.
16
+
17
+ - Improve comment handling in compound keyword and case-arm scanning, and
18
+ include nearby source text in several compound-syntax error messages.
19
+
20
+ ### Added
21
+
22
+ - Initial support for parenthesized subshell groups, executed in a child
23
+ bunmsh with inherited shell state, including groups embedded in command
24
+ sequences and leading groups followed by `&&`, `||` or `;`.
25
+ Subshell redirection is still limited: the leading-group path handles
26
+ discarding stdout/stderr to `/dev/null`, but does not yet implement
27
+ general file redirection or descriptor duplication.
28
+
29
+ - Recognize general numeric output-descriptor duplication syntax such as
30
+ `3>&1`. Only the existing `1>&2` and `2>&1` handling is implemented for
31
+ ordinary commands; other numeric pairs are currently accepted but ignored.
32
+
33
+ ## [0.3.10] - 2026-09-29
34
+
35
+ ### Fixed
36
+
37
+ - Match system utilities when handling multiple operands: `printf` repeats its
38
+ format for remaining arguments; `ln` links multiple sources into a directory;
39
+ `head`, `tail`, `wc`, and `cut` process each file separately; and `md5sum` and
40
+ `sha256sum` print one labelled digest per file. `wc` also prints a total for
41
+ multiple files. Reference tests compare these results with system commands.
42
+
43
+ - Make `grep -r PATTERN` without an explicit path search the current directory,
44
+ as system `grep` does, instead of reading a locked standard-input stream.
45
+ Reference tests cover recursive matches, line numbers, no matches, and quiet
46
+ mode.
47
+
5
48
  ## [0.3.9] - 2026-09-22
6
49
 
7
50
  ### Fixed
@@ -32,8 +32,12 @@ pseudo-terminal tests.
32
32
 
33
33
  ### Grammar and execution
34
34
 
35
- - Background jobs (`&`), job control, coprocesses, and asynchronous command
36
- lists are not implemented.
35
+ - A final, standalone, unquoted `&` starts a single external command in the
36
+ background (trailing comments and newlines are allowed). Stdin is ignored;
37
+ stdout/stderr are inherited, and the process is exposed in `Bun.sha.procs`.
38
+ Background pipelines, builtins, functions, and all redirections are rejected
39
+ before files are opened. General asynchronous command lists, job control,
40
+ and coprocesses are not implemented.
37
41
  - Brace command groups, `select`, arithmetic commands, and `[[ ... ]]` are
38
42
  not implemented.
39
43
  - Functions and subshells cover practical cases but do not yet reproduce every
@@ -959,7 +959,8 @@ Create hard or symbolic links.
959
959
  ### Usage
960
960
 
961
961
  ```sh
962
- ln [-sfT] TARGET LINK
962
+ ln [-sf] TARGET LINK
963
+ ln [-sf] TARGET ... DIRECTORY
963
964
  ```
964
965
 
965
966
  ### Options and forms
@@ -967,6 +968,7 @@ ln [-sfT] TARGET LINK
967
968
  - `-s`: Create a symbolic link.
968
969
  - `-f`: Replace an existing destination.
969
970
  - `-T`: Treat the destination as a normal path, not a directory.
971
+ - Multiple targets may be linked into an existing directory.
970
972
 
971
973
  ### Example
972
974
 
@@ -5,7 +5,8 @@ Create hard or symbolic links.
5
5
  ### Usage
6
6
 
7
7
  ```sh
8
- ln [-sfT] TARGET LINK
8
+ ln [-sf] TARGET LINK
9
+ ln [-sf] TARGET ... DIRECTORY
9
10
  ```
10
11
 
11
12
  ### Options and forms
@@ -13,6 +14,7 @@ ln [-sfT] TARGET LINK
13
14
  - `-s`: Create a symbolic link.
14
15
  - `-f`: Replace an existing destination.
15
16
  - `-T`: Treat the destination as a normal path, not a directory.
17
+ - Multiple targets may be linked into an existing directory.
16
18
 
17
19
  ### Example
18
20
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bunmsh",
3
- "version": "0.3.9",
3
+ "version": "0.3.11",
4
4
  "description": "Cross-platform command shell for Bun JavaScript",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -806,11 +806,13 @@ async function main(argv) {
806
806
 
807
807
  if (command !== null) {
808
808
  const name = argv[i] ?? "bunmsh";
809
- const state = createState({
810
- args: [name, ...argv.slice(i + 1)],
811
- mouseTracking: forceMouse || undefined,
812
- pathSearch: builtinOnly ? false : undefined,
813
- });
809
+ const state = process.env.BUNMSH_INTERNAL_PIPELINE_STATE
810
+ ? pipelineChildState()
811
+ : createState({
812
+ args: [name, ...argv.slice(i + 1)],
813
+ mouseTracking: forceMouse || undefined,
814
+ pathSearch: builtinOnly ? false : undefined,
815
+ });
814
816
  const result = await execute(command, state);
815
817
  return state.exitRequested ? state.exitStatus : result.status;
816
818
  }