Experimental1.0.0-rc0 / Zsh 5.9.2

pshPerformance SHell

My fork of Zsh, aimed at squeezing as much performance out of the interpreter as possible while keeping the Zsh behavior we rely on. Built for the editors, chat clients, and terminal applications that do real work inside the shell.

On my workstation: I'm currently dogfooding psh with my own interactive setup and shell applications. This first public source release candidate is ready for wider testing.

Measured on shell applications

The release compares unmodified upstream Zsh 5.9.2 with psh on specific workloads from real projects. These ratios divide the upstream time by the psh time; higher means the measured work finished faster under psh.

Offline kernels · two benchmark passes
WorkloadZsh time / psh time
zcoder paste/edit batch1.18–1.20×
zcoder wide-character layout1.85–1.86×
zchat wide-character layout1.86–1.88×
Endgame world update1.21×
Mario simulation1.60–1.61×
zfetch URL encoding3.30×
Bundled zjson array parsing1.20–1.22×
Bundled zjson array encoding1.19–1.21×

Warm, interpreter-heavy kernels on an AMD Ryzen 9 5950X running Mageia 11 x86-64, using GCC 15.2.0 and -O2 -g. Each pass uses nine alternating samples on CPU 13 in C.UTF-8 and checks matching result state. These results do not measure complete UI startup, external commands, network performance, or every Zsh script. There is no aggregate shell-speed claim.

Read the benchmark methods and samples

Less repeated work inside Zsh

rc0 brings together 27 accepted optimizations. Guarded fast paths cover array access, append and search, metafied strings, ASCII and multibyte traversal, patterns, substitutions, numeric conversion, and option emulation. Eligible function returns use indexed local-parameter cleanup to avoid scanning unrelated globals.

Cases outside those fast paths keep the conservative behavior. Rejected experiments and slower controls remain in the development history, alongside the measurements behind the accepted changes.

Familiar setup, tested compatibility

$ZSH_VERSION stays at 5.9.2, stock modules retain their zsh/* names, and personal Zsh startup filenames keep their meaning. The bundled installer uses separate psh paths and global configuration, leaving stable Zsh and the account login shell unchanged.

Oh My Zsh working unchanged is a release requirement. The accepted build passes 24 real interactive sessions covering the configured theme, plugins, highlighter, completion, history, prompt, async behavior, and Ctrl-C. That covers the tested configurations; compatibility with every script, plugin, native module, and platform is still being established.

Production sources pass the GCC and Clang upstream suites: 63 scripts, zero failures, and two skips. Validation also includes seven package suites, 195,600 arithmetic comparisons across five locales, and focused native and Memcheck checks. Native modules should be built and tested against the matching psh SDK.

Read the compatibility policy

Six companions in the full distribution

The complete package includes pinned sources for these projects, with native components built against the matching psh SDK. Each project keeps its own API and development status.

zdraw
Terminal drawing, Unicode measurement, input, and UI helpers.
zjson
JSON parsing and encoding in pure Zsh.
zcurl
Native HTTP, HTTPS, and WebSocket operations through libcurl.
zmdown
Native Markdown rendering for terminals.
zhtml2md
HTML-to-Markdown conversion in pure Zsh.
zoup
HTML cleaning in pure Zsh.

Try psh from the source release

Download psh-1.0.0-rc0.tar.xz from GitHub Releases and verify it with SHA256SUMS. Use the attached archive: GitHub's automatic source snapshots omit the extra upstream baseline archive required by the build tools.

tar -xf psh-1.0.0-rc0.tar.xz
cd psh-1.0.0-rc0
python3 Perf/build.py --which candidate --profile release
./psh --version
./psh -f

The core trial needs Python 3.12+, a C toolchain, and the appropriate Zsh build dependencies. It builds and runs inside the extracted directory without installing a system shell. For all six companions, follow the bundled installation guide. The bundled Linux installer is validated on Mageia 11 x86-64; other platforms are experimental. rc0 ships as source.

Help test rc0

Try your scripts and normal interactive setup. If a working Zsh script fails under psh, report a minimal reproducer with both versions, your operating system, locale and options, expected and actual results, and the build ID or source commit. Keep credentials and private startup files out of reports.