Skip to content

Commit d72fb99

Browse files
authored
Merge pull request #185 from Univers42/release/3.2.0
release: 3.2.0 — Up finds what you typed, a hint is one key away, and bind
2 parents fcc231c + bc27720 commit d72fb99

3 files changed

Lines changed: 61 additions & 4 deletions

File tree

‎RELEASE.md‎

Lines changed: 59 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,65 @@
33
> 🔥 **hellish** is a fast, almost‑POSIX shell written from scratch in C —
44
> hackable, observable, and pleasant to live in.
55
6-
This file is what the welcome banner points you at. It tracks what's new and
7-
shows you how to drive the shell.
6+
This file tracks what's new in every release and shows you how to drive the
7+
shell. The welcome banner links to the guide for the latest one:
8+
[What's new](https://univers42.github.io/hellish/whats-new/).
9+
10+
---
11+
12+
## v3.2.0 — *Up finds what you typed, a hint is one key away, and `bind`*
13+
14+
**The guide: [What's new in 3.2](https://univers42.github.io/hellish/whats-new/)**.
15+
It covers every feature: the keys that reach it, and an example run on
16+
3.2. The welcome banner shows the same list once after you update.
17+
18+
- **Up and Down search by what you typed.** `git<Up>` steps through the
19+
history lines that start with `git`; on an empty line Up walks the whole
20+
history. On by default; `HELLISH_HISTORY_PREFIX=0` turns it off. The
21+
configs that ask for it now work too: bash's
22+
`bind '"\e[A": history-search-backward'` and zsh's
23+
`bindkey '^[[A' history-beginning-search-backward` (#136).
24+
- **Inline hints**, opt-in with `export HELLISH_AUTOSUGGEST=1`. The newest
25+
matching history line shows dim after the cursor. Right / End / Ctrl-F
26+
take all of it, Alt-F / Ctrl-Right take one word, and Alt-N / Alt-P
27+
show other matches (#140).
28+
- **`make <TAB>`** completes the targets of the Makefile in the current
29+
directory. The shell reads the file itself; make never runs (#140).
30+
- **`bind`**, bash's builtin: key bindings and readline settings from
31+
`~/.hellishrc`. `bind -x` runs a shell command on a key, and the command
32+
can edit the line through `READLINE_LINE` / `READLINE_POINT`.
33+
- **`bindkey`** in zsh mode reads zsh's `^X` notation and reaches the line
34+
editor's own widgets.
35+
- **`${var@P}`** renders a value through the PS1 renderer. **`$SRANDOM`**
36+
and **`$EPOCHREALTIME`** are new variables.
37+
38+
Fixed on the way to the release:
39+
40+
- **The hint and prefix keys did nothing on some builds.** The shell found
41+
readline's commands by comparing function addresses. On a non-PIE binary
42+
linked against a readline built with `-Bsymbolic-functions` (Ubuntu's),
43+
one function has two addresses, so nothing matched and every key kept
44+
its stock meaning. The shell now asks readline for each command by name
45+
(`rl_named_function`).
46+
- **Two leaks in readline 8.1's line editing**, one undo list per line:
47+
- after walking the history with Up or Ctrl-P;
48+
- after cancelling an Alt-P search.
49+
50+
LeakSanitizer reported both. `tests/rl_undo_leak_test.py` covers ten
51+
ways to reach them.
52+
- **`which` in zsh mode.** Esc Esc (oh-my-zsh's `sudo` plugin) printed
53+
`builtin: which: not a shell builtin`. zsh's `which [-ap]` now exists in
54+
zsh mode.
55+
- **`make re` on NFS** no longer stops in `fclean` on the `.nfsXXXX` file
56+
a running `build/bin/hellish` keeps open.
57+
- **The welcome banner** fits an 80-column terminal, and its frame stays
58+
aligned under `LANG=C`.
59+
60+
About two dozen smaller fixes landed as well, among them PS2 on every
61+
continuation line, `exec nosuch` no longer reading freed memory, `read`
62+
at end of input, and heredocs in functions, `eval` and `source`. The guide
63+
lists the ones you can see; the compare view has all of them:
64+
[v3.1.3...v3.2.0](https://github.com/Univers42/hellish/compare/v3.1.3...v3.2.0).
865

966
---
1067

‎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 "3.1.3"
18+
# define HELLISH_VERSION "3.2.0"
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": "3.1.3",
3+
"version": "3.2.0",
44
"description": "hellish — a fast, POSIX-compliant shell, with horns",
55
"bin": {
66
"hellish": "bin/hellish.js"

0 commit comments

Comments
 (0)