Skip to content

Commit 539c34b

Browse files
committed
chore(release): 2.8.3
1 parent 82da24a commit 539c34b

4 files changed

Lines changed: 37 additions & 3 deletions

File tree

‎RELEASE.md‎

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,40 @@ shows you how to drive the shell.
88

99
---
1010

11+
## v2.8.3 — *the four-bug-reports release*
12+
13+
Four field reports, four root causes, and a detector for each so none of
14+
them can quietly come back:
15+
16+
- **The big one (#94):** a double free in AST teardown could SIGSEGV the
17+
shell on large rc-shaped scripts. The parse arena's rare heap-fallback
18+
handed the reparser a shared token it then freed once per word — a
19+
state so deep it needed hundreds of MB of parse allocations to reach,
20+
which is why no normal-size test ever saw it. Fixed at the root, and
21+
`make arena-stress` now shrinks the arena chunks to 512 bytes so those
22+
rare states happen every few nodes, under ASan, on every CI run.
23+
- **`$(case ...)` parses (#95):** a case pattern's unbalanced `)` no
24+
longer ends the command substitution — so the idiomatic
25+
`n=$(case "$x" in ''|*[!0-9]*) echo no ;; *) echo yes ;; esac)` works,
26+
and one such line no longer silently disables the rest of your rc.
27+
- **Preexec hooks from functions (#96):** `trap 'my_preexec' DEBUG`
28+
inside a function now persists after the function returns, exactly as
29+
bash does — the canonical installable-hook shape works. Subshells got
30+
bash's other half too: inherited DEBUG/RETURN/ERR traps stay listable
31+
in `$( )` but never fire there. And because bash-preexec's hook could
32+
now actually run, hellish gained the **`builtin`** builtin it calls
33+
(`builtin history 1`) — 69 builtins now.
34+
- **`$COLUMNS` and `$LINES` (#97):** set at interactive startup and kept
35+
current across resizes (honouring `shopt checkwinsize`), unexported,
36+
like bash — a right prompt no longer needs to fork `tput cols`.
37+
38+
Verified green across every layer: 4323 golden cases on both the ASan
39+
and release builds, whole-script + hard corpora, the pty suite (plus a
40+
new resize test), allocator parity on both heaps, the 13-plugin corpus,
41+
and the new arena stress.
42+
43+
---
44+
1145
## v2.8.2 — *the customize-your-prompt release*
1246

1347
Paste any zsh prompt tutorial into `~/.hellishrc` and it now just works

‎incs/version.h‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
/* The single source of truth for the running shell's version. Bumped in step
1717
with the git tag / GitHub release / npm package / docker image. */
18-
# define HELLISH_VERSION "2.8.2"
18+
# define HELLISH_VERSION "2.8.3"
1919

2020
/* Where releases live; used by the `update` builtin and the daily check. */
2121
# define HELLISH_REPO "Univers42/hellish"

‎npm/package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "hellish-shell",
3-
"version": "2.8.2",
3+
"version": "2.8.3",
44
"description": "hellish — a fast, POSIX-compliant shell, with horns",
55
"bin": {
66
"hellish": "bin/hellish.js"

‎wiki/context.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ later session. The repo history is authoritative; this file records the
55
things history cannot tell you — why a thing was done, what was measured,
66
what was deliberately *not* done, and what is still open.
77

8-
Branch to resume from: **`develop`**. Released version: **2.8.2**.
8+
Branch to resume from: **`develop`**. Released version: **2.8.3**.
99

1010
The previous note on this file covered the issue-fixing session (#27, #32,
1111
#34, #42 and friends). All of those are closed; the tracker is empty. This

0 commit comments

Comments
 (0)