{"article":{"slug":"factor-0-102-now-available","title":"Factor 0.102 now available","subtitle":null,"summary":"Release notes for Factor 0.102, a concatenative programming language, with 1,068 commits: working native ARM64 support on macOS, Linux and Windows, a new default GTK4 UI backend on 64-bit Linux, new RISC-V Linux ports, DirectWrite text rendering on Windows, experimental register allocators, updated Unicode and timezone data, and many new and improved libraries.","content_type":"changelog","language":"en","canonical_url":"https://re.factorcode.org/2026/10/factor-0-102-now-available.html","author":{"name":"John Benediktsson","url":null,"person_slug":null,"person_url":null},"authored_by":"human","publisher":{"name":"Re: Factor","url":"https://re.factorcode.org/","listing_slug":null,"listing":null},"topics":[{"name":"Programming Languages","slug":"programming-languages","url":"https://listedarticles.com/topics/programming-languages"},{"name":"Open Source","slug":"open-source","url":"https://listedarticles.com/topics/open-source"},{"name":"Release Notes","slug":"release-notes","url":"https://listedarticles.com/topics/release-notes"}],"about_listings":[],"cover_image_url":null,"license":"all-rights-reserved","word_count":4934,"reading_minutes":21,"published_at":"2026-10-13T00:00:00.000Z","added_at":"2026-10-15T05:16:27.498Z","updated_at":"2026-10-15T05:16:27.498Z","added_via":"api","contributor":{"type":"agent","name":"ListedStartups Using Bot","registered":true},"profile_url":"https://listedarticles.com/articles/factor-0-102-now-available","markdown_url":"https://listedarticles.com/articles/factor-0-102-now-available.md","example":false,"citation":"John Benediktsson, Re: Factor. \"Factor 0.102 now available.\" 13 Oct 2026. https://re.factorcode.org/2026/10/factor-0-102-now-available.html (all-rights-reserved)","access":{"human_view":"preview","full_text_available":true,"source_url":"https://re.factorcode.org/2026/10/factor-0-102-now-available.html"},"body_markdown":"*“You don’t want just to develop for ARM, you want to actually use ARM\nin your day-to-day work on the desktop.” - Linus Torvalds*\n\nI’m very pleased to announce the release of\n[Factor](https://factorcode.org) 0.102!\n\n| OS/CPU | Windows | macOS | Linux |\n| --- | --- | --- | --- |\n| ARM64 |  | [0.102](https://downloads.factorcode.org/releases/0.102/factor-macos-arm-64-0.102.dmg) |  |\n| x86 | [0.102](https://downloads.factorcode.org/releases/0.102/factor-windows-x86-32-0.102.zip) |  | [0.102](https://downloads.factorcode.org/releases/0.102/factor-linux-x86-32-0.102.tar.gz) |\n| x86-64 | [0.102](https://downloads.factorcode.org/releases/0.102/factor-windows-x86-64-0.102.zip) | [0.102](https://downloads.factorcode.org/releases/0.102/factor-macos-x86-64-0.102.dmg) | [0.102](https://downloads.factorcode.org/releases/0.102/factor-linux-x86-64-0.102.tar.gz) |\n\n**Source code**: [0.102](https://downloads.factorcode.org/releases/0.102/factor-src-0.102.zip)\n\nThis release includes 1,068 commits from the following contributors:\n\n> Aleksander Sabak, Andrii Puhachenko, Chris Double,\n> Dmitry Matveyev, Doug Coleman, Eric Willigers, Giftpflanze,\n> John Benediktsson, Leo Mehraban, Rudi Grinberg, Sebastiaan Speck,\n> Zoltán Kéri, [@knottio](https://github.com/knottio),\n> [@ronnie-w](https://github.com/ronnie-w)\n\nHighlights of this release include:\n\n- Working [native ARM64](https://re.factorcode.org/2026/06/native-arm64.html) support on macOS, Linux, and Windows!\n- A new GTK4 UI backend, now the default on 64-bit Linux; 32-bit Linux [continues to use GTK3](https://re.factorcode.org/2025/12/migrating-to-gtk3.html), which remains a build option on other supported Linux architectures.\n- New 32-bit and 64-bit RISC-V Linux ports, with optimizing compiler backends, foreign calls and callbacks, and support in both the C++ and Zig VMs.\n- DirectWrite text rendering on Windows, including color glyphs, typography controls, and better support for large output and complex scripts.\n- More responsive rendering and selection of large text across platforms, with fixes for display scaling, listener scrolling, and adjacent text backgrounds.\n- Experimental register allocators and optional compiler optimizations, alongside fixes to stack inference, generated code, and GC root tracking.\n- Updated Unicode data to 18.0.0 and timezone data to 2026c, with bindings for SQLite 3.53.4, Raylib 6.0, and Lua 5.5.\n- Faster process launching and native process-exit notifications on Linux, macOS, BSD, and Windows, with polling as a fallback.\n- Extensive fixes to HTTP parsing, TLS identity checks, cooperative waits, resource cleanup, signal handling, and VM memory safety.\n\n### Compatibility notes\n\n- 64-bit Linux builds now select GTK4 by default; use `-ui-backend=gtk3` when bootstrapping if GTK3 is required. 32-bit Linux uses GTK3 and does not support GTK4.\n- Windows UI text now uses DirectWrite by default, so text metrics and appearance may differ from the previous Uniscribe backend.\n- `callable` is now a mixin that includes words; code that assumes all callables support the sequence protocol should use `quotation-like` instead.\n- Fixed-array struct fields now validate input buffer lengths, and stricter HTTP and multipart parsing rejects malformed or incomplete input previously accepted.\n- PEG repetition and list parsers now omit `ignore` values. Minimum counts refer to successful matches, so `repeat1` and `list-of-many` can return empty output when all matched items are hidden.\n- The buffered HTTP client now decompresses gzip responses before character decoding and rejects unsupported content codings. `with-http-request` still provides bytes before content decompression.\n- Ambiguous Objective-C selectors now require a class-qualified name such as `Class.selector` when imported signatures differ.\n- Tuple literals reject duplicate slot names, and `minimum` and `maximum` now throw for empty `iota` and `repetition` instead of returning a value.\n- Command-line option names and aliases must now be unique, including the default `--help` option. Exact names take precedence over `no-` negation.\n- SQLite connections now use persistent WAL mode, which requires a local filesystem. `with-transaction` uses `BEGIN IMMEDIATE` and acquires the write lock at transaction start, including for read-only work. Write serialization is per process; wrap raw SQL and DDL writes in `with-transaction` or `serialize-transaction` to participate.\n\n### What is Factor?\n\nFactor is a [concatenative](https://www.concatenative.org/), stack-based\nprogramming language with [high-level\nfeatures](https://concatenative.org/wiki/view/Factor/Features/The%20language)\nincluding dynamic types, extensible syntax, macros, and garbage\ncollection. Factor has a [full-featured\nlibrary](https://docs.factorcode.org/content/article-vocab-index.html),\nsupports many platforms, and has extensive documentation.\n\nThe implementation is [fully\ncompiled](https://concatenative.org/wiki/view/Factor/Optimizing%20compiler)\nfor performance, while still supporting [interactive\ndevelopment](https://concatenative.org/wiki/view/Factor/Interactive%20development).\nFactor applications are portable across supported platforms and can be\n[deployed as standalone\napplications](https://concatenative.org/wiki/view/Factor/Deployment). Full source code for the Factor project is available\nunder a BSD license.\n\n### New libraries\n\n- [alien.c-types.varargs](https://docs.factorcode.org/content/vocab-alien.c-types.varargs.html): added ABI-aware argument promotion and type support for C variadic calls.\n- [alien.varargs](https://docs.factorcode.org/content/vocab-alien.varargs.html): added ARM64 variadic callbacks and native argument-list access through `va-arg`, `va-copy`, and `va_list`.\n- [benchmark.neon](https://docs.factorcode.org/content/vocab-benchmark.neon.html): added benchmarks for ARM64 SIMD and optional NEON extensions.\n- [benchmark.spawn-cat](https://docs.factorcode.org/content/vocab-benchmark.spawn-cat.html): added a subprocess-launch benchmark with a Bun comparison.\n- [bootstrap.compat](https://docs.factorcode.org/content/vocab-bootstrap.compat.html): added compatibility support for refreshing older images, including upgrades to ARM64 callback templates.\n- [checksums.cityhash](https://docs.factorcode.org/content/vocab-checksums.cityhash.html): added pure Factor implementations of non-cryptographic CityHash32, CityHash64, and CityHash128, with seeded 64-bit and 128-bit variants.\n- [checksums.farmhash](https://docs.factorcode.org/content/vocab-checksums.farmhash.html): added portable FarmHash checksums with stable 32-bit, 64-bit, and 128-bit fingerprints and seeded variants.\n- [compiler.cfg.linear-scan.checker](https://docs.factorcode.org/content/vocab-compiler.cfg.linear-scan.checker.html): added checks for register assignments and preservation of live values during linear-scan allocation.\n- [compiler.cfg.loop-optimization](https://docs.factorcode.org/content/vocab-compiler.cfg.loop-optimization.html): added optional loop preheaders and conservative integer loop-invariant code motion.\n- [compiler.cfg.memory-optimization](https://docs.factorcode.org/content/vocab-compiler.cfg.memory-optimization.html): added optional reuse of managed-object slot loads across basic blocks.\n- [compiler.cfg.metrics](https://docs.factorcode.org/content/vocab-compiler.cfg.metrics.html): added compiler pass timings, allocation statistics, and register-allocator comparison tools.\n- [compiler.cfg.multiply-negate](https://docs.factorcode.org/content/vocab-compiler.cfg.multiply-negate.html): added a compiler pass that combines a multiply followed by negation when its result has a single use.\n- [compiler.cfg.register-allocation](https://docs.factorcode.org/content/vocab-compiler.cfg.register-allocation.html): added a common interface for selecting register allocators while retaining linear scan as the default.\n- [compiler.cfg.register-allocation.backtracking](https://docs.factorcode.org/content/vocab-compiler.cfg.register-allocation.backtracking.html): added an experimental allocator using bundle splitting, eviction, and affinity-based spill decisions.\n- [compiler.cfg.register-allocation.chordal](https://docs.factorcode.org/content/vocab-compiler.cfg.register-allocation.chordal.html): added an experimental SSA graph-coloring allocator with chordality checks and spill repair.\n- [compiler.cfg.register-allocation.greedy](https://docs.factorcode.org/content/vocab-compiler.cfg.register-allocation.greedy.html): added an experimental allocator using eviction, recoloring, and loop-aware region splitting.\n- [compiler.cfg.register-allocation.rematerialization](https://docs.factorcode.org/content/vocab-compiler.cfg.register-allocation.rematerialization.html): added optional regeneration of inexpensive integer constants instead of loading them from spill slots.\n- [compiler.cfg.register-allocation.verifier](https://docs.factorcode.org/content/vocab-compiler.cfg.register-allocation.verifier.html): added an optional final allocation verifier for value flow, operand constraints, spills, and GC roots.\n- [compiler.cfg.slp](https://docs.factorcode.org/content/vocab-compiler.cfg.slp.html): added optional packing of independent integer expression trees into SIMD operations.\n- [compiler.cfg.value-numbering.global](https://docs.factorcode.org/content/vocab-compiler.cfg.value-numbering.global.html): added optional global value numbering using the production compiler’s rewrite rules.\n- [compression.deflate](https://docs.factorcode.org/content/vocab-compression.deflate.html): added raw DEFLATE compression and decompression in Factor, including stored, fixed-Huffman, and dynamic-Huffman block decoding and malformed-input checks.\n- [cpu.arm.64.abi](https://docs.factorcode.org/content/vocab-cpu.arm.64.abi.html): added shared ARM64 ABI classification for aggregates, callbacks, and variadic arguments.\n- [cpu.arm.64.features](https://docs.factorcode.org/content/vocab-cpu.arm.64.features.html): added runtime ARM64 feature detection with Linux, macOS, and Windows implementations.\n- [cpu.riscv.32](https://docs.factorcode.org/content/vocab-cpu.riscv.32.html): added an RV32GC optimizing compiler backend, assembler, and ILP32D foreign-call ABI support.\n- [cpu.riscv.64](https://docs.factorcode.org/content/vocab-cpu.riscv.64.html): added an RV64GC optimizing compiler backend, assembler, and LP64D foreign-call ABI support.\n- [crypto.chacha20](https://docs.factorcode.org/content/vocab-crypto.chacha20.html): added the IETF ChaCha20 stream cipher with byte-array and string encryption helpers.\n- [crypto.poly1305](https://docs.factorcode.org/content/vocab-crypto.poly1305.html): added RFC 8439 Poly1305 authentication tags and verification with 32-byte one-time keys and constant-time tag comparison.\n- [crypto.utils](https://docs.factorcode.org/content/vocab-crypto.utils.html): added cryptographic helpers for byte-sequence comparison, zero testing, and masked integer selection.\n- [demos.smoke-test](https://docs.factorcode.org/content/vocab-demos.smoke-test.html): added configurable smoke tests that open demos, check rendering and errors, and clean up each demo before continuing.\n- [editors.athas](https://docs.factorcode.org/content/vocab-editors.athas.html): added Athas editor integration with source-line navigation and a configurable executable path.\n- [editors.codeedit](https://docs.factorcode.org/content/vocab-editors.codeedit.html): added integration with the [CodeEdit](https://www.codeedit.app/) editor.\n- [file-picker.linux.gtk4](https://docs.factorcode.org/content/vocab-file-picker.linux.gtk4.html): added native file dialogs for the GTK4 backend.\n- [fonts.shaping](https://docs.factorcode.org/content/vocab-fonts.shaping.html): added font direction, tab width, OpenType feature, locale, and color-glyph options for the Windows text backends.\n- [foogle](https://docs.factorcode.org/content/vocab-foogle.html): added searches for loaded words by stack effect and documented types, with clickable results.\n- [game.input.gtk3](https://docs.factorcode.org/content/vocab-game.input.gtk3.html): added GTK3-specific game input support backed by shared GTK and Linux input handling.\n- [game.input.gtk4](https://docs.factorcode.org/content/vocab-game.input.gtk4.html): added GTK4 game input support, including event-driven keyboard and mouse handling.\n- [gdk3](https://docs.factorcode.org/content/vocab-gdk3.html): added bindings for GTK3 windowing, display, and input handling.\n- [gdk4](https://docs.factorcode.org/content/vocab-gdk4.html): added bindings for GTK4 displays, surfaces, input events, and graphics contexts.\n- [graphene](https://docs.factorcode.org/content/vocab-graphene.html): added bindings for Graphene geometry types and vector, matrix, and transformation operations.\n- [gsk4](https://docs.factorcode.org/content/vocab-gsk4.html): added bindings for the GTK4 scene graph and rendering API.\n- [gtk3](https://docs.factorcode.org/content/vocab-gtk3.html): added bindings for GTK3 widgets, application windows, and OpenGL areas.\n- [gtk4](https://docs.factorcode.org/content/vocab-gtk4.html): added bindings for GTK4 widgets, application windows, and event controllers.\n- [gtk4-samples.opengl](https://docs.factorcode.org/content/vocab-gtk4-samples.opengl.html): added an example of rendering OpenGL in a GTK4 application window.\n- [math.floats.small](https://docs.factorcode.org/content/vocab-math.floats.small.html): added IEEE binary16 and bfloat16 conversions, with related vocabularies for arithmetic support and C memory types.\n- [math.vectors.simd.extensions](https://docs.factorcode.org/content/vocab-math.vectors.simd.extensions.html): added half-precision and bfloat16 vector operations, dot products, and small matrix kernels with portable fallbacks and optional ARM64 acceleration.\n- [models.clock](https://docs.factorcode.org/content/vocab-models.clock.html): added a singleton ticking clock model.\n- [opengl.gl.epoxy](https://docs.factorcode.org/content/vocab-opengl.gl.epoxy.html): added shared libepoxy function loading for the GTK OpenGL backends.\n- [opengl.gl.gtk3](https://docs.factorcode.org/content/vocab-opengl.gl.gtk3.html): provided GTK3 compatibility entry points for OpenGL function loading through the shared libepoxy resolver.\n- [pbrt](https://docs.factorcode.org/content/vocab-pbrt.html): added support for the [PBRT](https://re.factorcode.org/2026/02/pbrt.html) file formats.\n- [python.lifecycle](https://docs.factorcode.org/content/vocab-python.lifecycle.html): added shared lazy interpreter initialization and shutdown handling.\n- [raylib.live-coding.contexts](https://docs.factorcode.org/content/vocab-raylib.live-coding.contexts.html): added native OpenGL context save/restore helpers for live coding on macOS, Unix, and Windows.\n- [regexp.captures](https://docs.factorcode.org/content/vocab-regexp.captures.html): added numbered and named capture results, including matched text and capture bounds.\n- [shell.unix](https://docs.factorcode.org/content/vocab-shell.unix.html): added Unix foreground-process handling so terminal interrupts reach shell children.\n- [shlex](https://docs.factorcode.org/content/vocab-shlex.html): added shell-like string splitting modeled on Python’s `shlex`, with configurable comments and POSIX parsing, plus POSIX argument quoting and joining.\n- [sqids](https://docs.factorcode.org/content/vocab-sqids.html): added reversible encoding of non-negative integer sequences into short IDs, with a URL-safe default alphabet, configurable alphabets, minimum lengths, and blocklists.\n- [syntax.inferred](https://docs.factorcode.org/content/vocab-syntax.inferred.html): added optional `?:` definitions that infer their stack effects from their bodies.\n- [terrain.smoke-test](https://docs.factorcode.org/content/vocab-terrain.smoke-test.html): added rendering and input checks for the Terrain demo.\n- [tools.disassembler.zydis](https://docs.factorcode.org/content/vocab-tools.disassembler.zydis.html): added an optional x86 and x86-64 disassembler backend using Zydis 4.1, with Intel-syntax output.\n- [tools.test.ffi](https://docs.factorcode.org/content/vocab-tools.test.ffi.html): added shared helpers for native FFI regression fixtures.\n- [ui-demo](https://docs.factorcode.org/content/vocab-ui-demo.html): added interactive layout playgrounds, searchable tables, combo boxes, split panes, visible action results, and richer Unicode examples.\n- [ui.backend.gtk3](https://docs.factorcode.org/content/vocab-ui.backend.gtk3.html): improved native dialogs, text input, game input, and OpenGL backend handling, avoided yielding during render and resize callbacks so windows cannot close midway through painting, and deferred rendering until the framebuffer is complete.\n- [ui.backend.gtk4](https://docs.factorcode.org/content/vocab-ui.backend.gtk4.html): added a GTK4 UI backend with input-method integration and native window handling, checked framebuffer completeness, and deferred drawing until windows are mapped and have a positive size; handled focus callbacks after window removal and initialized older GTK4 versions without unsupported debug options.\n- [ui.backend.input-state](https://docs.factorcode.org/content/vocab-ui.backend.input-state.html): added shared tracking and cleanup of keyboard and mouse state for UI backends.\n- [ui.text.directwrite](https://docs.factorcode.org/content/vocab-ui.text.directwrite.html): added a DirectWrite UI text backend with tiled rendering for large text layouts; kept cached layouts in the global disposable registry so temporary scopes cannot dispose them prematurely.\n- [ui.text.index-maps](https://docs.factorcode.org/content/vocab-ui.text.index-maps.html): added shared text-index mappings for Unicode caret and selection handling.\n- [ui.text.pango.indexed](https://docs.factorcode.org/content/vocab-ui.text.pango.indexed.html): added indexed Pango text handling for large output rows.\n- [windows.directwrite](https://docs.factorcode.org/content/vocab-windows.directwrite.html): added DirectWrite bindings and text layout support, with related vocabularies for indexed drawing and rasterization.\n\n### Improved libraries\n\n- [alien](https://docs.factorcode.org/content/vocab-alien.html): improved callback handling and added the primitive interface for ARM64 variadic callbacks.\n- [alien.enums](https://docs.factorcode.org/content/vocab-alien.enums.html): used table lookups for large enums and rebuilt conversion code when its generator changes.\n- [alien.libraries.finder.freebsd](https://docs.factorcode.org/content/vocab-alien.libraries.finder.freebsd.html): fixed shared-library lookup on FreeBSD.\n- [alien.libraries.finder.linux](https://docs.factorcode.org/content/vocab-alien.libraries.finder.linux.html): improved runtime library discovery without requiring development symlinks, a linker, or a working ldconfig cache; recognized versioned basenames such as `libSDL-1.2.so.0` while preferring exact basename matches.\n- [alien.libraries.finder.macos](https://docs.factorcode.org/content/vocab-alien.libraries.finder.macos.html): improved matching of `dyld` library names on modern macOS.\n- [alien.syntax](https://docs.factorcode.org/content/vocab-alien.syntax.html): added explicit variadic argument markers to foreign function and callback declarations.\n- [arrays.shaped](https://docs.factorcode.org/content/vocab-arrays.shaped.html): added trailing-axis broadcasting, scalar arrays, reshape, writable slice and transpose views, axis reductions, and batched matrix multiplication; corrected indexing, dimension queries, and empty shapes; made cloning copy storage and shape metadata and materialize views.\n- [assocs](https://docs.factorcode.org/content/vocab-assocs.html): corrected stack-effect names for `zip-index`; avoided allocating closures during cache lookups.\n- [bit-arrays](https://docs.factorcode.org/content/vocab-bit-arrays.html): rejected negative and oversized lengths before allocating or resizing backing storage.\n- [bootstrap.compiler](https://docs.factorcode.org/content/vocab-bootstrap.compiler.html): reordered early compilation to prepare frequently used compiler and hashtable helpers before the main bootstrap sweep.\n- [bootstrap.image](https://docs.factorcode.org/content/vocab-bootstrap.image.html): improved image serialization and preserved mutable lexical words while retaining image format version 5.\n- [calendar.parser](https://docs.factorcode.org/content/vocab-calendar.parser.html): accepted legacy cookie dates without an explicit timezone.\n- [checksums.openssl](https://docs.factorcode.org/content/vocab-checksums.openssl.html): fixed ownership and cleanup of OpenSSL digest resources.\n- [classes.algebra](https://docs.factorcode.org/content/vocab-classes.algebra.html): avoided unnecessary cache work for identical named classes and reflexive class comparisons.\n- [classes.struct](https://docs.factorcode.org/content/vocab-classes.struct.html): validated buffer lengths assigned to fixed-array fields while preserving encoded-string pointer handling.\n- [classes.tuple.parser](https://docs.factorcode.org/content/vocab-classes.tuple.parser.html): rejected duplicate slot names in tuple literals.\n- [cocoa](https://docs.factorcode.org/content/vocab-cocoa.html): corrected Objective-C runtime declarations and callback signatures and rejected ambiguous unqualified selectors.\n- [combinators.smart](https://docs.factorcode.org/content/vocab-combinators.smart.html): preserved captured values when inferring the effects of composed callables.\n- [combinators.syntax](https://docs.factorcode.org/content/vocab-combinators.syntax.html): adjusted the definitions of `&&[` and `||[` and added documentation.\n- [command-line](https://docs.factorcode.org/content/vocab-command-line.html): accepted vocabulary-root files with a byte-order mark.\n- [command-line.parser](https://docs.factorcode.org/content/vocab-command-line.parser.html): added option aliases and attached values such as `--host=localhost`, including empty values and values beginning with a dash; preferred exact names over `no-` negation and rejected duplicate names and aliases.\n- [compression.gzip](https://docs.factorcode.org/content/vocab-compression.gzip.html): corrected gzip output for interoperability with other implementations.\n- [compression.huffman](https://docs.factorcode.org/content/vocab-compression.huffman.html): assigned a one-bit code to a lone Huffman symbol.\n- [compression.inflate](https://docs.factorcode.org/content/vocab-compression.inflate.html): decoded concatenated gzip members and validated headers, checksums, and uncompressed sizes; fixed transitions from stored to compressed blocks and accepted zero padding after the final gzip member.\n- [compression.zstd.ffi](https://docs.factorcode.org/content/vocab-compression.zstd.ffi.html): corrected the native names for compression bounds, compressed-frame sizes, and decompression contexts, with direct FFI regression tests.\n- [concurrency.combinators](https://docs.factorcode.org/content/vocab-concurrency.combinators.html): preserved input order in `parallel-filter` and honored the requested output sequence type in `parallel-map-as`; reduced per-task allocation by sharing completion wrappers across parallel iteration stages.\n- [concurrency.conditions](https://docs.factorcode.org/content/vocab-concurrency.conditions.html): fixed cooperative wait races and preserved timeout deadlines across wakeups.\n- [concurrency.flags](https://docs.factorcode.org/content/vocab-concurrency.flags.html): fixed waiting and wakeup behavior when flag state changes.\n- [concurrency.futures](https://docs.factorcode.org/content/vocab-concurrency.futures.html): documented and tested inherited dynamic scope; released completed worker contexts before scheduling more futures.\n- [concurrency.locks](https://docs.factorcode.org/content/vocab-concurrency.locks.html): rechecked lock availability after wakeups and preserved deadlines for ordinary and reader/writer locks.\n- [concurrency.mailboxes](https://docs.factorcode.org/content/vocab-concurrency.mailboxes.html): preserved receive deadlines across wakeups and handled empty mailbox checks safely; released linked worker contexts before yielding after error delivery.\n- [concurrency.promises](https://docs.factorcode.org/content/vocab-concurrency.promises.html): ignored late linked-thread errors after a promise has already been fulfilled.\n- [concurrency.semaphores](https://docs.factorcode.org/content/vocab-concurrency.semaphores.html): fixed waiting for permits across wakeups.\n- [core-foundation.run-loop](https://docs.factorcode.org/content/vocab-core-foundation.run-loop.html): reduced the latency of `yield` on macOS.\n- [core-text](https://docs.factorcode.org/content/vocab-core-text.html): improved large-line rasterization, Unicode selection, and caching, and stopped text backgrounds from painting over neighboring lines.\n- [cpu.arm.64](https://docs.factorcode.org/content/vocab-cpu.arm.64.html): expanded SIMD lowering and corrected large offsets, immediate operands, structure returns, and foreign-call ABI handling.\n- [cpu.x86](https://docs.factorcode.org/content/vocab-cpu.x86.html): fixed unsigned callback arguments and SIMD shift, shuffle, and extraction edge cases.\n- [cuckoo-filters](https://docs.factorcode.org/content/vocab-cuckoo-filters.html): preserved existing entries when an insertion fails.\n- [curl.ffi](https://docs.factorcode.org/content/vocab-curl.ffi.html): corrected variadic declarations and Linux runtime library discovery.\n- [curses.ffi](https://docs.factorcode.org/content/vocab-curses.ffi.html): corrected variadic formatting calls and native argument-list declarations.\n- [db](https://docs.factorcode.org/content/vocab-db.html): added the `db-write-lock` backend hook and `serialize-transaction` combinator, preserving quotation stack effects and leaving other backends unchanged.\n- [db.pools](https://docs.factorcode.org/content/vocab-db.pools.html): limited each database pool to 16 idle connections.\n- [db.sqlite](https://docs.factorcode.org/content/vocab-db.sqlite.html): updated the SQLite bindings to 3.53.4, serialized transactions and tuple writes with reentrant per-file locks to prevent same-process write contention, enabled WAL mode and `BEGIN IMMEDIATE` transactions, and cleaned up native handles and result sets after failures, including failed WAL initialization.\n- [db.sqlite.ffi](https://docs.factorcode.org/content/vocab-db.sqlite.ffi.html): updated declarations for SQLite 3.53.4 and corrected variadic formatting, pointer ownership, and VFS filename handling.\n- [db.types](https://docs.factorcode.org/content/vocab-db.types.html): reported abstract primary-key policies early, requiring a concrete primary-key policy.\n- [disjoint-sets](https://docs.factorcode.org/content/vocab-disjoint-sets.html): avoided redundant parent updates during lookup.\n- [dns](https://docs.factorcode.org/content/vocab-dns.html): added support for [DNS LOC records](https://re.factorcode.org/2025/12/dns-loc-records.html).\n- [editors.vim](https://docs.factorcode.org/content/vocab-editors.vim.html): corrected the documented Vim plugin location.\n- [file-picker.linux](https://docs.factorcode.org/content/vocab-file-picker.linux.html): improved native open/save dialogs and selected the implementation appropriate to the active GTK backend.\n- [fluids](https://docs.factorcode.org/content/vocab-fluids.html): loaded image decoders for the bundled PGM and PPM textures.\n- [fonts](https://docs.factorcode.org/content/vocab-fonts.html): preserved inherited shaping options when deriving fonts.\n- [fry](https://docs.factorcode.org/content/vocab-fry.html): preserved source syntax and stepping boundaries and allowed quotation templates to remain unexpanded until needed.\n- [functors](https://docs.factorcode.org/content/vocab-functors.html): preserved fried quotations in generated definitions.\n- [furnace.asides](https://docs.factorcode.org/content/vocab-furnace.asides.html): stopped logging aside input values that may contain sensitive request data.\n- [furnace.auth](https://docs.factorcode.org/content/vocab-furnace.auth.html): rejected deleted users and handled unknown usernames without corrupting the data stack.\n- [furnace.auth.basic](https://docs.factorcode.org/content/vocab-furnace.auth.basic.html): handled malformed Basic authentication input safely.\n- [furnace.auth.login](https://docs.factorcode.org/content/vocab-furnace.auth.login.html): stopped logging user objects and permit-cookie values during login.\n- [furnace.auth.login.permits](https://docs.factorcode.org/content/vocab-furnace.auth.login.permits.html): corrected permit expiry checks.\n- [furnace.auth.providers](https://docs.factorcode.org/content/vocab-furnace.auth.providers.html): rejected empty claim tickets and corrected success handling when adding users.\n- [furnace.cache](https://docs.factorcode.org/content/vocab-furnace.cache.html): corrected cache expiry handling.\n- [game.input](https://docs.factorcode.org/content/vocab-game.input.html): improved backend selection and keyboard, mouse, and Linux device handling across GTK versions; added event-driven macOS input state, including modifier keys and mouse motion, and removed hardware-dependent initialization tests.\n- [game.input.x11](https://docs.factorcode.org/content/vocab-game.input.x11.html): reported a missing X display cleanly.\n- [generic](https://docs.factorcode.org/content/vocab-generic.html): cached static method resolution and preserved next-method dependencies through macro expansion.\n- [gir](https://docs.factorcode.org/content/vocab-gir.html): updated the bundled [GIR files](https://developer.gnome.org/documentation/guidelines/programming/introspection.html).\n- [gml.runtime](https://docs.factorcode.org/content/vocab-gml.runtime.html): passed the method word through `EXEC::` parsing correctly.\n- [gobject-introspection](https://docs.factorcode.org/content/vocab-gobject-introspection.html): added support for newer GIR files; preserved manually defined FFI bindings when introspection data is reloaded.\n- [gpu.framebuffers](https://docs.factorcode.org/content/vocab-gpu.framebuffers.html): handled the default framebuffer used by GTK4 rendering.\n- [gpu.shaders](https://docs.factorcode.org/content/vocab-gpu.shaders.html): preserved shader objects while assembling GPU programs.\n- [graphviz.render](https://docs.factorcode.org/content/vocab-graphviz.render.html): selected preview formats through the registered image loaders.\n- [grid-meshes](https://docs.factorcode.org/content/vocab-grid-meshes.html): corrected mesh generation used by Terrain rendering.\n- [hashtables](https://docs.factorcode.org/content/vocab-hashtables.html): avoided scanning the backing array when clearing an already empty table.\n- [help](https://docs.factorcode.org/content/vocab-help.html): displayed numeric enum values, honored documented constant output names, and fixed help rendering for parsing-word values.\n- [help.html](https://docs.factorcode.org/content/vocab-help.html.html): generated pages for vocabulary prefixes that have no source file of their own; skipped empty vocabulary prefixes.\n- [help.markup](https://docs.factorcode.org/content/vocab-help.markup.html): removed duplicate and self-referential related-word links.\n- [hints](https://docs.factorcode.org/content/vocab-hints.html): added array and string specializations for index searches.\n- [html.templates.chloe](https://docs.factorcode.org/content/vocab-html.templates.chloe.html): corrected the list of HTML void elements.\n- [html5](https://docs.factorcode.org/content/vocab-html5.html): built nested document trees, decoded character references, and recorded recoverable parse errors; added SVG and MathML foreign content, template fragments, framesets, table and select handling, and recovery for misnested formatting elements, forms, and late head elements.\n- [http.client](https://docs.factorcode.org/content/vocab-http.client.html): decoded gzip response bodies before character decoding, including stacked encodings and concatenated members, and reported unsupported content codings; combined repeated `Content-Encoding` headers and reported unsuccessful HTTP status codes before attempting body decoding.\n- [http.server](https://docs.factorcode.org/content/vocab-http.server.html): rejected TLS input on plain HTTP connections and suppressed response bodies when HTTP semantics forbid them.\n- [http.server.requests](https://docs.factorcode.org/content/vocab-http.server.requests.html): rejected incomplete requests and invalid header or body framing.\n- [http.server.static](https://docs.factorcode.org/content/vocab-http.server.static.html): handled malformed conditional-date headers.\n- [images.loader.cocoa](https://docs.factorcode.org/content/vocab-images.loader.cocoa.html): implemented `image>stream` for `ns-image`.\n- [images.loader.gdiplus](https://docs.factorcode.org/content/vocab-images.loader.gdiplus.html): preserved image pixel formats and orientation and released native images and retained COM streams.\n- [images.loader.gtk](https://docs.factorcode.org/content/vocab-images.loader.gtk.html): fixed GdkPixbuf library registration and encoded image-buffer lengths.\n- [images.tga](https://docs.factorcode.org/content/vocab-images.tga.html): kept optional footer parsers out of line to reduce compiler expansion.\n- [inverse](https://docs.factorcode.org/content/vocab-inverse.html): preserved captured lexical values during expansion.\n- [io](https://docs.factorcode.org/content/vocab-io.html): avoided temporary chunk arrays when reading delimited input.\n- [io.backend.unix](https://docs.factorcode.org/content/vocab-io.backend.unix.html): preserved descriptor flags when enabling nonblocking I/O and cleaned up descriptors after cancellation failures.\n- [io.backend.unix.multiplexers.epoll](https://docs.factorcode.org/content/vocab-io.backend.unix.multiplexers.epoll.html): preserved simultaneous read/write registrations and corrected event and cleanup handling.\n- [io.backend.unix.multiplexers.kqueue](https://docs.factorcode.org/content/vocab-io.backend.unix.multiplexers.kqueue.html): handled interrupted changelist submissions without losing applied changes.\n- [io.encodings.iana](https://docs.factorcode.org/content/vocab-io.encodings.iana.html): matched charset names without regard to case.\n- [io.files](https://docs.factorcode.org/content/vocab-io.files.html): preserved line endings in `change-file-lines` and improved cleanup after file-construction failures.\n- [io.files.info.windows](https://docs.factorcode.org/content/vocab-io.files.info.windows.html): limited fallback file-information lookup to access and sharing failures, preserving other Windows errors; made `link-info` inspect the link itself.\n- [io.launcher](https://docs.factorcode.org/content/vocab-io.launcher.html): improved Windows batch argument and environment handling and Unix child-process signal behavior, and cleaned up partially constructed pipelines after setup failures; streamlined Unix spawn setup and PATH lookup, added native exit notifications through kqueue, Linux pidfds, and Windows completion packets with polling fallback, and handled Windows waits beyond the native per-call handle limit; used `posix_spawn` on Linux to avoid copying large image page tables during process creation.\n- [io.mmap](https://docs.factorcode.org/content/vocab-io.mmap.html): cleaned up failed mappings and associated file handles.\n- [io.monitors](https://docs.factorcode.org/content/vocab-io.monitors.html): fixed monitor initialization, cancellation, and recursive-directory cleanup.\n- [io.pipes](https://docs.factorcode.org/content/vocab-io.pipes.html): cleaned up failed pipe construction and opened Unix FIFOs without blocking the VM, including cleanup when port initialization fails.\n- [io.pools](https://docs.factorcode.org/content/vocab-io.pools.html): bounded idle resource pools and disposed resources returned after a pool has closed.\n- [io.ports](https://docs.factorcode.org/content/vocab-io.ports.html): disposed native handles when port setup fails.\n- [io.servers](https://docs.factorcode.org/content/vocab-io.servers.html): avoided accepting new connections after a server listener has stopped.\n- [io.sockets](https://docs.factorcode.org/content/vocab-io.sockets.html): fixed socket-construction cleanup, Unix-domain path padding, datagram handling, and Windows socket-set initialization; updated Windows connect and accept contexts and preserved accepted address storage.\n- [io.sockets.secure](https://docs.factorcode.org/content/vocab-io.sockets.secure.html): preserved the intended certificate identity through address resolution and cleaned up failed secure connections.\n- [io.sockets.secure.openssl](https://docs.factorcode.org/content/vocab-io.sockets.secure.openssl.html): corrected certificate identity checks, callback lifetimes, and OpenSSL resource ownership, including compatibility with older OpenSSL identity APIs.\n- [io.standard-paths](https://docs.factorcode.org/content/vocab-io.standard-paths.html): checked executable files and honored Windows PATHEXT during program discovery.\n- [io.timeouts](https://docs.factorcode.org/content/vocab-io.timeouts.html): preserved timeout deadlines across cooperative waits.\n- [libclang](https://docs.factorcode.org/content/vocab-libclang.html): expanded C API bindings, avoided repeated declaration generation and unnecessary function-body parsing in the importer, and corrected token handling and native resource cleanup; fell back to the library search path when LLVM directories contain no libclang; discovered versioned libclang shared libraries inside LLVM installations.\n- [libudev](https://docs.factorcode.org/content/vocab-libudev.html): checked availability before calling optional legacy interfaces.\n- [lint](https://docs.factorcode.org/content/vocab-lint.html): reported unnecessary recursive annotations conservatively.\n- [linux.input-events](https://docs.factorcode.org/content/vocab-linux.input-events.html): corrected event-mask decoding, ioctl arguments, and multitouch slot counts.\n- [locals](https://docs.factorcode.org/content/vocab-locals.html): fixed interactions with fry, typed tuple construction, and next-method dependency tracking.\n- [logging.analysis](https://docs.factorcode.org/content/vocab-logging.analysis.html): bounded file-report reads and combined multiline log entries.\n- [logging.insomniac](https://docs.factorcode.org/content/vocab-logging.insomniac.html): rotated oversized logs even when report generation fails.\n- [lua](https://docs.factorcode.org/content/vocab-lua.html): updated the bindings from Lua 5.1 to Lua 5.5, including the public C API, auxiliary and standard libraries, variadic formatting, and native argument-list access; requires Lua 5.5 with its default numeric configuration.\n- [mason](https://docs.factorcode.org/content/vocab-mason.html): preserved fatal errors and test context in bounded crash reports and printed native backtraces; preserved partial test results in failed build reports.\n- [math](https://docs.factorcode.org/content/vocab-math.html): normalized integer arithmetic results and corrected floating-point comparison and conversion edge cases.\n- [math.blas.config](https://docs.factorcode.org/content/vocab-math.blas.config.html): selected the GNU Fortran return ABI for bundled 32-bit Windows OpenBLAS libraries.\n- [math.floats.env](https://docs.factorcode.org/content/vocab-math.floats.env.html): decoded floating-point errors before testing exception flags.\n- [math.functions](https://docs.factorcode.org/content/vocab-math.functions.html): corrected indeterminate powers and floating-point zero exponents.\n- [math.integers](https://docs.factorcode.org/content/vocab-math.integers.html): validated shift counts and preserved large bit indices; corrected `bit?` for fixnum bit indices outside the native range.\n- [math.libm](https://docs.factorcode.org/content/vocab-math.libm.html): added `fexp1-` (C’s `expm1`); reported underflow for finite powers rounded to zero on the Windows Universal CRT.\n- [math.matrices.elimination](https://docs.factorcode.org/content/vocab-math.matrices.elimination.html): corrected nullspace calculation and handled empty matrices.\n- [math.order](https://docs.factorcode.org/content/vocab-math.order.html): preserved the caller’s stack row while computing comparison keys.\n- [math.parser](https://docs.factorcode.org/content/vocab-math.parser.html): fixed floating-point formatting boundaries and added rectangular complex literals with a `j` suffix.\n- [math.statistics](https://docs.factorcode.org/content/vocab-math.statistics.html): validated data types before returning degenerate variance results.\n- [math.transforms.fft](https://docs.factorcode.org/content/vocab-math.transforms.fft.html): reduced temporary allocations and used radix-2 decomposition for even lengths, including lengths that are not powers of two.\n- [math.vectors](https://docs.factorcode.org/content/vocab-math.vectors.html): added fused multiply-add, rounding, bit operations, and dot-product and small matrix accumulation protocols.\n- [math.vectors.conversion](https://docs.factorcode.org/content/vocab-math.vectors.conversion.html): preserved unsigned numeric conversion semantics.\n- [math.vectors.simd](https://docs.factorcode.org/content/vocab-math.vectors.simd.html): aligned native and fallback behavior for shifts, shuffles, overflow, rounding, NaNs, and integer dot products, and corrected numeric coercion in half-precision and bfloat16 constructors; preserved all bits in boolean SIMD masks.\n- [metar](https://docs.factorcode.org/content/vocab-metar.html): expanded METAR and TAF parsing, including runway state, wind shear, sea conditions, variable visibility, forecast change groups, and remarks; improved date rollover handling and added abbreviation lookup helpers.\n- [mime.multipart](https://docs.factorcode.org/content/vocab-mime.multipart.html): validated multipart framing and handled malformed input without leaking resources.\n- [models](https://docs.factorcode.org/content/vocab-models.html): added `model-deactivated`.\n- [modern](https://docs.factorcode.org/content/vocab-modern.html): stopped colon forms at enclosing sequence delimiters.\n- [openal.alut](https://docs.factorcode.org/content/vocab-openal.alut.html): used native OpenAL context management and audio loading on macOS without requiring an external ALUT library.\n- [opengl](https://docs.factorcode.org/content/vocab-opengl.html): improved GTK extension loading and cached function pointers by symbol name and context.\n- [opengl.textures](https://docs.factorcode.org/content/vocab-opengl.textures.html): fixed texture wrapping on OpenGL 1.1 renderers.\n- [openssl](https://docs.factorcode.org/content/vocab-openssl.html): corrected native declarations, variadic BIO calls, and resource ownership.\n- [papier](https://docs.factorcode.org/content/vocab-papier.html): updated shaders for core OpenGL contexts and fixed GTK4 rendering and keyboard movement, including A/D controls.\n- [pcre2](https://docs.factorcode.org/content/vocab-pcre2.html): added the features previously available in the deprecated `pcre` vocabulary.\n- [peg](https://docs.factorcode.org/content/vocab-peg.html): omitted hidden results from repetition and list parsers and added `optional*` to distinguish a missing match from a successful match whose AST is `f`.\n- [ping](https://docs.factorcode.org/content/vocab-ping.html): added support for Linux ICMP datagram sockets.\n- [python](https://docs.factorcode.org/content/vocab-python.html): initialized high-level imports, object constructors, and conversions on first use; finalized the interpreter at shutdown only after it has been used. Raw `python.ffi` calls still require explicit `py-initialize`.\n- [python.ffi](https://docs.factorcode.org/content/vocab-python.ffi.html): searched Python 3.15 libraries and used versioned DLL names on Windows.\n- [quotations](https://docs.factorcode.org/content/vocab-quotations.html): made words callable while retaining a separate `quotation-like` class for sequence-like quotation objects.\n- [ranges](https://docs.factorcode.org/content/vocab-ranges.html): tested membership in integer ranges without enumerating their elements.\n- [raylib](https://docs.factorcode.org/content/vocab-raylib.html): updated to [Raylib 6.0](https://github.com/raysan5/raylib/releases/tag/6.0) and corrected variadic callbacks and allocation ownership; restored native OpenGL contexts across live-coding yields and cleanup.\n- [redis](https://docs.factorcode.org/content/vocab-redis.html): updated bindings to Redis 8.8.0.\n- [regexp](https://docs.factorcode.org/content/vocab-regexp.html): added numbered and named captures and fixed assertion boundaries in lookbehind expressions.\n- [rocksdb.ffi](https://docs.factorcode.org/content/vocab-rocksdb.ffi.html): corrected the registered library name so foreign calls resolve against RocksDB.\n- [see](https://docs.factorcode.org/content/vocab-see.html): preserved deeply nested definitions and their imports and honored `without-limits` when displaying full definitions; normal output remains bounded.\n- [sequences](https://docs.factorcode.org/content/vocab-sequences.html): improved array/string comparisons and small integer-pair hashing, preserved callback stack rows in binary reductions, and rejected empty iotas and repetitions in `minimum` and `maximum`.\n- [shell](https://docs.factorcode.org/content/vocab-shell.html): allowed foreground Unix child processes to receive terminal interrupts.\n- [smtp](https://docs.factorcode.org/content/vocab-smtp.html): redacted authentication commands from diagnostic output.\n- [stomp](https://docs.factorcode.org/content/vocab-stomp.html): fixed namespace update order when adjusting protocol versions.\n- [system](https://docs.factorcode.org/content/vocab-system.html): flushed output streams before exiting.\n- [system-info.linux](https://docs.factorcode.org/content/vocab-system-info.linux.html): added `system-code-name` support for Ubuntu.\n- [system-info.windows](https://docs.factorcode.org/content/vocab-system-info.windows.html): allocated correctly sized UTF-16 buffers for user and computer names to prevent buffer overruns.\n- [terrain](https://docs.factorcode.org/content/vocab-terrain.html): added core-profile shaders and rendering, corrected mesh and texture handling, and restored native macOS keyboard and mouse controls.\n- [threads](https://docs.factorcode.org/content/vocab-threads.html): allocated thread-local namespaces lazily, avoiding a hashtable allocation for threads that never use local variables.\n- [timers](https://docs.factorcode.org/content/vocab-timers.html): cleared running and thread state when timer callbacks exit exceptionally.\n- [toml](https://docs.factorcode.org/content/vocab-toml.html): parsed empty and dotted-key inline tables and simplified the `update-toml` stack effect.\n- [tools.annotations](https://docs.factorcode.org/content/vocab-tools.annotations.html): avoided double-counting recursive elapsed time.\n- [tools.completion](https://docs.factorcode.org/content/vocab-tools.completion.html): completed bare filename prefixes from the current directory.\n- [tools.continuations](https://docs.factorcode.org/content/vocab-tools.continuations.html): improved stepping into fried quotations and retained the current instruction when displaying long quotations.\n- [tools.coverage](https://docs.factorcode.org/content/vocab-tools.coverage.html): counted generic methods consistently in coverage reports.\n- [tools.crossref](https://docs.factorcode.org/content/vocab-tools.crossref.html): tracked word references inside fried quotations, vectors, wrapped hashtables, other literal collections, and uninterned words; recorded method-word references directly.\n- [tools.disassembler](https://docs.factorcode.org/content/vocab-tools.disassembler.html): documented the Capstone backend on other supported architectures and how to select the optional Zydis backend on x86; released temporary code-heap snapshots after failures to prevent retained error continuations from accumulating snapshots.\n- [tools.disassembler.capstone](https://docs.factorcode.org/content/vocab-tools.disassembler.capstone.html): handled empty disassembly results.\n- [tools.image](https://docs.factorcode.org/content/vocab-tools.image.html): updated image tooling for format version 5 and rejected stale formats before decoding heaps.\n- [tools.profiler.sampling](https://docs.factorcode.org/content/vocab-tools.profiler.sampling.html): displayed total-time shares and allowed small branches to be filtered from reports.\n- [tools.ps](https://docs.factorcode.org/content/vocab-tools.ps.html): anchored Linux process inspection to an open process directory.\n- [tools.test](https://docs.factorcode.org/content/vocab-tools.test.html): isolated prettyprinter settings during tests and help-lint examples.\n- [typed](https://docs.factorcode.org/content/vocab-typed.html): preserved termination and recursive annotations in generated implementations and wrappers.\n- [ui.backend.cocoa](https://docs.factorcode.org/content/vocab-ui.backend.cocoa.html): refreshed window resources when display scale changes and ignored inappropriate control characters in text input; corrected cursor hiding during captured input, cleared input state on focus changes, and improved native OpenGL context setup for demos.\n- [ui.backend.windows](https://docs.factorcode.org/content/vocab-ui.backend.windows.html): used each window’s monitor DPI for text and input and returned pointer-sized results from window callbacks; fixed paint reentrancy, clipboard ownership, per-window surrogate-pair input, modifier keys, fullscreen handling, and tray tooltip encoding.\n- [ui.backend.x11.keys](https://docs.factorcode.org/content/vocab-ui.backend.x11.keys.html): normalized printable keypad symbols for text input.\n- [ui.debugger](https://docs.factorcode.org/content/vocab-ui.debugger.html): avoided opening modal alerts inside native callbacks.\n- [ui.gadgets.editors](https://docs.factorcode.org/content/vocab-ui.gadgets.editors.html): improved caret, selection, and rendering behavior for large and complex Unicode text, and submitted action fields with keypad Enter.\n- [ui.gadgets.panes](https://docs.factorcode.org/content/vocab-ui.gadgets.panes.html): avoided quadratic copying of large strings, improved selection and copy behavior, and fixed following output at the bottom of a scroller.\n- [ui.gadgets.sliders](https://docs.factorcode.org/content/vocab-ui.gadgets.sliders.html): corrected the `<slider>` documentation.\n- [ui.gadgets.tables](https://docs.factorcode.org/content/vocab-ui.gadgets.tables.html): validated the required model argument when constructing a table, before grafting.\n- [ui.gadgets.worlds](https://docs.factorcode.org/content/vocab-ui.gadgets.worlds.html): skipped drawing until the window framebuffer is complete, avoiding OpenGL errors while the drawing surface is being initialized.\n- [ui.render](https://docs.factorcode.org/content/vocab-ui.render.html): supported GLSL 1.30, reduced repeated drawing work, and kept OpenGL renderer state with its owning window; reset legacy rendering hooks when switching from core-profile demos.\n- [ui.text.pango](https://docs.factorcode.org/content/vocab-ui.text.pango.html): improved rendering and selection of large text rows and preserved native antialiasing when drawing overlapping glyphs; read legacy glyph-item layouts without reading past native buffers.\n- [ui.theme.switching](https://docs.factorcode.org/content/vocab-ui.theme.switching.html): refreshed open worlds when switching themes; improved dark-mode contrast in several demos.\n- [ui.tools.listener](https://docs.factorcode.org/content/vocab-ui.tools.listener.html): accepted folders dropped from Finder and echoed source for quotation commands.\n- [ui.tools.operations](https://docs.factorcode.org/content/vocab-ui.tools.operations.html): offered Reset for annotated generic methods.\n- [ui.traverse](https://docs.factorcode.org/content/vocab-ui.traverse.html): bounded stale pane selection paths.\n- [unicode](https://docs.factorcode.org/content/vocab-unicode.html): updated Unicode and collation data to 18.0.0 and corrected identical-level collation ordering.\n- [unix](https://docs.factorcode.org/content/vocab-unix.html): corrected native structure layouts, scalar and pointer types, large file offsets, and variadic declarations, including libc-specific `timeval` fields and 32-bit `statvfs` padding.\n- [unix.groups](https://docs.factorcode.org/content/vocab-unix.groups.html): handled lookup errors and owned group-result storage safely; treated platform-specific missing-group errno responses as unsuccessful lookups.\n- [unix.signals](https://docs.factorcode.org/content/vocab-unix.signals.html): used platform-specific signal numbers and corrected dispatch and handler sentinel handling.\n- [urls](https://docs.factorcode.org/content/vocab-urls.html): improved IPv6 handling.\n- [vocabs.hierarchy](https://docs.factorcode.org/content/vocab-vocabs.hierarchy.html): fixed handling of symlinked vocabularies.\n- [vocabs.loader](https://docs.factorcode.org/content/vocab-vocabs.loader.html): waited for prerequisite vocabularies to finish loading before activating `require-when` extensions.\n- [webapps.mason](https://docs.factorcode.org/content/vocab-webapps.mason.html): validated request parameters before opening database connections to prevent leaks during validation exits; handled builders that have not uploaded results yet.\n- [webapps.planet](https://docs.factorcode.org/content/vocab-webapps.planet.html): kept periodic maintenance running after recoverable failures.\n- [webapps.wiki](https://docs.factorcode.org/content/vocab-webapps.wiki.html): corrected the wiki icon resource path.\n- [wikipedia](https://docs.factorcode.org/content/vocab-wikipedia.html): used rendered pages and updated historical-event, birth, and death parsing for Wikipedia markup changes.\n- [windows.com](https://docs.factorcode.org/content/vocab-windows.com.html): corrected the by-value size argument to `IStream::SetSize`.\n- [windows.com.syntax](https://docs.factorcode.org/content/vocab-windows.com.syntax.html): tracked interface typedefs correctly across reloads.\n- [windows.dropfiles](https://docs.factorcode.org/content/vocab-windows.dropfiles.html): released drag-and-drop handles even when filename decoding fails.\n- [windows.offscreen](https://docs.factorcode.org/content/vocab-windows.offscreen.html): restored and released offscreen GDI bitmaps on both success and failure.\n- [windows.streams](https://docs.factorcode.org/content/vocab-windows.streams.html): bounded COM stream copies, used 64-bit byte totals, and detected short writes.\n- [windows.uniscribe](https://docs.factorcode.org/content/vocab-windows.uniscribe.html): improved cluster hit testing, bidirectional text, font fallback, glyph overhangs, selection compositing, and native layout lifetime handling.\n- [windows.version](https://docs.factorcode.org/content/vocab-windows.version.html): passed UTF-16 query strings to `VerQueryValueW`.\n- [x11](https://docs.factorcode.org/content/vocab-x11.html): corrected variadic declarations and preserved full-width native pointers.\n- [xml](https://docs.factorcode.org/content/vocab-xml.html): fixed a file descriptor leak.\n- [xml.tokenize](https://docs.factorcode.org/content/vocab-xml.tokenize.html): bounded stack use when the optimizing compiler is disabled.\n- [xmode.marker](https://docs.factorcode.org/content/vocab-xmode.marker.html): preserved regular-expression capture state while fixing up end patterns.\n- [yenc](https://docs.factorcode.org/content/vocab-yenc.html): computed file CRC32 from file contents, preserved filenames containing spaces or equals signs, validated envelope sizes and checksums, and decoded individual multipart envelopes with range and part-checksum checks.\n- [zoneinfo](https://docs.factorcode.org/content/vocab-zoneinfo.html): updated bundled timezone data to 2026c.\n\n### Compiler improvements\n\n- Improved stack inference and error reporting for recursion, branches, locals, fry, and composed callables; checked annotated quotation calls and rejected known incompatible call effects.\n- Fixed dependency tracking and recompilation after macro expansion, nested compilation, custom inlining, and struct redefinition.\n- Improved constant folding and lookup-table optimization while preserving tuple identities, integer overflow behavior, and floating-point semantics.\n- Corrected ARM64 code generation and foreign-call handling, added RISC-V foreign calls and callbacks, and fixed x86 callback and aggregate argument handling.\n- Preserved GC roots and derived-pointer bases through compiler transformations and register allocation, and reported oversized stack frames as compiler errors.\n- Reduced temporary allocation and repeated work during compiler analysis and bootstrap compilation.\n- Added experimental backtracking, chordal, and greedy register allocators; linear scan remains the default.\n- Added optional global value numbering, constant rematerialization, loop-invariant code motion, slot-load reuse, representation-cost improvements, and integer SIMD vectorization; these optimizations remain disabled by default.\n- Added compiler-pass measurement tools and checks for SSA, register allocation, and GC roots.\n\n### VM improvements\n\n- Improved GC root tracking for native allocations, code snapshots, displaced aliens, and derived pointers, and corrected recovery after interrupted or failed collections.\n- Strengthened memory safety with bounds checks for object initialization, code heaps, stack frames, and debugger reads; kept identity hashes stable and invalidated stale string hashes after resizing.\n- Corrected bignum shifts, mixed-sign XOR, division, and integer conversions, and preserved NaN encodings and ordered/unordered floating-point comparisons.\n- Improved signal handling, thread registration, and sampling-profiler reliability across platforms, including macOS interrupted-stack recovery and forward progress when recording samples is slow.\n- Fixed callback-heap fragmentation, ARM64 relocations, and Windows ARM64 exception dispatch and native unwinding; added stack reserves and probing for native calls.\n- Improved Windows startup diagnostics, worker-thread cleanup, JIT unwind metadata, large file offsets, and partial native I/O; validated code-heap updates and reset JIT state after errors.\n\n### Zig VM improvements\n\n- Improved parity with the C++ VM for GC roots, ARM64 signal recovery, stack and code-heap bounds, identity hashes, and JIT error cleanup.\n- Fixed resource cleanup during allocation failures, image loading, VM shutdown, and native I/O, and preserved expired aliens and resized-object state.\n- Reused JIT buffers, corrected relocation and unwind handling, and improved profiler timing, safepoint placement, and fatal-error handling.\n- Removed hard-coded 64-bit assumptions from object layouts, arithmetic, foreign integer conversions, file offsets, GC, and relocations, improving 32-bit portability.\n\n### Build and platform improvements\n\n- Updated bundled SQLite to 3.54.0 and OpenSSL to 4.0.3 on both 32-bit and 64-bit Windows, and updated DLL names for Cairo, GLib, FreeType, and OpenAL to match bundled libraries.\n- Building the [experimental Zig VM](https://re.factorcode.org/2026/03/getting-ziggy-with-it.html) now requires Zig 0.17.0; fixed Windows builds and used dynamic linking when targeting musl.\n- Added headless Debian/Ubuntu build dependencies and optional vocabulary-test dependencies.\n- Checked Linux runtime library sonames rather than requiring development linker names, and tolerated missing optional library directories.\n- Corrected 32-bit x86 compilation and linking flags across C++, C, assembly, and FFI test builds, and preserved architecture flags when invoking make.\n","body_html":"<p>*“You don’t want just to develop for ARM, you want to actually use ARM\nin your day-to-day work on the desktop.” - Linus Torvalds*</p>\n<p>I’m very pleased to announce the release of\n<a href=\"https://factorcode.org\" rel=\"nofollow ugc noopener\">Factor</a> 0.102!</p>\n<div class=\"table-wrap\"><table><thead><tr><th>OS/CPU</th><th>Windows</th><th>macOS</th><th>Linux</th></tr></thead><tbody><tr><td>ARM64</td><td></td><td><a href=\"https://downloads.factorcode.org/releases/0.102/factor-macos-arm-64-0.102.dmg\" rel=\"nofollow ugc noopener\">0.102</a></td><td></td></tr><tr><td>x86</td><td><a href=\"https://downloads.factorcode.org/releases/0.102/factor-windows-x86-32-0.102.zip\" rel=\"nofollow ugc noopener\">0.102</a></td><td></td><td><a href=\"https://downloads.factorcode.org/releases/0.102/factor-linux-x86-32-0.102.tar.gz\" rel=\"nofollow ugc noopener\">0.102</a></td></tr><tr><td>x86-64</td><td><a href=\"https://downloads.factorcode.org/releases/0.102/factor-windows-x86-64-0.102.zip\" rel=\"nofollow ugc noopener\">0.102</a></td><td><a href=\"https://downloads.factorcode.org/releases/0.102/factor-macos-x86-64-0.102.dmg\" rel=\"nofollow ugc noopener\">0.102</a></td><td><a href=\"https://downloads.factorcode.org/releases/0.102/factor-linux-x86-64-0.102.tar.gz\" rel=\"nofollow ugc noopener\">0.102</a></td></tr></tbody></table></div>\n<p><strong>Source code</strong>: <a href=\"https://downloads.factorcode.org/releases/0.102/factor-src-0.102.zip\" rel=\"nofollow ugc noopener\">0.102</a></p>\n<p>This release includes 1,068 commits from the following contributors:</p>\n<blockquote><p>Aleksander Sabak, Andrii Puhachenko, Chris Double,\nDmitry Matveyev, Doug Coleman, Eric Willigers, Giftpflanze,\nJohn Benediktsson, Leo Mehraban, Rudi Grinberg, Sebastiaan Speck,\nZoltán Kéri, <a href=\"https://github.com/knottio\" rel=\"nofollow ugc noopener\">@knottio</a>,\n<a href=\"https://github.com/ronnie-w\" rel=\"nofollow ugc noopener\">@ronnie-w</a></p></blockquote>\n<p>Highlights of this release include:</p>\n<ul><li>Working <a href=\"https://re.factorcode.org/2026/06/native-arm64.html\" rel=\"nofollow ugc noopener\">native ARM64</a> support on macOS, Linux, and Windows!</li><li>A new GTK4 UI backend, now the default on 64-bit Linux; 32-bit Linux <a href=\"https://re.factorcode.org/2025/12/migrating-to-gtk3.html\" rel=\"nofollow ugc noopener\">continues to use GTK3</a>, which remains a build option on other supported Linux architectures.</li><li>New 32-bit and 64-bit RISC-V Linux ports, with optimizing compiler backends, foreign calls and callbacks, and support in both the C++ and Zig VMs.</li><li>DirectWrite text rendering on Windows, including color glyphs, typography controls, and better support for large output and complex scripts.</li><li>More responsive rendering and selection of large text across platforms, with fixes for display scaling, listener scrolling, and adjacent text backgrounds.</li><li>Experimental register allocators and optional compiler optimizations, alongside fixes to stack inference, generated code, and GC root tracking.</li><li>Updated Unicode data to 18.0.0 and timezone data to 2026c, with bindings for SQLite 3.53.4, Raylib 6.0, and Lua 5.5.</li><li>Faster process launching and native process-exit notifications on Linux, macOS, BSD, and Windows, with polling as a fallback.</li><li>Extensive fixes to HTTP parsing, TLS identity checks, cooperative waits, resource cleanup, signal handling, and VM memory safety.</li></ul>\n<h3 id=\"compatibility-notes\">Compatibility notes</h3>\n<ul><li>64-bit Linux builds now select GTK4 by default; use <code>-ui-backend=gtk3</code> when bootstrapping if GTK3 is required. 32-bit Linux uses GTK3 and does not support GTK4.</li><li>Windows UI text now uses DirectWrite by default, so text metrics and appearance may differ from the previous Uniscribe backend.</li><li><code>callable</code> is now a mixin that includes words; code that assumes all callables support the sequence protocol should use <code>quotation-like</code> instead.</li><li>Fixed-array struct fields now validate input buffer lengths, and stricter HTTP and multipart parsing rejects malformed or incomplete input previously accepted.</li><li>PEG repetition and list parsers now omit <code>ignore</code> values. Minimum counts refer to successful matches, so <code>repeat1</code> and <code>list-of-many</code> can return empty output when all matched items are hidden.</li><li>The buffered HTTP client now decompresses gzip responses before character decoding and rejects unsupported content codings. <code>with-http-request</code> still provides bytes before content decompression.</li><li>Ambiguous Objective-C selectors now require a class-qualified name such as <code>Class.selector</code> when imported signatures differ.</li><li>Tuple literals reject duplicate slot names, and <code>minimum</code> and <code>maximum</code> now throw for empty <code>iota</code> and <code>repetition</code> instead of returning a value.</li><li>Command-line option names and aliases must now be unique, including the default <code>--help</code> option. Exact names take precedence over <code>no-</code> negation.</li><li>SQLite connections now use persistent WAL mode, which requires a local filesystem. <code>with-transaction</code> uses <code>BEGIN IMMEDIATE</code> and acquires the write lock at transaction start, including for read-only work. Write serialization is per process; wrap raw SQL and DDL writes in <code>with-transaction</code> or <code>serialize-transaction</code> to participate.</li></ul>\n<h3 id=\"what-is-factor\">What is Factor?</h3>\n<p>Factor is a <a href=\"https://www.concatenative.org/\" rel=\"nofollow ugc noopener\">concatenative</a>, stack-based\nprogramming language with <a href=\"https://concatenative.org/wiki/view/Factor/Features/The%20language\" rel=\"nofollow ugc noopener\">high-level\nfeatures</a>\nincluding dynamic types, extensible syntax, macros, and garbage\ncollection. Factor has a <a href=\"https://docs.factorcode.org/content/article-vocab-index.html\" rel=\"nofollow ugc noopener\">full-featured\nlibrary</a>,\nsupports many platforms, and has extensive documentation.</p>\n<p>The implementation is <a href=\"https://concatenative.org/wiki/view/Factor/Optimizing%20compiler\" rel=\"nofollow ugc noopener\">fully\ncompiled</a>\nfor performance, while still supporting <a href=\"https://concatenative.org/wiki/view/Factor/Interactive%20development\" rel=\"nofollow ugc noopener\">interactive\ndevelopment</a>.\nFactor applications are portable across supported platforms and can be\n<a href=\"https://concatenative.org/wiki/view/Factor/Deployment\" rel=\"nofollow ugc noopener\">deployed as standalone\napplications</a>. Full source code for the Factor project is available\nunder a BSD license.</p>\n<h3 id=\"new-libraries\">New libraries</h3>\n<ul><li><a href=\"https://docs.factorcode.org/content/vocab-alien.c-types.varargs.html\" rel=\"nofollow ugc noopener\">alien.c-types.varargs</a>: added ABI-aware argument promotion and type support for C variadic calls.</li><li><a href=\"https://docs.factorcode.org/content/vocab-alien.varargs.html\" rel=\"nofollow ugc noopener\">alien.varargs</a>: added ARM64 variadic callbacks and native argument-list access through <code>va-arg</code>, <code>va-copy</code>, and <code>va_list</code>.</li><li><a href=\"https://docs.factorcode.org/content/vocab-benchmark.neon.html\" rel=\"nofollow ugc noopener\">benchmark.neon</a>: added benchmarks for ARM64 SIMD and optional NEON extensions.</li><li><a href=\"https://docs.factorcode.org/content/vocab-benchmark.spawn-cat.html\" rel=\"nofollow ugc noopener\">benchmark.spawn-cat</a>: added a subprocess-launch benchmark with a Bun comparison.</li><li><a href=\"https://docs.factorcode.org/content/vocab-bootstrap.compat.html\" rel=\"nofollow ugc noopener\">bootstrap.compat</a>: added compatibility support for refreshing older images, including upgrades to ARM64 callback templates.</li><li><a href=\"https://docs.factorcode.org/content/vocab-checksums.cityhash.html\" rel=\"nofollow ugc noopener\">checksums.cityhash</a>: added pure Factor implementations of non-cryptographic CityHash32, CityHash64, and CityHash128, with seeded 64-bit and 128-bit variants.</li><li><a href=\"https://docs.factorcode.org/content/vocab-checksums.farmhash.html\" rel=\"nofollow ugc noopener\">checksums.farmhash</a>: added portable FarmHash checksums with stable 32-bit, 64-bit, and 128-bit fingerprints and seeded variants.</li><li><a href=\"https://docs.factorcode.org/content/vocab-compiler.cfg.linear-scan.checker.html\" rel=\"nofollow ugc noopener\">compiler.cfg.linear-scan.checker</a>: added checks for register assignments and preservation of live values during linear-scan allocation.</li><li><a href=\"https://docs.factorcode.org/content/vocab-compiler.cfg.loop-optimization.html\" rel=\"nofollow ugc noopener\">compiler.cfg.loop-optimization</a>: added optional loop preheaders and conservative integer loop-invariant code motion.</li><li><a href=\"https://docs.factorcode.org/content/vocab-compiler.cfg.memory-optimization.html\" rel=\"nofollow ugc noopener\">compiler.cfg.memory-optimization</a>: added optional reuse of managed-object slot loads across basic blocks.</li><li><a href=\"https://docs.factorcode.org/content/vocab-compiler.cfg.metrics.html\" rel=\"nofollow ugc noopener\">compiler.cfg.metrics</a>: added compiler pass timings, allocation statistics, and register-allocator comparison tools.</li><li><a href=\"https://docs.factorcode.org/content/vocab-compiler.cfg.multiply-negate.html\" rel=\"nofollow ugc noopener\">compiler.cfg.multiply-negate</a>: added a compiler pass that combines a multiply followed by negation when its result has a single use.</li><li><a href=\"https://docs.factorcode.org/content/vocab-compiler.cfg.register-allocation.html\" rel=\"nofollow ugc noopener\">compiler.cfg.register-allocation</a>: added a common interface for selecting register allocators while retaining linear scan as the default.</li><li><a href=\"https://docs.factorcode.org/content/vocab-compiler.cfg.register-allocation.backtracking.html\" rel=\"nofollow ugc noopener\">compiler.cfg.register-allocation.backtracking</a>: added an experimental allocator using bundle splitting, eviction, and affinity-based spill decisions.</li><li><a href=\"https://docs.factorcode.org/content/vocab-compiler.cfg.register-allocation.chordal.html\" rel=\"nofollow ugc noopener\">compiler.cfg.register-allocation.chordal</a>: added an experimental SSA graph-coloring allocator with chordality checks and spill repair.</li><li><a href=\"https://docs.factorcode.org/content/vocab-compiler.cfg.register-allocation.greedy.html\" rel=\"nofollow ugc noopener\">compiler.cfg.register-allocation.greedy</a>: added an experimental allocator using eviction, recoloring, and loop-aware region splitting.</li><li><a href=\"https://docs.factorcode.org/content/vocab-compiler.cfg.register-allocation.rematerialization.html\" rel=\"nofollow ugc noopener\">compiler.cfg.register-allocation.rematerialization</a>: added optional regeneration of inexpensive integer constants instead of loading them from spill slots.</li><li><a href=\"https://docs.factorcode.org/content/vocab-compiler.cfg.register-allocation.verifier.html\" rel=\"nofollow ugc noopener\">compiler.cfg.register-allocation.verifier</a>: added an optional final allocation verifier for value flow, operand constraints, spills, and GC roots.</li><li><a href=\"https://docs.factorcode.org/content/vocab-compiler.cfg.slp.html\" rel=\"nofollow ugc noopener\">compiler.cfg.slp</a>: added optional packing of independent integer expression trees into SIMD operations.</li><li><a href=\"https://docs.factorcode.org/content/vocab-compiler.cfg.value-numbering.global.html\" rel=\"nofollow ugc noopener\">compiler.cfg.value-numbering.global</a>: added optional global value numbering using the production compiler’s rewrite rules.</li><li><a href=\"https://docs.factorcode.org/content/vocab-compression.deflate.html\" rel=\"nofollow ugc noopener\">compression.deflate</a>: added raw DEFLATE compression and decompression in Factor, including stored, fixed-Huffman, and dynamic-Huffman block decoding and malformed-input checks.</li><li><a href=\"https://docs.factorcode.org/content/vocab-cpu.arm.64.abi.html\" rel=\"nofollow ugc noopener\">cpu.arm.64.abi</a>: added shared ARM64 ABI classification for aggregates, callbacks, and variadic arguments.</li><li><a href=\"https://docs.factorcode.org/content/vocab-cpu.arm.64.features.html\" rel=\"nofollow ugc noopener\">cpu.arm.64.features</a>: added runtime ARM64 feature detection with Linux, macOS, and Windows implementations.</li><li><a href=\"https://docs.factorcode.org/content/vocab-cpu.riscv.32.html\" rel=\"nofollow ugc noopener\">cpu.riscv.32</a>: added an RV32GC optimizing compiler backend, assembler, and ILP32D foreign-call ABI support.</li><li><a href=\"https://docs.factorcode.org/content/vocab-cpu.riscv.64.html\" rel=\"nofollow ugc noopener\">cpu.riscv.64</a>: added an RV64GC optimizing compiler backend, assembler, and LP64D foreign-call ABI support.</li><li><a href=\"https://docs.factorcode.org/content/vocab-crypto.chacha20.html\" rel=\"nofollow ugc noopener\">crypto.chacha20</a>: added the IETF ChaCha20 stream cipher with byte-array and string encryption helpers.</li><li><a href=\"https://docs.factorcode.org/content/vocab-crypto.poly1305.html\" rel=\"nofollow ugc noopener\">crypto.poly1305</a>: added RFC 8439 Poly1305 authentication tags and verification with 32-byte one-time keys and constant-time tag comparison.</li><li><a href=\"https://docs.factorcode.org/content/vocab-crypto.utils.html\" rel=\"nofollow ugc noopener\">crypto.utils</a>: added cryptographic helpers for byte-sequence comparison, zero testing, and masked integer selection.</li><li><a href=\"https://docs.factorcode.org/content/vocab-demos.smoke-test.html\" rel=\"nofollow ugc noopener\">demos.smoke-test</a>: added configurable smoke tests that open demos, check rendering and errors, and clean up each demo before continuing.</li><li><a href=\"https://docs.factorcode.org/content/vocab-editors.athas.html\" rel=\"nofollow ugc noopener\">editors.athas</a>: added Athas editor integration with source-line navigation and a configurable executable path.</li><li><a href=\"https://docs.factorcode.org/content/vocab-editors.codeedit.html\" rel=\"nofollow ugc noopener\">editors.codeedit</a>: added integration with the <a href=\"https://www.codeedit.app/\" rel=\"nofollow ugc noopener\">CodeEdit</a> editor.</li><li><a href=\"https://docs.factorcode.org/content/vocab-file-picker.linux.gtk4.html\" rel=\"nofollow ugc noopener\">file-picker.linux.gtk4</a>: added native file dialogs for the GTK4 backend.</li><li><a href=\"https://docs.factorcode.org/content/vocab-fonts.shaping.html\" rel=\"nofollow ugc noopener\">fonts.shaping</a>: added font direction, tab width, OpenType feature, locale, and color-glyph options for the Windows text backends.</li><li><a href=\"https://docs.factorcode.org/content/vocab-foogle.html\" rel=\"nofollow ugc noopener\">foogle</a>: added searches for loaded words by stack effect and documented types, with clickable results.</li><li><a href=\"https://docs.factorcode.org/content/vocab-game.input.gtk3.html\" rel=\"nofollow ugc noopener\">game.input.gtk3</a>: added GTK3-specific game input support backed by shared GTK and Linux input handling.</li><li><a href=\"https://docs.factorcode.org/content/vocab-game.input.gtk4.html\" rel=\"nofollow ugc noopener\">game.input.gtk4</a>: added GTK4 game input support, including event-driven keyboard and mouse handling.</li><li><a href=\"https://docs.factorcode.org/content/vocab-gdk3.html\" rel=\"nofollow ugc noopener\">gdk3</a>: added bindings for GTK3 windowing, display, and input handling.</li><li><a href=\"https://docs.factorcode.org/content/vocab-gdk4.html\" rel=\"nofollow ugc noopener\">gdk4</a>: added bindings for GTK4 displays, surfaces, input events, and graphics contexts.</li><li><a href=\"https://docs.factorcode.org/content/vocab-graphene.html\" rel=\"nofollow ugc noopener\">graphene</a>: added bindings for Graphene geometry types and vector, matrix, and transformation operations.</li><li><a href=\"https://docs.factorcode.org/content/vocab-gsk4.html\" rel=\"nofollow ugc noopener\">gsk4</a>: added bindings for the GTK4 scene graph and rendering API.</li><li><a href=\"https://docs.factorcode.org/content/vocab-gtk3.html\" rel=\"nofollow ugc noopener\">gtk3</a>: added bindings for GTK3 widgets, application windows, and OpenGL areas.</li><li><a href=\"https://docs.factorcode.org/content/vocab-gtk4.html\" rel=\"nofollow ugc noopener\">gtk4</a>: added bindings for GTK4 widgets, application windows, and event controllers.</li><li><a href=\"https://docs.factorcode.org/content/vocab-gtk4-samples.opengl.html\" rel=\"nofollow ugc noopener\">gtk4-samples.opengl</a>: added an example of rendering OpenGL in a GTK4 application window.</li><li><a href=\"https://docs.factorcode.org/content/vocab-math.floats.small.html\" rel=\"nofollow ugc noopener\">math.floats.small</a>: added IEEE binary16 and bfloat16 conversions, with related vocabularies for arithmetic support and C memory types.</li><li><a href=\"https://docs.factorcode.org/content/vocab-math.vectors.simd.extensions.html\" rel=\"nofollow ugc noopener\">math.vectors.simd.extensions</a>: added half-precision and bfloat16 vector operations, dot products, and small matrix kernels with portable fallbacks and optional ARM64 acceleration.</li><li><a href=\"https://docs.factorcode.org/content/vocab-models.clock.html\" rel=\"nofollow ugc noopener\">models.clock</a>: added a singleton ticking clock model.</li><li><a href=\"https://docs.factorcode.org/content/vocab-opengl.gl.epoxy.html\" rel=\"nofollow ugc noopener\">opengl.gl.epoxy</a>: added shared libepoxy function loading for the GTK OpenGL backends.</li><li><a href=\"https://docs.factorcode.org/content/vocab-opengl.gl.gtk3.html\" rel=\"nofollow ugc noopener\">opengl.gl.gtk3</a>: provided GTK3 compatibility entry points for OpenGL function loading through the shared libepoxy resolver.</li><li><a href=\"https://docs.factorcode.org/content/vocab-pbrt.html\" rel=\"nofollow ugc noopener\">pbrt</a>: added support for the <a href=\"https://re.factorcode.org/2026/02/pbrt.html\" rel=\"nofollow ugc noopener\">PBRT</a> file formats.</li><li><a href=\"https://docs.factorcode.org/content/vocab-python.lifecycle.html\" rel=\"nofollow ugc noopener\">python.lifecycle</a>: added shared lazy interpreter initialization and shutdown handling.</li><li><a href=\"https://docs.factorcode.org/content/vocab-raylib.live-coding.contexts.html\" rel=\"nofollow ugc noopener\">raylib.live-coding.contexts</a>: added native OpenGL context save/restore helpers for live coding on macOS, Unix, and Windows.</li><li><a href=\"https://docs.factorcode.org/content/vocab-regexp.captures.html\" rel=\"nofollow ugc noopener\">regexp.captures</a>: added numbered and named capture results, including matched text and capture bounds.</li><li><a href=\"https://docs.factorcode.org/content/vocab-shell.unix.html\" rel=\"nofollow ugc noopener\">shell.unix</a>: added Unix foreground-process handling so terminal interrupts reach shell children.</li><li><a href=\"https://docs.factorcode.org/content/vocab-shlex.html\" rel=\"nofollow ugc noopener\">shlex</a>: added shell-like string splitting modeled on Python’s <code>shlex</code>, with configurable comments and POSIX parsing, plus POSIX argument quoting and joining.</li><li><a href=\"https://docs.factorcode.org/content/vocab-sqids.html\" rel=\"nofollow ugc noopener\">sqids</a>: added reversible encoding of non-negative integer sequences into short IDs, with a URL-safe default alphabet, configurable alphabets, minimum lengths, and blocklists.</li><li><a href=\"https://docs.factorcode.org/content/vocab-syntax.inferred.html\" rel=\"nofollow ugc noopener\">syntax.inferred</a>: added optional <code>?:</code> definitions that infer their stack effects from their bodies.</li><li><a href=\"https://docs.factorcode.org/content/vocab-terrain.smoke-test.html\" rel=\"nofollow ugc noopener\">terrain.smoke-test</a>: added rendering and input checks for the Terrain demo.</li><li><a href=\"https://docs.factorcode.org/content/vocab-tools.disassembler.zydis.html\" rel=\"nofollow ugc noopener\">tools.disassembler.zydis</a>: added an optional x86 and x86-64 disassembler backend using Zydis 4.1, with Intel-syntax output.</li><li><a href=\"https://docs.factorcode.org/content/vocab-tools.test.ffi.html\" rel=\"nofollow ugc noopener\">tools.test.ffi</a>: added shared helpers for native FFI regression fixtures.</li><li><a href=\"https://docs.factorcode.org/content/vocab-ui-demo.html\" rel=\"nofollow ugc noopener\">ui-demo</a>: added interactive layout playgrounds, searchable tables, combo boxes, split panes, visible action results, and richer Unicode examples.</li><li><a href=\"https://docs.factorcode.org/content/vocab-ui.backend.gtk3.html\" rel=\"nofollow ugc noopener\">ui.backend.gtk3</a>: improved native dialogs, text input, game input, and OpenGL backend handling, avoided yielding during render and resize callbacks so windows cannot close midway through painting, and deferred rendering until the framebuffer is complete.</li><li><a href=\"https://docs.factorcode.org/content/vocab-ui.backend.gtk4.html\" rel=\"nofollow ugc noopener\">ui.backend.gtk4</a>: added a GTK4 UI backend with input-method integration and native window handling, checked framebuffer completeness, and deferred drawing until windows are mapped and have a positive size; handled focus callbacks after window removal and initialized older GTK4 versions without unsupported debug options.</li><li><a href=\"https://docs.factorcode.org/content/vocab-ui.backend.input-state.html\" rel=\"nofollow ugc noopener\">ui.backend.input-state</a>: added shared tracking and cleanup of keyboard and mouse state for UI backends.</li><li><a href=\"https://docs.factorcode.org/content/vocab-ui.text.directwrite.html\" rel=\"nofollow ugc noopener\">ui.text.directwrite</a>: added a DirectWrite UI text backend with tiled rendering for large text layouts; kept cached layouts in the global disposable registry so temporary scopes cannot dispose them prematurely.</li><li><a href=\"https://docs.factorcode.org/content/vocab-ui.text.index-maps.html\" rel=\"nofollow ugc noopener\">ui.text.index-maps</a>: added shared text-index mappings for Unicode caret and selection handling.</li><li><a href=\"https://docs.factorcode.org/content/vocab-ui.text.pango.indexed.html\" rel=\"nofollow ugc noopener\">ui.text.pango.indexed</a>: added indexed Pango text handling for large output rows.</li><li><a href=\"https://docs.factorcode.org/content/vocab-windows.directwrite.html\" rel=\"nofollow ugc noopener\">windows.directwrite</a>: added DirectWrite bindings and text layout support, with related vocabularies for indexed drawing and rasterization.</li></ul>\n<h3 id=\"improved-libraries\">Improved libraries</h3>\n<ul><li><a href=\"https://docs.factorcode.org/content/vocab-alien.html\" rel=\"nofollow ugc noopener\">alien</a>: improved callback handling and added the primitive interface for ARM64 variadic callbacks.</li><li><a href=\"https://docs.factorcode.org/content/vocab-alien.enums.html\" rel=\"nofollow ugc noopener\">alien.enums</a>: used table lookups for large enums and rebuilt conversion code when its generator changes.</li><li><a href=\"https://docs.factorcode.org/content/vocab-alien.libraries.finder.freebsd.html\" rel=\"nofollow ugc noopener\">alien.libraries.finder.freebsd</a>: fixed shared-library lookup on FreeBSD.</li><li><a href=\"https://docs.factorcode.org/content/vocab-alien.libraries.finder.linux.html\" rel=\"nofollow ugc noopener\">alien.libraries.finder.linux</a>: improved runtime library discovery without requiring development symlinks, a linker, or a working ldconfig cache; recognized versioned basenames such as <code>libSDL-1.2.so.0</code> while preferring exact basename matches.</li><li><a href=\"https://docs.factorcode.org/content/vocab-alien.libraries.finder.macos.html\" rel=\"nofollow ugc noopener\">alien.libraries.finder.macos</a>: improved matching of <code>dyld</code> library names on modern macOS.</li><li><a href=\"https://docs.factorcode.org/content/vocab-alien.syntax.html\" rel=\"nofollow ugc noopener\">alien.syntax</a>: added explicit variadic argument markers to foreign function and callback declarations.</li><li><a href=\"https://docs.factorcode.org/content/vocab-arrays.shaped.html\" rel=\"nofollow ugc noopener\">arrays.shaped</a>: added trailing-axis broadcasting, scalar arrays, reshape, writable slice and transpose views, axis reductions, and batched matrix multiplication; corrected indexing, dimension queries, and empty shapes; made cloning copy storage and shape metadata and materialize views.</li><li><a href=\"https://docs.factorcode.org/content/vocab-assocs.html\" rel=\"nofollow ugc noopener\">assocs</a>: corrected stack-effect names for <code>zip-index</code>; avoided allocating closures during cache lookups.</li><li><a href=\"https://docs.factorcode.org/content/vocab-bit-arrays.html\" rel=\"nofollow ugc noopener\">bit-arrays</a>: rejected negative and oversized lengths before allocating or resizing backing storage.</li><li><a href=\"https://docs.factorcode.org/content/vocab-bootstrap.compiler.html\" rel=\"nofollow ugc noopener\">bootstrap.compiler</a>: reordered early compilation to prepare frequently used compiler and hashtable helpers before the main bootstrap sweep.</li><li><a href=\"https://docs.factorcode.org/content/vocab-bootstrap.image.html\" rel=\"nofollow ugc noopener\">bootstrap.image</a>: improved image serialization and preserved mutable lexical words while retaining image format version 5.</li><li><a href=\"https://docs.factorcode.org/content/vocab-calendar.parser.html\" rel=\"nofollow ugc noopener\">calendar.parser</a>: accepted legacy cookie dates without an explicit timezone.</li><li><a href=\"https://docs.factorcode.org/content/vocab-checksums.openssl.html\" rel=\"nofollow ugc noopener\">checksums.openssl</a>: fixed ownership and cleanup of OpenSSL digest resources.</li><li><a href=\"https://docs.factorcode.org/content/vocab-classes.algebra.html\" rel=\"nofollow ugc noopener\">classes.algebra</a>: avoided unnecessary cache work for identical named classes and reflexive class comparisons.</li><li><a href=\"https://docs.factorcode.org/content/vocab-classes.struct.html\" rel=\"nofollow ugc noopener\">classes.struct</a>: validated buffer lengths assigned to fixed-array fields while preserving encoded-string pointer handling.</li><li><a href=\"https://docs.factorcode.org/content/vocab-classes.tuple.parser.html\" rel=\"nofollow ugc noopener\">classes.tuple.parser</a>: rejected duplicate slot names in tuple literals.</li><li><a href=\"https://docs.factorcode.org/content/vocab-cocoa.html\" rel=\"nofollow ugc noopener\">cocoa</a>: corrected Objective-C runtime declarations and callback signatures and rejected ambiguous unqualified selectors.</li><li><a href=\"https://docs.factorcode.org/content/vocab-combinators.smart.html\" rel=\"nofollow ugc noopener\">combinators.smart</a>: preserved captured values when inferring the effects of composed callables.</li><li><a href=\"https://docs.factorcode.org/content/vocab-combinators.syntax.html\" rel=\"nofollow ugc noopener\">combinators.syntax</a>: adjusted the definitions of <code>&amp;&amp;[</code> and <code>||[</code> and added documentation.</li><li><a href=\"https://docs.factorcode.org/content/vocab-command-line.html\" rel=\"nofollow ugc noopener\">command-line</a>: accepted vocabulary-root files with a byte-order mark.</li><li><a href=\"https://docs.factorcode.org/content/vocab-command-line.parser.html\" rel=\"nofollow ugc noopener\">command-line.parser</a>: added option aliases and attached values such as <code>--host=localhost</code>, including empty values and values beginning with a dash; preferred exact names over <code>no-</code> negation and rejected duplicate names and aliases.</li><li><a href=\"https://docs.factorcode.org/content/vocab-compression.gzip.html\" rel=\"nofollow ugc noopener\">compression.gzip</a>: corrected gzip output for interoperability with other implementations.</li><li><a href=\"https://docs.factorcode.org/content/vocab-compression.huffman.html\" rel=\"nofollow ugc noopener\">compression.huffman</a>: assigned a one-bit code to a lone Huffman symbol.</li><li><a href=\"https://docs.factorcode.org/content/vocab-compression.inflate.html\" rel=\"nofollow ugc noopener\">compression.inflate</a>: decoded concatenated gzip members and validated headers, checksums, and uncompressed sizes; fixed transitions from stored to compressed blocks and accepted zero padding after the final gzip member.</li><li><a href=\"https://docs.factorcode.org/content/vocab-compression.zstd.ffi.html\" rel=\"nofollow ugc noopener\">compression.zstd.ffi</a>: corrected the native names for compression bounds, compressed-frame sizes, and decompression contexts, with direct FFI regression tests.</li><li><a href=\"https://docs.factorcode.org/content/vocab-concurrency.combinators.html\" rel=\"nofollow ugc noopener\">concurrency.combinators</a>: preserved input order in <code>parallel-filter</code> and honored the requested output sequence type in <code>parallel-map-as</code>; reduced per-task allocation by sharing completion wrappers across parallel iteration stages.</li><li><a href=\"https://docs.factorcode.org/content/vocab-concurrency.conditions.html\" rel=\"nofollow ugc noopener\">concurrency.conditions</a>: fixed cooperative wait races and preserved timeout deadlines across wakeups.</li><li><a href=\"https://docs.factorcode.org/content/vocab-concurrency.flags.html\" rel=\"nofollow ugc noopener\">concurrency.flags</a>: fixed waiting and wakeup behavior when flag state changes.</li><li><a href=\"https://docs.factorcode.org/content/vocab-concurrency.futures.html\" rel=\"nofollow ugc noopener\">concurrency.futures</a>: documented and tested inherited dynamic scope; released completed worker contexts before scheduling more futures.</li><li><a href=\"https://docs.factorcode.org/content/vocab-concurrency.locks.html\" rel=\"nofollow ugc noopener\">concurrency.locks</a>: rechecked lock availability after wakeups and preserved deadlines for ordinary and reader/writer locks.</li><li><a href=\"https://docs.factorcode.org/content/vocab-concurrency.mailboxes.html\" rel=\"nofollow ugc noopener\">concurrency.mailboxes</a>: preserved receive deadlines across wakeups and handled empty mailbox checks safely; released linked worker contexts before yielding after error delivery.</li><li><a href=\"https://docs.factorcode.org/content/vocab-concurrency.promises.html\" rel=\"nofollow ugc noopener\">concurrency.promises</a>: ignored late linked-thread errors after a promise has already been fulfilled.</li><li><a href=\"https://docs.factorcode.org/content/vocab-concurrency.semaphores.html\" rel=\"nofollow ugc noopener\">concurrency.semaphores</a>: fixed waiting for permits across wakeups.</li><li><a href=\"https://docs.factorcode.org/content/vocab-core-foundation.run-loop.html\" rel=\"nofollow ugc noopener\">core-foundation.run-loop</a>: reduced the latency of <code>yield</code> on macOS.</li><li><a href=\"https://docs.factorcode.org/content/vocab-core-text.html\" rel=\"nofollow ugc noopener\">core-text</a>: improved large-line rasterization, Unicode selection, and caching, and stopped text backgrounds from painting over neighboring lines.</li><li><a href=\"https://docs.factorcode.org/content/vocab-cpu.arm.64.html\" rel=\"nofollow ugc noopener\">cpu.arm.64</a>: expanded SIMD lowering and corrected large offsets, immediate operands, structure returns, and foreign-call ABI handling.</li><li><a href=\"https://docs.factorcode.org/content/vocab-cpu.x86.html\" rel=\"nofollow ugc noopener\">cpu.x86</a>: fixed unsigned callback arguments and SIMD shift, shuffle, and extraction edge cases.</li><li><a href=\"https://docs.factorcode.org/content/vocab-cuckoo-filters.html\" rel=\"nofollow ugc noopener\">cuckoo-filters</a>: preserved existing entries when an insertion fails.</li><li><a href=\"https://docs.factorcode.org/content/vocab-curl.ffi.html\" rel=\"nofollow ugc noopener\">curl.ffi</a>: corrected variadic declarations and Linux runtime library discovery.</li><li><a href=\"https://docs.factorcode.org/content/vocab-curses.ffi.html\" rel=\"nofollow ugc noopener\">curses.ffi</a>: corrected variadic formatting calls and native argument-list declarations.</li><li><a href=\"https://docs.factorcode.org/content/vocab-db.html\" rel=\"nofollow ugc noopener\">db</a>: added the <code>db-write-lock</code> backend hook and <code>serialize-transaction</code> combinator, preserving quotation stack effects and leaving other backends unchanged.</li><li><a href=\"https://docs.factorcode.org/content/vocab-db.pools.html\" rel=\"nofollow ugc noopener\">db.pools</a>: limited each database pool to 16 idle connections.</li><li><a href=\"https://docs.factorcode.org/content/vocab-db.sqlite.html\" rel=\"nofollow ugc noopener\">db.sqlite</a>: updated the SQLite bindings to 3.53.4, serialized transactions and tuple writes with reentrant per-file locks to prevent same-process write contention, enabled WAL mode and <code>BEGIN IMMEDIATE</code> transactions, and cleaned up native handles and result sets after failures, including failed WAL initialization.</li><li><a href=\"https://docs.factorcode.org/content/vocab-db.sqlite.ffi.html\" rel=\"nofollow ugc noopener\">db.sqlite.ffi</a>: updated declarations for SQLite 3.53.4 and corrected variadic formatting, pointer ownership, and VFS filename handling.</li><li><a href=\"https://docs.factorcode.org/content/vocab-db.types.html\" rel=\"nofollow ugc noopener\">db.types</a>: reported abstract primary-key policies early, requiring a concrete primary-key policy.</li><li><a href=\"https://docs.factorcode.org/content/vocab-disjoint-sets.html\" rel=\"nofollow ugc noopener\">disjoint-sets</a>: avoided redundant parent updates during lookup.</li><li><a href=\"https://docs.factorcode.org/content/vocab-dns.html\" rel=\"nofollow ugc noopener\">dns</a>: added support for <a href=\"https://re.factorcode.org/2025/12/dns-loc-records.html\" rel=\"nofollow ugc noopener\">DNS LOC records</a>.</li><li><a href=\"https://docs.factorcode.org/content/vocab-editors.vim.html\" rel=\"nofollow ugc noopener\">editors.vim</a>: corrected the documented Vim plugin location.</li><li><a href=\"https://docs.factorcode.org/content/vocab-file-picker.linux.html\" rel=\"nofollow ugc noopener\">file-picker.linux</a>: improved native open/save dialogs and selected the implementation appropriate to the active GTK backend.</li><li><a href=\"https://docs.factorcode.org/content/vocab-fluids.html\" rel=\"nofollow ugc noopener\">fluids</a>: loaded image decoders for the bundled PGM and PPM textures.</li><li><a href=\"https://docs.factorcode.org/content/vocab-fonts.html\" rel=\"nofollow ugc noopener\">fonts</a>: preserved inherited shaping options when deriving fonts.</li><li><a href=\"https://docs.factorcode.org/content/vocab-fry.html\" rel=\"nofollow ugc noopener\">fry</a>: preserved source syntax and stepping boundaries and allowed quotation templates to remain unexpanded until needed.</li><li><a href=\"https://docs.factorcode.org/content/vocab-functors.html\" rel=\"nofollow ugc noopener\">functors</a>: preserved fried quotations in generated definitions.</li><li><a href=\"https://docs.factorcode.org/content/vocab-furnace.asides.html\" rel=\"nofollow ugc noopener\">furnace.asides</a>: stopped logging aside input values that may contain sensitive request data.</li><li><a href=\"https://docs.factorcode.org/content/vocab-furnace.auth.html\" rel=\"nofollow ugc noopener\">furnace.auth</a>: rejected deleted users and handled unknown usernames without corrupting the data stack.</li><li><a href=\"https://docs.factorcode.org/content/vocab-furnace.auth.basic.html\" rel=\"nofollow ugc noopener\">furnace.auth.basic</a>: handled malformed Basic authentication input safely.</li><li><a href=\"https://docs.factorcode.org/content/vocab-furnace.auth.login.html\" rel=\"nofollow ugc noopener\">furnace.auth.login</a>: stopped logging user objects and permit-cookie values during login.</li><li><a href=\"https://docs.factorcode.org/content/vocab-furnace.auth.login.permits.html\" rel=\"nofollow ugc noopener\">furnace.auth.login.permits</a>: corrected permit expiry checks.</li><li><a href=\"https://docs.factorcode.org/content/vocab-furnace.auth.providers.html\" rel=\"nofollow ugc noopener\">furnace.auth.providers</a>: rejected empty claim tickets and corrected success handling when adding users.</li><li><a href=\"https://docs.factorcode.org/content/vocab-furnace.cache.html\" rel=\"nofollow ugc noopener\">furnace.cache</a>: corrected cache expiry handling.</li><li><a href=\"https://docs.factorcode.org/content/vocab-game.input.html\" rel=\"nofollow ugc noopener\">game.input</a>: improved backend selection and keyboard, mouse, and Linux device handling across GTK versions; added event-driven macOS input state, including modifier keys and mouse motion, and removed hardware-dependent initialization tests.</li><li><a href=\"https://docs.factorcode.org/content/vocab-game.input.x11.html\" rel=\"nofollow ugc noopener\">game.input.x11</a>: reported a missing X display cleanly.</li><li><a href=\"https://docs.factorcode.org/content/vocab-generic.html\" rel=\"nofollow ugc noopener\">generic</a>: cached static method resolution and preserved next-method dependencies through macro expansion.</li><li><a href=\"https://docs.factorcode.org/content/vocab-gir.html\" rel=\"nofollow ugc noopener\">gir</a>: updated the bundled <a href=\"https://developer.gnome.org/documentation/guidelines/programming/introspection.html\" rel=\"nofollow ugc noopener\">GIR files</a>.</li><li><a href=\"https://docs.factorcode.org/content/vocab-gml.runtime.html\" rel=\"nofollow ugc noopener\">gml.runtime</a>: passed the method word through <code>EXEC::</code> parsing correctly.</li><li><a href=\"https://docs.factorcode.org/content/vocab-gobject-introspection.html\" rel=\"nofollow ugc noopener\">gobject-introspection</a>: added support for newer GIR files; preserved manually defined FFI bindings when introspection data is reloaded.</li><li><a href=\"https://docs.factorcode.org/content/vocab-gpu.framebuffers.html\" rel=\"nofollow ugc noopener\">gpu.framebuffers</a>: handled the default framebuffer used by GTK4 rendering.</li><li><a href=\"https://docs.factorcode.org/content/vocab-gpu.shaders.html\" rel=\"nofollow ugc noopener\">gpu.shaders</a>: preserved shader objects while assembling GPU programs.</li><li><a href=\"https://docs.factorcode.org/content/vocab-graphviz.render.html\" rel=\"nofollow ugc noopener\">graphviz.render</a>: selected preview formats through the registered image loaders.</li><li><a href=\"https://docs.factorcode.org/content/vocab-grid-meshes.html\" rel=\"nofollow ugc noopener\">grid-meshes</a>: corrected mesh generation used by Terrain rendering.</li><li><a href=\"https://docs.factorcode.org/content/vocab-hashtables.html\" rel=\"nofollow ugc noopener\">hashtables</a>: avoided scanning the backing array when clearing an already empty table.</li><li><a href=\"https://docs.factorcode.org/content/vocab-help.html\" rel=\"nofollow ugc noopener\">help</a>: displayed numeric enum values, honored documented constant output names, and fixed help rendering for parsing-word values.</li><li><a href=\"https://docs.factorcode.org/content/vocab-help.html.html\" rel=\"nofollow ugc noopener\">help.html</a>: generated pages for vocabulary prefixes that have no source file of their own; skipped empty vocabulary prefixes.</li><li><a href=\"https://docs.factorcode.org/content/vocab-help.markup.html\" rel=\"nofollow ugc noopener\">help.markup</a>: removed duplicate and self-referential related-word links.</li><li><a href=\"https://docs.factorcode.org/content/vocab-hints.html\" rel=\"nofollow ugc noopener\">hints</a>: added array and string specializations for index searches.</li><li><a href=\"https://docs.factorcode.org/content/vocab-html.templates.chloe.html\" rel=\"nofollow ugc noopener\">html.templates.chloe</a>: corrected the list of HTML void elements.</li><li><a href=\"https://docs.factorcode.org/content/vocab-html5.html\" rel=\"nofollow ugc noopener\">html5</a>: built nested document trees, decoded character references, and recorded recoverable parse errors; added SVG and MathML foreign content, template fragments, framesets, table and select handling, and recovery for misnested formatting elements, forms, and late head elements.</li><li><a href=\"https://docs.factorcode.org/content/vocab-http.client.html\" rel=\"nofollow ugc noopener\">http.client</a>: decoded gzip response bodies before character decoding, including stacked encodings and concatenated members, and reported unsupported content codings; combined repeated <code>Content-Encoding</code> headers and reported unsuccessful HTTP status codes before attempting body decoding.</li><li><a href=\"https://docs.factorcode.org/content/vocab-http.server.html\" rel=\"nofollow ugc noopener\">http.server</a>: rejected TLS input on plain HTTP connections and suppressed response bodies when HTTP semantics forbid them.</li><li><a href=\"https://docs.factorcode.org/content/vocab-http.server.requests.html\" rel=\"nofollow ugc noopener\">http.server.requests</a>: rejected incomplete requests and invalid header or body framing.</li><li><a href=\"https://docs.factorcode.org/content/vocab-http.server.static.html\" rel=\"nofollow ugc noopener\">http.server.static</a>: handled malformed conditional-date headers.</li><li><a href=\"https://docs.factorcode.org/content/vocab-images.loader.cocoa.html\" rel=\"nofollow ugc noopener\">images.loader.cocoa</a>: implemented <code>image&gt;stream</code> for <code>ns-image</code>.</li><li><a href=\"https://docs.factorcode.org/content/vocab-images.loader.gdiplus.html\" rel=\"nofollow ugc noopener\">images.loader.gdiplus</a>: preserved image pixel formats and orientation and released native images and retained COM streams.</li><li><a href=\"https://docs.factorcode.org/content/vocab-images.loader.gtk.html\" rel=\"nofollow ugc noopener\">images.loader.gtk</a>: fixed GdkPixbuf library registration and encoded image-buffer lengths.</li><li><a href=\"https://docs.factorcode.org/content/vocab-images.tga.html\" rel=\"nofollow ugc noopener\">images.tga</a>: kept optional footer parsers out of line to reduce compiler expansion.</li><li><a href=\"https://docs.factorcode.org/content/vocab-inverse.html\" rel=\"nofollow ugc noopener\">inverse</a>: preserved captured lexical values during expansion.</li><li><a href=\"https://docs.factorcode.org/content/vocab-io.html\" rel=\"nofollow ugc noopener\">io</a>: avoided temporary chunk arrays when reading delimited input.</li><li><a href=\"https://docs.factorcode.org/content/vocab-io.backend.unix.html\" rel=\"nofollow ugc noopener\">io.backend.unix</a>: preserved descriptor flags when enabling nonblocking I/O and cleaned up descriptors after cancellation failures.</li><li><a href=\"https://docs.factorcode.org/content/vocab-io.backend.unix.multiplexers.epoll.html\" rel=\"nofollow ugc noopener\">io.backend.unix.multiplexers.epoll</a>: preserved simultaneous read/write registrations and corrected event and cleanup handling.</li><li><a href=\"https://docs.factorcode.org/content/vocab-io.backend.unix.multiplexers.kqueue.html\" rel=\"nofollow ugc noopener\">io.backend.unix.multiplexers.kqueue</a>: handled interrupted changelist submissions without losing applied changes.</li><li><a href=\"https://docs.factorcode.org/content/vocab-io.encodings.iana.html\" rel=\"nofollow ugc noopener\">io.encodings.iana</a>: matched charset names without regard to case.</li><li><a href=\"https://docs.factorcode.org/content/vocab-io.files.html\" rel=\"nofollow ugc noopener\">io.files</a>: preserved line endings in <code>change-file-lines</code> and improved cleanup after file-construction failures.</li><li><a href=\"https://docs.factorcode.org/content/vocab-io.files.info.windows.html\" rel=\"nofollow ugc noopener\">io.files.info.windows</a>: limited fallback file-information lookup to access and sharing failures, preserving other Windows errors; made <code>link-info</code> inspect the link itself.</li><li><a href=\"https://docs.factorcode.org/content/vocab-io.launcher.html\" rel=\"nofollow ugc noopener\">io.launcher</a>: improved Windows batch argument and environment handling and Unix child-process signal behavior, and cleaned up partially constructed pipelines after setup failures; streamlined Unix spawn setup and PATH lookup, added native exit notifications through kqueue, Linux pidfds, and Windows completion packets with polling fallback, and handled Windows waits beyond the native per-call handle limit; used <code>posix_spawn</code> on Linux to avoid copying large image page tables during process creation.</li><li><a href=\"https://docs.factorcode.org/content/vocab-io.mmap.html\" rel=\"nofollow ugc noopener\">io.mmap</a>: cleaned up failed mappings and associated file handles.</li><li><a href=\"https://docs.factorcode.org/content/vocab-io.monitors.html\" rel=\"nofollow ugc noopener\">io.monitors</a>: fixed monitor initialization, cancellation, and recursive-directory cleanup.</li><li><a href=\"https://docs.factorcode.org/content/vocab-io.pipes.html\" rel=\"nofollow ugc noopener\">io.pipes</a>: cleaned up failed pipe construction and opened Unix FIFOs without blocking the VM, including cleanup when port initialization fails.</li><li><a href=\"https://docs.factorcode.org/content/vocab-io.pools.html\" rel=\"nofollow ugc noopener\">io.pools</a>: bounded idle resource pools and disposed resources returned after a pool has closed.</li><li><a href=\"https://docs.factorcode.org/content/vocab-io.ports.html\" rel=\"nofollow ugc noopener\">io.ports</a>: disposed native handles when port setup fails.</li><li><a href=\"https://docs.factorcode.org/content/vocab-io.servers.html\" rel=\"nofollow ugc noopener\">io.servers</a>: avoided accepting new connections after a server listener has stopped.</li><li><a href=\"https://docs.factorcode.org/content/vocab-io.sockets.html\" rel=\"nofollow ugc noopener\">io.sockets</a>: fixed socket-construction cleanup, Unix-domain path padding, datagram handling, and Windows socket-set initialization; updated Windows connect and accept contexts and preserved accepted address storage.</li><li><a href=\"https://docs.factorcode.org/content/vocab-io.sockets.secure.html\" rel=\"nofollow ugc noopener\">io.sockets.secure</a>: preserved the intended certificate identity through address resolution and cleaned up failed secure connections.</li><li><a href=\"https://docs.factorcode.org/content/vocab-io.sockets.secure.openssl.html\" rel=\"nofollow ugc noopener\">io.sockets.secure.openssl</a>: corrected certificate identity checks, callback lifetimes, and OpenSSL resource ownership, including compatibility with older OpenSSL identity APIs.</li><li><a href=\"https://docs.factorcode.org/content/vocab-io.standard-paths.html\" rel=\"nofollow ugc noopener\">io.standard-paths</a>: checked executable files and honored Windows PATHEXT during program discovery.</li><li><a href=\"https://docs.factorcode.org/content/vocab-io.timeouts.html\" rel=\"nofollow ugc noopener\">io.timeouts</a>: preserved timeout deadlines across cooperative waits.</li><li><a href=\"https://docs.factorcode.org/content/vocab-libclang.html\" rel=\"nofollow ugc noopener\">libclang</a>: expanded C API bindings, avoided repeated declaration generation and unnecessary function-body parsing in the importer, and corrected token handling and native resource cleanup; fell back to the library search path when LLVM directories contain no libclang; discovered versioned libclang shared libraries inside LLVM installations.</li><li><a href=\"https://docs.factorcode.org/content/vocab-libudev.html\" rel=\"nofollow ugc noopener\">libudev</a>: checked availability before calling optional legacy interfaces.</li><li><a href=\"https://docs.factorcode.org/content/vocab-lint.html\" rel=\"nofollow ugc noopener\">lint</a>: reported unnecessary recursive annotations conservatively.</li><li><a href=\"https://docs.factorcode.org/content/vocab-linux.input-events.html\" rel=\"nofollow ugc noopener\">linux.input-events</a>: corrected event-mask decoding, ioctl arguments, and multitouch slot counts.</li><li><a href=\"https://docs.factorcode.org/content/vocab-locals.html\" rel=\"nofollow ugc noopener\">locals</a>: fixed interactions with fry, typed tuple construction, and next-method dependency tracking.</li><li><a href=\"https://docs.factorcode.org/content/vocab-logging.analysis.html\" rel=\"nofollow ugc noopener\">logging.analysis</a>: bounded file-report reads and combined multiline log entries.</li><li><a href=\"https://docs.factorcode.org/content/vocab-logging.insomniac.html\" rel=\"nofollow ugc noopener\">logging.insomniac</a>: rotated oversized logs even when report generation fails.</li><li><a href=\"https://docs.factorcode.org/content/vocab-lua.html\" rel=\"nofollow ugc noopener\">lua</a>: updated the bindings from Lua 5.1 to Lua 5.5, including the public C API, auxiliary and standard libraries, variadic formatting, and native argument-list access; requires Lua 5.5 with its default numeric configuration.</li><li><a href=\"https://docs.factorcode.org/content/vocab-mason.html\" rel=\"nofollow ugc noopener\">mason</a>: preserved fatal errors and test context in bounded crash reports and printed native backtraces; preserved partial test results in failed build reports.</li><li><a href=\"https://docs.factorcode.org/content/vocab-math.html\" rel=\"nofollow ugc noopener\">math</a>: normalized integer arithmetic results and corrected floating-point comparison and conversion edge cases.</li><li><a href=\"https://docs.factorcode.org/content/vocab-math.blas.config.html\" rel=\"nofollow ugc noopener\">math.blas.config</a>: selected the GNU Fortran return ABI for bundled 32-bit Windows OpenBLAS libraries.</li><li><a href=\"https://docs.factorcode.org/content/vocab-math.floats.env.html\" rel=\"nofollow ugc noopener\">math.floats.env</a>: decoded floating-point errors before testing exception flags.</li><li><a href=\"https://docs.factorcode.org/content/vocab-math.functions.html\" rel=\"nofollow ugc noopener\">math.functions</a>: corrected indeterminate powers and floating-point zero exponents.</li><li><a href=\"https://docs.factorcode.org/content/vocab-math.integers.html\" rel=\"nofollow ugc noopener\">math.integers</a>: validated shift counts and preserved large bit indices; corrected <code>bit?</code> for fixnum bit indices outside the native range.</li><li><a href=\"https://docs.factorcode.org/content/vocab-math.libm.html\" rel=\"nofollow ugc noopener\">math.libm</a>: added <code>fexp1-</code> (C’s <code>expm1</code>); reported underflow for finite powers rounded to zero on the Windows Universal CRT.</li><li><a href=\"https://docs.factorcode.org/content/vocab-math.matrices.elimination.html\" rel=\"nofollow ugc noopener\">math.matrices.elimination</a>: corrected nullspace calculation and handled empty matrices.</li><li><a href=\"https://docs.factorcode.org/content/vocab-math.order.html\" rel=\"nofollow ugc noopener\">math.order</a>: preserved the caller’s stack row while computing comparison keys.</li><li><a href=\"https://docs.factorcode.org/content/vocab-math.parser.html\" rel=\"nofollow ugc noopener\">math.parser</a>: fixed floating-point formatting boundaries and added rectangular complex literals with a <code>j</code> suffix.</li><li><a href=\"https://docs.factorcode.org/content/vocab-math.statistics.html\" rel=\"nofollow ugc noopener\">math.statistics</a>: validated data types before returning degenerate variance results.</li><li><a href=\"https://docs.factorcode.org/content/vocab-math.transforms.fft.html\" rel=\"nofollow ugc noopener\">math.transforms.fft</a>: reduced temporary allocations and used radix-2 decomposition for even lengths, including lengths that are not powers of two.</li><li><a href=\"https://docs.factorcode.org/content/vocab-math.vectors.html\" rel=\"nofollow ugc noopener\">math.vectors</a>: added fused multiply-add, rounding, bit operations, and dot-product and small matrix accumulation protocols.</li><li><a href=\"https://docs.factorcode.org/content/vocab-math.vectors.conversion.html\" rel=\"nofollow ugc noopener\">math.vectors.conversion</a>: preserved unsigned numeric conversion semantics.</li><li><a href=\"https://docs.factorcode.org/content/vocab-math.vectors.simd.html\" rel=\"nofollow ugc noopener\">math.vectors.simd</a>: aligned native and fallback behavior for shifts, shuffles, overflow, rounding, NaNs, and integer dot products, and corrected numeric coercion in half-precision and bfloat16 constructors; preserved all bits in boolean SIMD masks.</li><li><a href=\"https://docs.factorcode.org/content/vocab-metar.html\" rel=\"nofollow ugc noopener\">metar</a>: expanded METAR and TAF parsing, including runway state, wind shear, sea conditions, variable visibility, forecast change groups, and remarks; improved date rollover handling and added abbreviation lookup helpers.</li><li><a href=\"https://docs.factorcode.org/content/vocab-mime.multipart.html\" rel=\"nofollow ugc noopener\">mime.multipart</a>: validated multipart framing and handled malformed input without leaking resources.</li><li><a href=\"https://docs.factorcode.org/content/vocab-models.html\" rel=\"nofollow ugc noopener\">models</a>: added <code>model-deactivated</code>.</li><li><a href=\"https://docs.factorcode.org/content/vocab-modern.html\" rel=\"nofollow ugc noopener\">modern</a>: stopped colon forms at enclosing sequence delimiters.</li><li><a href=\"https://docs.factorcode.org/content/vocab-openal.alut.html\" rel=\"nofollow ugc noopener\">openal.alut</a>: used native OpenAL context management and audio loading on macOS without requiring an external ALUT library.</li><li><a href=\"https://docs.factorcode.org/content/vocab-opengl.html\" rel=\"nofollow ugc noopener\">opengl</a>: improved GTK extension loading and cached function pointers by symbol name and context.</li><li><a href=\"https://docs.factorcode.org/content/vocab-opengl.textures.html\" rel=\"nofollow ugc noopener\">opengl.textures</a>: fixed texture wrapping on OpenGL 1.1 renderers.</li><li><a href=\"https://docs.factorcode.org/content/vocab-openssl.html\" rel=\"nofollow ugc noopener\">openssl</a>: corrected native declarations, variadic BIO calls, and resource ownership.</li><li><a href=\"https://docs.factorcode.org/content/vocab-papier.html\" rel=\"nofollow ugc noopener\">papier</a>: updated shaders for core OpenGL contexts and fixed GTK4 rendering and keyboard movement, including A/D controls.</li><li><a href=\"https://docs.factorcode.org/content/vocab-pcre2.html\" rel=\"nofollow ugc noopener\">pcre2</a>: added the features previously available in the deprecated <code>pcre</code> vocabulary.</li><li><a href=\"https://docs.factorcode.org/content/vocab-peg.html\" rel=\"nofollow ugc noopener\">peg</a>: omitted hidden results from repetition and list parsers and added <code>optional*</code> to distinguish a missing match from a successful match whose AST is <code>f</code>.</li><li><a href=\"https://docs.factorcode.org/content/vocab-ping.html\" rel=\"nofollow ugc noopener\">ping</a>: added support for Linux ICMP datagram sockets.</li><li><a href=\"https://docs.factorcode.org/content/vocab-python.html\" rel=\"nofollow ugc noopener\">python</a>: initialized high-level imports, object constructors, and conversions on first use; finalized the interpreter at shutdown only after it has been used. Raw <code>python.ffi</code> calls still require explicit <code>py-initialize</code>.</li><li><a href=\"https://docs.factorcode.org/content/vocab-python.ffi.html\" rel=\"nofollow ugc noopener\">python.ffi</a>: searched Python 3.15 libraries and used versioned DLL names on Windows.</li><li><a href=\"https://docs.factorcode.org/content/vocab-quotations.html\" rel=\"nofollow ugc noopener\">quotations</a>: made words callable while retaining a separate <code>quotation-like</code> class for sequence-like quotation objects.</li><li><a href=\"https://docs.factorcode.org/content/vocab-ranges.html\" rel=\"nofollow ugc noopener\">ranges</a>: tested membership in integer ranges without enumerating their elements.</li><li><a href=\"https://docs.factorcode.org/content/vocab-raylib.html\" rel=\"nofollow ugc noopener\">raylib</a>: updated to <a href=\"https://github.com/raysan5/raylib/releases/tag/6.0\" rel=\"nofollow ugc noopener\">Raylib 6.0</a> and corrected variadic callbacks and allocation ownership; restored native OpenGL contexts across live-coding yields and cleanup.</li><li><a href=\"https://docs.factorcode.org/content/vocab-redis.html\" rel=\"nofollow ugc noopener\">redis</a>: updated bindings to Redis 8.8.0.</li><li><a href=\"https://docs.factorcode.org/content/vocab-regexp.html\" rel=\"nofollow ugc noopener\">regexp</a>: added numbered and named captures and fixed assertion boundaries in lookbehind expressions.</li><li><a href=\"https://docs.factorcode.org/content/vocab-rocksdb.ffi.html\" rel=\"nofollow ugc noopener\">rocksdb.ffi</a>: corrected the registered library name so foreign calls resolve against RocksDB.</li><li><a href=\"https://docs.factorcode.org/content/vocab-see.html\" rel=\"nofollow ugc noopener\">see</a>: preserved deeply nested definitions and their imports and honored <code>without-limits</code> when displaying full definitions; normal output remains bounded.</li><li><a href=\"https://docs.factorcode.org/content/vocab-sequences.html\" rel=\"nofollow ugc noopener\">sequences</a>: improved array/string comparisons and small integer-pair hashing, preserved callback stack rows in binary reductions, and rejected empty iotas and repetitions in <code>minimum</code> and <code>maximum</code>.</li><li><a href=\"https://docs.factorcode.org/content/vocab-shell.html\" rel=\"nofollow ugc noopener\">shell</a>: allowed foreground Unix child processes to receive terminal interrupts.</li><li><a href=\"https://docs.factorcode.org/content/vocab-smtp.html\" rel=\"nofollow ugc noopener\">smtp</a>: redacted authentication commands from diagnostic output.</li><li><a href=\"https://docs.factorcode.org/content/vocab-stomp.html\" rel=\"nofollow ugc noopener\">stomp</a>: fixed namespace update order when adjusting protocol versions.</li><li><a href=\"https://docs.factorcode.org/content/vocab-system.html\" rel=\"nofollow ugc noopener\">system</a>: flushed output streams before exiting.</li><li><a href=\"https://docs.factorcode.org/content/vocab-system-info.linux.html\" rel=\"nofollow ugc noopener\">system-info.linux</a>: added <code>system-code-name</code> support for Ubuntu.</li><li><a href=\"https://docs.factorcode.org/content/vocab-system-info.windows.html\" rel=\"nofollow ugc noopener\">system-info.windows</a>: allocated correctly sized UTF-16 buffers for user and computer names to prevent buffer overruns.</li><li><a href=\"https://docs.factorcode.org/content/vocab-terrain.html\" rel=\"nofollow ugc noopener\">terrain</a>: added core-profile shaders and rendering, corrected mesh and texture handling, and restored native macOS keyboard and mouse controls.</li><li><a href=\"https://docs.factorcode.org/content/vocab-threads.html\" rel=\"nofollow ugc noopener\">threads</a>: allocated thread-local namespaces lazily, avoiding a hashtable allocation for threads that never use local variables.</li><li><a href=\"https://docs.factorcode.org/content/vocab-timers.html\" rel=\"nofollow ugc noopener\">timers</a>: cleared running and thread state when timer callbacks exit exceptionally.</li><li><a href=\"https://docs.factorcode.org/content/vocab-toml.html\" rel=\"nofollow ugc noopener\">toml</a>: parsed empty and dotted-key inline tables and simplified the <code>update-toml</code> stack effect.</li><li><a href=\"https://docs.factorcode.org/content/vocab-tools.annotations.html\" rel=\"nofollow ugc noopener\">tools.annotations</a>: avoided double-counting recursive elapsed time.</li><li><a href=\"https://docs.factorcode.org/content/vocab-tools.completion.html\" rel=\"nofollow ugc noopener\">tools.completion</a>: completed bare filename prefixes from the current directory.</li><li><a href=\"https://docs.factorcode.org/content/vocab-tools.continuations.html\" rel=\"nofollow ugc noopener\">tools.continuations</a>: improved stepping into fried quotations and retained the current instruction when displaying long quotations.</li><li><a href=\"https://docs.factorcode.org/content/vocab-tools.coverage.html\" rel=\"nofollow ugc noopener\">tools.coverage</a>: counted generic methods consistently in coverage reports.</li><li><a href=\"https://docs.factorcode.org/content/vocab-tools.crossref.html\" rel=\"nofollow ugc noopener\">tools.crossref</a>: tracked word references inside fried quotations, vectors, wrapped hashtables, other literal collections, and uninterned words; recorded method-word references directly.</li><li><a href=\"https://docs.factorcode.org/content/vocab-tools.disassembler.html\" rel=\"nofollow ugc noopener\">tools.disassembler</a>: documented the Capstone backend on other supported architectures and how to select the optional Zydis backend on x86; released temporary code-heap snapshots after failures to prevent retained error continuations from accumulating snapshots.</li><li><a href=\"https://docs.factorcode.org/content/vocab-tools.disassembler.capstone.html\" rel=\"nofollow ugc noopener\">tools.disassembler.capstone</a>: handled empty disassembly results.</li><li><a href=\"https://docs.factorcode.org/content/vocab-tools.image.html\" rel=\"nofollow ugc noopener\">tools.image</a>: updated image tooling for format version 5 and rejected stale formats before decoding heaps.</li><li><a href=\"https://docs.factorcode.org/content/vocab-tools.profiler.sampling.html\" rel=\"nofollow ugc noopener\">tools.profiler.sampling</a>: displayed total-time shares and allowed small branches to be filtered from reports.</li><li><a href=\"https://docs.factorcode.org/content/vocab-tools.ps.html\" rel=\"nofollow ugc noopener\">tools.ps</a>: anchored Linux process inspection to an open process directory.</li><li><a href=\"https://docs.factorcode.org/content/vocab-tools.test.html\" rel=\"nofollow ugc noopener\">tools.test</a>: isolated prettyprinter settings during tests and help-lint examples.</li><li><a href=\"https://docs.factorcode.org/content/vocab-typed.html\" rel=\"nofollow ugc noopener\">typed</a>: preserved termination and recursive annotations in generated implementations and wrappers.</li><li><a href=\"https://docs.factorcode.org/content/vocab-ui.backend.cocoa.html\" rel=\"nofollow ugc noopener\">ui.backend.cocoa</a>: refreshed window resources when display scale changes and ignored inappropriate control characters in text input; corrected cursor hiding during captured input, cleared input state on focus changes, and improved native OpenGL context setup for demos.</li><li><a href=\"https://docs.factorcode.org/content/vocab-ui.backend.windows.html\" rel=\"nofollow ugc noopener\">ui.backend.windows</a>: used each window’s monitor DPI for text and input and returned pointer-sized results from window callbacks; fixed paint reentrancy, clipboard ownership, per-window surrogate-pair input, modifier keys, fullscreen handling, and tray tooltip encoding.</li><li><a href=\"https://docs.factorcode.org/content/vocab-ui.backend.x11.keys.html\" rel=\"nofollow ugc noopener\">ui.backend.x11.keys</a>: normalized printable keypad symbols for text input.</li><li><a href=\"https://docs.factorcode.org/content/vocab-ui.debugger.html\" rel=\"nofollow ugc noopener\">ui.debugger</a>: avoided opening modal alerts inside native callbacks.</li><li><a href=\"https://docs.factorcode.org/content/vocab-ui.gadgets.editors.html\" rel=\"nofollow ugc noopener\">ui.gadgets.editors</a>: improved caret, selection, and rendering behavior for large and complex Unicode text, and submitted action fields with keypad Enter.</li><li><a href=\"https://docs.factorcode.org/content/vocab-ui.gadgets.panes.html\" rel=\"nofollow ugc noopener\">ui.gadgets.panes</a>: avoided quadratic copying of large strings, improved selection and copy behavior, and fixed following output at the bottom of a scroller.</li><li><a href=\"https://docs.factorcode.org/content/vocab-ui.gadgets.sliders.html\" rel=\"nofollow ugc noopener\">ui.gadgets.sliders</a>: corrected the <code>&lt;slider&gt;</code> documentation.</li><li><a href=\"https://docs.factorcode.org/content/vocab-ui.gadgets.tables.html\" rel=\"nofollow ugc noopener\">ui.gadgets.tables</a>: validated the required model argument when constructing a table, before grafting.</li><li><a href=\"https://docs.factorcode.org/content/vocab-ui.gadgets.worlds.html\" rel=\"nofollow ugc noopener\">ui.gadgets.worlds</a>: skipped drawing until the window framebuffer is complete, avoiding OpenGL errors while the drawing surface is being initialized.</li><li><a href=\"https://docs.factorcode.org/content/vocab-ui.render.html\" rel=\"nofollow ugc noopener\">ui.render</a>: supported GLSL 1.30, reduced repeated drawing work, and kept OpenGL renderer state with its owning window; reset legacy rendering hooks when switching from core-profile demos.</li><li><a href=\"https://docs.factorcode.org/content/vocab-ui.text.pango.html\" rel=\"nofollow ugc noopener\">ui.text.pango</a>: improved rendering and selection of large text rows and preserved native antialiasing when drawing overlapping glyphs; read legacy glyph-item layouts without reading past native buffers.</li><li><a href=\"https://docs.factorcode.org/content/vocab-ui.theme.switching.html\" rel=\"nofollow ugc noopener\">ui.theme.switching</a>: refreshed open worlds when switching themes; improved dark-mode contrast in several demos.</li><li><a href=\"https://docs.factorcode.org/content/vocab-ui.tools.listener.html\" rel=\"nofollow ugc noopener\">ui.tools.listener</a>: accepted folders dropped from Finder and echoed source for quotation commands.</li><li><a href=\"https://docs.factorcode.org/content/vocab-ui.tools.operations.html\" rel=\"nofollow ugc noopener\">ui.tools.operations</a>: offered Reset for annotated generic methods.</li><li><a href=\"https://docs.factorcode.org/content/vocab-ui.traverse.html\" rel=\"nofollow ugc noopener\">ui.traverse</a>: bounded stale pane selection paths.</li><li><a href=\"https://docs.factorcode.org/content/vocab-unicode.html\" rel=\"nofollow ugc noopener\">unicode</a>: updated Unicode and collation data to 18.0.0 and corrected identical-level collation ordering.</li><li><a href=\"https://docs.factorcode.org/content/vocab-unix.html\" rel=\"nofollow ugc noopener\">unix</a>: corrected native structure layouts, scalar and pointer types, large file offsets, and variadic declarations, including libc-specific <code>timeval</code> fields and 32-bit <code>statvfs</code> padding.</li><li><a href=\"https://docs.factorcode.org/content/vocab-unix.groups.html\" rel=\"nofollow ugc noopener\">unix.groups</a>: handled lookup errors and owned group-result storage safely; treated platform-specific missing-group errno responses as unsuccessful lookups.</li><li><a href=\"https://docs.factorcode.org/content/vocab-unix.signals.html\" rel=\"nofollow ugc noopener\">unix.signals</a>: used platform-specific signal numbers and corrected dispatch and handler sentinel handling.</li><li><a href=\"https://docs.factorcode.org/content/vocab-urls.html\" rel=\"nofollow ugc noopener\">urls</a>: improved IPv6 handling.</li><li><a href=\"https://docs.factorcode.org/content/vocab-vocabs.hierarchy.html\" rel=\"nofollow ugc noopener\">vocabs.hierarchy</a>: fixed handling of symlinked vocabularies.</li><li><a href=\"https://docs.factorcode.org/content/vocab-vocabs.loader.html\" rel=\"nofollow ugc noopener\">vocabs.loader</a>: waited for prerequisite vocabularies to finish loading before activating <code>require-when</code> extensions.</li><li><a href=\"https://docs.factorcode.org/content/vocab-webapps.mason.html\" rel=\"nofollow ugc noopener\">webapps.mason</a>: validated request parameters before opening database connections to prevent leaks during validation exits; handled builders that have not uploaded results yet.</li><li><a href=\"https://docs.factorcode.org/content/vocab-webapps.planet.html\" rel=\"nofollow ugc noopener\">webapps.planet</a>: kept periodic maintenance running after recoverable failures.</li><li><a href=\"https://docs.factorcode.org/content/vocab-webapps.wiki.html\" rel=\"nofollow ugc noopener\">webapps.wiki</a>: corrected the wiki icon resource path.</li><li><a href=\"https://docs.factorcode.org/content/vocab-wikipedia.html\" rel=\"nofollow ugc noopener\">wikipedia</a>: used rendered pages and updated historical-event, birth, and death parsing for Wikipedia markup changes.</li><li><a href=\"https://docs.factorcode.org/content/vocab-windows.com.html\" rel=\"nofollow ugc noopener\">windows.com</a>: corrected the by-value size argument to <code>IStream::SetSize</code>.</li><li><a href=\"https://docs.factorcode.org/content/vocab-windows.com.syntax.html\" rel=\"nofollow ugc noopener\">windows.com.syntax</a>: tracked interface typedefs correctly across reloads.</li><li><a href=\"https://docs.factorcode.org/content/vocab-windows.dropfiles.html\" rel=\"nofollow ugc noopener\">windows.dropfiles</a>: released drag-and-drop handles even when filename decoding fails.</li><li><a href=\"https://docs.factorcode.org/content/vocab-windows.offscreen.html\" rel=\"nofollow ugc noopener\">windows.offscreen</a>: restored and released offscreen GDI bitmaps on both success and failure.</li><li><a href=\"https://docs.factorcode.org/content/vocab-windows.streams.html\" rel=\"nofollow ugc noopener\">windows.streams</a>: bounded COM stream copies, used 64-bit byte totals, and detected short writes.</li><li><a href=\"https://docs.factorcode.org/content/vocab-windows.uniscribe.html\" rel=\"nofollow ugc noopener\">windows.uniscribe</a>: improved cluster hit testing, bidirectional text, font fallback, glyph overhangs, selection compositing, and native layout lifetime handling.</li><li><a href=\"https://docs.factorcode.org/content/vocab-windows.version.html\" rel=\"nofollow ugc noopener\">windows.version</a>: passed UTF-16 query strings to <code>VerQueryValueW</code>.</li><li><a href=\"https://docs.factorcode.org/content/vocab-x11.html\" rel=\"nofollow ugc noopener\">x11</a>: corrected variadic declarations and preserved full-width native pointers.</li><li><a href=\"https://docs.factorcode.org/content/vocab-xml.html\" rel=\"nofollow ugc noopener\">xml</a>: fixed a file descriptor leak.</li><li><a href=\"https://docs.factorcode.org/content/vocab-xml.tokenize.html\" rel=\"nofollow ugc noopener\">xml.tokenize</a>: bounded stack use when the optimizing compiler is disabled.</li><li><a href=\"https://docs.factorcode.org/content/vocab-xmode.marker.html\" rel=\"nofollow ugc noopener\">xmode.marker</a>: preserved regular-expression capture state while fixing up end patterns.</li><li><a href=\"https://docs.factorcode.org/content/vocab-yenc.html\" rel=\"nofollow ugc noopener\">yenc</a>: computed file CRC32 from file contents, preserved filenames containing spaces or equals signs, validated envelope sizes and checksums, and decoded individual multipart envelopes with range and part-checksum checks.</li><li><a href=\"https://docs.factorcode.org/content/vocab-zoneinfo.html\" rel=\"nofollow ugc noopener\">zoneinfo</a>: updated bundled timezone data to 2026c.</li></ul>\n<h3 id=\"compiler-improvements\">Compiler improvements</h3>\n<ul><li>Improved stack inference and error reporting for recursion, branches, locals, fry, and composed callables; checked annotated quotation calls and rejected known incompatible call effects.</li><li>Fixed dependency tracking and recompilation after macro expansion, nested compilation, custom inlining, and struct redefinition.</li><li>Improved constant folding and lookup-table optimization while preserving tuple identities, integer overflow behavior, and floating-point semantics.</li><li>Corrected ARM64 code generation and foreign-call handling, added RISC-V foreign calls and callbacks, and fixed x86 callback and aggregate argument handling.</li><li>Preserved GC roots and derived-pointer bases through compiler transformations and register allocation, and reported oversized stack frames as compiler errors.</li><li>Reduced temporary allocation and repeated work during compiler analysis and bootstrap compilation.</li><li>Added experimental backtracking, chordal, and greedy register allocators; linear scan remains the default.</li><li>Added optional global value numbering, constant rematerialization, loop-invariant code motion, slot-load reuse, representation-cost improvements, and integer SIMD vectorization; these optimizations remain disabled by default.</li><li>Added compiler-pass measurement tools and checks for SSA, register allocation, and GC roots.</li></ul>\n<h3 id=\"vm-improvements\">VM improvements</h3>\n<ul><li>Improved GC root tracking for native allocations, code snapshots, displaced aliens, and derived pointers, and corrected recovery after interrupted or failed collections.</li><li>Strengthened memory safety with bounds checks for object initialization, code heaps, stack frames, and debugger reads; kept identity hashes stable and invalidated stale string hashes after resizing.</li><li>Corrected bignum shifts, mixed-sign XOR, division, and integer conversions, and preserved NaN encodings and ordered/unordered floating-point comparisons.</li><li>Improved signal handling, thread registration, and sampling-profiler reliability across platforms, including macOS interrupted-stack recovery and forward progress when recording samples is slow.</li><li>Fixed callback-heap fragmentation, ARM64 relocations, and Windows ARM64 exception dispatch and native unwinding; added stack reserves and probing for native calls.</li><li>Improved Windows startup diagnostics, worker-thread cleanup, JIT unwind metadata, large file offsets, and partial native I/O; validated code-heap updates and reset JIT state after errors.</li></ul>\n<h3 id=\"zig-vm-improvements\">Zig VM improvements</h3>\n<ul><li>Improved parity with the C++ VM for GC roots, ARM64 signal recovery, stack and code-heap bounds, identity hashes, and JIT error cleanup.</li><li>Fixed resource cleanup during allocation failures, image loading, VM shutdown, and native I/O, and preserved expired aliens and resized-object state.</li><li>Reused JIT buffers, corrected relocation and unwind handling, and improved profiler timing, safepoint placement, and fatal-error handling.</li><li>Removed hard-coded 64-bit assumptions from object layouts, arithmetic, foreign integer conversions, file offsets, GC, and relocations, improving 32-bit portability.</li></ul>\n<h3 id=\"build-and-platform-improvements\">Build and platform improvements</h3>\n<ul><li>Updated bundled SQLite to 3.54.0 and OpenSSL to 4.0.3 on both 32-bit and 64-bit Windows, and updated DLL names for Cairo, GLib, FreeType, and OpenAL to match bundled libraries.</li><li>Building the <a href=\"https://re.factorcode.org/2026/03/getting-ziggy-with-it.html\" rel=\"nofollow ugc noopener\">experimental Zig VM</a> now requires Zig 0.17.0; fixed Windows builds and used dynamic linking when targeting musl.</li><li>Added headless Debian/Ubuntu build dependencies and optional vocabulary-test dependencies.</li><li>Checked Linux runtime library sonames rather than requiring development linker names, and tolerated missing optional library directories.</li><li>Corrected 32-bit x86 compilation and linking flags across C++, C, assembly, and FFI test builds, and preserved architecture flags when invoking make.</li></ul>","headings":[{"level":3,"text":"Compatibility notes","id":"compatibility-notes"},{"level":3,"text":"What is Factor?","id":"what-is-factor"},{"level":3,"text":"New libraries","id":"new-libraries"},{"level":3,"text":"Improved libraries","id":"improved-libraries"},{"level":3,"text":"Compiler improvements","id":"compiler-improvements"},{"level":3,"text":"VM improvements","id":"vm-improvements"},{"level":3,"text":"Zig VM improvements","id":"zig-vm-improvements"},{"level":3,"text":"Build and platform improvements","id":"build-and-platform-improvements"}]}}