What changed in rc.6
Pop 0.1.0-rc.6 is a much broader release candidate than rc.3. The language surface remains deliberately static and Luau-shaped, but the usable foundation now reaches collections, text, bytes, time, files, terminal output, platform facts, and networking.
Standard library
Section titled “Standard library”The reserved Pop.Standard foundation now includes the following user-facing
families:
| Family | Representative APIs |
|---|---|
Pop.Sequence |
map, filter, take, drop, fold, collect, first, last, findOr, sort, reverse |
Pop.Math |
integer min, max, abs, sign, gcd, lcm, coprime, checked power and division helpers |
Pop.Text and Pop.Unicode |
search, slicing, trimming, replacement, splitting, joining, integer parsing, Rune inspection |
Pop.Bytes |
views, reusable Bytes.Buffer, hex/base32/base64, bit operations, comparisons, endian reads and writes |
Pop.Time |
dates, clock values, civil date-times, offsets, deadlines, deterministic test clocks |
Pop.Net |
addresses, prefixes, TCP/UDP, DNS, Unix streams, bounded transfers and network facts |
Pop.File and Pop.Directory |
explicit host capabilities, bounded reads/writes, text reads, directory snapshots |
Pop.Terminal, Pop.Process, Pop.Platform |
output controls, executable/argument access, operating-system and architecture facts |
Pop.Random, Pop.Uri, Pop.Version, Pop.Locale, Pop.Mime, Pop.Guid, Pop.Csv, Pop.Path |
typed parsers and deterministic value helpers |
These are typed namespaces and functions, not dynamic member lookup. Cost, allocation, capability, and failure behavior are part of each API contract. See Standard API map for examples and the authoritative source/baseline pointers.
Generalized iteration
Section titled “Generalized iteration”String is now an exact Iterable<Rune>, so this is a valid rc.6 program:
namespace CountLetters
function main() local count = 0 for rune in "Pop 🫧" do if Unicode.isAsciiLetter(rune) then count += 1 end end print(count)endThe loop decodes each Unicode scalar once. Text.View remains a borrowed,
non-iterable view in this release.
CLI and projects
Section titled “CLI and projects”The driver now has separate source and manifest workflows for check, fix,
lint, format, build, documentation, run, test, and benchmark,
plus new, initialize, ffi generate, and the experimental C transpiler.
Manifest commands use --manifestPath bubble.toml; format also accepts
--check. See Command-line reference.
Packages resolve local and locked Bubble graphs, build library/binary/test/
benchmark selections, emit documentation and .poplib metadata, and preserve
the Item → Module → Bubble → Package → Workspace ownership model.
Networking and HTTP
Section titled “Networking and HTTP”Loopback-capable TCP and UDP APIs use typed streams, bounded byte transfers,
deadlines, cancellation, and explicit outcomes. Pop.Http is a separate
versioned Package for HTTP/1.1 request/response values; it is not folded into
the reserved Standard Bubble. The HTTP example is a normal dependency-driven
Bubble under examples/httpServer/.
Read the boundaries
Section titled “Read the boundaries”rc.6 is still a release candidate. The LLVM/native path is the actively delivered backend. The MIR interpreter is an internal conformance engine, and the C backend remains experimental and capability-limited. Runtime reflection, dynamic values, catchable source exceptions, and implicit host I/O remain out of the language.
