Skip to content

Pepper v0.9.1

Choose a tag to compare

@justinboswell justinboswell released this 19 Oct 04:47
· 142 commits to main since this release

Pepper v0.9.1: everything merged since v0.3.0, and the first release of the 0.9 line with installable archives. v0.9.0 was tagged but its archive, extension and docs builds failed; v0.9.1 carries the same changes plus the fixes below. Grouped by area, with the main pull requests linked.

The VS Code extension is published as release vsix-v0.9.1.

Since v0.9.0

  • Releases and CI build with the newest published build of main, whatever version VERSION holds, and the self-hosted runner's checkout is trusted by git (#829).
  • pep-doc's example runs bind Unix sockets under a short temp path on Windows (#830).
  • The version is 0.9.1 (#831).

Breaking changes

  • The Rust compiler is gone (#803). pep-build is pepc, the compiler written in Pepper (#784). Building from source now takes an installed Pepper toolchain: use the install scripts (scripts/install.sh, scripts/install.ps1) and see the README, "Building from source".
  • pepper test replaces cargo test for the runtime and tools (#560, #666).
  • [NotCompared] is now [Equatable(exclude = true)] (#458); Optional's methods are renamed to match its cases (#449); Copyable takes no copy context argument (#468).
  • A top-level name spelled like a built-in type is an error (#721); a file sees another file of its module only through an import (#788).

Language

  • private for file-only visibility (#598); files of a module see each other's declarations (#590).
  • Enums gain payload-aware union layout (#690), computed properties, generic methods and operators (#447, #454, #455).
  • Derived == and hash with [Equatable] (#457); assignment through chained indexers (#627).
  • Attributes: [Cold] (#641), [Likely] / [Unlikely] (#480), [Unsafe("checks")] (#620), [Export] and C headers (#487), [BuildOption] and -D (#492), compiler-native [ThreadLocal] (#628).
  • Trait values convert back with is, match and as? (#452); weak references to trait values (#456); overload sets merge across modules (#554); many inference and overload fixes.
  • SIMD vectors, simd.Vector<T, N> and simd.Mask<N> (#542).

Compiler and platforms

  • pepc checks in layers, caches each layer and each part's object, and compiles in parallel; edits rebuild a fraction of what they did (#732, #778, #669).
  • Cross-compile with --target (#484); WebAssembly for wasm32-wasi (#494); native iOS and Android builds (#547); static-block expansion with --emit-static and stepping in debuggers (#538, #541).
  • Inlined calls in backtraces (#546); the debug module (#523); debuggers show value enums (#453, #811).

Tools

  • pepper entry point with pepper -C <dir> (#537); pep.toml projects and pep-package fetch, add, remove and update (#531, #533).
  • pepper test and the [Test] harness (#534); pep-profile flame graphs (#525); pep-doc in Pepper (#693).
  • pep-install installs toolchains side by side (#685, #686); install scripts and prebuilt release binaries (#550).
  • cli module: typed option values, global options and shell completion scripts (#671, #675, #676).
  • The language server and pep-fmt are written in Pepper and ship everywhere (#806, #729); the language server's analysis is faster than the Rust one (#815).

Runtime library

  • New modules: time with dates, time zones and formatting (#556); toml (#622); io file, directory and permission APIs and tar restore (#558); RwLock, Semaphore, Barrier and Latch (#584, #581); futex-backed Mutex and Condition (#574); process.fork() (#799).
  • Networking: HTTP streaming, redirects and connection reuse (#605, #607, #610); TLS client certificates (#614); Unix datagram sockets and timeouts (#613, #615); io_uring receive and send (#577).
  • Faster: linear String.find, split and replace (#515); Ryu float formatting (#474); faster DEFLATE (#478); a small block allocator (#624); empty arrays allocate nothing (#668).
  • libcrypto and zlib backends for digest and compress (#544); JSON enum forms with [Tag] and [Untagged] (#472).

Fixes and CI

  • Many compiler, runtime and Windows or macOS fixes; the runtime's and tools' tests run as Pepper tests with a faster pre-merge pass (#748).
  • CI and the workers install the published build of main (#751); the Linux archive builds LLVM 20 from source (#787).

Full list: v0.3.0...v0.9.1.