amigo-labs

Native

Veröffentlicht

Drop-in-Ersatz in Rust für beliebte Node.js-Pakete

Ein Monorepo von npm-Paketen unter @amigo-labs, geschrieben in Rust und mit NAPI-RS zu nativen Addons kompiliert, mit vorgefertigten Binaries für alle gängigen Plattformen. Die meisten Pakete enthalten zusätzlich einen WASM-Build für Browser und Bundler.

Plattformen
Node.js · Browser
Lizenz
MIT
6Plattformen mit vorgefertigten Binaries
0transitive Abhängigkeiten
≥ 22Node.js
NAPI-RS v3native Laufzeit

Jeder Aufruf von Node.js in ein natives Modul kostet einen festen Betrag für den Grenzübertritt, auf aktuellem Linux x64 etwa 109 ns. Die Pakete hier sind so gewählt, dass ihre Arbeit diese Kosten weit übersteigt, und jedes wird gegen seine JavaScript-Alternative gemessen: Der gemessene Geschwindigkeitsgewinn entscheidet, ob ein Paket bleibt, optimiert oder eingestellt wird.

Native

Funktionen

  • Drop-in-API

    Jedes Paket ist ein Drop-in-Ersatz für ein beliebtes Node.js-Paket. Wo es kein hundertprozentiger Ersatz ist, beschreibt eine MIGRATION.md, was abweicht.

  • Vorgefertigte native Binaries

    Mit NAPI-RS für sechs Ziele kompiliert: Linux x64 (glibc und musl), Linux ARM64, macOS x64 und ARM64, Windows x64. Kein Build-Schritt bei der Installation, kein Compiler nötig.

  • WASM-Build für Browser

    Die meisten Pakete enthalten im selben Tarball ein napi-Binary für Node.js und einen WASM-Build für Browser und Bundler (Vite, esbuild, webpack ≥ 5, Rollup). Bedingte Exports wählen den passenden aus; der Import bleibt gleich.

  • Nur auf dem Server, wo es darauf ankommt

    argon2, jose und jwt bleiben bewusst Node-only – Passwort-Hashing im Browser ist ein Anti-Pattern, und private Signaturschlüssel gehören nicht in den Browser.

  • Keine Abhängigkeiten

    Keine transitiven Abhängigkeiten – eine Installation holt das Paket und sein Plattform-Binary, sonst nichts.

  • Gemessen, nicht behauptet

    Jedes Paket wird gegen die beste JavaScript-Alternative gemessen und mit Konformitätstests gegen das Verhalten des Originalpakets geprüft. Ein Perf-Review stuft jedes als Grün, Gelb, Rot oder Schwarz ein.

  • Mit Provenance veröffentlicht

    Releases werden in der CI gebaut und mit Provenance auf npm veröffentlicht, sodass sich jeder Tarball auf den Commit und den Workflow zurückführen lässt, die ihn gebaut haben.

Pakete 36

Jedes Paket ersetzt sein npm-Gegenstück ohne Codeänderung.

crypto

search

  • BM2513× faster

    BM25 full-text search. Stateful NAPI class — build index once, query many times.

    @amigo-labs/bm25
  • fuse5–20× expected vs fuse.js

    Fuzzy text search index over JSON records, with weighted fields. SIMD-accelerated via nucleo-matcher.

    @amigo-labs/fuse
  • Minisearch1.2–51× faster

    Tiny in-memory full-text search with prefix autocomplete. Shares Rust search-core with @amigo-labs/bm25.

    @amigo-labs/minisearch

text

document

  • CSV1.49–1.88× faster

    CSV parsing and serialization via BurntSushi's csv crate.

    @amigo-labs/csv
  • jimpNative image-rs port

    Scoped jimp port: PNG/JPEG decode/encode + resize + crop + flip + rotate (90° multiples) + greyscale + brightness + contrast + composite, via image-rs.

    @amigo-labs/jimp
  • jpeg-jsPure-Rust decode/encode

    JPEG decode/encode to RGBA pixel buffers. Pure-Rust via jpeg-decoder + jpeg-encoder.

    @amigo-labs/jpeg-js
  • PDFTBD

    PDF generation — one FFI call per document. Labels / tickets / simple reports.

    @amigo-labs/pdf
  • PDF Parse15–41× slower

    PDF text + metadata extraction via pdf-extract/lopdf. No pdf.js, no browser pipeline.

    @amigo-labs/pdf-parse
  • pngjsPure-Rust DEFLATE

    PNG decode/encode to RGBA pixel buffers. Pure-Rust DEFLATE via flate2 + zlib-rs.

    @amigo-labs/pngjs
  • Svgo14–26× faster

    SVG optimizer via quick-xml. Ships the 8 highest-impact `preset-default` plugins.

    @amigo-labs/svgo
  • TypstTBD

    Typst document compiler — source in, PDF out. Bundled Libertinus fonts; offline-only packages.

    @amigo-labs/typst
  • XLSX2.6–3.3× faster

    XLSX read + write. Buffer in → rows out, rows in → Buffer out. Single-FFI-crossing.

    @amigo-labs/xlsx

util

graph

  • Force Layout3.6–7.2× faster

    Force-directed graph simulation. Batch-mode d3-force replacement for SSR / precompute workloads.

    @amigo-labs/force-layout
  • Graph Layout62–75× faster

    Hierarchical (Sugiyama-style) DAG layout. Single-call spec → positions + edge routing.

    @amigo-labs/graph-layout

archive

Installieren

Installieren

pnpm
pnpm add @amigo-labs/<name>

<name> durch ein Paket aus der Liste unten ersetzen.

npm
npm install @amigo-labs/<name>

Auf GitHub ansehen

Features

  • enhance WASM performance measurement and visibility (4c129a7)
  • ship WASM bindings for all eligible crates (Angular/React support) (792802f)
  • typst: add WASM binding — 33/33 dual-target crates complete (381726e)

Bug Fixes

  • build: stop wasm-pack's pkg/.gitignore from emptying npm tarballs (6a70b18)
  • crates: regenerate index.js with current versions across 26 crates (69116f5)
  • typst: commit Cargo.toml dep + README that were missed last commit (bbb875d)

Documentation

  • full UI/UX pass on the showcase site (4aea272)
  • source category from each crate's amigo block (cbea23f)
  • specs: expansion-2026 dual-target plan (draft) (b30274f)

Auf GitHub ansehen

Features

  • commonmark: add WASM binding + fix wasm-test failures (9de1610)
  • enhance WASM performance measurement and visibility (4c129a7)
  • graph-layout: add WASM binding via core split (b294905)
  • ship WASM bindings for all eligible crates (Angular/React support) (792802f)

Bug Fixes

  • build: stop wasm-pack's pkg/.gitignore from emptying npm tarballs (6a70b18)
  • crates: regenerate index.js with current versions across 26 crates (69116f5)

Documentation

  • full UI/UX pass on the showcase site (4aea272)
  • source category from each crate's amigo block (cbea23f)
  • specs: expansion-2026 dual-target plan (draft) (b30274f)