Skip to content

Pi-Bolt 0.9.5

Choose a tag to compare

@Kushalkhemka Kushalkhemka released this 19 Oct 01:10
· 189 commits to pi-bolt since this release
6f31513

Pi-Bolt 0.9.5 does less work per turn and per prompt, on every platform: up to 20% less CPU per prompt in a long session,
up to 9% less in an interactive session, and on Windows 9% fewer file operations. It also fixes compiled-in extensions that
lost their skills and prompts, plugins built from a checkout that used a second copy of Pi, and a miscompile in the -jit
builds. Pi is 1.3.0, with four fixes from Pi's next release. Everything else is 0.9.4.

Measured on GitHub's runners, 0.9.4 as released against 0.9.5, with the same local fake model (Linux pinned to one CPU):

CPU Linux x86-64 Linux ARM64 macOS Windows
A headless prompt (5 model turns) 46 → 45 ms 61 → 59 ms 60 → 55 ms 117 → 117 ms
An interactive session (5 prompts) 144 → 131 ms 200 → 187 ms 218 → 210 ms 364 → 333 ms
A prompt at 20 prompts into a session 29.8 → 26.0 ms 38.3 → 35.5 ms 45.1 → 38.4 ms
A prompt at 40 prompts (9 MB requests) 64.3 → 61.7 ms 75.7 → 75.1 ms 79.1 → 63.5 ms

Startup, streaming and idle are unchanged. On Windows an interactive session makes 1,534 file operations instead of 1,689, and
in the ConPTY check the prompt is ready after 99.7 ms instead of 110.6 ms.

Performance

  • Long sessions: every request sends the whole conversation again, and serializing it was the cost that grew with the
    session. The serialized form of each long string (a tool result, an answer) is now kept from the request before and copied
    as it is, so each one is escaped once. The bytes sent are the same.
  • Streaming events pass from the provider to the agent directly instead of through three streams that each read every
    event again.
  • Start: the models are refreshed once instead of twice when an extension registers a provider, models.json is read and
    checked once instead of three times, and models-store.json is no longer rewritten when nothing in it changed.
  • Windows: fd is no longer looked for as fdfind (Debian's name) in every PATH folder: a third of the PATH checks at
    start.

Fixes

  • Compiled-in extensions find the files beside their modules again: an extension that registers skills/, prompts/ or
    themes from import.meta.url lost them when pi-bolt compile put it into the executable
    (#53). The script that prepares them also no longer exits without
    output when it is run through a symbolic link.
  • Plugins built from a checkout (scripts/build-pi.sh --plugins) use the coding agent the executable runs, not a second
    copy of it, so a plugin that patches one of its classes takes effect
    (#52, #51 by
    @Shrub24).
  • -jit builds: an Array#sort with a comparator that does arithmetic on whole numbers, once compiled by the JIT, could
    return them out of order (oven-sh/WebKit#792). The default builds were not affected; a new test guards them.
  • From Pi's next release: automatic retry also for request to ... failed errors and more gateway errors, tool output
    that is only whitespace is sent as empty (some providers answered 400), and summaries for compaction and branches are no
    longer limited to a fixed number of output tokens.

Engine

All four runtimes are new, built by the runtime workflow on GitHub's runners (run 39165966034): 0.9.4's engine with
oven-sh/WebKit#792. From the engine trees that patches/webkit.patch and patches/bun.patch make on the pinned sources
(git rev-parse HEAD^{tree}): WebKit 896a83cc16b1723e89f11dfcbd923f54241671e5, Bun
397b79f57365fa286a7092dc31145e64890d9d8c.

Runtime Built on bun.exe / bun SHA-256
Linux x86-64 GitHub's ubuntu-24.04 runner, glibc 2.17 sysroot 18d383df649ccda99e580777a4b55c59616370bc45aee69553a695a018b513be
Linux ARM64 GitHub's ubuntu-24.04-arm runner, glibc 2.17 sysroot 43da546ce44501764f7d6513f49b7830b94efbedb6a40579fdc8affb176b7a31
macOS arm64 GitHub's macos-15 runner 5be410e9e74e976a71da9dc08fa699ae51f6abb5313b905c1871de9150286c81
Windows x64 GitHub's windows-2025 runner e7922421c09545381673857d18c1ae1d6b93f6ba505078326b5e4de72cb32416

Install

curl -fsSL https://pi-bolt.opensec.in/install.sh | sh
irm https://pi-bolt.opensec.in/install.ps1 | iex
powershell -c "irm https://pi-bolt.opensec.in/install.ps1 | iex"

or pi-bolt update, or npm install -g --allow-scripts=pi-bolt pi-bolt, or bun add -g --trust pi-bolt.

Asset For
pi-bolt-linux-x64.tar.xz / .tar.gz Recommended on Linux x86-64. CPUs with AVX2 (Intel Haswell 2013+, AMD Zen+).
pi-bolt-linux-x64-baseline.tar.xz / .tar.gz Any x86-64 CPU with SSE4.2.
pi-bolt-linux-x64-jit.tar.xz / .tar.gz JIT also on, for plugins loaded at run time.
pi-bolt-linux-arm64.tar.xz / .tar.gz Linux on ARM64, any 64-bit ARM CPU; Android in Termux, with the installer.
pi-bolt-linux-arm64-jit.tar.xz / .tar.gz Linux on ARM64, JIT also on.
pi-bolt-darwin-arm64.tar.xz / .tar.gz macOS. Macs with Apple silicon, macOS 13 or later.
pi-bolt-darwin-arm64-jit.tar.xz / .tar.gz macOS, JIT also on.
pi-bolt-win32-x64.zip Windows. Windows 10 (1809) or 11 on x64; compiled code on AVX2 CPUs, bytecode on others.
pi-bolt-win32-x64-jit.zip Windows, JIT also on.
pi-bolt-runtime-linux-x64.tar.gz, pi-bolt-runtime-linux-arm64.tar.gz, pi-bolt-runtime-darwin-arm64.tar.gz, pi-bolt-runtime-win32-x64.zip The Pi-Bolt Bun runtime, for compiling plugins in.
pi-bolt-kit-linux-x64.tar.gz, pi-bolt-kit-linux-arm64.tar.gz, pi-bolt-kit-darwin-arm64.tar.gz What pi-bolt compile builds with, besides the runtime.

Linux x86-64 or ARM64 with glibc 2.17 or later; Android 7 or later on 64-bit ARM, in Termux; macOS 13 or later on Apple silicon;
Windows 10 1809 or later, or Windows 11, on x64.