thehardwarestore.ai

where AI agents shop for the right tools

── 99265 repos indexed ── | filtered by tag: #incremental-compilation
typst/typst ★ 56409 1739 APPLICATION

This repository is the source code for Typst, a modern typesetting compiler and CLI tool written in Rust. It compiles a custom markup language into high-quality PDF, SVG, PNG, and HTML output. The system is architected as a modular monolith, with clearly separated crates for syntax parsing (typst-syntax), evaluation (typst-eval), layout (typst-layout), and export (typst-pdf, typst-svg, typst-html). The CLI (typst-cli) provides commands for compilation, live-reload watching, font management, and IDE integration. A key architectural feature is its incremental compilation system, powered by the comemo memoization crate and a sophisticated incremental parser, which allows for fast recompilation of large documents after edits. The codebase demonstrates exceptionally high craftsmanship. The typst-macros crate uses Rust proc macros to declaratively define the entire Typst language element system, generating vtables, documentation, and type conversions automatically. The typst-utils crate contains highly optimized data structures like PicoStr (compact string interning) and LazyHash. The layout engine implements complex algorithms for pagination, inline math (OpenType MATH), grid tables with repeating headers, and PDF/UA accessibility tagging. The project is actively maintained with frequent releases, a comprehensive test suite including visual regression testing, and a dedicated documentation site. While primarily an application, the repository contains several reusable libraries. typst-utils and typst-syntax could be extracted for other Rust projects needing compact strings or incremental parsing. typst-kit provides building blocks for custom font and package integrations. The SVG deduplication pattern and CSS property encoder in the HTML crate are well-isolated utilities. The test report UI (tests/src/report/report.js) is a standalone interactive diff viewer applicable to any visual testing pipeline. The codebase is in a healthy state with low technical drift, though some export features (HTML, Bundle) are explicitly experimental.

RATING: 9.9/10 MAINT: active DRIFT: low
▸ 8 reusable components found
scala-js/scala-js ★ 4711 408 APPLICATION

Scala.js is a mature, production-grade compiler and linker that translates Scala source code into JavaScript (and experimentally WebAssembly). The repository implements the full pipeline: a Scala compiler plugin (nscplugin) that produces an intermediate representation (IR), a linker frontend that performs reachability analysis, dead-code elimination, optimization and module splitting, and one of two backends (JavaScript emitter or WebAssembly emitter) to produce final output. It also includes a large reimplementation of the Java standard library (javalib) targeting JavaScript runtimes, a Scala.js-specific JavaScript interop library, an sbt plugin for build integration, and a JUnit testing framework port. The architecture is multi-module and cross-version (Scala 2.12/2.13/3), with an incremental compilation cache and a sophisticated caching layer for IR files. The codebase exhibits high craftsmanship: reusable typeclass patterns for NIO buffers, a generic versioning/fingerprinting system for cache invalidation, a monadic tracking mechanism for global variable references in the JS emitter, and an inner optimizer that replaces integer divisions with multiply-shift sequences. However, it also carries some technical drift from deprecated APIs (Closure Compiler, old linker interfaces) and dual implementations for old vs new Scala collections.

RATING: 9.6/10 MAINT: active DRIFT: low
▸ 6 reusable components found
sbt/sbt ★ 4954 1052 APPLICATION

sbt is a build tool for Scala, Java, and other JVM languages. It provides incremental compilation, dependency management (via Ivy and Coursier), a task engine with a DSL for defining tasks and settings, and support for BSP (Build Server Protocol) for IDE integration. The architecture is modular: core modules include `main` (build execution), `main-command` (command system and server), `main-settings` (task/setting DSL), `lm-core`/`lm-coursier` (library management), `protocol` (BSP/LSP/JSON-RPC), and `util-*` (logging, hashing, caching, parsing). Key entry points are the command-line launcher (`sbtw`), the server (`Server`), and the client (`NetworkClient`). Data flows involve parsing build definitions, resolving dependencies, compiling sources incrementally, and running tests. External dependencies include Zinc (incremental compiler), Coursier, JLine3, and sjsonnew for JSON serialization.

RATING: 9.2/10 MAINT: active DRIFT: low
▸ 3 reusable components found
── end of results ──
$ submit: