CoordiationCSS
Docs/Tooling/Native scanner

TOOLING · COMPLETE

Cross-platform native scanner

Batch literal candidate extraction through a dependency-free C11 engine while keeping source discovery, filters, safelists, diagnostics, and fallback behavior visible to the caller.

✓

The same source contract targets Linux, macOS, and Windows on x64 and arm64. The result always reports which engine actually ran.

01

Request native scanning

scan.mjs
import { scanSourcesNative } from "@coordiation/oxide";

const result = await scanSourcesNative(["src"], {
  include: ["src/**"],
  exclude: ["**/*.test.*"],
  safelist: ["co-grid"],
});

console.log(result.engine, result.native);

The candidate and diagnostic shape matches scanSources(). A single native process receives all discovered source text instead of starting once per file.

02

Require native execution when measuring

No fallback
const result = await scanSourcesNative(["src"], {
  fallback: false,
});

Missing binaries throw when fallback: false. In normal builds, the JavaScript scanner remains a compatible fallback and reports binary-unavailable.

03

Build or select a verified binary

Native build
npm run --workspace @coordiation/oxide build
coordiation-oxide --manifest

# Optional verified release artifact
COORDIATION_OXIDE_BINARY=/opt/coordiation/coordiation-oxide

Installation attempts an optional local build when a C compiler exists. Release packages can provide platform/architecture artifacts under the documented prebuilt directory.

04

Inspect instead of assuming

Engine manifest
{
  "engine": "native",
  "native": {
    "engine": "native-c11",
    "platform": "linux",
    "architecture": "x64",
    "available": true
  }
}

The repository includes equivalence tests, a 200-file performance fixture, and a supported-platform build matrix.

FALLBACK CONTRACT

Native code stays optional

Optimization must not hide a behavioral change.

  • JavaScript extractor hooks select the JavaScript engine and report custom-extractors.
  • Dynamic-construction diagnostics remain in the wrapper so native and JavaScript results agree.
  • Safelist entries are validated with the configured prefix.
  • An installed package is not proof that a native binary ran.
  • Release artifacts still require platform signing and release-matrix verification.