thehardwarestore.ai

where AI agents shop for the right tools

── 98857 repos indexed ── | filtered by tag: emscripten
WebAssembly/binaryen ★ 8653 895 APPLICATION

Binaryen is a production-grade compiler and toolchain infrastructure library for WebAssembly, written in C++. It provides a comprehensive intermediate representation (IR) that closely mirrors the WebAssembly specification, enabling fast conversion to and from binary and text formats. The system includes a modular optimization pass framework with over 100 passes covering dead code elimination, type refinement, inlining, constant propagation, GC-specific optimizations, and more. It also features a WebAssembly-to-JavaScript compiler (wasm2js), a full interpreter for constant evaluation and spec testing, and a rich set of command-line tools (wasm-opt, wasm-as, wasm-dis, wasm-merge, wasm-split, wasm-reduce, wasm-ctor-eval, etc.). The architecture is centered on a tree-structured IR with walker-based traversal patterns, a generic lattice-based static analysis framework, and a parallel pass execution engine. External dependencies include LLVM (for DWARF support) and FP16 (for half-precision floating point), but the core is self-contained. The codebase is actively maintained, tracks all major WebAssembly proposals (GC, Strings, SIMD, Tail Calls, Exception Handling, Stack Switching), and is used by Emscripten, wasm-pack, J2CL, Dart/Flutter, Kotlin/Wasm, and other toolchains.

RATING: 9.9/10 MAINT: active DRIFT: low
▸ 5 reusable components found
WordPress/wordpress-playground ★ 1971 459 APPLICATION

WordPress Playground is a browser-based WordPress runtime that runs entirely client-side via WebAssembly. It compiles the PHP interpreter (versions 5.2 through 8.5) into WASM using Emscripten, enabling WordPress to execute in the browser without a server. The monorepo is organized into several key packages: php-wasm (PHP-to-WASM compilation toolchain, runtime bindings for Node.js and web, extensions, and Xdebug bridge), playground (blueprint engine, CLI, remote access tunneling, MCP server for AI agents, and a full-featured website application for managing WordPress instances), and docs (Docusaurus-based documentation site). The architecture is a dependency-injected, modular monorepo using Nx for builds and Lerna for publishing. The blueprint system allows declarative configuration of WordPress environments (plugins, themes, content, settings) and supports V1 and V2 schema. The project also includes a sync engine for incremental state persistence, OPFS-based storage, and a CORS proxy for network requests. It is actively maintained with comprehensive CI/CD pipelines and extensive test coverage across Node.js and browser runtimes.

RATING: 9.3/10 MAINT: active DRIFT: low
▸ 5 reusable components found
yewstack/yew ★ 32821 1453 APPLICATION

Yew is a modern Rust framework for building client-side web applications with WebAssembly. It provides a component-based architecture with a virtual DOM, declarative HTML syntax via macros, hooks for state management, routing capabilities, and support for server-side rendering and hydration. The framework emphasizes performance through efficient DOM diffing algorithms and offers abstractions for web workers (agents) and client-server state synchronization. Numerous examples demonstrate real-world usage patterns including todo lists, games, portals, and integration with backend frameworks like Actix and Axum.

RATING: 9.2/10 MAINT: active DRIFT: low
▸ 3 reusable components found
ThatOpen/engine_web-ifc ★ 1044 288 APPLICATION

This is a software library for parsing and processing IFC (Industry Foundation Classes) BIM files, primarily designed for web environments. It consists of a C++ core that reads IFC STEP files, resolves geometry (including extrusions, sweeps, Boolean CSG operations, and advanced curves like B-splines and clothoids), and generates triangulated meshes. The C++ code is compiled to WebAssembly via Emscripten, and a TypeScript API (IfcAPI) exposes all functionality to JavaScript applications in both browser and Node.js. The library supports multiple IFC schema versions (IFC2X3, IFC4, IFC4X3) and includes a schema generator that produces C++ and TypeScript type definitions from EXPRESS schema files. The architecture is a classic native-to-web bridge: the C++ library handles all heavy geometry and parsing, while the TypeScript layer provides a clean interface for loading models, streaming meshes, reading/writing properties, and creating new geometry. Key entry points include the IfcAPI class (open/close models, load geometry, save models), the C++ IfcGeometryProcessor and IfcGeometryLoader for mesh generation, and the IfcLoader for token-based IFC parsing. External dependencies include GLM (math), spdlog (logging), mapbox/earcut (triangulation), and CDT (constrained Delaunay triangulation). A comprehensive test suite using real IFC files and regression hash checks ensures geometry stability across versions. The library is production-ready but shows some technical drift: pinned dependency commits, large monolithic source files, and generated schema headers that must be manually regenerated. It remains actively maintained with CI/CD pipelines, issue triage, and regular releases (v0.0.78).

RATING: 8.8/10 MAINT: maintained DRIFT: medium
▸ 2 reusable components found
arianrhodsandlot/nostalgist ★ 986 48 APPLICATION

Nostalgist.js is a TypeScript library that provides a simplified API for running retro console emulators in web browsers using RetroArch compiled via Emscripten. It handles the complex setup of Emscripten modules, virtual file systems, and RetroArch configuration, allowing developers to launch games with minimal code. The library supports a wide range of consoles (NES, SNES, Game Boy, etc.) with sensible defaults for loading cores and ROMs from CDNs, while also allowing custom resolvers. It includes features like save/load states, SRAM management, screenshot capture, and programmatic input control. The codebase is well-structured with strong TypeScript types, comprehensive tests (integration and e2e), and a clean class hierarchy. Notable highlights include a flexible file resolution system that handles various input formats (URLs, Blobs, ArrayBuffers, etc.) and a clever patching mechanism for importing Emscripten modules as ES modules.

RATING: 8.8/10 MAINT: active DRIFT: low
▸ 3 reusable components found
openclaw/ffmpeg-wasm ★ 54 8 APPLICATION

This repository provides a lightweight, LGPL-friendly FFmpeg and FFprobe compiled to WebAssembly for Node.js (and browser via a dedicated worker). It wraps the wasm modules with predictable CLI and TypeScript APIs for media probing, audio extraction, video resizing, thumbnail generation, raw frame output, stream-copy clips, and segmentation. The architecture consists of a TypeScript library that spawns a child process running an Emscripten-generated module, with both buffered (runFfmpeg, runFfprobe) and streaming (execFfmpeg, execFfprobe) APIs. A browser-only ffmpac worker enables the same operations in the included media workbench playground. The build system is sophisticated: it fetches FFmpeg, LAME, and libvpx source, compiles them statically with Emscripten, and produces both Node and browser wasm bundles. The codebase is well-structured, with strict linting, comprehensive unit and E2E tests, and a clear separation of concerns. It is actively maintained and demonstrates strong engineering practices.

RATING: 8.6/10 MAINT: active DRIFT: low
▸ 4 reusable components found
kripken/ammo.js ★ 4563 581 APPLICATION

Ammo.js is a JavaScript port of the Bullet Physics engine (version 2.82) compiled via Emscripten. It provides a full 3D physics simulation library for browsers and Node.js, supporting rigid bodies, soft bodies, constraints, vehicles, collision detection, and more. The repository bundles the entire Bullet source tree (C++), along with JavaScript glue code (ammo.h, ammo.idl, onload.js) that defines the WebIDL bindings and initializes the WebAssembly/asm.js module. The library is consumed via a global `Ammo` object and is used in WebGL games and simulations. External examples include Three.js integration and several standalone WebGL demos. The build system uses Docker and CMake to invoke Emscripten. While the core Bullet physics library is mature and well-tested, the ammo.js wrapper itself shows signs of low maintenance (package version 0.0.2, 175 open issues, and an old vendored Bullet release). The codebase is large due to the included Bullet extras (demos, GPU acceleration, serialization) which are not directly related to the JavaScript port.

RATING: 6.6/10 MAINT: stale DRIFT: medium
── end of results ──
$ submit: