singularity-forge/native
Lex Christopherson ac34c7c283 feat: add native Rust TTSR regex engine via RegexSet
TTSR's checkDelta() runs O(rules x conditions) regex evaluations per
streaming token — the hottest path in GSD. This adds a Rust native
module that compiles all condition patterns into a single RegexSet,
testing them in one DFA pass instead of sequential JS RegExp iteration.

The TtsrManager transparently uses the native engine when available and
falls back to the existing JS regex loop when it is not.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-13 13:57:12 -06:00
..
.cargo feat: Rust native engine scaffold with grep module 2026-03-13 12:21:09 -06:00
crates feat: add native Rust TTSR regex engine via RegexSet 2026-03-13 13:57:12 -06:00
scripts feat: Rust native engine scaffold with grep module 2026-03-13 12:21:09 -06:00
.gitignore feat: Rust native engine scaffold with grep module 2026-03-13 12:21:09 -06:00
Cargo.lock feat: add native Rust TTSR regex engine via RegexSet 2026-03-13 13:57:12 -06:00
Cargo.toml feat: Rust native engine scaffold with grep module 2026-03-13 12:21:09 -06:00
README.md feat: Rust native engine scaffold with grep module 2026-03-13 12:21:09 -06:00

GSD Native Engine

Rust N-API addon providing high-performance native modules for GSD.

Architecture

JS (packages/native) -> N-API -> Rust crates
                                  ├── engine/  (N-API bindings, cdylib)
                                  └── grep/    (ripgrep internals, pure Rust lib)

Inspired by Oh My Pi's pi-natives, adapted for GSD's Node.js runtime.

Prerequisites

Build

# Release build (optimized)
npm run build:native

# Debug build (fast compile, no optimizations)
npm run build:native:dev

The build script compiles the Rust code and copies the .node shared library to native/addon/.

Test

# Rust unit tests
cd native && cargo test

# Node.js integration tests
npm run test:native

Modules

grep

Ripgrep-backed regex search using the grep-regex, grep-searcher, and grep-matcher crates.

Functions:

  • search(content, options) — Search in-memory Buffer/Uint8Array content
  • grep(options) — Search files on disk with glob filtering and .gitignore support

TypeScript usage:

import { grep, searchContent } from "@gsd/native";

// Search files
const result = grep({
  pattern: "TODO",
  path: "./src",
  glob: "*.ts",
  ignoreCase: true,
  maxCount: 100,
});

// Search content
const contentResult = searchContent(Buffer.from(fileContent), {
  pattern: "function\\s+\\w+",
  contextBefore: 2,
  contextAfter: 2,
});

Adding New Modules

  1. Create a new crate in native/crates/ (pure Rust library)
  2. Add N-API bindings in native/crates/engine/src/
  3. Add TypeScript wrapper in packages/native/src/
  4. Add the crate to engine/Cargo.toml dependencies