Repository navigation
Pepper v0.9.0
Pepper v0.9.0: everything merged since v0.3.0 (278 commits). Grouped by area, with the main pull requests linked.
The VS Code extension is published as release vsix-v0.9.0.
Breaking changes
- The Rust compiler is gone (#803).
pep-buildispepc, 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 testreplacescargo testfor the runtime and tools (#560, #666).[NotCompared]is now[Equatable(exclude = true)](#458);Optional's methods are renamed to match its cases (#449);Copyabletakes 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
privatefor 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,matchandas?(#452); weak references to trait values (#456); overload sets merge across modules (#554); many inference and overload fixes. - SIMD vectors,
simd.Vector<T, N>andsimd.Mask<N>(#542).
Compiler and platforms
pepcchecks 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 forwasm32-wasi(#494); native iOS and Android builds (#547); static-block expansion with--emit-staticand stepping in debuggers (#538, #541). - Inlined calls in backtraces (#546); the
debugmodule (#523); debuggers show value enums (#453, #811).
Tools
pepperentry point withpepper -C <dir>(#537);pep.tomlprojects andpep-packagefetch, add, remove and update (#531, #533).pepper testand the[Test]harness (#534);pep-profileflame graphs (#525);pep-docin Pepper (#693).pep-installinstalls toolchains side by side (#685, #686); install scripts and prebuilt release binaries (#550).climodule: typed option values, global options and shell completion scripts (#671, #675, #676).- The language server and
pep-fmtare written in Pepper and ship everywhere (#806, #729); the language server's analysis is faster than the Rust one (#815).
Runtime library
- New modules:
timewith dates, time zones and formatting (#556);toml(#622);iofile, directory and permission APIs and tar restore (#558);RwLock,Semaphore,BarrierandLatch(#584, #581); futex-backedMutexandCondition(#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,splitandreplace(#515); Ryu float formatting (#474); faster DEFLATE (#478); a small block allocator (#624); empty arrays allocate nothing (#668). libcryptoandzlibbackends fordigestandcompress(#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.0.