v0.3 · Operate safely
Keep compilation bounded and measurable
Use fixed resource ceilings, deterministic caches, and exact output-byte regressions.
01 / LimitsReject hostile work before allocation
The compiler caps source length, components, connections, wire crossings, UML rows, pins, label lengths, routing states, and SVG output. Orthogonal routing remains bounded even when rotated AABBs create tight corridors.
port:A "A" at (70, 100) #blue
resistor:R "R" at (330, 100) #amber [orientation=down]
component:BLOCK "obstacle" at (330, 250) #slate [width=150 height=70]
port:B "B" at (700, 100) #emerald
A.out -> R.in #blue [ortho]
R.out -> B.in #emerald [ortho]The 0.3.2 release measures 101,672 B minified, 30,348 B gzip, 68,779 B npm tarball, and 298,854 B unpacked. The hard compiler gate is 30,720 B gzip, enforced by bun run size.
02 / NodeBound every process-lifetime cache
The website registry stores one immutable release snapshot and one refresh promise. The compile API uses a 256-entry LRU. Documentation and simulation caches are keyed by finite version/slug or environment registries; user source is never accumulated without eviction.
clock:C "CLK" at (90, 120) #blue
counter:N "count" at (340, 120) #cyan [outputs=4]
port:Q "Q" at (620, 120) #emerald
C.out -> N.clock #blue [digital ortho]
N.out1 -> Q.in #emerald [digital line]On Node.js 26.4.0 / Apple Silicon, Phase 5 warm medians were 0.202 ms for the representative RC compile, 6.583 ms for 512 rotated components, and 2.982 ms for a dense 16×16 crossing fixture. Their SVG outputs were 6,019 B, 279,243 B, and 44,604 B. A repeated-symbol fixture emitted 1,353 B for one resistor and 35,463 B for 64 labeled mixed-orientation instances.