ReviewOS

home-lang/home

Track TypeScript frontend benchmark leadership

#416
Open chris opened this 8 days ago ·
8 days ago

Goal

Maintain a fair, reproducible TypeScript frontend performance suite and improve Home until it leads JavaScript tsc 6 and stable native TypeScript 7 across every accepted workload.

Benchmark rules

  • All compilers receive identical valid source graphs and compiler options.
  • Every compiler must validate successfully and silently before timing, and reject the same invalid controls with the expected diagnostics.
  • All selected workloads must pass admission before any timing or result-directory creation; no failing row is silently omitted.
  • Compiler versions and generated workloads are pinned.
  • JavaScript TypeScript 6 and native TypeScript 7 are installed in isolated prefixes.
  • Measurements rotate compiler order within every round to balance workstation load.
  • Workloads represent general compiler behavior, never benchmark-specific shortcuts.
  • Results, environment details, caveats, and reproduction commands stay documented.

Landed foundation

  • Nineteen deterministic workloads covering startup, files, complex types, module graphs, TSX, inference, control flow, predicates at two scales, null-safe access, destructuring, overloads, classes, structural objects, interface composition, variadic tuples, checked JavaScript, and recursive generic consumers
  • Pinned JavaScript tsc 6.0.3 and stable native TypeScript 7.0.2 toolchain
  • Interleaved Hyperfine measurement schedule and silent-success validity gate
  • Release allocator, reusable source I/O, and bounded large-program parallelism
  • Cached source facts, bind-only export analyses, and projected export-name sets
  • Indexed lexical declarations, interface merge predecessors, namespaces, annotations, and validated type display names
  • Pruned provably irrelevant overload, inference, import, expando, and compatibility work
  • Relation-cache working-set retention and single-probe insertion
  • Full performance documentation and linked README summary

Current correctness and measured status

Implementation 1cfc33c (#536), audit d95dfaa (#541), and verified README/report 707045c are pushed to main as Chris with no coauthors. TS 6.0.3 and native TS 7.0.2 are verified; TS7/tsgo is one competitor.

The prepared-owner CommonJS display query removes the extra full source compilation and raw-text recovery. Program140/140, conformance1418/1418, CLI69/69 and harness75/75 pass; unchanged checker/driver targets verify from cache. All19 unchanged admission gates and all15 complete audit case sets preserve every previously passing case. Disk-interrupted logs remain alongside complete retries; no partial audit was accepted.

Same-correctness 30-round alternating comparison: import graph32.4±1.7ms to28.4±0.6ms, 12.4% less time and30/30 paired wins. Barrel27.9±5.2ms to27.3±4.2ms, only2.3% lower with17/30 paired wins: inconclusive, not a reliable improvement. All60 rounds/120 successful samples retained.

Full measurement20260828T234350Z validates570 rounds/1710 successful finite samples, with all513 input files byte-for-byte unchanged. Home has lower means on19/19: import graph28.1ms vs TS7 47.0ms (1.67x), barrel25.6ms vs42.7ms (1.67x), large predicates340.5±18.2ms vs362.2±30.4ms (1.06x;29/30 paired wins). Several rows have substantial shared-host variance. Independent confirmation20260828T234818Z retains30 rounds/90 samples: large predicates Home358.6±11.7ms vs TS7 388.5±16.7ms (1.08x;30/30 paired wins). It is separate, not substituted or pooled. Selected compiler/native-payload/runtime/launcher paths and hashes match before and after both measurements; automated harness provenance is tracked by#544.

CommonJS instance typing is NOT admitted for timing: TS6/TS7 pass66/66, Home22/66, with all44 missing wrong-type/missing-member rejections retained under#541. Export-list controls remain80/96 (#540). Other remaining gaps include owners12/20, nominal origins44/52, globals32/56 and bound globals44/56. The broader goal stays open: real projects, additional rejection coverage, other platforms and semantic correctness remain unproven. Next priorities are actual source-owned CommonJS require types#541 and precise external hidden-binding diagnostics#540.

Frozen candidate commonjs-query.hyU20d/release-v1/bin/home-tsc, SHA-256573257a819a178c9387f6d02a7992c08f995185f5dbc94034eb5eadc0ae956c0. Full results, retained history and reproduction.

Historical indexed-export checkpoint

Implementation b7b9dd9 (#537) and parser ownership fix d6878e8 (#538), with verified README/report 24a34f4, are pushed to main. Compiler versions are verified TS 6.0.3 and native TS 7.0.2; TS 7/tsgo is one competitor.

All 19/19 unchanged workload admission gates pass. Full measurement 20260828T231439Z validates 570 rounds / 1,710 successful finite samples; fresh generation matches 513 measured input files. Home has lower means on 19/19 workloads, but large predicates have only a noisy 1.02x lead: 371.6 ± 125.5 ms versus TS 7 377.7 ± 66.4 ms, 25/30 paired wins. Independent 30-round confirmation 20260828T231856Z retains all 90 samples: Home 320.4 ± 2.8 ms versus TS 7 331.4 ± 4.6 ms (1.03x; 29/30 paired wins). Confirmation is separate, not substituted into the full table.

The same-correctness alternating before/after comparison for #537 improves 525.6 ± 12.4 ms to 353.5 ± 10.5 ms, 32.7% less time and 30/30 paired wins. Deterministic source visits drop 65,536 to 256 for 128 independent exports. Bound-owner edge indexing preserves semantic query work; no control or failed observation was removed.

New exported-variable-list audit improves 0/96 to 80/96. All 32 positives, 32 wrong-type controls and 16 barrel hidden-name controls pass; 16 direct-hidden diagnostics remain TS2305 instead of TS2459 (#540). Existing audit scores remain: factory 240/240, recursive 288/288, generic classes 120/120, static 84/84, bound classes 52/52, callable identity 56/56, callable unions 256/256, graph discovery 28/28, export origins 32/32, owners 12/20, nominal origins 44/52, globals 32/56, bound globals 44/56. Both competitors pass every audit.

Verified suites: checker 4286, conformance 1417, Program 137, parser 891, driver 187, CLI 69, emitter 499 and benchmark harness 72 tests all pass. Pickier reports no errors and one pre-existing README fragment warning. Frozen evidence export-index.NVcIdu, SHA-256 615e9fa1f78c2cad17a0b8911b897ede73c00422138d6ecbb2b74801d4564f14.

Next: #536 removes redundant CommonJS export-query compilation; #540 adds external owner-local diagnostic facts. Correctness gaps, expanded rejection coverage, real projects and cross-platform measurements keep the overall goal open. Shared-host synthetic results are not universal benchmark leadership. Full results and reproduction.

Historical exported-factory checkpoint

Implementation de8fe28 (#534), documentation/README f3740df. Executables are verified TS 6.0.3 and native TS 7.0.2; native TS7/tsgo is one competitor.

All 19/19 workload admission gates now pass for all three compilers. Both original graph projects and their unchanged TS2322/TS2339 rejection controls pass; no failing workload was removed. The 240 exported-factory controls improve from Home130/240 to240/240. Recursive288/288, generic classes120/120, static84/84, bound classes52/52, callable identity56/56, callable unions256/256, graph discovery28/28 and export origins32/32 remain passing. Imported owners improve10/20 to12/20; nominal origins44/52, globals32/56 and bound globals44/56 remain incomplete. Both competitors pass all these audit cases.

Full relevant suites: checker4286/4286, conformance1417/1417, Program133/133, driver187/187, CLI69/69, source-owned focus10/10, harness69/69.

Complete measurement 20260828T224220Z: 30 interleaved rounds after3 warmups, all570 round files /1710 samples validate; fresh generation matches all513 measured input files. Shared Apple M3 Pro workstation with unrelated CPU/filesystem activity. Home has lower means on 18/19 workloads, not universal leadership. Import graph33.7ms vs TS7 50.8ms (1.51x); barrel graph25.1ms vs41.1ms (1.63x). Large predicates lose: Home541.3 ±50.7ms vs TS7 380.6 ±44.8ms, 1.42x slower and0/30 paired wins. That losing row is retained in README and full docs.

Next: #537 establishes and fixes the large-predicate scaling cause against a same-correctness controlled baseline; #536 removes redundant CommonJS export-query compilation. Remaining semantic failures, broader rejection coverage, real-project and cross-platform measurements keep the overall goal open. Frozen evidence: graph-types.4EsbvV; binary SHA256 9f5e333beaf9828a9720ce260ae05a872ebcea3bb51bf5785ffa3ccd7b72f1bc. Documentation: docs/docs/TS_PERFORMANCE.md#exported-factory-checkpoint-performance.

Historical checkpoint before exported-factory typing

Checkpoint: implementation 3b7f0ea (#524), recursive throughput workload de72563, report-integrity fix 74d1163, and documentation/README 91d6ca8. Pinned executables are TS 6.0.3 and native TS 7.0.2; TS 7 and tsgo are one competitor.

The original admission set remains 16/18 for Home: both imported graph rejection gates fail and were not timed. The added recursive workload passes its positive and nine appended negative controls, making expanded admission 17/19 (both competitors 19/19). No failure is removed by expanding the denominator.

Untimed correctness gateTS 6.0.3Native TS 7.0.2Home
Global declarations56/5656/5632/56
Bound-global discovery56/5656/5644/56
Imported owners20/2020/2010/20
Nominal identity52/5252/5244/52
Imported generic classes120/120120/120120/120
Recursive generic consumers288/288288/288288/288
Import/re-export graph admission2/22/20/2

Lazy source-owned definitions improve recursive controls from 112/288 to 288/288 and imported generic classes from 118/120 to 120/120. Local non-exported classes remain non-exported; transparent aliases preserve their target's origin. No fixed-depth unfolding or new permissive fallback. Inheritance, global/owner typing, broader generic forms and original graph linkage remain open (#521, #480, #487).

Fresh full timing 20260828T221149Z has lower Home means on 17/17 admitted timed workloads, with 510 complete round files and 1,530 successful samples. Apple M3 Pro, 30 interleaved runs after three warmups, shared-workstation load. Recursive generics: Home 29.7 ± 0.2 ms, native TS 7 71.8 ± 1.1 ms, TS 6 151.7 ± 2.2 ms (2.42× lower mean). Large predicates: Home 377.0 ± 100.9 ms, native TS 7 393.6 ± 94.1 ms (1.04× lower mean; noisy). Other rows also have substantial variance.

Independent confirmation 20260828T221611Z retains 60 complete rounds / 180 successful samples. Recursive generics: Home 29.6 ± 0.7 ms vs native 73.1 ± 3.9 ms (2.47×; Home faster in 30/30 paired rounds). Large predicates: Home 349.9 ± 17.0 ms vs native 392.7 ± 83.0 ms (1.12×; 28/30 paired rounds). Confirmation does not replace or get averaged into the full run. The predecessor fails recursive rejection controls and is ineligible for a before/after timing claim.

Exact-source tests: checker 4285/4285, conformance 1417/1417, Program 131/131, driver 187/187, CLI 69/69, focused source-owned 9/9, harness 66/66. Release SHA-256: 267691e33056e2c4a8b23b757bc3eed19c8b3d90fa9407120b8985834a844ccd. Reporting now rejects incomplete/extra rounds, incorrect compiler coverage/order, malformed JSON, and failed/invalid samples instead of publishing partial averages.

Full results, variance, preserved history and reproduction. Correctness details.

Not complete: these are local synthetic observations under shared-host load, not universal, real-project or cross-platform leadership. The two original graph gates and broader semantic coverage still fail or remain unverified. The tracker stays open.

Historical measured snapshot (not current admission)

Apple M3 Pro, 30 interleaved runs after three warmups; raw full-suite result 20260827T202656Z, compiler commit 9e45e10, documentation commit 75e02f3. Every observation is retained, including variance and outliers.

Workloadtsc 6.0.3native TS 7.0.2Home 0.1.0Home vs fastest competitor
startup64.4 ± 1.8 ms42.2 ± 11.3 ms3.9 ± 2.7 ms10.82× faster
many_files213.2 ± 14.8 ms53.5 ± 3.1 ms30.0 ± 1.5 ms1.78× faster
deep_types127.9 ± 2.2 ms52.6 ± 1.5 ms12.9 ± 0.3 ms4.09× faster
import_graph129.2 ± 1.9 ms45.0 ± 0.9 ms25.8 ± 1.1 msIneligible: fails semantic controls
reexport_graph94.7 ± 3.0 ms40.7 ± 0.9 ms26.8 ± 0.6 msIneligible: fails semantic controls
tsx_components159.1 ± 1.2 ms46.3 ± 0.9 ms21.3 ± 0.3 ms2.17× faster
generic_calls177.5 ± 4.4 ms55.4 ± 11.2 ms22.0 ± 1.8 ms2.52× faster
control_flow212.2 ± 127.9 ms63.1 ± 22.3 ms32.9 ± 3.8 ms1.92× faster
type_predicates237.3 ± 14.0 ms72.4 ± 10.8 ms46.5 ± 19.5 ms1.56× faster
type_predicates_large1027.8 ± 117.6 ms348.8 ± 15.7 ms322.1 ± 13.3 ms1.08× faster
null_safe_access206.3 ± 12.4 ms60.3 ± 2.4 ms40.6 ± 1.8 ms1.49× faster
destructuring144.3 ± 11.1 ms48.5 ± 1.1 ms35.3 ± 0.8 ms1.38× faster
overload_resolution222.7 ± 20.6 ms71.6 ± 10.7 ms30.9 ± 2.9 ms2.32× faster
class_hierarchy200.0 ± 17.6 ms55.8 ± 4.5 ms29.8 ± 1.1 ms1.87× faster
structural_objects197.7 ± 9.7 ms60.7 ± 2.8 ms31.5 ± 1.1 ms1.93× faster
interface_composition233.3 ± 43.6 ms76.2 ± 30.3 ms46.5 ± 3.4 ms1.64× faster
variadic_tuples268.4 ± 33.0 ms81.0 ± 8.5 ms46.2 ± 8.3 msProvisional: older admission schema
checkjs_jsdoc246.4 ± 48.7 ms63.0 ± 16.6 ms41.2 ± 6.8 ms1.53× faster

Historical snapshot: 18/18 lower Home means were recorded, with stronger primitive-return checking. This is not current acceptance: the two graph claims were subsequently withdrawn and later compiler changes have not been retimed. Large predicates have a 1.08× mean lead. The predeclared independent 30-round confirmation 20260827T203044Z records Home 342.5 ± 29.3 ms vs native TS 7 370.2 ± 22.0 ms (1.08× lead); TS 6 is 1086.3 ± 96.2 ms. Home is faster than native in 29/30 paired large-case rounds in the full run and 26/30 in the confirmation. The confirmation does not replace or get averaged into the full table. All 1,710 timed samples succeeded; exact versions, balanced ordering, published tables, preserved binary, and frozen predicate hashes were verified.

All 99 program, 4,226 checker, 173 driver, and 16 harness/report tests pass, as do all 18 shared positive projects and 13 negative controls per compiler. Five new return-contract regression groups have been independently checked with the same CLI inputs against both TS baselines (#474). Async is not an accepted workload: #475 and #476 still fail semantic controls, and #478 tracks diagnostic wording. Do not infer full TypeScript parity from these counts.

These are local synthetic results, not proof of universal, real-project, or cross-platform leadership. Several rows have substantial variance; no observations were discarded. The correctness fix is not itself claimed as a performance optimization. Full methods, history, and reproduction.

Previous 18-workload snapshot (retained)

Previous measured snapshot

Apple M3 Pro, 30 interleaved runs after three warmups; raw full-suite result 20260827T195539Z, compiler commit d330198, documentation commit 20084a4. Every observation is retained, including variance and outliers.

Workloadtsc 6.0.3native TS 7.0.2Home 0.1.0Home result
startup66.7 ± 2.5 ms42.0 ± 9.6 ms3.6 ± 0.4 ms11.73× faster
many_files215.4 ± 3.3 ms56.7 ± 7.5 ms32.4 ± 6.3 ms1.75× faster
deep_types146.0 ± 8.6 ms58.3 ± 3.7 ms14.1 ± 0.8 ms4.12× faster
import_graph139.0 ± 4.4 ms49.8 ± 4.1 ms29.3 ± 2.0 ms1.70× faster
reexport_graph111.0 ± 46.4 ms47.0 ± 19.2 ms31.1 ± 6.1 ms1.51× faster
tsx_components178.0 ± 25.2 ms50.2 ± 1.6 ms23.3 ± 4.1 ms2.16× faster
generic_calls188.4 ± 12.9 ms57.3 ± 3.9 ms23.2 ± 2.0 ms2.47× faster
control_flow190.2 ± 4.8 ms59.5 ± 2.2 ms33.6 ± 5.4 ms1.77× faster
type_predicates237.8 ± 12.7 ms70.9 ± 2.0 ms41.9 ± 0.8 ms1.69× faster
type_predicates_large1010.4 ± 25.3 ms351.4 ± 15.2 ms323.8 ± 10.2 ms1.09× faster
null_safe_access191.9 ± 4.1 ms57.2 ± 1.1 ms38.7 ± 0.5 ms1.48× faster
destructuring138.4 ± 1.6 ms47.3 ± 1.0 ms34.4 ± 0.5 ms1.37× faster
overload_resolution203.1 ± 3.4 ms64.6 ± 1.4 ms29.1 ± 0.6 ms2.22× faster
class_hierarchy186.1 ± 7.9 ms53.4 ± 7.8 ms28.1 ± 0.4 ms1.90× faster
structural_objects185.8 ± 2.9 ms58.1 ± 1.6 ms30.3 ± 0.6 ms1.92× faster
interface_composition214.9 ± 41.7 ms64.7 ± 4.3 ms45.6 ± 6.0 ms1.42× faster
variadic_tuples252.9 ± 6.3 ms77.7 ± 2.5 ms42.4 ± 1.0 ms1.83× faster
checkjs_jsdoc211.5 ± 27.6 ms54.3 ± 1.2 ms36.9 ± 0.9 ms1.47× faster

Then-reported snapshot: 18/18 lower Home means; retained as history, not current admission or a restored graph speed claim. Large predicates have a 1.09× mean lead. The predeclared independent 30-round confirmation 20260827T200026Z records Home 327.1 ± 10.4 ms vs native TS 7 359.7 ± 14.2 ms (1.10× lead). The confirmation does not replace or get averaged into the full table. All 1,710 timed samples succeeded; exact versions, balanced ordering, both tables, and frozen predicate hashes were verified. All 99 program, 4,221 checker, 173 driver, and 16 harness/report tests pass, as do all shared positive projects and negative controls.

These are local synthetic results, not proof of universal, real-project, or cross-platform leadership. Full methods, retained history, and reproduction: https://github.com/home-lang/home/blob/main/docs/docs/TS_PERFORMANCE.md

Earlier 13-workload snapshot (retained)

Earlier snapshot

Apple M3 Pro, 30 interleaved runs after three warmups, mean wall time; raw result ID 20260827T085121Z. Background workstation activity increased absolute time and variance; the report retains every sample and rotates compiler order.

Workloadtsc 6.0.3native TS 7.0.2Home 0.1.0Home result
startup109.0 ms60.2 ms6.7 ms8.99× faster
many_files426.6 ms93.6 ms54.1 ms1.73× faster
deep_types260.0 ms90.3 ms28.9 ms3.12× faster
import_graph260.0 ms79.3 ms48.2 ms1.65× faster
reexport_graph195.6 ms72.6 ms57.9 ms1.25× faster
tsx_components364.1 ms90.5 ms44.5 ms2.03× faster
generic_calls360.5 ms93.8 ms51.7 ms1.81× faster
control_flow392.2 ms100.3 ms77.1 ms1.30× faster
overload_resolution491.2 ms132.3 ms88.5 ms1.49× faster
class_hierarchy406.5 ms96.0 ms83.7 ms1.15× faster
structural_objects361.8 ms102.3 ms69.4 ms1.47× faster
interface_composition532.6 ms133.1 ms122.8 ms1.08× faster
variadic_tuples634.1 ms160.8 ms153.5 ms1.05× faster

Then-accepted suite: 13/13 lower Home means.

Next coverage

  • Preserve actual global declaration types, merging and lexical isolation across files (#480)

  • Preserve generic imported/re-exported types and owner metadata, including source-order/cycle handling; readmit graph timing only after the unchanged controls pass (#487)

  • Add shared async/await and Promise type-propagation coverage with negative controls (#473; remaining #475, #476, #478)

  • Validate the legacy container path before claiming cross-platform results (#464)

  • Resolve independently tracked semantic/source-lifetime gaps (#467, #472)

  • Add a fair emit workload when output semantics are validated across all compilers

  • Add pinned real-world projects only where all compilers accept the same graph and configuration

  • Profile and resolve every regression or loss introduced by accepted workloads

  • Keep README and detailed performance documentation synchronized

Commit links and before/after measurements are maintained in the issue comments. The tracker remains open while coverage expands.

8 days ago

Foundation commit links:

All future performance commits will reference #416 directly in the commit body. The issue remains open while coverage expands.

8 days ago

New accepted workload landed in https://github.com/home-lang/home/commit/355c1f5d4.

Baseline from 10 interleaved runs after three warmups:

WorkloadtsctsgoHomeHome vs fastest
import_graph57.5 ± 12.1 ms53.6 ± 1.9 ms421.6 ± 24.1 ms7.86x slower

All three compilers validated the identical 128-module relative-import chain successfully and silently. This is now the active profiling target. The workload covers module resolution, export lookup, import closure, and cross-file generic checking.

8 days ago

Import-graph optimization landed in two issue-linked commits:

Verified with complete ts_driver, ts_program, and ts_cli test targets plus Debug and ReleaseFast home-tsc builds.

Post-fix result from 10 interleaved runs after three warmups:

WorkloadtsctsgoHomeHome vs fastest
import_graph51.1 ± 2.0 ms52.1 ± 3.9 ms31.4 ± 2.2 ms1.63x faster

The accepted suite is now 4/4 Home wins. Next: publish the expanded 30-run snapshot and keep broadening coverage.

8 days ago

The 30-run expanded snapshot is published in https://github.com/home-lang/home/commit/469deeb1d and linked from the README.

Final interleaved results after five warmups:

WorkloadtsctsgoHomeHome vs fastest
startup41.0 ± 11.4 ms39.4 ± 3.1 ms3.5 ± 0.1 ms11.24x faster
many_files55.2 ± 1.4 ms55.0 ± 1.6 ms33.7 ± 0.9 ms1.63x faster
deep_types54.8 ± 2.7 ms54.5 ± 1.4 ms46.0 ± 0.9 ms1.18x faster
import_graph47.4 ± 2.3 ms47.7 ± 3.1 ms27.6 ± 2.1 ms1.72x faster

Current accepted suite: 4/4 Home wins. The tracker remains open for the next fair workload.

8 days ago

Barrel re-export coverage is landed and documented.

Commits:

  • a7fa412 — fix false TS2308 collisions by comparing real projected export names (Fixes #417)
  • 4cc8f42 — add the unchanged 64-leaf / 8-barrel workload
  • af26e79 — publish the 30-run results in the detailed docs and README

Verification:

  • full ts_checker and ts_program suites pass
  • ReleaseFast home-tsc builds
  • every compiler validates the same corpus silently
  • an injected collision produces the same TS2308 diagnostics as tsc

30 interleaved runs after three warmups:

WorkloadtsctsgoHomeHome vs fastest
startup59.4 ± 21.9 ms56.9 ± 11.1 ms4.7 ± 0.7 ms12.08x faster
many_files89.3 ± 25.8 ms88.0 ± 26.2 ms52.7 ± 17.1 ms1.67x faster
deep_types89.0 ± 24.5 ms78.2 ± 14.8 ms57.3 ± 8.1 ms1.36x faster
import_graph62.6 ± 8.5 ms63.5 ± 8.7 ms38.2 ± 5.4 ms1.64x faster
reexport_graph56.6 ± 8.4 ms58.8 ± 8.1 ms48.1 ± 8.4 ms1.18x faster

Current accepted suite: 5/5 Home wins. The tracker remains open for the next fair workload.

8 days ago

Typed TSX coverage is landed, optimized, and documented without changing the accepted workload during tuning.

Commits:

  • a08199b — cache immutable JSX/source facts and build the recovered parameter-annotation index in one source pass
  • e83cca9 — add the deterministic 256-component typed TSX workload
  • ac1f7e9 — publish the 30-run results in the detailed docs and linked README table

The unchanged workload initially measured 76.4 ± 0.5 ms in Home versus 55.2 ± 1.0 ms in tsgo over five runs. Profiling identified repeated whole-source compatibility probes; the general per-source caches and index reduced Home to 53.0 ± 1.3 ms in the five-run verification sample.

Verification:

  • full ts_checker suite passes
  • ReleaseFast home-tsc builds
  • all three compilers validate the identical TSX corpus successfully and silently
  • Python generator compilation and targeted Pickier checks pass

Final 30 interleaved runs after three warmups:

WorkloadtsctsgoHomeHome vs fastest
startup49.7 ± 5.9 ms49.1 ± 5.1 ms4.7 ± 1.2 ms10.35x faster
many_files74.4 ± 9.7 ms73.5 ± 8.1 ms46.1 ± 8.1 ms1.59x faster
deep_types66.7 ± 4.5 ms68.3 ± 11.9 ms51.5 ± 5.6 ms1.29x faster
import_graph57.5 ± 3.4 ms58.3 ± 4.4 ms35.9 ± 4.6 ms1.60x faster
reexport_graph58.8 ± 9.3 ms59.5 ± 11.3 ms45.5 ± 5.4 ms1.29x faster
tsx_components55.9 ± 4.2 ms58.8 ± 11.7 ms53.5 ± 1.6 ms1.04x faster

Current accepted suite: 6/6 Home wins. The tracker remains open for the next fair workload.

8 days ago

Added and pushed the compiler-neutral generic_calls benchmark in 0d36ce4. All three pinned compilers accept the unchanged generated project with zero diagnostics.

Initial ReleaseFast smoke timing (1 run, diagnostic only): tsc 55.2 ms, tsgo 54.9 ms, Home 76.5 ms. This is intentionally a red benchmark checkpoint; profiling and general inference-path optimization are next. The correctness prerequisite was fixed in e34242b / #418.

8 days ago

Correction pushed in e278e62: the benchmark now compares JavaScript tsc 6.0.3 with native tsgo 7.0.0-dev.20260707.2. The previous typescript@7.0.2 package launches the TypeScript 7 native compiler family, so treating it as the JavaScript baseline duplicated the tsgo comparison and its earlier timing should be disregarded.

The corrected toolchain validates the same unchanged projects silently. In the first corrected 5-run diagnostic sample, Home still won six workloads; generic_calls remained the sole loss versus native tsgo, so optimization continues there.

8 days ago

Final competitor pin correction pushed in 69d3f9e: JavaScript TypeScript 6.0.3 and stable native TypeScript 7.0.2 are installed in isolated prefixes, so npm cannot replace one compiler with the other. The old @typescript/native-preview dev build is no longer used.

Verified versions: Version 6.0.3 and Version 7.0.2. On this host TS7’s official CLI execves the packaged native arm64 binary. A corrected 5-run sample has Home winning all seven workloads; the narrow generic-call result is Home 62.2 ms vs native TS7 64.3 ms. Full checker verification and a 30-run publication snapshot are still pending.

8 days ago

Generic-call inference benchmark round complete.

Landed:

  • e34242be4 fixed inferred tuple-key mapped returns and concrete primitive template substitutions (#418).
  • 0d36ce480 added the unchanged, compiler-neutral generic_calls workload.
  • 69d3f9e84 pinned stable native TypeScript 7.0.2 in an isolated tool prefix beside JavaScript tsc 6.0.3.
  • b509aa125 skipped irrelevant evolving-any and non-callable identifier scans; all 4,190 checker tests pass.
  • 6cddd926d published the detailed snapshot and README summary.

Corrected publication measurement: Apple M3 Pro, arm64 macOS 27.0, 30 interleaved runs after 3 warmups. Every compiler validated every unchanged project successfully and silently before timing. generic_calls: tsc 250.4 ± 19.1 ms, native TS7 71.4 ± 2.6 ms, Home 68.6 ± 2.3 ms — Home is 1.04x faster. Home wins the full accepted suite, 7/7.

The issue remains open for the next fair emit and real-world coverage additions.

8 days ago

Started the next accepted benchmark round in 89ac313c4: control_flow generates one dependency-free module with 256 exhaustive discriminated-union functions, each exercising switch narrowing, branch joins, definite assignment, nested property reads, and a never exhaustiveness check.

All three pinned compilers accept the exact project successfully and silently. Initial 5-run diagnostic baseline: tsc 6.0.3 = 281.9 ± 52.8 ms, native TS 7.0.2 = 81.5 ± 21.8 ms, Home = 2927.8 ± 159.6 ms. Home is 35.93x slower. The workload is now preserved unchanged while the general scaling defect is profiled and fixed.

8 days ago

Control-flow coverage is green and documented.

Final 30-run result (20260826T221047Z): Home 55.5 ± 11.3 ms, native TS 7.0.2 62.7 ± 16.1 ms, tsc 6.0.3 203.8 ± 73.2 ms. Home is 1.13x faster than the fastest competitor on the unchanged workload, moving the accepted suite to 8/8 wins.

8 days ago

Overload-resolution workload completed and the accepted suite is now 9/9 Home wins.

  • Workload first: be6e9da86 (bench(ts): add overload resolution workload)
  • General checker optimization: 9c6a93b3f (perf(ts-checker): prune overload resolution work)
  • Published README/docs snapshot: a8d16bc09 (docs(ts): publish overload benchmark win)
  • Red five-run baseline (20260826T221712Z): Home 126.9 ± 0.9 ms, native TS 7.0.2 70.3 ± 1.1 ms
  • Final 30-run result (20260826T231722Z): Home 58.1 ± 2.2 ms, native TS 7.0.2 66.4 ± 3.7 ms, tsc 6.0.3 207.2 ± 10.5 ms — Home wins by 1.14×
  • Validation: all compilers accept the unchanged workload silently; 4,190/4,190 checker tests pass; all nine workloads win in the final suite.

Tracker remains open for the next fair coverage addition.

8 days ago

Class-hierarchy benchmark completed and published.

  • workload: b493ea55b
  • optimized checker implementation: 71833644d
  • documentation: df67841bd
  • full checker validation: 4,190/4,190 passed
  • red five-run baseline: Home 79.4 ± 2.8 ms, native TS 7.0.2 59.6 ± 1.5 ms
  • authoritative result 20260826T234231Z: Home 50.7 ± 15.9 ms, native TS 7.0.2 53.6 ± 9.8 ms, tsc 6.0.3 194.1 ± 57.8 ms
  • outcome: Home 1.06× faster than the fastest competitor; accepted suite is now 10/10 Home wins

The workload remained byte-for-byte unchanged after its pre-optimization commit. Detailed results and the README summary are synchronized on main.

8 days ago

Structural-object compatibility benchmark completed and published.

  • frozen workload: 3946ef904
  • optimized checker implementation: 617d29ead
  • documentation: 61e38efa3
  • full checker validation: 4,190/4,190 passed
  • red five-run baseline: Home 160.9 ± 4.5 ms, native TS 7.0.2 62.7 ± 2.7 ms
  • authoritative result 20260827T000322Z: Home 47.5 ± 0.8 ms, native TS 7.0.2 57.0 ± 1.1 ms, tsc 6.0.3 180.6 ± 2.5 ms
  • outcome: Home 1.20× faster than the fastest competitor and 3.39× faster than its frozen baseline; accepted suite is now 11/11 Home wins

The workload remained byte-for-byte unchanged after its pre-optimization commit. Detailed results and the README summary are synchronized on main.

8 days ago

Interface-composition benchmark completed and published.

  • frozen workload: 788192d
  • source: 5,760 lines, 194,012 bytes, SHA-256 84123a04d7d9e3adeb8e1089f068be7524890cbd6872466b83ba2bced0c322be
  • named-type reverse index: 026ab0e
  • interface/namespace/source lookup indexes: ca0b8df
  • README and detailed report: d5076fa
  • full checker validation: 4,190/4,190 passed
  • red five-run baseline 20260827T000848Z: Home 117.3 ± 3.0 ms, native TS 7.0.2 65.3 ± 0.8 ms
  • authoritative 30-run result 20260827T014124Z: Home 74.6 ± 3.0 ms, native TS 7.0.2 82.0 ± 2.3 ms, tsc 6.0.3 294.9 ± 33.5 ms
  • outcome: Home is 1.10× faster than the fastest competitor and 1.57× faster than its frozen baseline; the accepted suite is now 12/12 Home wins

The generated source and compiler options remained unchanged after the workload commit. Every compiler validated every workload successfully and silently before timing; compiler order rotated within every measured round.

8 days ago

Variadic-tuple coverage is landed, optimized, and published; the accepted suite is now 13/13 Home wins by mean time.

The workload stayed byte-for-byte frozen after its benchmark commit (SHA-256 78105a6b28024f5ac1dd32cc81d3aa065a3a99a1972927e1880f0a28eec5324f). The red baseline was Home 209.4 ± 4.8 ms versus native TS 7.0.2 at 100.7 ± 3.3 ms. The authoritative 30-run result 20260827T085121Z is Home 153.5 ± 13.9 ms, native TS 7.0.2 160.8 ± 14.0 ms, and tsc 6.0.3 634.1 ± 72.1 ms: Home records a 1.05× lower mean than the fastest competitor and a 1.36× improvement from its frozen baseline.

All three compilers validate every identical project silently. The report retains all samples, rotates compiler order, and discloses elevated background workstation variance. Full checker validation passes 4,191/4,191 and ReleaseFast builds successfully. The tracker remains open for the next fair workload.

8 days ago

Checked-JavaScript/JSDoc coverage is now merged in fb72502 and documented in 2fafb98. The harness is pinned to JavaScript TypeScript 6.0.3 versus native TypeScript 7.0.2 (the installed benchmark executable also reports Version 7.0.2). In the authoritative interleaved 30-run snapshot 20260827T132029Z, Home wins checkjs_jsdoc at 68.4 ± 4.7 ms versus 76.0 ± 5.5 ms for native TS 7.0.2 and 322.2 ± 40.9 ms for tsc 6.0.3. Home now has the lower mean in all 14 accepted workloads. Issue #448 is complete; this broader tracker stays open for additional fair semantic coverage and optimization.

8 days ago

Milestone update: type-predicate narrowing coverage is landed and #450 is closed.

Commits on main:

  • 9fab1ff — fair deterministic type-predicate/assertion workload
  • 12cbc5b — general checker lookup/index improvements
  • c185044 — README and detailed result publication

Authoritative snapshot 20260827T151143Z uses 30 round-robin interleaved runs after 3 warmups, comparing JavaScript tsc 6.0.3 with native TypeScript/tsgo 7.0.2 and Home 0.1.0. Home wins all 15 workloads. The new type_predicates case is the closest: 69.0 ± 4.9 ms vs tsgo 69.6 ± 5.5 ms (1.01×). Full results and methodology are in docs/docs/TS_PERFORMANCE.md.

Leaving this tracker open for the next fair workload expansion and optimization cycle.

8 days ago

Null-safe-access milestone #451 is landed and documented in ad94381, with general compiler optimization fa78423. The frozen workload improves from 1166.8 ms to 51.1 ms (22.83×), beating native TS 7.0.2 at 71.3 ms in the full 30-run snapshot 20260827T154256Z. The complete checker gate passes 4,192 cases.

Current full-suite result: 15/16 Home mean wins. Checked JavaScript records 58.4 ± 33.3 ms versus tsgo 56.5 ± 2.7 ms, including one 234.3 ms Home sample. That result is retained in README and docs/docs/TS_PERFORMANCE.md; it has not been discarded or replaced by a favorable run. New issue #452 tracks strengthening that margin through general compiler improvements.

8 days ago

Benchmark-leadership update: #452 is resolved by general function-containment indexing in 332e228, with published results in bc3eeaf.

Authoritative snapshot 20260827T155812Z uses 30 round-robin interleaved runs after 3 warmups and records 16/16 Home mean wins against JavaScript tsc 6.0.3 and native TypeScript/tsgo 7.0.2. Checked JavaScript is now 40.1 ± 0.9 ms vs tsgo 51.7 ± 1.1 ms (1.29×). The complete checker gate passes 4,193 cases. The preceding 15/16 snapshot and its JSDoc outlier remain explicitly documented, and the corpus hashes are unchanged.

Leaving this tracker open for continued fair benchmark coverage and performance work.

8 days ago

Destructuring milestone #453 is complete: corpus/correctness controls f128531, general recovery-range caching 06baa99, published results cda5125. The complete snapshot 20260827T162037Z records 17/17 lower Home means against JavaScript tsc 6.0.3 and native TypeScript/tsgo 7.0.2, using 30 round-robin samples after 3 warmups. All 1,530 timed samples and both documentation tables are verified. Destructuring measures Home 47.8 ± 14.0 ms versus native TS 63.4 ± 25.2 ms (1.32×); type predicates remains a narrow 1.05× mean lead. Prior losing baselines and substantial variance remain documented rather than filtered. The full checker gate passes 4,194 tests, and the unchanged corpus passes positive and automatic negative gates. README links the detailed methodology/results. Keeping this tracker open for broader fair coverage and strengthening narrow margins; local synthetic mean wins do not establish wins on every project or machine.

8 days ago

Progress under #455: added automatic predicate/assertion narrowing controls (cbbf52d), cached generation-guarded negative named-shape lookups (2de4f76), and published the complete benchmark snapshot (401d032). The scaled profile uses about 20% fewer instructions, but the accepted workload still has a narrow, noisy margin. Snapshot 20260827T163618Z retains all 30 interleaved samples after 3 warmups: 17/17 lower Home means against JavaScript TS 6.0.3 and native TS/tsgo 7.0.2. Type predicates is 87.7 ± 13.5 ms vs native TS 93.4 ± 17.1 ms (1.07×); null-safe access also has high variance. All 1,530 timed samples, README/docs tables, 4,196 checker tests, and nine automatic negative controls are verified. Both this tracker and #455 remain open: remaining profiled targets include first-time shape searches and repeated function-declaration scans, and local mean wins do not prove universal leadership.

8 days ago

Coverage now includes the same predicate generator at both 256 and 2048 families. Function-declaration indexing (983c2c5) improves the preserved before/after binaries, and the frozen scaling workload landed in 932797b. Crucially, the larger case disproves extending the small-suite wins to all sizes: authoritative snapshot 20260827T165255Z is 17/18 lower Home means, with large predicates Home 855.8 ± 42.1 ms vs native TS 7.0.2 382.3 ± 25.1 ms (2.24× loss). The small predicate case is 67.6 ± 2.6 ms vs 74.7 ± 6.0 ms (1.11× lead). Results, losses, source hashes, gates, and methodology are published in README and docs/docs/TS_PERFORMANCE.md via 5df5a8b. All 1620 samples and both tables are verified; 4198 checker tests and 13 automatic negative controls pass. No accepted source or samples were weakened/filtered. #455 and new #457 remain open, with the large scaling loss the next priority.

8 days ago

Pushed two verified general lookup optimizations (0494dc6, 3c6f4e6) and the full README/detailed-results update e3bd826. Snapshot 20260827T172600Z compares JS TS 6.0.3 and native TS 7.0.2, not duplicate native entries. All 18 frozen workloads × 3 compilers × 30 interleaved samples succeed; 3 warmups, no discarded samples. Home has lower means on 17/18. Large predicates improve from the prior published 855.8 ms to 592.0 ms, but native TS 7 is 377.6 ms: explicit 1.57× loss, so #457 remains OPEN. Small predicate variance also leaves #455 OPEN. Full checker 4,203/4,203; all 18 positive projects and 13 negative controls pass per compiler. Tables mechanically verified against raw results; Pickier reports 0 errors and the existing README fragment warning. Remaining work is general lookup/cache scaling, then broader fair coverage; universal leadership is not established.

8 days ago

Pushed 403482530 (skip impossible exact type-name scans), 8187216 (allocation-free FIFO cache tombstone reclamation), and 311cf8b (README/full results). All 4,207 checker tests, 18 shared projects, and 13 negative controls per compiler pass. Full snapshot 20260827T174752Z retains all 1620 successful samples with TS 6.0.3 versus native TS 7.0.2. Home has lower means on 17/18; large predicates remain 1.47× slower (557.5 ± 157.8 vs 380.1 ± 23.4 ms). Tables match raw data exactly, inputs unchanged, and the isolated cache comparison with higher new-binary means is documented rather than discarded. Pickier: 0 errors, existing README fragment warning. #455/#457 remain OPEN. Next profiled work is general named-object shape lookup; the goal is not complete.

8 days ago

Pushed 4fccb47 (member-fact candidate indexing with preserved ambiguous-name order), 5a537e0 (compile-time builtin lookup over the unchanged 308-entry list), and a7867e5 (README/full results). All 4,211 checker tests, 18 shared projects, and 13 negative controls per compiler pass. Snapshot 20260827T181303Z retains all 1620 successful samples against TS 6.0.3 and native TS 7.0.2. Home has lower means on 17/18; large predicates remain 1.19× slower with substantial variance. Both tables and source hashes verified. Prior losses and noisy/negative development observations remain in the docs; no universal leadership claim. Pickier: 0 errors, existing README fragment warning. #455/#457 remain OPEN; next profiled work is repeated whole-source setup/program/directive searches.

8 days ago

Following the compiler-version correction: origin/main already pins JavaScript TS 6.0.3 and native TS 7.0.2, and both installed binaries match. The runner currently records versions without rejecting a stale installation. Adding a preflight check against the manifest before creating timing output, with regression tests for old TS 7 dev builds and mismatched TS 6 versions. This does not alter benchmark inputs or timings.

8 days ago

Pushed 59b4ad1 (fix(bench): reject stale compiler installations) directly to main as configured. The runner now rejects any TS 6 or native TS 7 --version output differing from the exact manifest pin before creating results or validating/timing workloads. All five regression tests pass, including 7.0.0-dev.20260707.2 rejection. Local preflight verifies Version 6.0.3 and Version 7.0.2. Corpus and measured commands are unchanged.

8 days ago

Published e1a9e8f on origin/main after b1fe7c9 (shared exact source-marker searches) and 59b4ad1 (reject stale compiler installations). Full snapshot 20260827T183613Z compares verified TS 6.0.3, native TS 7.0.2, and Home: 17/18 lower Home means; large predicates remain 1.14x slower (491.0 ± 54.1 vs 430.2 ± 40.9 ms). All 1620 samples, balanced ordering, versions, both 18-row tables, and frozen predicate hashes were verified; no samples discarded. All 4216 checker tests, five harness tests, 18 positive projects, and 13 negative controls per compiler pass. README links the full methodology/history. Workstation variance remains explicit. #455 and #457 stay open; #464 tracks the stale, unvalidated container recipe separately. Next optimization target: repeated source queries in driver/program collection and remaining prefix scans, preserving source lifetime and parser semantics.

8 days ago

Pushed f18dd56 (perf(ts): jump to candidate directive lines) and 6a78f4e (docs(ts): publish directive-line performance results) to main as configured, no coauthors. The complete 30-round snapshot 20260827T185149Z uses verified TS 6.0.3 and native TS 7.0.2, with 17/18 lower Home means. Large predicates remain 1.18x slower (399.7 ± 25.6 vs 338.0 ± 16.1 ms); small predicates have a 1.40x lead (53.3 ± 0.8 vs 74.6 ± 2.8 ms). All 1620 samples and both tables verified, unchanged corpus hashes, all correctness gates pass. README/full docs retain variance, development samples, and earlier losses. #455 is addressed for its original small-case margin; #457 stays open for scaling and #464 for the unvalidated container recipe. Next profiled target is repeated fixed Function type construction during predicate matching, with metadata/lifetime/OOM invariants preserved.

8 days ago

Pushed b5b5bd9 (reuse builtin Function internal members with fresh outer identities) and f65df92 (full results/README table), as Chris Breuer with conventional commits and no coauthors. Snapshot 20260827T191750Z: TS 6.0.3 vs native TS 7.0.2, 30 interleaved runs after three warmups, all 1,620 samples successful and retained. Home has lower means on 17/18 cases; large predicates remain 1.07× slower (379.3 ± 15.8 vs 356.0 ± 20.1 ms), tracked in #457. Small predicates show a 1.47× lead. All 4,219 checker tests, 173 driver tests, five harness tests, 18 positive projects, and 13 negative controls per compiler pass. Frozen inputs unchanged. Exact pin/install checks confirm 7.0.2; npm latest was rechecked today. #467 documents a pre-existing Function predicate shape discrepancy, not fixed or counted as an accepted benchmark. #464 remains the unvalidated legacy Docker harness. Tables/methodology: https://github.com/home-lang/home/blob/main/docs/docs/TS_PERFORMANCE.md

8 days ago

Pushed dad87a6 (exact necessary-condition filters for self-conditional-assignment scans), 999258e (honest near-tie report formatting), and 1ec7cfd (complete benchmark docs/README tables), as Chris Breuer with conventional commits and no coauthors. Snapshot 20260827T193257Z compares TS 6.0.3 vs native TS 7.0.2 over 30 interleaved runs after three warmups. All 18 Home means are lower, but the large-predicate case is effectively tied: 326.0 ± 10.0 vs 326.6 ± 8.3 ms, only a 0.2% difference. #457 remains open for a robust margin. All 1,620 timed samples succeeded and were retained; all correctness gates and frozen hashes pass. The 4,221 checker, 173 driver, and 10 harness/report tests pass. README shows the near tie explicitly, not a misleading 1.00× faster win. Remaining work includes exact program-source fact reuse, broader representative workload coverage, the #467 semantic discrepancy, and the #464 unvalidated Docker path. No universal or cross-platform leadership claim. Results: https://github.com/home-lang/home/blob/main/docs/docs/TS_PERFORMANCE.md

8 days ago

Pushed 0612a90 (generic receiver/callback typing, fixes #479) and 262db42 (validation docs and explicit README snapshot labeling). Final validation: 4,232 checker + 99 program + 173 driver + 16 harness tests, 72 shared positive/negative CLI checks, and all 18 existing workloads/13 controls per compiler. No new speed claim: the timing table remains the measured 9e45e10 snapshot because the workstation was running competing builds/tests. The post-fix audit still rejects the valid generic async projection (#476), accepts wrong Promise.then/all result controls (#475), and reproduces global declaration erasure (#480); #478 remains open too. Async stays excluded from timing under #473. https://github.com/home-lang/home/blob/main/docs/docs/TS_PERFORMANCE.md#generic-receiver-callback-validation-untimed

8 days ago

Latest main progress (small conventional commits, no coauthors):

  • 9817696: actual/forward global declarations preced the name-only fallback.
  • 8a737cd: config-relative explicit roots, fixes #483.
  • 6cba2f2: separate value narrowing from type lookup.
  • 16f84e7: imported-graph rejection gates and withdrawal of unsupported historical speed claims (#487).
  • 50abd82: reproducible global admission audit; 2e146e7: final results/documentation.

The fairness correction is important: Home silently accepts invalid imported-property checks in both graph workloads. The full suite now stops before any timing/results creation, and the README/report/docs mark those graph comparisons ineligible while retaining the observations. Other rows remain provisional pending broader negative controls. There is no all-benchmarks victory claim.

Final validation: 4,232 checker, 101 program, 173 driver, 69 CLI, and 25 harness/report tests pass. All 72 same-file declaration CLI checks pass; the default 132-check global audit retains 14 Home cross-file failures (#480). All 72 prior callback and 18 config-path controls pass. Eighteen positive workloads validate, but only sixteen Home workload gates pass; both graph gates correctly fail. Frozen predicate hashes are unchanged.

Async remains untimed: Promise.then/Promise.all wrong-result controls are still accepted (#475), the valid generic async projection still fails (#476), and diagnostic text remains tracked in #478 under #473. Next priority is real cross-file type ownership (#480/#487), broader admission checks, then fair retiming on a suitable machine. No new timings were collected under concurrent workstation load.

Details: https://github.com/home-lang/home/blob/2e146e71e/docs/docs/TS_PERFORMANCE.md#global-declaration-and-graph-admission-audit-untimed .

8 days ago

Pushed three small conventional commits to main under the configured user identity, without coauthors:

  • 134a910: assertion signatures return void, fixing #489.
  • 091f151: core checked metadata is retained with Compilation; the retained relation engine no longer points into a destroyed Checker.
  • 97ab7d4: results, README link, and explicit remaining ownership work.

The ownership work is a prerequisite, not completed cross-file linkage. #488 remains open after auditing interpretation tables still owned by Checker (including NoInfer/this markers, readonly/pattern indexes, and tuple/array origins). Equal numeric TypeIds from separate compilations are not interchangeable. #480/#487 still require actual owner-aware type transfer and resolution.

Validation: 4,236 checker, 175 driver, 101 program, 69 CLI, and 25 harness/report tests pass. All 36 shared assertion controls and 72 earlier callback controls match TS 6.0.3 and native TS 7.0.2. The global audit remains at 14 Home failures out of 132 checks. Sixteen workload gates pass, both graph gates fail, and no benchmark is readmitted. No new timing run or speed claim; published observations and frozen sources are unchanged.

Details: https://github.com/home-lang/home/blob/97ab7d4e4/docs/docs/TS_PERFORMANCE.md#checked-type-ownership-and-assertion-returns-untimed .

8 days ago

Pushed three small conventional commits to origin/main as the configured user, without coauthors:

  • 304fd5d: retained semantic interpretation metadata and transactional borrowed-leaf capture (closes #488).
  • cbc757d: mandatory variadic-tuple rejection gate, schema 3, and legacy-report qualification (closes #492).
  • 4e50814: detailed results and brief README correctness table.

The ownership boundary is now covered for the audited semantic tables, but types are still owner-relative. Actual cross-file transfer/resolution, merging, cycles, and file-order behavior remain under #480/#487. All 18 positive workloads pass; 16 workload gates pass and both graph gates still fail. Global declaration controls remain 44/44 per TypeScript baseline and 30/44 for Home: 14 failures in 132 total checks. No graph is readmitted.

Validation: 4,237 checker, 178 driver, 101 program, 69 CLI, and 29 benchmark-harness/report tests pass. All 42 tuple controls and 36 assertion controls agree across Home, TS 6.0.3, and native TS 7.0.2. No new timing run under concurrent workstation load. Historical tuple observations are provisional because they predate the new gate; frozen sources and timing observations are unchanged.

Details: https://github.com/home-lang/home/blob/4e50814e7/docs/docs/TS_PERFORMANCE.md#semantic-metadata-ownership-and-tuple-admission-untimed .

8 days ago

Pushed canonical payload transfer in e4c0a4caa, following the initialization cleanup fix 99a8b7866. Both use the configured author without coauthors.

Documentation and the README link are pushed in 1b83d1fa1.

The full suites pass 4,246 checker, 178 driver, 101 program, 69 CLI, and 29 benchmark-harness/report tests. The final focused transfer suite passes 8/8 (seven tests plus its module root), including canonical reuse of fourteen structural keys, an 8,192-node forward dependency chain, owner separation, source destruction, real literal/signature relations, invalid references/mappings, and exhaustive allocation-failure rollback.

A fresh ReleaseFast binary (SHA-256 860760ccee9bd0935b3371da534756bf148c733bce540d51c86714e96dce962c) was audited against version-verified TS 6.0.3 and native TS 7.0.2. All eighteen positive workloads, all 42 tuple controls, and all 36 assertion controls pass. Home still fails both graph rejection gates and fourteen global-declaration cases (Home 30/44; each TypeScript baseline 44/44). Sixteen workload gates pass, not sixteen proven-equivalent speed wins. Frozen tuple/predicate inputs are unchanged; no timings were collected.

The payload primitive is not yet called by program checking. CheckedTypes remapping, real HIR/source provenance, owner-aware caching/invalidation, typed import resolution, declaration merging, and cycle/file-order handling remain under #480 and #487. Neither graph is readmitted. Results, reproduction commands, limitations, and the linked README table are documented in the canonical transfer checkpoint. Local logs remain in bench/vs_tsgo/results/type-transfer.FHPXSf.

8 days ago

This checkpoint is pushed to origin/main in four conventional commits, using Chris Breuer as author without coauthors:

  • 778597026: owner-scoped checked semantic transfer with exhaustive field classification, deep ownership, invalid-reference/collision checks, and allocation-failure tests.
  • 84dc71ca5: independently compiled owner-isolation regression, including shared canonical guard signatures with distinct predicates and real source-owner/node references.
  • 50ff4add4: permanent imported-owner positive/negative audit in both root orders.
  • 3026742a0: results, reproduction commands, limitations, and linked README table.

Final tests: 4,249/4,249 checker; 179/179 driver; 101/101 program; 69/69 CLI; 33/33 harness/report. The focused transfer runner passes 4/4 including its module root. The ReleaseFast retry completed successfully; the final binary SHA-256 is 4ad8003e751e1471db6f7ea855c3bf8a3822063e89ddb793b85d3714efe93393. The first release attempt did not produce a verified artifact while disk space was low; it is not used as evidence.

Fresh CLI checks against version-verified TS 6.0.3 and native TS 7.0.2 confirm:

  • All eighteen positive workloads pass; Home passes sixteen workload gates and fails both graph rejection gates.
  • All 42 tuple and 36 assertion controls pass.
  • Global audit: TS 6 and TS 7 each 44/44; Home 30/44 (fourteen failures across 132 checks).
  • Imported-owner audit: TS 6 and TS 7 each 20/20; Home 8/20 (twelve failures across sixty checks), unchanged from the preceding binary. These include false acceptance, rejected valid predicate narrowing, and wrong diagnostic codes for private-origin assignments; the docs distinguish them.

#500 is complete for semantic cloning, not program integration. Neither transfer operation is called by program checking. #480/#487 remain open for source-aware typed lookup, merging, cycles, owner-specific caching/invalidation, and coordinated publication of payloads plus metadata. A metadata clone failure does not undo a previously committed payload transfer. Registry handles must not be treated as local HIR nodes, and name-keyed semantic records must not be blindly merged across owners.

No graph is readmitted and no timing run or speed claim was made. Frozen tuple/predicate inputs are unchanged. See the documented checkpoint; local evidence is retained in bench/vs_tsgo/results/checked-transfer.IO4A4Q.

8 days ago

Pushed three conventional commits to origin/main as Chris Breuer, without coauthors:

  • 9d8be00d7: staged payload transfer and atomic checked-semantic publication.
  • 202f24b9a: production source-owner/provenance registry, coordinated rollback, stale revision invalidation, and checked-source readiness guards.
  • 53dbc4796: verified results, reproduction commands, limitations, and README link.

Full tests pass: 4,252 checker, 183 driver, 101 program, 69 CLI, 33 benchmark-harness/report. Fourteen focused transfer tests include cancellation, existing-key/enum preservation, exhaustive allocation faults, and metadata failures after full payload preparation. Registry tests cover real source text/HIR, same-path replacement, invalid/stale nodes, rollback after a declaration mapping was prepared, and successful retry. The compiled-owner test now uses the production registry rather than a test mapper. Bind-only compilation is rejected as an unchecked owner; completed checking with diagnostics remains distinguishable from unchecked state.

Fresh ReleaseFast binary SHA-256: 6d6b278c9df4db5a67171436def69c720fbe4d91e3171e8221c6d9cb161f4134. Against verified TS 6.0.3 and native TS 7.0.2, results are unchanged: eighteen positive workloads pass; Home passes sixteen workload gates but fails both graph gates; all 42 tuple and 36 assertion controls pass; global audit Home 30/44 versus each baseline 44/44; imported-owner audit Home 8/20 versus each baseline 20/20. Thus fourteen global and twelve owner-audit Home cases still fail. Frozen tuple/predicate inputs are unchanged. No timing run or new speed claim.

#504 is complete for atomic publication/provenance. #480/#487 remain open: Program lookup does not consume these records yet. The shared transfer pool must use one registry's declaration handles for all declaration-bearing types, including the local owner; handles are not local HIR IDs. Readiness means phase completion, not semantic parity. Source-aware lookup, merging, cycles, imported-record caching, and dependent invalidation still need integration. Unregistering invalidates provenance but does not implement program-wide dependency invalidation.

See the documented checkpoint. Local evidence is retained in bench/vs_tsgo/results/owner-publication.xWNTr8. Neither graph is readmitted, and the remaining timing rows stay provisional.

8 days ago

Checkpoint 1f76193 is pushed to origin/main in five small conventional commits as Chris, without coauthors. #505 is complete: closure discovery prepares sources once, final checking reuses their HIR/binder owners, and conformance no longer reparses/rechecks the full graph. Fresh driver/program/CLI/conformance suites pass 186/105/69/1417 respectively; harness 33. The valid two-hop reference CLI probe is fixed, but its typed-global negative remains failing. Expanded globals: Home 32/56 vs TS 6.0.3/native TS 7.0.2 each 56/56; imported owners Home 8/20 vs 20/20. Original audit statuses/diagnostics are unchanged; new failures reflect broader controls. All 18 positive workloads pass, both graph rejection gates still fail. No retiming or universal-win claim. README table links the new prepared-program-discovery section in docs/docs/TS_PERFORMANCE.md. Next: actual source-owned global/import type lookup, not name-presence acceptance.

8 days ago

Checkpoint pushed to origin/main in three conventional commits: d4e63ff (56-case callable audit), 15f050f (distinct callable identities and scoped inference), 770834343 (full results plus README table). Verified installed baselines: TS 6.0.3 and native TS 7.0.2; exact-version preflight rejects the old dev build. Home improves 26/56 -> 56/56 on the untimed callable audit. Checker 4257/4257, conformance 1417/1417, driver/program/CLI 186/105/69, harness 35 all pass. Globals remain 32/56, imported owners 8/20, and both graph rejection gates still fail. No new timings or universal-lead claim. #507 is resolved; typed cross-file integration remains open in #480/#487. Details: https://github.com/home-lang/home/blob/main/docs/docs/TS_PERFORMANCE.md#callable-identity-and-scoped-inference-untimed

8 days ago

Pushed three small conventional commits as Chris Breuer, no coauthors: 79d9ce2 (fair untimed union audit), 7d16f7a (semantic fix, closes #511), 150655867 (README table/full results). Callable-union controls improve 120/256 to 256/256; both pinned TS baselines pass 256/256. Final checker 4,261/4,261 and conformance 1,417/1,417 pass, as do driver/program/CLI/harness suites. All 18 positive workloads pass; both graph rejection gates still fail, so those speed claims remain ineligible and #480/#487 remain open. Existing callable 56/56, tuples 14/14, globals 32/56 and imported owners 8/20 are retained. No retiming or universal-leadership claim. Full methodology, hashes, validation and remaining gaps: https://github.com/home-lang/home/blob/main/docs/docs/TS_PERFORMANCE.md#callable-union-predicates-and-receivers-untimed . Next required work remains actual source-aware typed global/import resolution.

8 days ago

Program identity/ownership milestone landed in ac52b62, 3f1c34e, 0a296c1, 347693b, and docs commit 0e3049c. New untimed bound-global audit: TS 6.0.3 56/56, native TS 7.0.2 56/56, Home 22/56 before to 44/56 after. The remaining 12 are retained wrong-type checks. Original global audit stays 32/56, imported-owner 8/20, and graph gates 0/2, so both graph rows remain ineligible and no timings were collected. Full checker 4,261/4,261 and conformance 1,417/1,417 pass. Continue typed linkage under #480 and #487.

8 days ago

Checked-owner / typed-global consumer checkpoint, pushed to origin/main:

  • 33d8c15c5: register checked source revisions, serialize parallel publication, and tombstone owners before replacement/destruction.
  • 76d6a8b2d: keep scanner recovery without typed storage unregistered.
  • a142705f1: receiving-checker value/type lookup contract, preserving local declaration precedence and globalThis lexical exclusions; tests cover structural types, calls, member/argument/assignment errors, and local shadowing.
  • e3d244bfa: full checkpoint and linked README summary.

This does not enable automatic cross-file type publication. Owner-aware generic/predicate/nominal metadata, declaration merging, and resolution independent of source order and cycles are still required. Program compilation still supplies presence-only names; this issue stays open.

Unchanged untimed controlsTS 6.0.3Native TS 7.0.2Home
Global declarations56/5656/5632/56
Bound-global discovery56/5656/5644/56
Imported owners20/2020/208/20
Import/re-export graph admission2/22/20/2

Full admission passes 16/18 workloads; both graph gates still fail and neither is readmitted for timing. No new timings or speedup claim. The installed versions are exactly TS 6.0.3 and native TS 7.0.2; the harness explicitly rejects 7.0.0-dev.20260707.2.

Validation: checker 4,264/4,264, conformance 1,417/1,417, program 110/110, driver 187/187, harness 38/38. ReleaseFast and Zig formatting pass. Targeted Pickier has no errors and one pre-existing README fragment warning. Local frozen evidence: bench/vs_tsgo/results/global-consumer.xZ8NXj, binary SHA-256 f401735aa016d571c2aa4def48f47f4ff435a100af98c3d37c5d61afab392f09.

8 days ago

Re-export prerequisite checkpoint is pushed: implementation 2e1f795f9, documentation/README 89d634162, tracked in #520.

Untimed controlTS 6.0.3Native TS 7.0.2Home beforeHome now
Entry-only/all-files discovery28/2828/2813/2828/28
Export origins and type-only restrictions32/3232/324/3232/32
Original imported graph admission2/22/20/20/2

The same-origin checks still reject genuine ambiguity and missing names. Type-only functions retain identity without becoming runtime values; named/star barrels and local shadows are covered. Cycles use a visited worklist, not a new depth cutoff. This is dependency/declaration provenance, not automatic checked-type transfer.

Global controls remain 32/56, bound-global controls 44/56, imported-owner controls 8/20; both baselines pass all. Overall Home admission remains 16/18, with just the original imported graph failures. No new timings were collected and neither graph speed claim is readmitted. Source-owned generic, predicate, nominal, and merged-declaration metadata remains the next linkage requirement.

Verified so far: checker 4,266/4,266, Program 117/117, harness 41/41, final ReleaseFast build and all listed audits. Complete conformance/remaining regression verification is still running, with results to follow in #520.

Full methodology, results, caveats and reproduction. Raw logs and the frozen binary remain at bench/vs_tsgo/results/reexport-discovery.rFhIvz; binary SHA-256 bff8e072e39c79f0d44e360b0b36ed5b984fd71183debb8e8736efa1aa6e6e3c.

8 days ago

Nominal-identity checkpoint pushed to origin/main: audit ab691ca, expanded fairness controls e40a4d5, implementation 4ae6956, documentation ef076c9. Synthetic imported-class brand properties are removed; real member-origin metadata survives nested relations, substitutions and type transfer.

Verified TS 6.0.3 / native TS 7.0.2: nominal audit 52/52 each. Home improves 30/52 -> 36/52 and existing owner audit 8/20 -> 10/20. Callable identity 56/56 and callable unions 256/256 remain passing. Re-export discovery 28/28, export origins 32/32, globals 32/56, bound globals 44/56, original graphs 0/2 and full admission 16/18 are unchanged. No new timings; both graph timing exclusions remain mandatory. The 16 failing nominal controls remain visible, so this is not complete imported-type parity.

Final verification: checker 4270/4270; conformance 1417/1417; driver 187/187; Program 117/117; CLI 69/69; harness 44/44. Zigfmt passes; Pickier has zero errors and one pre-existing README fragment warning. README includes a concise table and link to the methodology/results section: https://github.com/home-lang/home/blob/main/docs/docs/TS_PERFORMANCE.md#imported-nominal-identity-without-synthetic-properties-untimed

8 days ago

Pushed another correctness checkpoint in small conventional commits as Chris Breuer: cce3286, 226da38, b45b038, 3567e26 (#522). Bound class export audit improves 22/52 -> 48/52; nominal identity improves 36/52 -> 40/52. Verified competitor versions remain TS 6.0.3 vs native TS 7.0.2; the old dev version is rejected. README table and detailed docs updated. Checker 4271/4271, conformance 1417/1417, Program 119/119 and harness 47/47 pass. No new timing claims; original graph gates remain 0/2. Follow-up #523 targets imported class static-value consumers.

8 days ago

Pushed another verified checkpoint in small conventional commits as Chris Breuer, without coauthors: 232961504, 170613d, 8969812, bca0fad, c2331ba, cdcb60b, f5f3681 (#523). Imported static-value audit improves 52/84 -> 84/84; bound-class controls 48/52 -> 52/52; nominal identity 40/52 -> 42/52. Verified TS 6.0.3 vs native TS 7.0.2; no duplicate tsgo competitor. README table and detailed docs updated. Full checker 4274/4274, conformance 1417/1417, Program 120/120, driver 187/187, CLI 69/69, harness 50/50 pass. Overall admission remains 16/18, original imported graph gates 0/2; no new speed claims. Next semantic linkage work: #524, with inheritance still tracked under #521/#487.

8 days ago

#524 checkpoint: d7f80bd adds 100 fair generic-class controls; f0d8481 and af11e4e add the parsed-field/source-owned metadata foundation; ca94ccc documents the baseline in TS_PERFORMANCE.md and README. TS 6.0.3 and native TS 7.0.2 pass 100/100; Home 50/100. Consumer integration is still pending, and the collector stays off the production path until it is used. Original imported-graph admission remains 0/2; no new timing claim. Details and targeted test results are on #524.

8 days ago

New verified correctness checkpoint #524 is on main: 0a1e5af, 33ddbef and docs/README ed12aa1. Home imported generic controls improve 62/120 → 118/120; nominal 42/52 → 44/52. TS 6.0.3 and native TS 7.0.2 are verified executable pins; tsgo and TS 7 are one competitor. Both pass all 120 generic controls. Remaining generic recursion, inheritance and imported graph failures stay documented. Full checker 4279/4279, conformance 1417/1417, Program 130/130, driver 187/187, CLI 69/69 and harness 53/53 pass. Original workload admission remains 16/18, graph admission 0/2; timing snapshot unchanged, no universal leadership claim. Results table and reproduction details: https://github.com/home-lang/home/blob/main/docs/docs/TS_PERFORMANCE.md#imported-generic-class-instantiation-untimed

8 days ago

New #524 checkpoint pushed in small conventional commits: 6576ff8 / 42452f8 fair recursive audit and calibration; c6c6c66 pool-owned generic definitions/transfer; 98e39c6 documentation and README table. Verified TS 6.0.3 and native TS 7.0.2 each pass 216/216; Home passes 96/216. All 120 failures remain, and all 24 nonrecursive calibration cases pass. Foundation release retains identical audit outcomes; shared lazy expansion remains the next implementation step. Checker 4282/4282, conformance 1417/1417, Program 130/130, driver 187/187, CLI 69/69 and harness 56/56 pass. Original admission stays 16/18, graphs 0/2; no new timing or leadership claim. https://github.com/home-lang/home/blob/main/docs/docs/TS_PERFORMANCE.md#recursive-generic-consumer-baseline-untimed

8 days ago

Reporting-integrity gap found during the new measured checkpoint: compare.py could label an incomplete interleaved run with its requested 30-run count while printing partial averages. A fix is being verified to require the exact workload/round file set, one successful finite positive sample per compiler per round, and the recorded rotating compiler order before rendering an interleaved table. It does not discard or alter measurements. New tests cover missing/extra rounds, partial JSON, duplicated/misordered compilers, invalid samples and failed exits. The ongoing measurement remains running and no partial averages are being published as final results.

8 days ago

CommonJS graph prerequisite checkpoint landed on main: #545 closed via 0ebdba7, eaf86ee and 403385095. Untimed discovery controls improve Home 38/44 to 44/44, matching TS 6.0.3 and native TS 7.0.2; README/docs include the linked table and immutable candidate evidence. The separate #541 instance-type audit remains deliberately unchanged at Home 22/66 versus 66/66 for both competitors, so source-owned checked type transfer remains active work and no CommonJS timing workload has been admitted.

8 days ago

CommonJS checked-owner linkage #541 is complete on main. Implementation fb07dea and docs 2d5859f improve Home from 22/66 to 66/66 on the unchanged untimed audit, matching TypeScript 6.0.3 and native TypeScript/tsgo 7.0.2. All 198 compiler-case checks pass; static require discovery retains 132/132. Program 145/145, harness 78/78, checker, driver, CLI, and conformance (16/16 smoke, 86/86 named, 586/586 baseline-aware) pass. Immutable ReleaseFast SHA-256: 3cab7afcaf38cb5bef789081bc228ab0a970166c0bbd1f2bd24cd61359e823a5. README and full report are synchronized.

This is a correctness result, not a new timing claim. The parent remains open for fair new workloads, real-project coverage, other platforms, and remaining semantic gaps.

8 days ago

Checkpoint #546 is complete and closed via 31cba27, 3e1d2bc, and bf64a67 on origin/main. The new admitted checked CommonJS graph moved from an explicitly retained 1.23x loss to a 1.15x win over native TS/tsgo 7.0.2; exact correct-build Home A/B is 31.1% faster with 30/30 paired wins. The final TS 6.0.3 vs native TS 7.0.2 run records lower Home means on 20/20 admitted workloads with all 1,800 samples retained. The large-predicate lead remains narrow (1.01x, 24/30 paired wins), and real-project/cross-platform/broader semantic coverage remains open here. README and TS_PERFORMANCE.md now link and document the full evidence.

8 days ago

Linux ARM64 checkpoint complete. General compiler work landed in 4971cdb, cea9642, and 6ac9b5e: non-null object-rest bindings skip impossible source scans, resolver filesystem/package state is reused, and JSDoc diagnostic passes are gated by exact parsed tag facts. The final pinned container run 20260829T035150Z compares TS 6.0.3 with the single native TS/tsgo 7.0.2 competitor for 30 interleaved rounds after three warmups. Home records lower means on all 20/20 admitted workloads; all 600 round files and 1,800 successful finite samples are retained. CheckJS is the narrowest mean lead at 1.02x and 19/30 paired wins, so it is documented as narrow rather than universal. The full environment, image digest, compiler/tool provenance, complete table, variance, and reproduction commands are in TS_PERFORMANCE.md and linked from both READMEs. #544 and #464 are closed. This parent remains open for pinned real-project workloads, additional architectures, and broader semantic admission coverage.

8 days ago

Real-project follow-up is active in #548. Zod 4.5.2 now completes in about 4 s / 175 MB after three general checker fixes, versus an interrupted 192.89 s / 3.89 GB diagnostic run. The benchmark remains unadmitted because Home still emits 2,028 false diagnostics while TS 6.0.3 and native TS/tsgo 7.0.2 are silent; no invalid timing has been published.

8 days ago

Real-project gate update: zod@4.5.2 remains excluded from benchmark results because Home is not yet diagnostically equivalent to TS 6.0.3 / native TS 7.0.2. Current ReleaseFast completes in 6.63s at 183,287,808-byte max RSS and reports 1,929 false diagnostics, down from 2,029; TS7006 is down from 1,329 to 1,208. The crash chain exposed by the richer transferred signatures is fixed on main through a59117c. Continuing correctness admission work under #548; no timing win claimed.

8 days ago

TypeScript real-project gate update from #548:

  • c2e4ae42e relates deferred conditional structures and resolves symbolic intersection constituents.
  • fe5e45fd9 preserves inherited interfaces in the cross-file program declaration graph.
  • Exact admitted zod@4.5.2 corpus improves from 1,929 to 1,928 Home diagnostics; TypeScript 6.0.3 and native TypeScript 7.0.2 remain silent controls.
  • Checker and program suites are green.

The project is still not semantically admitted, so no timing or README benchmark claim has been published. Full evidence and the remaining $ZodRegistry rest-parameter mismatch are tracked in /home-lang/home/issues/548#issuecomment-5463498081.

8 days ago

TypeScript compatibility progress: ae8223bf6 fixes structural identity for function patterns inside deferred conditionals. On the exact unmodified Zod 4.5.2 gate, Home improves 1,928 → 1,927 diagnostics and removes the false $ZodRegistry<GlobalMeta> self-assignment error; TS 6.0.3 and native TS 7.0.2 remain silent. Full checker/program suites and negative controls pass. Timing is still withheld until the corpus is semantically admitted. Tracking detail: #548.

8 days ago

Pushed 5d3d80376: unknown index signatures now correctly accept every property value across inline object and class/interface validation. The exact Zod 4.5.2 gate improves 1,927 → 1,915 diagnostics, removing all 12 false TS2411 errors; TS 6.0.3 and native TS 7.0.2 remain silent. Full checker/program suites and negative controls pass. Details: #548.

8 days ago

Pushed 722c25230: explicit generic calls now honor and substitute omitted trailing type-parameter defaults before callback contextual typing. Exact Zod improves 1,915 → 1,914 diagnostics (TS2558 11→10); full checker/program suites and a reduced TS6/TS7/Home multi-file control pass. Next blocker is mapped-type transport for generic exported functions. Details: #548.

8 days ago

TypeScript benchmark admission update: pushed 57261e2 to origin/main.

The fair pinned Zod corpus now drops from 1,914 to 1,798 Home diagnostics (-116), with TS2339 falling from 228 to 119. TypeScript 6.0.3 and TypeScript 7.0.2 (tsgo) remain silent. Positive and negative reduced controls match both references.

No timing or README benchmark claim is published yet because semantic parity is still incomplete. Tracking continues in #548.

8 days ago

Semantic admission update: 2d9773c47 reduces the exact Zod 4.5.2 gate from 1,798 to 1,689 diagnostics. Promise instanceof parity was checked against TypeScript 6.0.3 and native tsgo 7.0.2: positive case silent in all three compilers; negative case exactly TS2322 + TS2339. Main reductions are TS2359 63 -> 4, TS2339 119 -> 92, and TS7006 1,208 -> 1,182. Timing remains withheld until Home is silent and negative controls pass across the full admitted corpus; TS7 and tso are treated as the same tsgo lane, pinned at 7.0.2.

8 days ago

TypeScript parity update: pushed 4c91fc4. Reference lanes are TypeScript 6.0.3 and tsgo 7.0.2 (the TypeScript 7 native lane). The untouched Zod 4.5.2 gate improves 1,689 -> 1,685 diagnostics; the four remaining TS2359 errors are eliminated with no other histogram movement. Focused positive and negative controls match both references, and all checker/program/CLI/build/lint checks pass. Benchmark timing and README results remain gated on semantic admission.

8 days ago

TypeScript parity update: pushed bf9ea7a. Reference lanes remain TypeScript 6.0.3 and tsgo 7.0.2. Correct Array.isArray narrowing improves the untouched Zod 4.5.2 gate from 1,685 to 1,650 diagnostics, including TS2339 92 -> 73 and TS7006 1,182 -> 1,174, with focused positive/negative controls matching both references. All checker/program/CLI/build/lint checks pass. Benchmark timing and README results remain gated on semantic admission.

8 days ago

TypeScript parity update: 71a5be5ab unifies identifier/member typeof narrowing and adds branch-local invalidation after property/root writes. Verified against TS 6.0.3 and tsgo 7.0.2 with positive, negative, and mutation controls. Untouched Zod 4.5.2 production corpus improves 1,650 -> 1,645 diagnostics: TS2339 73 -> 70 and TS2349 2 -> 0, with no new diagnostic family; both references remain silent. Full 4,296-test checker, ts_program, ts_cli, formatting/diff gates, and ReleaseFast pass. Timing/docs remain gated on semantic cleanliness.

8 days ago

TypeScript parity update: a875e2fc5 adds generic WeakSet instance modeling with exact TS 6.0.3 / tsgo 7.0.2 positive and negative control parity. The untouched Zod 4.5.2 production corpus moves 1,645 -> 1,641 diagnostics, with TS2339 70 -> 66 and no other histogram change; both references remain silent. Full 4,297-test checker, ts_program, ts_cli, format/lint/diff gates, and optimized builds pass. Timing/docs remain gated on semantic cleanliness.

8 days ago

TypeScript parity update: 376dc4335 adds structural numeric/bigint typed-array instance modeling and canonical diagnostic names, with TS 6.0.3 / tsgo 7.0.2 positive and negative control parity. Untouched Zod 4.5.2 production corpus moves 1,641 -> 1,639 diagnostics: TS2339 66 -> 65 and TS7053 3 -> 2; all other counts are unchanged and both references stay silent. Full 4,298-test checker, ts_program, ts_cli, formatting/lint/diff gates, and optimized builds pass. Timing/docs remain gated on semantic cleanliness.

8 days ago

Correctness update: f30ea1a is now on main. Cross-file generic interface heritage through Error is preserved without copying per-checker type IDs. Positive and negative controls match TypeScript 6.0.3 and tsgo 7.0.2; all full gates passed. Zod remains at the documented 1,639-diagnostic baseline, so no benchmark timing or README result is being published from this change.

8 days ago

Corpus update from 60aff02 on main: untouched Zod improves 1,639→1,637 diagnostics. Conditional literal-union preservation removes one false TS7053 and one false TS2322; repeated runs held the same total and code histogram. Reference controls match TypeScript 6.0.3 and tsgo 7.0.2, and all gates passed. Timing remains unpublished until Home is silent and the benchmark is fully admissible.

8 days ago

Correctness/performance ratchet update: https://github.com/home-lang/home/commit/6129128cdade10903f3cb1dbbd1ccbd30b42fd26 is on main.

Untouched Zod 4.5.2 production corpus improved 1,637 -> 1,633 diagnostics with no category regression: TS2304 16 -> 14, TS2352 2 -> 1, TS7053 1 -> 0. Two repeated ReleaseFast runs produced the same 1,633-code histogram in 21-22s. Controls agree with TypeScript 6.0.3 and native TypeScript 7.0.2 (tsgo).

A broad declaration-graph route caused a multi-minute slowdown and was withdrawn; the admitted implementation publishes only self-contained literal const schemas across otherwise-incomplete files. Full parser/program/checker/CLI and repository ReleaseFast gates pass. Benchmark timing docs and the README table remain deferred until the fair admitted corpus is silent.

8 days ago

Performance update: 4c6fd02 is on main. The pinned untouched Zod workload now runs in 5.47s and 5.14s in ReleaseFast, down from 21–22s, with the exact same 1,633-diagnostic histogram. This removes repeated cyclic this-type graph expansion; benchmark publication remains gated on correctness admission.

8 days ago

Zod corpus update from #548:\n\n- ac9f942 contextualizes imported generic factory callbacks from result annotations.\n- 40ff168 preserves readonly computed type members such as Symbol.toStringTag.\n\nOn the untouched strict Zod 4.5.2 corpus, TypeScript 6.0.3 and tsgo 7.0.2 remain clean. Home now reports 1,582 diagnostics, down from the parser-admitted 2,038 and below the prior parse-blocked 1,633 baseline. Two Home runs were 23.75s and 23.37s with identical diagnostic positions/codes. Full optimized build and focused gates pass; benchmark docs/README remain gated on a clean admitted corpus.

8 days ago

TypeScript benchmark/parity update: 9ccedba is on main. It correctly resolves callable parameter inference for explicit generic mapped object methods and passes the focused/broad negative controls plus full ReleaseFast build. The untouched Zod 4.5.2 corpus remains at 1,582 diagnostics (25.12s), with positions/codes identical to the prior baseline, because core.$constructor<zodtype> is still seen as untyped after the .js namespace re-export chain (TS2347), preventing the new contextual typing from activating in the real corpus. TS6.0.3 versus tsgo7.0.2 remains the fair reference comparison; benchmark docs/README stay gated until Home is clean and negative controls pass.

8 days ago

Benchmark/parity update: 016f12c is on main. On the unchanged strict 106-file Zod 4.5.2 corpus, Home improved 1,582 -> 1,573 diagnostics by preserving generic namespace-export facts through .js barrels; TS2347 fell 10 -> 1 with no new codes. Two runs were 24.38s and 24.72s and had identical diagnostic position/code sets. The fair references remain TypeScript 6.0.3 and tsgo 7.0.2. README/docs publication remains gated because Home is not yet clean; next blocker is transferring the actual imported generic callable signature so the 937 TS7006 callbacks receive context.

8 days ago

Parity update: 767ce34 is on main. Home now parses readonly(): T as a valid interface method name instead of a readonly modifier plus malformed members. This is a correctness prerequisite for the Zod signature-transfer work; benchmark docs remain gated, and the broader recovered-export change remains unpushed until its newly exposed false diagnostics are fixed.

8 days ago

TypeScript correctness update: 1662fd7 fixes valid any-indexed access without weakening invalid-index diagnostics. The full 4,303-test checker suite passes; the ongoing untouched Zod audit drops from 1,545 to 1,464 diagnostics with this fix on top of recovered export traversal.

8 days ago

TypeScript correctness update: e959b85 fixes optional-parameter widening across Program-transported signatures. Strict controls accept undefined and reject null, and the Zod audit no longer reports the false TS2345 at classic/errors.ts:80 after export recovery.

8 days ago

TypeScript audit update: 497311e recovers healthy exports through star barrels even when an unrelated target has syntax diagnostics, without ignoring recovered name conflicts. Full ReleaseFast passes; untouched Zod runs are deterministic at 1,464 diagnostics, down 109 from the earlier 1,573 baseline.

8 days ago

TypeScript parity update: b3f2d9e removes a composite/object elaboration false positive. The untouched Zod 4.5.2 corpus is deterministically down from 1,464 to 1,449 diagnostics (15 removed, zero new); all 4,304 checker tests and the full ReleaseFast build pass. Fair TS 6.0.3 vs tsgo 7.0.2 benchmark publication remains gated on Home reaching a clean corpus and passing negative controls.

8 days ago

Parity update: 2c9bc2d removes 8 deterministic false TS2345 T-to-T errors from the untouched Zod corpus, taking Home from 1,449 to 1,441 diagnostics with zero new positions. All 4,305 checker tests and the full ReleaseFast build pass. Timing variance was too high to claim a speed change; final benchmark docs remain gated on a clean Home run and fair TS 6.0.3 vs tsgo 7.0.2 measurements.

8 days ago

Parity update: 94b4321 removes the full 10-position $ZodRegistry TS2558 cluster by preserving imported generic default existence even when the default value is outside the transferable subset. Untouched Zod is deterministically down from 1,441 to 1,431 diagnostics with zero new positions; all 4,306 checker tests and the full ReleaseFast build pass. Benchmark publication remains gated on Home becoming silent and fair TS 6.0.3 vs tsgo 7.0.2 runs.

8 days ago

Parity update: 26baa12 fixes contextual out expression parsing. Untouched Zod is deterministically down from 1,431 to 1,394 diagnostics: 39 parser diagnostics removed, 2 downstream definite-assignment diagnostics exposed, net -37. Lexer/parser suites, all 4,306 checker tests, and the full ReleaseFast build pass. Final benchmark publication remains gated on a silent Home run and fair TS 6.0.3 vs tsgo 7.0.2 measurements.

8 days ago

Correctness update from #548: 5edee8012 is on main. It fixes definite-assignment joins after a try whose catch always exits.

The untouched Zod 4.5.2 corpus moves 1,394 → 1,387 diagnostics (seven TS2454 removals, zero additions), with TypeScript 6.0.3 / tsgo 7.0.2 positive and negative controls and a passing full ReleaseFast build. This is still correctness work; no benchmark timing is being published to the README until the corpus is fully admitted.

8 days ago

Correctness update from #548: 3a0f4282b is on main. Nested definite-assignment joins now compose assignments with exiting alternatives, matching TypeScript 6.0.3 and tsgo 7.0.2 while retaining a fallthrough negative control.

Untouched Zod 4.5.2 improves 1,387 → 1,386 diagnostics (one exact TS2454 removal, zero additions), leaving no TS2454s. All 4,308 checker tests and the full ReleaseFast build pass. Benchmark publication remains gated on full corpus admission.

8 days ago

Correctness progress landed in d5735a7fb: override is now treated contextually as a legal interface member name while invalid modifier use still reports TS1070, matching TypeScript 6.0.3 and TypeScript 7.0.2 (tsgo).

Untouched Zod 4.5.2 production corpus: 1,386 -> 1,382 diagnostics, reproduced exactly twice (32.27s and 28.04s), with four removals and zero additions. Parser suite (896/896) and full ReleaseFast build passed. This is diagnostic-correctness evidence only, not a benchmark-table timing result.

8 days ago

Correctness progress landed in 3e821c72c: contextual generic value bindings and async conditional return signatures now match TypeScript 6.0.3 and TypeScript 7.0.2 (tsgo), while genuine bare typeof T still emits TS2693.

Untouched Zod 4.5.2 production corpus: 1,382 -> 1,375 diagnostics, reproduced exactly twice (25.27s and 24.91s), with seven removals and zero additions. Checker suite (4,310/4,310) and full ReleaseFast build passed. These are validation timings, not benchmark-table results.

8 days ago

Correctness progress: shipped 266013349, aligning any | Constructor new-expression behavior with TypeScript 6.0.3 and TypeScript 7.0.2. On the untouched Zod 4.5.2 corpus this removes exactly two duplicate TS2351 diagnostics (1,375 → 1,373), adds none, and is stable across repeated optimized runs (24.73s / 24.38s). Focused checker suite and full ReleaseFast build pass.

8 days ago

Correctness progress: shipped ce58c1bc7, matching TypeScript 6.0.3 / 7.0.2 value-namespace resolution for computed type keys when a runtime value and type alias share a name. Untouched Zod 4.5.2 drops exactly one TS2693 (1,373 → 1,372), adds none, and repeats at 24.51s / 24.38s. Focused checker suite and full ReleaseFast build pass.

8 days ago

Correctness progress: shipped bd2f40ba0, recognizing explicit type arguments on calls to later hoisted generic function declarations, matching TypeScript 6.0.3 / 7.0.2 for TS2347. Untouched Zod 4.5.2 drops exactly one diagnostic (1,372 → 1,371), adds none, and repeats at 25.00s / 25.02s. Focused checker suite and full ReleaseFast build pass.

8 days ago

Correctness progress: shipped 5efb18a03, matching TypeScript 6.0.3 / 7.0.2 assertion-overlap behavior for fully dependent T[K] targets while retaining TS2352 for concrete indexed keys and generic arrays. Untouched Zod 4.5.2 drops exactly one diagnostic (1,371 → 1,370), adds none, and repeats at 24.48s / 25.51s. Focused checker suite and full ReleaseFast build pass.

8 days ago

Compatibility update: feda46e narrows recursive-return TS7023/TS7024 detection to real return-dependent inference cycles, matching TypeScript 6.0.3 and tsgo 7.0.2 controls.

On the accepted Zod 4.5.2 production corpus this moves 1,370 → 1,368 diagnostics with zero additions (exact removals: TS7023 at core/to-json-schema.ts:571, TS7024 at core/api.ts:1802). Repeated ReleaseFast wall times: 24.86s / 24.99s. Checker tests and full ReleaseFast build pass. Commit: feda46e.

8 days ago

Compatibility update: 421d783 faithfully models generic Proxy handlers, Reflect arities/returns, and Object prototype PropertyKey inputs. TypeScript 6.0.3, tsgo 7.0.2, and Home agree exactly on the expanded positive/negative control.

On the accepted Zod 4.5.2 production corpus this moves 1,368 → 1,349 diagnostics: 17 TS7006 and 2 TS2554 removals, zero additions. Stable ReleaseFast corpus runs were 25.34s / 24.20s / 25.03s. Checker suite and a clean full ReleaseFast build pass.

8 days ago

Documentation update: 860a706 adds the requested concise benchmark table to the root README and links it to docs/docs/TS_PERFORMANCE.md.

The table summarizes the existing admitted 30-round snapshots only: TypeScript 6.0.3 vs the single native TypeScript 7.0.2 (tsgo) vs Home, identical strict/noEmit projects, three warmups, all successful finite samples retained. It reports Home with the lowest mean on 20/20 workloads on both Apple M3 Pro macOS ARM64 and Debian Bookworm Linux ARM64, while explicitly preserving the narrowest margins (1.01× and 1.02×) rather than overstating them.

8 days ago

Fresh TS 6.x vs native TS 7.x benchmark evidence is now on main.

  • Harness fix: 50d8f2a88 now makes the default report select only complete, provenance-verified timing directories.
  • Result docs: 0746499d1 publishes raw-result 20260830T220926Z and refreshes the README summary.

Fair full-suite result on macOS ARM64: TS 6.0.3 vs native TS 7.0.2 vs Home 0.1.0, 30 interleaved rounds after 3 warmups. Admission and negative controls passed; compiler/tool provenance stayed unchanged; all 600 round files / 1,800 successful finite samples were retained. Home has the lowest mean on 20/20 workloads and wins 597/600 paired rounds. Nineteen workloads win 30/30; type_predicates_large wins 27/30 and remains the narrowest mean lead at 1.04×.

The detailed table, fairness rules, limitations, raw-result ID, and reproduction steps are in docs/docs/TS_PERFORMANCE.md.

8 days ago

Source-marker profiling optimization and its full confirmation are now on main.

  • Implementation: 7d5208e53 reuses the existing one-pass source marker index for JSDoc and triple-slash reference presence, avoiding redundant whole-file scans without changing exact substring semantics.
  • Results/docs: 8cb78bbdf publishes full raw-result 20260830T223857Z and refreshes the README summary.

Validation: complete ts_checker test artifact passed, focused source-marker tests passed, Zig formatting passed, all 95 benchmark-harness tests passed, and the exact final ReleaseFast binary passed predicate admission/negative controls.

Full macOS ARM64 result (TS 6.0.3 vs native TS 7.0.2 vs Home, 30 interleaved rounds after 3 warmups): Home has the lowest mean on 20/20 workloads and wins 599/600 paired rounds. type_predicates_large improved from 343.6 ± 12.7 ms / 1.04× / 27-of-30 paired wins to 337.5 ± 6.4 ms / 1.07× / 30-of-30. All 600 round files and 1,800 successful finite samples were retained, and compiler/tool provenance remained unchanged.

8 days ago

Follow-up docs consistency fix: f49ab15de updates the benchmark README qualified macOS checkpoint to raw-result 20260830T223857Z.

8 days ago

Published another general TypeScript frontend optimization and refreshed the qualified macOS benchmark.

  • acaa9ad21 (perf(ts): reuse program source markers (#416)) routes exported-namespace interface prechecks through the existing exact per-file marker index instead of rescanning each source four times.
  • Same-host A/B on the frozen type_predicates_large corpus: 338.524 ± 3.226 ms before vs 331.880 ± 3.698 ms after (1.020×, 30/30 paired wins).
  • Full qualified result: 20260830T225711Z, TS 6.0.3 vs the single native TS 7.0.2 (tsgo) vs Home, 30 rounds after 3 warmups, provenance verified before/after, all 600 round files and 1,800 finite samples retained.
  • Home has the lowest mean on 20/20 workloads and wins 600/600 paired rounds. type_predicates_large is now 334.8 ± 9.3 ms vs native TS 7.0.2 at 368.0 ± 11.4 ms (1.10×).
  • dbc9e4852 updates the detailed report and concise README tables.

The benchmark manifest was already updated to compilers.tsgo.version = "7.0.2" in 69d3f9e84; the old 7.0.0-dev.20260707.2 string remains only in explicit rejection tests and historical notes.

8 days ago

Published another evidence-led TypeScript frontend optimization.

  • 46c382bb2 (perf(ts): index strict mode directives (#416)) adds both accepted @strict: false spellings to the existing exact source-marker automaton and reuses that index instead of rescanning every source. The uncached fallback remains and has indexed/unindexed equivalence coverage.
  • Fresh 16,384-family profile: substring-search leaf samples fell from 62 to 24, and the sourceHasStrictFalseDirective full-source scan disappeared.
  • Same-host scaled A/B, all samples retained: 2919.9 ± 146.3 ms before vs 2802.2 ± 73.9 ms after (1.042×, 17/20 paired wins).
  • Qualified focused result 20260830T231822Z: Home 328.8 ± 6.8 ms vs native TS 7.0.2 at 370.8 ± 14.2 ms (1.13×).
  • Full qualified result 20260830T231959Z: pinned TS 6.0.3 vs the single native TS 7.0.2 (tsgo) vs Home; 30 rounds after 3 warmups; provenance verified; all 600 round files / 1,800 finite samples retained. Home has the lowest mean on 20/20 workloads and 597/600 paired wins. The three paired losses are documented: deep_types 29/30 and checkjs_jsdoc 28/30 amid higher host variance.
  • edb783faf refreshes the detailed report and concise README tables without hiding the noisier full run.

Validation: source-marker randomized equivalence tests, focused indexed/fallback directive test, complete ReleaseFast checker suite, Zig formatting, Pickier, and all 95 benchmark-harness tests.

8 days ago

Rejected a follow-up @target marker-index candidate after isolated measurement; it is not in the tree.

The post-change profile attributed a smaller full-source scan to sourceHasTargetEs2016OrLaterDirective, so I tested routing that exact lookup through the existing marker index with indexed/unindexed equivalence coverage. Against the preserved 46c382bb2 binary on the same 16,384-family corpus, all 20 alternating pairs were retained: 2757.5 ± 26.4 ms baseline vs 2749.2 ± 28.5 ms candidate (1.003×, 12/20 paired wins). That is noise, not a defensible improvement.

I removed the candidate and restored the exact published binary (ba83523099e133f1aab69283304f3568c31f947069c29455b849b70eca01b5b6). No commit or benchmark claim was made for it.

8 days ago

Published the HIR-backed recovered-parameter index and its benchmark evidence.

Commits:

  • 18bd0c4ee — perf(ts): index recovered parameters from HIR (#416)
  • ffccfbb08 — docs(bench): publish HIR parameter results (#416)

The checker now builds recovered annotation candidates from actual HIR parameter nodes, retains the existing source-syntax checks, reuses the interned parameter name, and excludes object-property lookalikes before containment filtering.

Isolated unchanged-input Home A/B on the 16,384-family predicate stress project (3 alternating warmup pairs, 20 alternating-order measured pairs, all 40 samples retained):

  • published baseline: 2749.3 ± 27.7 ms
  • candidate: 2717.8 ± 33.4 ms
  • speedup: 1.0116x; candidate lower in 16/20 pairs
  • mean paired reduction: 31.5 ms; 95% paired t CI 11.7–51.4 ms; exact two-sided sign-test p=0.0118
  • fresh 1 ms profile: recoveredSourceParameterAnnotationType leaf samples 31 -> 10

Official pinned comparison remains TS 6.0.3 versus native TS 7.0.2 (tsgo):

  • focused 20260831T000811Z: tsc 1048.0 ± 23.2 ms, tsgo 365.3 ± 6.8 ms, Home 322.0 ± 5.1 ms; Home 1.13x faster and 30/30 paired wins
  • full 20260831T000957Z: Home lower mean on 20/20 workloads and lower time in 599/600 rounds; 600 round files / 1,800 finite samples retained; provenance verified unchanged
  • narrowest mean lead: type_predicates_large, 1.12x (325.1 ± 5.1 ms versus tsgo 363.9 ± 5.6 ms)

Validation:

  • focused recovery tests pass, including both legacy flow regressions and the new object-property exclusion case
  • full ReleaseFast checker suite passes
  • benchmark harness 95/95 passes
  • targeted Pickier passes for all three changed Markdown files; the mandated whole-tree command aborts at its own 100,000-file safety cap after discovering 188,706 files and makes no tracked changes
  • git diff --check passes

The README keeps the concise platform table and links to the detailed report. The eligible Linux ARM64 checkpoint remains 20260829T035150Z at 20/20; this macOS host currently has no native Linux/container runtime, so I have not represented it as a current-code Linux rerun.

8 days ago

Rejected follow-up experiment: per-identifier caching of visibleAnnotatedIdentifierTypeNode hits and misses.

The implementation cached only immutable annotation NodeId results and cleared on setModule / setSource; its focused lifecycle test passed. It was measured against the exact published 18bd0c4ee binary on the unchanged 16,384-family predicate project after three alternating warmup pairs and 20 alternating-order measured pairs. All 40 samples were retained.

  • baseline: 2762.0 ± 80.1 ms
  • cache candidate: 2798.3 ± 50.0 ms
  • baseline/candidate: 0.9870x (candidate is 1.3% slower)
  • candidate lower in only 4/20 pairs
  • paired regression: 36.3 ms, 95% paired t CI 14.0–58.6 ms; exact two-sided sign-test p=0.0118

Conclusion: the first-query hash-map probe and storage cost outweigh repeated scope/index reuse. This is not a valid performance improvement. The source/test changes were fully removed, the published binary was restored byte-for-byte (faccb14ac520cd8a37d14246635089d36345ddf3c6d40d8630c59fcf5a73849e), and no commit was created.

8 days ago

Rejected follow-up experiment: reuse an existing unqualified zero-argument HIR type_ref StringId when recovered parameter source text matches byte-for-byte, instead of interning the spelling again.

The focused recovery suite passed. The unchanged 16,384-family project was measured against the exact published faccb14... binary after three alternating warmup pairs and 20 alternating-order measured pairs; all 40 samples were retained.

  • baseline: 2738.6 ± 68.5 ms
  • candidate: 2739.1 ± 45.8 ms
  • baseline/candidate: 0.99984x
  • candidate lower in 8/20 pairs
  • paired difference: -0.4 ms, 95% paired t CI -42.8 to +41.9 ms; exact two-sided sign-test p=0.5034

Conclusion: indistinguishable from noise, with no mean improvement. The source change was fully removed, the published binary was restored byte-for-byte (faccb14ac520cd8a37d14246635089d36345ddf3c6d40d8630c59fcf5a73849e), and no commit was created.

8 days ago

Published the exact instanceof fallthrough negative guard and its benchmark evidence.

Commits:

  • 238cc88fc — perf(ts): skip impossible instanceof fallthrough checks (#416)
  • 757292ae1 — docs(bench): publish instanceof marker results (#416)

Mechanism: the exact instanceof substring is now part of the existing one-pass source marker automaton. Specialized member-access fallthrough-join analysis returns before flow and visible-annotation work only when attached source bytes cannot contain that spelling. Sources containing it, including conservative comment/string matches, retain the full path.

Isolated unchanged-input Home A/B on the same 16,384-family predicate project (3 alternating warmup pairs, 20 alternating-order measured pairs, all 40 samples retained):

  • published HIR-index baseline: 2738.5 ± 31.3 ms
  • marker candidate: 2704.2 ± 38.5 ms
  • speedup: 1.0127x; candidate lower in 15/20 pairs
  • mean paired reduction: 34.3 ms; 95% paired t CI 15.0–53.6 ms; exact two-sided sign-test p=0.0414
  • fresh 1 ms profile removes the baseline downstream visible-annotation-lowering stack under identifierHasInstanceofFallthroughJoin

Official pinned comparison is TS 6.0.3 versus native TS 7.0.2 (tsgo):

  • focused 20260831T005513Z: tsc 1048.1 ± 15.7 ms, tsgo 365.1 ± 8.1 ms, Home 318.1 ± 4.6 ms; Home 1.15x faster and 30/30 paired wins
  • full 20260831T005639Z: Home lower mean on 20/20 workloads and lower time in 598/600 rounds; only one CheckJS and one large-predicate round go to tsgo
  • narrowest mean lead: type_predicates_large, 1.14x (323.5 ± 13.4 ms versus tsgo 370.4 ± 6.9 ms)
  • 600 round files / 1,800 successful finite samples retained; provenance verified unchanged; candidate SHA-256 842310b6c24e1e788c33d756bbff0e7df0b0bc60c261d4dcb8552f8c09ccb2cd

Validation:

  • source-marker equivalence tests pass
  • focused instanceof checker regression group passes
  • full ReleaseFast checker suite passes
  • benchmark harness 95/95 passes
  • targeted Pickier and git diff --check pass

README and benchmark README now point to the full detailed snapshot. The eligible Linux ARM64 checkpoint remains 20260829T035150Z at 20/20; no current-code Linux claim was added from this macOS-only host.

8 days ago

Accepted and published the tiny annotated-scope index optimization.

Code/test commit: 96d05423e (perf(ts): avoid indexing tiny annotated scopes (#416)) Docs commit: 3fbfd5ffa (docs(bench): publish tiny-scope results (#416))

General change: one- and two-statement lexical containers now use the existing bounded direct annotated-value scan instead of allocating entries in both persistent index maps. Containers with three or more statements retain the indexed path, including virtual-section semantics and the original direct fallback. A focused regression proves TS2322 behavior and that a two-statement body remains unindexed.

Isolated Home A/B on the unchanged 16,384-family predicate project, 3 alternating warmup pairs + 20 alternating-order measured pairs, all 40 samples retained:

  • exact baseline SHA-256 842310b6c24e1e788c33d756bbff0e7df0b0bc60c261d4dcb8552f8c09ccb2cd: 2699.9 ± 54.0 ms
  • candidate SHA-256 1b401eb95d51702a1a3467c80aede41dfe4107defb690c34f2420194cc2f4fdf: 2651.6 ± 42.2 ms
  • 1.0182× faster, 16/20 paired wins
  • paired reduction 48.3 ms, 95% paired t CI 23.5–73.1 ms, exact two-sided sign p=.0118

Verification: focused ReleaseFast regression, complete ReleaseFast checker suite, targeted Pickier, diff validation, and benchmark harness 95/95 all pass.

Official exact-pin results compare JavaScript TypeScript 6.0.3 with the single native TypeScript/tsgo 7.0.2 competitor:

  • focused 20260831T012734Z: tsc 1053.2 ± 18.7 ms, tsgo 365.7 ± 7.8 ms, Home 314.6 ± 4.8 ms; 1.16× lead, 30/30 paired wins
  • full 20260831T012857Z: Home lowest mean on 20/20 rows and 599/600 individual paired wins; narrowest row type_predicates_large is 315.7 ± 9.5 ms vs tsgo 369.5 ± 8.7 ms, a 1.17× lead

Both official runs retain every sample and verified unchanged compiler provenance before admission and after measurement. The README summary/table and detailed performance document now point to the new full result.

8 days ago

Prepared source-marker reuse is implemented and published.

  • Code: 1ae4ecf (perf(ts): reuse prepared source markers)
  • Docs: 753beaf (docs(bench): publish prepared marker results)
  • The driver now computes the exact marker index once during preparation, uses conservative @ / <reference @filename gates, and passes the same index into checker. config-originated compiler type references remain unconditional. />
  • Focused ReleaseFast driver tests and the supplied-marker checker regression pass; Pickier, zig fmt, and diff checks pass. The unchanged 16,384-family corpus has byte-identical output and exit status before/after.

Same-correctness Home A/B (3 alternating warmup pairs, 20 alternating measured pairs, all samples retained):

  • baseline 2666.8 ± 35.7 ms
  • candidate 2596.0 ± 34.1 ms
  • 1.0273x, 20/20 paired wins
  • paired reduction 70.8 ms; 95% paired t CI 57.2–84.4 ms; exact two-sided sign p=0.0000019

Official exact-pin results (TS 6.0.3 vs native TS/tsgo 7.0.2):

  • focused 20260831T020935Z: 1051.0 ± 22.2 / 367.2 ± 6.5 / Home 305.2 ± 3.7 ms, a 1.20x Home lead, 30/30
  • full 20260831T021055Z: Home lowest mean on 20/20 workloads and lower individual time in 600/600 rounds; provenance verified unchanged before/after

README and detailed benchmark docs now point to the new full result and retain the prior checkpoint as history.

8 days ago

Rejected follow-up: bypassing the annotated-index function/hash probe at callers for one/two-statement scopes.

The change was a semantic no-op and the 24 MB / 16,384-family corpus produced byte-identical output and exit status, but the performance result was not decisive. Same frozen published baseline and candidate, three alternating warmup pairs plus 20 alternating measured pairs, all samples retained:

  • baseline 2661.3 ± 68.8 ms
  • candidate 2644.4 ± 61.3 ms
  • mean ratio 1.0064x
  • 12/20 paired wins
  • paired reduction 16.9 ms, 95% paired t CI -10.0 to 43.9 ms
  • exact two-sided sign p=0.5034

Rejected with no commit. Source was reverted and zig-out/bin/home-tsc was restored byte-for-byte to published SHA-256 161e0142518e25a29cc2f60cff18364a2dbcff0719b89a9fec795dba9a195bfa. Raw rounds are retained locally as rejected-tiny-index-probe-ab.sFlTch.

8 days ago

Rejected follow-up: passing precomputed virtual-filename and JSDoc-presence facts into parser initialization.

The 24 MB / 16,384-family corpus produced byte-identical output and exit status, but the balanced A/B did not establish an improvement. Three alternating warmup pairs plus 20 alternating measured pairs, all samples retained:

  • baseline 2691.5 ± 103.9 ms
  • candidate 2671.8 ± 106.4 ms
  • mean ratio 1.0074x
  • 11/20 paired wins
  • paired reduction 19.7 ms, 95% paired t CI -34.0 to 73.4 ms
  • exact two-sided sign p=0.8238

Rejected with no commit. Source was reverted and the published Home binary restored at SHA-256 161e0142518e25a29cc2f60cff18364a2dbcff0719b89a9fec795dba9a195bfa. Raw rounds are retained locally as rejected-parser-source-facts-ab.yOnydh.

8 days ago

Accepted and pushed the exact import-equals presence optimization.

  • Code: 3454bba (perf(ts): cache exact import-equals presence)
  • Docs: 4a83239 (docs(bench): publish exact import scan results)
  • Exact final binary SHA-256: 6182abe599c8ee69a16161f061010ea7fc0232928748a887201321c9048491f3
  • Fair unchanged 4,096-family recursive-generic Home A/B: 2063.9±199.4 ms → 1205.9±115.5 ms (1.7115×), 20/20 paired wins; paired reduction 858.0 ms, 95% CI 774.6–941.3 ms, exact sign p=.0000019. Both binaries produced identical exit status/stdout/stderr.
  • Exact pinned focused run 20260831T030019Z: TS 6.0.3 175.6±51.9 ms, native TS 7.0.2 81.5±24.3 ms, Home 17.1±2.3 ms (4.76×), 30/30 paired wins.
  • Exact pinned full run 20260831T030052Z: Home lowest mean on 20/20 workloads and 598/600 individual rounds. Both retained losses and the control-flow host outlier are documented without filtering.
  • Validation: exact-fact regression, existing ReleaseFast import-equals test group, ReleaseFast production build, scoped Pickier, formatting, diff checks, and before/after benchmark provenance verification all pass.

The optimization is semantic: ordinary imports plus unrelated assignments now pay one exact HIR scan instead of repeated statement-list searches; real namespace and require import-equals declarations keep the original resolution path.

8 days ago

Rejected and fully reverted a checked-JS declaration-space candidate; no commit created.

The candidate added an exact declaration-kind gate for empty/non-declaration statement lists and indexed same-name interfaces instead of comparing every class with every statement. A five-second 16,384-family profile reduced checkDeclarationSpaceDiagnosticsImpl from 1,517 top-of-stack samples to 7, but the fair unchanged 2,048-family wall-clock A/B did not clear the acceptance bar: baseline 3550.6±270.2 ms, candidate 3448.4±271.3 ms (1.0296×), only 13/20 paired wins, mean paired reduction 102.2 ms with 95% CI −20.9 to 225.4 ms and exact sign p=.2632. All samples were retained.

The candidate produced identical exit status/stdout/stderr, but profile movement alone is insufficient without decisive end-to-end wall-time evidence. Source is clean and zig-out/bin/home-tsc is restored byte-for-byte to published SHA-256 6182abe599c8ee69a16161f061010ea7fc0232928748a887201321c9048491f3. Raw local rounds are retained in ignored declaration-space-index-ab.2048.

8 days ago

Accepted and pushed the JSDoc global duplicate-name index.

  • Code: 800fff7 (perf(ts): index JSDoc global duplicate names)
  • Docs: abfacb3 (docs(bench): publish JSDoc name index results)
  • Exact final binary SHA-256: b02ecda7944783f0437b8c205177fb66b4b09aa6e9ddaf5d331161114626a633
  • Fair unchanged 2,048-family CheckJS/JSDoc Home A/B: 1857.4±94.4 ms → 1793.6±48.8 ms (1.0356×), 17/20 paired wins; paired reduction 63.9 ms, 95% CI 24.1–103.7 ms, exact sign p=.0026. CPU time independently fell 3.25% with the same direction and a positive paired interval.
  • Baseline/candidate exit status, stdout, and stderr match on the valid stress corpus; a deliberately invalid multi-file duplicate fixture also emits byte-identical diagnostics in the same order.
  • Exact pinned focused run 20260831T040831Z: TS 6.0.3 245.1±92.0 ms, native TS 7.0.2 59.7±3.1 ms, Home 40.7±9.4 ms (1.47×), 29/30 paired wins.
  • Exact pinned full run 20260831T040903Z: Home lowest mean on 20/20 workloads and 600/600 individual rounds.
  • Validation: focused diagnostic-order regression, broader ReleaseFast JSDoc typedef checker subset, ReleaseFast production build, scoped Pickier, formatting/diff checks, and before/after provenance verification all pass.

The change replaces all-pairs unequal-name rejection with source-ordered same-name chains; every relevant pair and observable diagnostic order is preserved.

8 days ago

Accepted and pushed 12e4f73efa1206bde64959141cfd1c1b787695ee (perf(ts): fast-path ASCII identifier scans (#416)).

The scanner previously called both UTF-8 whitespace probes for every byte of every identifier before testing the ordinary ASCII continuation case. The change takes a cheap ASCII path while preserving escaped identifiers and the existing non-ASCII whitespace/line-terminator path. A regression test now verifies that U+00A0 and U+2028 still terminate identifiers and that U+2028 preserves the newline flag.

Validation:

  • ReleaseFast ts_lexer tests passed.
  • ReleaseFast home-tsc production build passed.
  • zig fmt --check and git diff --check passed.
  • On the unchanged official generator scaled to 32,768 type-predicate families, baseline and candidate both exited 0 with byte-identical empty stdout/stderr.
  • Exact-final A/B (b02ecda… -> aae87472…), 3 balanced warmup pairs + 20 alternating measured pairs: CPU 7,353.4 ± 112.6 ms -> 7,129.1 ± 108.2 ms (1.0315×), 20/20 paired wins, paired reduction 224.3 ms, 95% CI 178.9–269.7 ms, exact sign p=0.0000010. Wall time had 17/20 wins but two retained early machine-stall outliers widened its t-interval; no samples were discarded.
  • An independent pre-test-layout run of the same production logic had wall 5,327.9 ± 338.9 ms -> 5,114.1 ± 261.0 ms (1.0418×), 17/20 wins, paired 95% CI 100.7–326.8 ms; CPU agreed at 1.0391×.
  • Exact committed-binary official result 20260831T050122Z (30 interleaved runs after 3 warmups, provenance verified before/after at aae87472…): TS 6.0.3 1,017.3 ± 46.6 ms, native TS 7.0.2 (tsgo) 351.6 ± 8.1 ms, Home 288.4 ± 5.7 ms; Home is 1.22× faster.

I’ll publish the new full-suite snapshot and README/doc table in a separate small docs commit after the full 20-workload run.

8 days ago

Published and pushed the benchmark record in 25437ff35d0b96a5a9e0fc942ef81bb29b506bb3 (docs(bench): publish ASCII scanner results (#416)).

Fresh exact-binary full-suite result: 20260831T050307Z.

  • TS 6.0.3 vs the single native TS 7.0.2 (tsgo) vs Home.
  • 20/20 workloads have the lowest Home mean.
  • 600/600 individual rounds are Home wins.
  • 600 round files / 1,800 successful finite samples retained.
  • Home SHA-256 remained aae87472b82685d59b37aa53218173120f8e6df190a473ca04477cf3b46637d6 before admission and after measurement.
  • Narrowest row: type_predicates_large, 1,018.1 ± 18.0 ms / 360.7 ± 18.3 ms / 290.0 ± 3.8 ms (Home 1.24× faster than native TS 7.0.2).
  • Strongest mean lead: startup, Home 12.27× faster.

The detailed docs now include the complete 20-row table, exact A/B hashes and schedules, the retained wall outliers, the inconclusive shorter confirmation, test gates, and raw result IDs. The root README contains the concise platform summary and links to the detailed report; the harness README points at the new qualified checkpoint.

Statistical precision: the earlier acceptance comment's p=0.0000010 value was the one-sided 20/20 sign tail. The durable docs use the exact two-sided sign-test value, p=0.0000019.

Docs: https://github.com/home-lang/home/blob/main/docs/docs/TS_PERFORMANCE.md#ascii-identifier-scanner-checkpoint README snapshot: https://github.com/home-lang/home#typescript-frontend-benchmark-snapshot

8 days ago

Accepted and pushed 43e1f1ea8156299740b16376b162204713d0f5e8 (perf(ts): gate builtin object name lowering (#416)).

Profiling after the ASCII scanner change showed lowerBuiltinObjectTypeRaw and its failed string comparisons as the next general hotspot. User-defined names previously traversed the complete builtin recipe chain before returning null. The new exact static gate contains all and only the 44 names recognized by the existing specialized and fallback implementations; real builtin names still execute the original recipes unchanged. A focused regression resolves all 44 recipes and rejects prefixed/suffixed lookalikes.

Validation:

  • Mechanical implementation audit: gate 44/44, no missing or extra names.
  • Focused completeness regression passed.
  • Broader ReleaseFast checker builtin subset passed.
  • ReleaseFast production build, formatting, and diff checks passed.
  • Exact-final scaled valid corpus output is byte-identical (both exit 0; empty stdout/stderr).
  • Exact-final 32,768-family A/B (aae87472… -> 58b48a6…), 3 balanced warmup pairs + 20 alternating measured pairs:
    • wall: 4,981.9 ± 172.9 ms -> 4,890.1 ± 149.9 ms (1.0188×), 17/20 wins, paired reduction 91.9 ms, 95% CI 30.2–153.6 ms, exact two-sided sign p=0.0025768;
    • CPU: 4,960.5 ± 157.6 ms -> 4,866.9 ± 135.7 ms (1.0192×), 16/20 wins, paired reduction 93.6 ms, 95% CI 39.2–148.0 ms, exact two-sided sign p=0.0118179.
  • Independent pre-test-layout run agreed: 1.0207× wall and 1.0202× CPU, both 19/20 wins with positive paired intervals.
  • Exact committed-binary official result 20260831T053315Z: TS 6.0.3 999.6 ± 27.0 ms, native TS 7.0.2 (tsgo) 349.9 ± 11.5 ms, Home 280.7 ± 6.7 ms; Home is 1.25× faster. Provenance stayed 58b48a6… before/after.

A fresh complete 20-workload snapshot and docs/README update are next as a separate small commit.

8 days ago

Published the exact builtin-object-name-gate checkpoint in dc6101a.

8 days ago

Accepted and pushed 94a5b3589 (perf(ts): reuse string interner hashes).

Mechanism: compute Wyhash once, preserve the identical low-bit shard selection, and pass that exact hash through adapted read lookup, write-lock double-check, insertion, and lookup operations. Locking, byte equality, stable IDs, and allocation ordering are unchanged.

Validation: ReleaseFast interner suite, ReleaseFast type-predicate checker subset, ReleaseFast production build, formatting/diff checks, and byte-identical successful output.

Exact baseline/candidate SHA-256: 58b48a6b39d76c7ffa6cf3343490bd7da423692135076f3cbee6da8b54aa8206 / 977e3cc7ab65ff1c0e1f7f382aebd8258e45baea5ed1fb2b03892b44c11fa9f0.

Independent retained A/B evidence (three warmup pairs, 20 alternating measured pairs each):

  • 32,768 families: CPU 4730.5 ± 34.8 ms -> 4706.2 ± 45.5 ms (1.0052x; paired reduction 24.3 ms, 95% CI 0.5–48.2 ms).
  • 65,536 families: CPU 9824.1 ± 84.5 ms -> 9764.4 ± 73.6 ms (1.0061x; 15/20; paired reduction 59.8 ms, 95% CI 4.7–114.9 ms; exact two-sided sign p=0.0414).
  • Wall means were lower at both scales but their confirmatory intervals narrowly crossed zero, so the CPU evidence is the retention basis.

A fresh profile removes the duplicated string-map get leaf and reduces Wyhash leaf samples from 34 to 16. Official TS 6.0.3 vs native TS 7.0.2 (tsgo) confirmation and docs follow in a separate commit.

8 days ago

Published the complete prehashed-interner benchmark record in a5db3b597.

  • Detailed mechanism, two independent confirmatory A/B scales, confidence intervals, exact sign tests, profile evidence, validation, and both reverted flat probes: https://github.com/home-lang/home/blob/a5db3b597b36f38068f38b4eb4c4c1753b7b0bda/docs/docs/TS_PERFORMANCE.md#prehashed-string-interner-checkpoint
  • Exact committed focused result: 20260831T063321Z (TS 6.0.3 980.1 ± 15.5 ms; native TS 7.0.2 342.9 ± 7.2 ms; Home 274.2 ± 3.7 ms, 1.25x lead).
  • Latest complete result: 20260831T063443Z; Home has the lowest mean on 20/20 workloads and wins 600/600 paired rounds.
  • README and benchmark checkpoint table now point to the same detailed snapshot.
  • Candidate provenance before/after: 977e3cc7ab65ff1c0e1f7f382aebd8258e45baea5ed1fb2b03892b44c11fa9f0.
8 days ago

Pushed 79b6b6360 (perf(ts): reuse type interner hashes (#416)) directly to origin/main as Chris Breuer.

This checkpoint carries the already-computed TypeKey Wyhash through every sharded type-map probe and publication. It preserves the same 64-shard selection, structural TypeKey.eql checks, owned slice keys, locks, stable TypeIds, and pool publication semantics. It also reserves shard-table capacity before pool publication so insertion remains allocation-free after the type becomes visible.

Exact binaries:

  • baseline 977e3cc7ab65ff1c0e1f7f382aebd8258e45baea5ed1fb2b03892b44c11fa9f0
  • candidate e313cd557ae66e601792c947eff07a06c8a19b3421c7537623be3d2f9f85899b

Exact-output checks on the unchanged 32,768- and 65,536-family predicate corpora: both binaries exit 0 with identical empty stdout/stderr at both scales.

32,768 families, 3 alternating warmup pairs + 20 retained alternating measured pairs (bench/vs_tsgo/results/type-interner-prehash.FxAMAs/final-ab.32768):

  • wall: 4689.7 ± 29.9 ms -> 4648.9 ± 33.4 ms, 1.0088x, 16/20 lower candidate pairs, paired reduction 40.8 ms, paired 95% CI 19.8-61.8 ms, exact two-sided sign p=0.0118
  • process CPU: 4681.0 ± 27.3 ms -> 4639.9 ± 32.7 ms, 1.0089x, 16/20 lower candidate pairs, paired reduction 41.1 ms, paired 95% CI 19.9-62.3 ms, exact two-sided sign p=0.0118

65,536 families, unchanged generator with only family count doubled, 3 alternating warmup pairs + 20 retained alternating measured pairs (bench/vs_tsgo/results/type-interner-prehash.FxAMAs/final-ab.65536):

  • wall: 9679.6 ± 100.9 ms -> 9611.4 ± 77.8 ms, 1.0071x, 16/20 lower candidate pairs, paired reduction 68.2 ms, paired 95% CI 16.3-120.1 ms, exact two-sided sign p=0.0118
  • process CPU: 9664.1 ± 93.1 ms -> 9596.5 ± 72.6 ms, 1.0070x, 16/20 lower candidate pairs, paired reduction 67.6 ms, paired 95% CI 21.3-114.0 ms, exact two-sided sign p=0.0118

The unfiltered 10-pair screen was also positive (wall 1.0110x, CPU 1.0100x, both paired intervals positive). The post-change sample profile removes the old 58-sample TypeKey map getIndex leaf; normal map growth remains.

Validation passed:

  • ReleaseFast full uppercase and lowercase type-interner test groups, including concurrency and allocation-failure coverage
  • ReleaseFast checker type predicate subset
  • ReleaseFast production home-tsc build
  • exact output/exit checks at both scales
  • zig fmt --check, git diff --check

Next: official TypeScript 6.0.3 vs native TypeScript 7.0.2 (tsgo) benchmark and documentation refresh.

8 days ago

Published the official TS 6.0.3 vs native TS 7.0.2 (tsgo) results and documentation in 2f6c5924e (docs(bench): publish type interner prehash results (#416)), pushed directly to origin/main as Chris Breuer.

Official focused result 20260831T071216Z (30 fresh processes after 3 warmups):

  • TS 6.0.3: 977.9 ± 10.1 ms
  • native TS 7.0.2 / tsgo: 343.3 ± 7.9 ms
  • Home: 274.5 ± 8.4 ms
  • Home lead over the fastest competitor: 1.25x

Official complete result 20260831T071413Z:

  • exact pins verified: TS 6.0.3 and native TS 7.0.2
  • compiler/tool provenance identical before and after measurement
  • 20/20 workloads have the lowest Home mean
  • Home wins 600/600 individual interleaved rounds
  • strongest mean lead: startup, 12.16x
  • narrowest mean lead: type_predicates_large, 1.26x
  • all 600 round files / 1,800 successful finite samples retained without filtering
  • candidate SHA-256 verified before and after: e313cd557ae66e601792c947eff07a06c8a19b3421c7537623be3d2f9f85899b

Documentation now includes the full current 20-row table, the exact A/B method and statistics at both scales, profile evidence, validation, hashes, raw-result IDs, and limitations. The root README keeps the requested brief platform table and links to the detailed report; the benchmark README points to the new qualified result. The published table was programmatically checked against all 20 rows generated from the raw result. Targeted Pickier passes on all three edited Markdown files; the repository-wide invocation safely refused the 195,534-file ignored-artifact scan before linting.

Current pushed head: 2f6c5924e. Native Linux rerun for this exact binary remains pending an eligible native Linux filesystem/host; the existing qualified Linux checkpoint still wins 20/20.

8 days ago

Recorded and fully reverted the next profile-guided probe in ca52f435f (docs(bench): record annotated lookup probe (#416)), pushed to origin/main as Chris Breuer.

Probe: remove a duplicate top-level annotated-variable lookup after visibleAnnotatedIdentifierTypeNode had already traversed the same parent chain through the root block. The cleanup was logically valid, preserved exact outputs at 32,768 and 65,536 families, and passed the focused ReleaseFast annotation suite.

The unfiltered 10-pair screen looked strong (wall 1.0108x, CPU 1.0106x, 10/10 lower candidate pairs, positive paired intervals), so it advanced to independent confirmations.

32,768 families, 3 warmup pairs + 20 alternating measured pairs:

  • wall 4638.4 ± 41.2 -> 4611.3 ± 48.4 ms, 1.0059x, 15/20, paired CI -7.0 to 61.1 ms
  • CPU 4631.7 ± 39.5 -> 4603.9 ± 45.9 ms, 1.0060x, 15/20, paired CI -5.0 to 60.6 ms

65,536 families, 3 warmup pairs + 20 alternating measured pairs:

  • wall 9632.2 ± 79.7 -> 9582.9 ± 75.1 ms, 1.0052x, 13/20, paired CI -6.9 to 105.6 ms
  • CPU 9619.1 ± 72.4 -> 9568.6 ± 69.9 ms, 1.0053x, 14/20, paired CI -1.5 to 102.5 ms

The means remained positive, but both independent scale intervals crossed zero. Per the established acceptance rule, the code change was reverted rather than claimed as a win. All raw rounds remain under bench/vs_tsgo/results/annotated-root-lookup.3jRs1g; the production binary is restored to accepted SHA-256 e313cd557ae66e601792c947eff07a06c8a19b3421c7537623be3d2f9f85899b. Current tracked compiler remains the type-interner prehash checkpoint.

8 days ago

Pushed 7f02a93dd (perf(ts): cache hot string interner lookups (#416)).

This adds a 64-entry direct-mapped hint per string-interner shard (32 KiB total). Each entry stores a hash fingerprint plus local index; every possible hit is checked against the canonical owned bytes while holding the existing shared shard lock. Fingerprint/slot collisions therefore fall through to the canonical prehashed map and cannot alter string identity, IDs, ownership, or locking semantics.

Controlled A/B against accepted baseline e313cd557ae66e601792c947eff07a06c8a19b3421c7537623be3d2f9f85899b; candidate be09b86b82af35703a8f812dad92014ddf5250e0c9e721c2078bc82a791ac35d. Exact output and exit status matched at both scales.

  • 32,768 declarations, 20 alternating measured pairs after 3 warmups: wall 4715.364±52.290 ms → 4583.652±51.235 ms (1.028735×; 19/20 pairs; paired delta 131.712 ms, 95% CI 97.091–166.334; sign p=.0000401). CPU 4706.648±50.162 → 4574.956±47.673 ms (1.028785×; 20/20; paired delta 131.692 ms, CI 98.453–164.932; p=.0000019).
  • 65,536 declarations, independent 20-pair scale check: wall 9776.164±93.619 → 9527.935±122.345 ms (1.026053×; 18/20; paired delta 248.229 ms, CI 162.192–334.266; p=.0004025). CPU 9720.355±90.044 → 9465.296±111.810 ms (1.026947×; 19/20; paired delta 255.059 ms, CI 176.910–333.208; p=.0000401).
  • Profile evidence: string_interner.Interner.internAt leaf samples fell 220 → 92; byte-equality samples stayed essentially flat (207 → 205), consistent with avoiding map probes while preserving exact-byte verification.

Validation: ReleaseFast string-interner suite, ReleaseFast checker type-predicate subset, production build, exact-output comparisons, zig fmt --check, and git diff --check all pass. Raw artifacts: bench/vs_tsgo/results/string-interner-hot-cache.T0d2PQ/ (gitignored). Next I am running the official TypeScript 6.0.3 vs native TypeScript/tsgo 7.0.2 focused and complete benchmark suites, then will publish the tables.

8 days ago

Published the official TS 6.0.3 vs native TS/tsgo 7.0.2 results in 768c0d388 (docs(bench): publish string cache results (#416)).

Focused 30-round result 20260831T081314Z:

  • TS 6.0.3: 985.8 ± 14.9 ms
  • native TS/tsgo 7.0.2: 342.1 ± 5.5 ms
  • Home: 257.3 ± 3.1 ms
  • Home lead over the fastest competitor: 1.33×

Complete 20-workload result 20260831T081507Z:

  • Home has the lower mean on 20/20 admitted workloads.
  • Home has the lower individual time in 599/600 retained interleaved rounds.
  • The only individual loss is a retained 49.96 ms Home outlier in tsx_components round 5 versus 47.83 ms for tsgo; Home still wins that workload mean 22.2 ± 5.2 ms versus 47.0 ± 1.2 ms (2.11×).
  • The narrowest mean lead is type_predicates_large: 263.5 ± 8.2 ms versus tsgo 345.9 ± 9.1 ms (1.31×).
  • Strongest mean lead is startup: 3.5 ± 1.0 ms versus tsgo 40.9 ± 8.4 ms (11.68×).

Every sample is retained. Compiler and tool identities were verified unchanged before admission and after measurement; the Home payload is the committed 7f02a93dd binary with SHA-256 be09b86b82af35703a8f812dad92014ddf5250e0c9e721c2078bc82a791ac35d. The detailed A/B statistics, current 20-row table, focused/full IDs, fairness caveats, and validation are in docs/docs/TS_PERFORMANCE.md; the root README table links there, and bench/vs_tsgo/README.md indexes the new qualified snapshot.

8 days ago

Measured and rejected a follow-on checker-local memoization for containsFreeTypeParameter; the source change is fully reverted and the accepted be09…35d binary restored.

On the unchanged 32,768-family predicate corpus after three alternating warmup pairs and ten measured alternating pairs:

  • wall: accepted 4497.1 ± 37.4 ms vs candidate 4517.5 ± 79.8 ms (0.9955×; candidate lower in 4/10; paired delta -20.4 ms, 95% CI -88.2–47.5)
  • process CPU: accepted 4486.4 ± 35.9 ms vs candidate 4501.7 ± 64.9 ms (0.9966×; 3/10; paired delta -15.3 ms, CI -71.1–40.4)

Exact output/exit status matched and the focused ReleaseFast predicate suite passed, but the checker-local hash-map lookup/maintenance did not justify the graph walks it avoided. Raw rounds: bench/vs_tsgo/results/free-type-param-cache.Npjpjh/preliminary-ab.32768/ (gitignored). The negative result is documented in 4272ee9d5 (docs(bench): record free type cache probe (#416)).

8 days ago

Pushed efdf8b574 (perf(ts): skip unicode probes at ascii boundaries (#416)).

skipTrivia now returns immediately at ordinary ASCII token boundaries. Every supported non-ASCII whitespace or line terminator starts with a high byte, so the existing UTF-8 recognition remains unchanged; this only avoids probing all fixed Unicode sequences when the current byte is ASCII.

Exact Home A/B against accepted baseline be09b86b82af35703a8f812dad92014ddf5250e0c9e721c2078bc82a791ac35d; candidate 150c2206d8d38990a2d0054d03c8939357960d5a26c0e6c0b9ca560d7fc8581b. Output and exit status match at 32,768 and 65,536 families.

  • 32,768 independent confirmation (3 warmup pairs, 20 alternating pairs): wall 4477.425±35.909 → 4435.052±44.260 ms (1.009554×; 18/20; paired delta 42.372 ms, 95% CI 15.916–68.829; sign p=.0004025). CPU 4466.503±34.587 → 4426.825±42.372 ms (1.008963×; 18/20; paired delta 39.678 ms, CI 14.283–65.073; p=.0004025).
  • 65,536 first confirmation retained one 11.51 s baseline outlier: wall 9357.467±511.103 → 9133.129±49.292 ms (1.024563×; 19/20; paired CI -5.927–454.604); CPU 9300.721±327.117 → 9118.373±45.452 ms (1.019998×; 19/20; CI 31.738–332.957). No samples were filtered.
  • Independent 65,536 repeat with reversed starting order: wall 9212.690±54.990 → 9079.151±52.445 ms (1.014708×; 20/20; paired delta 133.540 ms, CI 100.998–166.082; p=.0000019). CPU 9200.369±53.627 → 9064.588±51.233 ms (1.014979×; 20/20; paired delta 135.781 ms, CI 104.171–167.392; p=.0000019).

A fresh profile at 65,536 families reduces unicodeWhitespaceLengthAt from 35 leaf samples in the prior 32,768 profile to 3 total stack occurrences despite double the workload. Validation: complete ReleaseFast lexer suite, ReleaseFast parser suite, ReleaseFast checker predicate subset, production build, exact-output gates at both scales, formatting, and diff checks. Raw artifacts: bench/vs_tsgo/results/ascii-trivia-fast-path.IbEFgd/ (gitignored). I am now rerunning the official TS 6.0.3 vs native TS/tsgo 7.0.2 suite.

8 days ago

Published the ASCII-trivia checkpoint and refreshed official results in 6c29e04d5 (docs(bench): publish ascii trivia results (#416)).

Focused result 20260831T091833Z (30 interleaved cold-process rounds after 3 warmups):

  • TS 6.0.3: 980.2 ± 14.7 ms
  • native TS/tsgo 7.0.2: 345.0 ± 13.2 ms
  • Home: 256.2 ± 8.2 ms
  • Home lead over fastest competitor: 1.35×

Complete result 20260831T091953Z:

  • Home lower mean on 20/20 admitted workloads.
  • Home lower individual time in 599/600 retained rounds.
  • Sole individual loss: retained commonjs_graph round 15, Home 64.27 ms vs tsgo 47.58 ms; Home still wins the workload mean 33.7 ± 5.8 ms vs 48.6 ± 0.9 ms (1.44×).
  • Narrowest mean lead: type_predicates_large, Home 257.1 ± 11.4 ms vs tsgo 339.7 ± 4.6 ms (1.32×).
  • Strongest mean lead: startup, Home 3.4 ± 1.1 ms vs tsgo 41.9 ± 13.6 ms (12.20×).

Every sample is retained. Compiler/tool provenance was verified unchanged before admission and after measurement; the Home payload is the committed efdf8b574 binary with SHA-256 150c2206d8d38990a2d0054d03c8939357960d5a26c0e6c0b9ca560d7fc8581b. The detailed A/B table includes both independent 65,536-family confirmations, including the unfiltered noisy one. The root README table links to the full report and bench/vs_tsgo/README.md indexes the new snapshot.

8 days ago

Measured and rejected replacing the lexer keyword length buckets with std.StaticStringMap; the behavior change is fully reverted and the accepted 150c…581b binary restored.

32,768-family screen after 3 alternating warmup pairs and 10 alternating measured pairs:

  • wall: accepted 4425.8 ± 44.9 ms vs candidate 4441.2 ± 40.6 ms (0.9965×; candidate lower in 6/10; paired delta -15.4 ms, 95% CI -61.2–30.4)
  • process CPU: accepted 4415.4 ± 43.2 ms vs candidate 4432.3 ± 40.5 ms (0.9962×; 5/10; paired delta -17.0 ms, CI -61.0–27.1)

Exact output/exit status matched and the complete ReleaseFast lexer suite passed, but the static-map lookup cost exceeded the comparisons it avoided. Raw rounds: bench/vs_tsgo/results/static-keyword-map.7qVurl/preliminary-ab.32768/ (gitignored). d10962278 documents the rejection and corrects the existing lookup comment: the largest length bucket has 16 candidates, not 6.

8 days ago

Measured and rejected a purpose-built collision-free keyword index; the implementation is fully reverted and the accepted 150c2206d8d38990a2d0054d03c8939357960d5a26c0e6c0b9ca560d7fc8581b binary restored.

The candidate used a compile-time-verified 256-byte index keyed by identifier length, first two bytes, and final byte, followed by an exact byte comparison. It preserved all 81 keyword round trips, the complete ReleaseFast lexer suite, and exact compiler output.

32,768-family screen after 3 alternating warmup pairs and 10 alternating measured pairs:

  • wall: accepted 4701.1 ± 166.1 ms vs candidate 4749.8 ± 303.7 ms (0.9897×; candidate lower in 5/10; paired delta -48.7 ms, 95% CI -229.5–132.1)
  • process CPU: accepted 4666.3 ± 148.6 ms vs candidate 4700.7 ± 253.9 ms (0.9927×; 5/10; paired delta -34.4 ms, CI -180.4–111.6)

The host was slower than the prior batch, so only paired within-batch differences are interpreted. The arithmetic/table load did not justify replacing the inlined length buckets, and the candidate did not proceed to larger-scale confirmation. Raw rounds: bench/vs_tsgo/results/perfect-keyword-index.YBAnkb/preliminary-ab.32768/ (gitignored). The negative result is documented in 4f1d9e7ec (docs(bench): record perfect keyword probe (#416)).

8 days ago

Rejected and fully reverted the exact source-marker gate for legacy inline @target scans.

The candidate used the existing exact Aho–Corasick marker index to skip the raw @target search only when the source contained no @; sources containing @ retained the original parser. Fixed baseline/candidate binaries produced byte-identical output at 32,768 and 65,536 families.

Ten paired 32,768-family rounds after three alternating warmup pairs:

  • wall: accepted 5133.2 ± 503.0 ms, candidate 5178.6 ± 505.6 ms (0.9912×; 5/10 candidate wins; paired 95% CI -242.1–151.3 ms)
  • process CPU: accepted 5027.4 ± 401.3 ms, candidate 5020.1 ± 321.2 ms (1.0015×; 6/10 candidate wins; paired 95% CI -140.5–155.2 ms)

Neither interval excluded zero, so the branch did not earn its keep. Raw rounds are retained under target-option-gate.shBw7j/preliminary-ab.32768; the compiler remains on the accepted implementation. Documentation: https://github.com/home-lang/home/commit/34e52b8ca

8 days ago

Rejected and fully reverted the parser virtual-section fact probe.

The candidate reused the driver's exact one-pass marker index instead of rescanning every source for @filename: and @Filename: in Parser.init, while preserving the scanning initializer for direct parser callers. ReleaseFast parser/driver suites and exact output at 32,768 and 65,536 families passed.

The 10-pair 32,768 screen and independent 20-pair repeat showed attractive ~1.5–2.0% lower candidate means, but every paired interval crossed zero. The decisive 20-pair 65,536 run did not reproduce the margin:

  • wall: accepted 10054.8 ± 378.2 ms, candidate 10039.3 ± 372.8 ms (1.0015×; 13/20 candidate wins; paired 95% CI -120.8–151.7 ms)
  • process CPU: accepted 9911.9 ± 309.1 ms, candidate 9908.9 ± 323.3 ms (1.0003×; 10/20 candidate wins; paired 95% CI -107.2–113.3 ms)

No scale-consistent win, so the API change did not earn its keep. All raw rounds remain under parser-virtual-section-fact.BUr50C; documentation: https://github.com/home-lang/home/commit/b9b344ea1

8 days ago

Rejected and fully reverted the declaration-diagnostic pass census.

The candidate classified top-level HIR kinds once and skipped each of eight specialized merge passes only when its prerequisite kinds were absent. The full ReleaseFast checker suite passed, and fixed binaries produced byte-identical output at 32,768 and 65,536 families.

Ten paired 32,768-family rounds after three alternating warmup pairs:

  • wall: accepted 4762.9 ± 84.4 ms, candidate 4757.8 ± 128.0 ms (1.0011×; 6/10 candidate wins; paired 95% CI -107.5–117.8 ms)
  • process CPU: accepted 4732.5 ± 60.6 ms, candidate 4725.7 ± 101.0 ms (1.0014×; 6/10 candidate wins; paired 95% CI -81.3–94.9 ms)

The census cost offset the empty passes, so there is no defensible win. Raw rounds remain under declaration-pass-gates.4tu8mP/preliminary-ab.32768; documentation: https://github.com/home-lang/home/commit/a278ea4cb

8 days ago

Accepted source-marker reuse in 5efbd19 (pushed directly to main).

What changed:

  • Program now borrows the SourceMarkerIndex already produced by ts_driver.prepareSource instead of rescanning every file with a second matcher.
  • The shared matcher now includes the two Program-only facts, interface and exports.
  • Pre-compilation helper callers retain an owned-scan fallback; compilation replacement clears borrowed indexes before freeing storage.
  • A regression assertion verifies prepared files point at Compilation.source_markers rather than an owned rescan.

Correctness gates:

  • focused source_markers tests: 3/3
  • full ReleaseFast ts_program suite: pass
  • full ReleaseFast ts_checker suite: pass
  • fixed baseline/candidate output at 32,768 and 65,536 families: identical exit 0, stdout, and stderr
  • benchmark harness: 95/95; installed baselines report Version 6.0.3 and Version 7.0.2. Native TS 7 and tsgo remain one competitor; the superseded 7.0.0-dev.20260707.2 build is rejected by the harness.

Fixed binaries:

  • baseline SHA-256: 150c2206d8d38990a2d0054d03c8939357960d5a26c0e6c0b9ca560d7fc8581b
  • candidate SHA-256: 0d2aed7253152acb66965e5148d09c5a50bf7512e9062faecee0daa70caa3f60

Paired A/B, three alternating warmup pairs, reversed order each measured round, no samples removed:

  • 32,768 families, 20 pairs: wall 5389.9 ± 460.6 ms -> 4961.4 ± 296.3 ms (1.0864x, 19/20 wins, paired 95% CI +242.7..+614.2 ms); CPU 5256.2 ± 355.2 -> 4856.8 ± 236.2 ms (1.0822x, 19/20, CI +255.4..+543.4 ms).
  • 65,536 families, 20 pairs: wall 10967.9 ± 968.4 ms -> 10533.7 ± 979.8 ms (1.0412x, 12/20 wins, paired 95% CI +4.4..+864.0 ms); CPU 10703.8 ± 782.2 -> 10202.3 ± 746.9 ms (1.0492x, 16/20, CI +187.9..+815.0 ms).

The larger run saw unrelated builds begin during measurement; all samples remain retained and the paired wall and CPU intervals both stay positive. Raw evidence is under bench/vs_tsgo/results/program-source-marker-reuse.Ii55xS. Next: fresh official TS 6.0.3 / native tsgo 7.0.2 focused and full checkpoints, then docs + README table update.

8 days ago

Official checkpoints and documentation are now published in 363cb64 (pushed to main).

Focused checkpoint 20260831T214804Z, 30 interleaved rounds after 3 warmups:

  • TS 6.0.3: 1185.5 ± 109.7 ms
  • native tsgo 7.0.2: 408.2 ± 33.7 ms
  • Home: 284.6 ± 25.9 ms
  • Home is 1.43x faster than the fastest competitor, wins 30/30 pairs, paired 95% fastest-competitor-minus-Home interval +113.7..+133.6 ms.
  • 30 round files / 90 finite successful samples; provenance verified unchanged.

Full checkpoint 20260831T215035Z, same immutable Home binary:

  • lower Home mean on 20/20 admitted workloads
  • 600/600 paired round wins
  • 600 round files / 1800 finite successful samples, zero failures, no filtering
  • every row has a positive paired 95% competitor-minus-Home interval
  • strongest mean lead: startup 12.06x
  • narrowest mean lead: 1.50x, shared by commonjs_graph and type_predicates_large
  • compiler provenance verified unchanged before admission and after measurement

The benchmark reports and metadata confirm the exact comparison is JavaScript TS 6.0.3 versus the single native TS 7/tsgo 7.0.2 competitor. The superseded 7.0.0-dev.20260707.2 build remains a rejection-test input only.

Docs:

  • README concise cross-platform table and link updated
  • bench/vs_tsgo/README.md qualified result updated
  • docs/docs/TS_PERFORMANCE.md contains the complete 20-row table, source-marker A/B hashes/method/intervals, focused result, fairness caveat, raw IDs, and reproduction details
  • docs/docs/PARITY-STATUS.md updated to the same checkpoint

Validation: 95/95 harness tests and pickier on all edited Markdown files pass. Next cross-platform target remains the pinned Linux ARM64 checkpoint, whose older CheckJS lead is only 1.02x.

8 days ago

Follow-up marker-index probes are documented in b5a7346 (pushed to main); production source remains unchanged from the accepted 5efbd19 optimization.

Rejected alternative 1: replace the combined marker pass with 39 independent exact indexOf searches. On the unchanged 100,993,656-byte source, three invocations of ten alternating in-process rounds measured Aho at 311.855 / 266.118 / 268.457 ms versus independent searches at 1367.862 / 1389.771 / 1424.940 ms. The alternative is roughly 5x slower.

Rejected alternative 2: specialize this 244-state automaton to u8 transitions. Direct marker timings improved to 240.446 / 250.990 / 240.570 ms; focused marker tests passed and fixed compiler output was exact at both scales. The 10-pair end-to-end screen was slightly positive, but the independent 20-pair 32,768-family confirmation failed the admission rule:

  • wall: 4553.0 ± 160.8 ms before, 4523.3 ± 139.6 ms after; 1.0066x, 10/20 wins, paired 95% CI -17.5..+77.0 ms
  • CPU: 4529.0 ± 149.5 ms before, 4502.1 ± 135.6 ms after; 1.0060x, 10/20 wins, CI -13.6..+67.4 ms

No samples were removed. The u8 change was fully reverted and no 65,536 confirmation was run after the 32,768 gate failed. Raw evidence: bench/vs_tsgo/results/source-marker-state-width.iZsnJ1.

8 days ago

Documented and rejected two exact source-marker trie candidates in 4ea479f (pushed directly to main). Both retained one outer source pass; v2 additionally pruned prefix subtrees whose markers were already found. Production source was fully reverted because neither met the whole-compiler admission gate.\n\nFixed binaries:\n- accepted baseline: 0d2aed7253152acb66965e5148d09c5a50bf7512e9062faecee0daa70caa3f60\n- plain trie: e07847318a52844f4222433db674027b9c2a4604cea3963f496a09c489da2e1c\n- pruned trie: 1657f5c3532fcfd2d4fe97ef3a2754ff62f128fc2c9055f987e5aaa5d619ffbb\n\nCorrectness: both candidates exited 0 with byte-identical stdout/stderr at 32,768 and 65,536 families; focused marker tests, full ReleaseFast checker and Program suites, and 95/95 harness tests passed.\n\nAll A/B runs used three alternating warmup pairs, reversed order each measured round, and no filtering. Plain-trie 32,768 confirmation (20 pairs): wall 4827.5 ± 324.7 -> 4770.7 ± 310.9 ms (1.0119x, 14/20, paired 95% CI -8.0..+121.5); CPU 4754.0 ± 256.0 -> 4707.1 ± 269.6 ms (1.0100x, 13/20, CI -8.4..+102.2). Its 65,536 ten-pair screen was positive, but was not accepted without smaller-scale confirmation.\n\nPruned-trie screens also failed admission: 32,768 wall 4666.1 ± 238.8 -> 4628.9 ± 239.4 ms (1.0080x, 5/10, CI -70.4..+144.7); 65,536 wall 9417.7 ± 179.4 -> 9318.2 ± 165.7 ms (1.0107x, 4/10, CI -116.6..+315.6). CPU intervals crossed zero at both scales too.\n\nThe README now has a concise rejection table and links to the full report. Raw evidence remains under bench/vs_tsgo/results/source-marker-trie.20260831T153305.99359 and source-marker-pruned-trie.20260831T160024.69935. The qualified TS 6.0.3 vs native TS 7.0.2 snapshot is unchanged.

8 days ago

Parser-local interner cache probe is documented in e008b3e (pushed directly to main) and fully reverted from production.\n\nThe 64-entry parser-local cache required an exact hash, length, and full source-byte match before reusing an already-published StringId; misses reused the precomputed hash in the canonical shared interner. Focused ReleaseFast parser and interner suites passed, and fixed output was byte-identical at 32,768 and 65,536 families. Candidate SHA-256: 60ceb2f534ee01859e27f4ac3fabbd6630679b7361e90852f423bbdec087d97a; baseline: 0d2aed7253152acb66965e5148d09c5a50bf7512e9062faecee0daa70caa3f60.\n\nThe initial 32,768-family gate failed after three alternating warmup pairs and ten reversed-order measured pairs with no filtering: wall 4716.3 ± 154.9 ms vs 4721.7 ± 276.3 ms (0.9989x, 5/10 candidate wins, paired 95% CI -123.8..+112.9); CPU 4665.3 ± 127.3 ms vs 4666.0 ± 234.1 ms (0.9999x, 5/10, CI -99.6..+98.2). No confirmation or 65,536 timing was run after the gate failed. Raw evidence: bench/vs_tsgo/results/parser-local-interner-cache.20260831T162449.18110.

8 days ago

Declaration-space marker gate probe is documented in 06bfab5 (pushed directly to main) and fully reverted.\n\nThe candidate conservatively skipped sibling namespace/class-interface/enum/type-alias merge passes only when attached exact source markers made the declaration kind impossible; false positives and source-less checker callers retained the old path. The merge-focused ReleaseFast checker gate passed, and fixed output matched exactly at 32,768 and 65,536 families. Candidate SHA-256: 41b9d70b977818d1548ae375d98ff3858a4a02e266b11c40130babfc6b984ad5; baseline: 0d2aed7253152acb66965e5148d09c5a50bf7512e9062faecee0daa70caa3f60.\n\nThe initial 32,768 screen failed after three alternating warmup pairs and ten reversed-order measured pairs, no filtering: wall 4699.2 ± 166.2 -> 4810.0 ± 287.3 ms (0.9770x, 3/10 candidate wins, paired 95% CI -318.8..+97.1); CPU 4656.6 ± 143.0 -> 4736.5 ± 221.4 ms (0.9831x, 3/10, CI -248.6..+88.7). No confirmation or larger-scale timing was run. Raw evidence: bench/vs_tsgo/results/declaration-pass-gates.20260831T163650.42200.

8 days ago

Accepted and pushed the CommonJS program import-resolution cache.

  • Source: 49641900e (perf(ts): cache program import resolutions (#416))
  • Results/docs: f46d54599 and the detailed report
  • Design: cache the immutable external + fallback normalized paths per exact (import node, specifier); target-specific matching still uses the existing path-equivalence rule, and source/resolver/importer changes clear the cache.
  • Standard 128-owner A/B, 30 pairs: 36.5 ± 3.1 ms -> 30.1 ± 2.0 ms (1.212x, 30/30 wins, paired 95% CI +5.3..+7.5 ms).
  • Scaled 2,048-owner confirmation, 20 pairs: 3471.2 ± 261.2 ms -> 1565.2 ± 183.4 ms (2.218x, 20/20 wins, paired 95% CI +1810.0..+2001.9 ms).
  • Pinned schema-3 checkpoint 20260901T012536Z: TS 6.0.3 263.0 ± 48.8 ms, native TS/tsgo 7.0.2 83.9 ± 27.9 ms, Home 42.9 ± 10.5 ms (1.95x faster than tsgo; 30/30 paired wins).
  • Correctness: byte-identical output and exit status on the scaled project; full ReleaseFast checker suite; 95/95 benchmark-harness tests; 198/198 CommonJS, 132/132 discovery, and 720/720 graph-type cross-compiler audit checks.
8 days ago

Full 20-workload macOS checkpoint refreshed after the accepted import-resolution cache.

  • Docs commit: 8777ff699
  • Raw result: 20260901T013443Z
  • Exact pins: TS 6.0.3 and native TS/tsgo 7.0.2
  • Admission/provenance: schema 3; 600 round files; 1,800 successful finite samples; compiler and tool payloads unchanged before/after
  • Result: Home lower mean on 20/20 workloads; 598/600 individual paired wins; every workload paired 95% CI remains above zero
  • commonjs_graph: 55.7 ± 2.4 ms tsgo vs 30.4 ± 3.0 ms Home (1.83x)
  • New narrowest mean lead: type_predicates_large, 484.6 ± 128.8 ms tsgo vs 329.4 ± 93.3 ms Home (1.47x; paired CI +115.0..+195.4 ms)
  • The two individual non-wins were retained: one control_flow round and one type_predicates_large round.

The current snapshot, parity mirror, root README table, and benchmark README now point to this checkpoint.

8 days ago

Rejected and fully reverted a new type_predicates_large probe; documented in f11985cd2.

Fresh accepted-binary profiling showed prepareSource down from 316 to 23 exclusive samples after the marker work, while visibleAnnotatedIdentifierTypeNode had 68. I tested a 256-slot, collision-verified, allocation-free per-node annotation cache. Exact output/exit status matched and the focused ReleaseFast predicate gate passed, but the whole-process screen failed:

  • Wall: 5155.6 ± 318.3 ms baseline vs 5175.6 ± 235.3 ms candidate (0.9961x, 5/10 wins, paired 95% CI -295.3..+255.3 ms)
  • CPU: 5024.3 ± 250.2 ms vs 5014.0 ± 151.9 ms (1.0021x, 5/10, CI -181.4..+202.1 ms)

Both intervals cross zero and wall mean regressed, so no confirmation or larger-scale run was justified. Raw evidence: visible-annotation-hot-cache.20260901T020323Z; current profile: predicate-current-profile.20260901T014600Z.

8 days ago

Accepted and pushed dependency-free declaration-schema optimization.

  • Source: e0f2fb6d7 (perf(ts): skip unused declaration schemas (#416))
  • Docs: ee99421e5 (docs(bench): publish declaration schema results (#416))
  • Exact competitors: JavaScript TS 6.0.3 vs native TS/tsgo 7.0.2 (one TS7 competitor)
  • Candidate SHA-256: 83f48045ba8dc697177eb2d6d453409cb06ae44167d094b6d70ed6e1dec25e7e
  • Baseline SHA-256: ec99b3fcca63f39d97f147bbe2ad5139bf5e53a22f885e25bd1f6eb971386789

Fair unchanged official type_predicates_large A/B, 3 alternating warmup pairs + 30 reversed-order measured pairs, no filtering:

  • wall: 258.315 ± 7.221 ms -> 246.859 ± 4.718 ms (1.0464x, 30/30 wins, paired 95% CI +9.586..+13.325 ms)
  • process CPU: 256.033 ± 7.037 ms -> 244.838 ± 4.605 ms (1.0457x, 30/30, CI +9.428..+12.962 ms)

Focused pinned result 20260901T024321Z: TS6 1147.4 ± 290.2 ms, native TS7 398.4 ± 50.3 ms, Home 266.8 ± 50.8 ms (1.49x faster than TS7; paired CI +111.5..+151.8 ms).

Full schema-3 result 20260901T024535Z: Home lowest mean on 20/20 workloads and 600/600 paired wins; all paired 95% intervals positive. Narrowest mean lead is 1.50x on large predicates. All 600 round files / 1,800 successful finite samples retained, with provenance verified unchanged before/after.

Correctness: ReleaseFast Program suite, focused predicate checker suite, harness 95/95, all 20 positive/negative admissions, and byte-identical exact output at official, 32,768-, and 65,536-family scales.

Detailed report and the concise root README table are updated on main.

8 days ago

Accepted and pushed exact source-marker root-gap fast-forward.

  • Source: 7ca9946c8 (perf(ts): skip source marker root gaps (#416))
  • Docs: c2c12ee81 (docs(bench): publish marker root-gap results (#416))
  • Baseline SHA-256: 83f48045ba8dc697177eb2d6d453409cb06ae44167d094b6d70ed6e1dec25e7e
  • Candidate SHA-256: 60e10affa923acd3265511f91f248277cf7bbf70e28508ff1bf903b8761bf2a2

This keeps the exact Aho-Corasick matcher. Only root-state byte runs that cannot begin any registered marker are skipped in bulk; every possible prefix/failure/overlap/suffix and first position uses the unchanged automaton. This is distinct from the previously rejected trie probes.

Unchanged official type_predicates_large, 3 alternating warmup pairs + 30 reversed-order measured pairs, no filtering:

  • wall: 240.611 ± 3.256 ms -> 237.311 ± 5.460 ms (1.0139x, 27/30, paired 95% CI +1.558..+5.040 ms)
  • CPU: 238.928 ± 3.153 ms -> 235.592 ± 4.990 ms (1.0142x, 26/30, CI +1.716..+4.956 ms)

Independent 65,536-family screen, all 10 pairs retained:

  • wall: 8747.426 ± 109.663 -> 8626.257 ± 116.604 ms (1.0140x, 8/10, CI +40.535..+201.804 ms)
  • CPU: 8715.280 ± 81.749 -> 8591.872 ± 96.556 ms (1.0144x, 9/10, CI +65.075..+181.743 ms)

Pinned focused result 20260901T031352Z: TS 6.0.3 1242.7 ± 414.8 ms, native TS/tsgo 7.0.2 413.2 ± 84.6 ms, Home 267.8 ± 36.4 ms (1.54x faster; TS7-minus-Home paired CI +111.6..+179.2 ms).

Correctness: byte-identical official and 65,536-scale output; focused exact marker tests; full ReleaseFast checker, driver, and Program suites; harness 95/95; all 20 workload admissions.

8 days ago

Rejected and reverted a larger canonical string-interner hint after a fair retained screen.

  • Exact probe: 64 -> 256 entries per shard; full byte equality and canonical prehashed fallback unchanged
  • Correctness: byte-identical empty output at 2,048 and 32,768 predicate families; ReleaseFast interner suite passed
  • 32,768 families, 10 reversed-order pairs after 3 alternating warmup pairs, no filtering
  • CPU: 6215.600 ± 107.917 ms baseline vs 6307.875 ± 115.115 ms candidate (0.9854x, 4/10; paired CI -209.220 to +24.670 ms)
  • Wall: 7727.518 ± 414.303 ms vs 8069.492 ± 701.373 ms (0.9576x, 4/10; paired CI -706.254 to +22.306 ms)

The gate failed, so no confirmation was run and the 64-entry production capacity remains. Raw evidence: bench/vs_tsgo/results/string-interner-cache-capacity.20260901T033000Z/. README and detailed docs: commit 79d9509.

8 days ago

Measured and reverted an exact one-pass special-identifier classification in typeOfIdentifier.

  • Candidate classified this, await, arguments, and new.target once by mutually exclusive length plus full byte equality; existing branch/diagnostic order stayed unchanged
  • Exact byte-identical empty output at 2,048 and 32,768 predicate families
  • Official 2,048-family screen: 10 reversed-order pairs after 3 alternating warmup pairs, no filtering
  • Wall: 246.588 ± 9.418 ms vs 243.908 ± 5.698 ms (1.0110x, 6/10; paired CI -6.114 to +11.473 ms)
  • CPU: 244.176 ± 8.272 ms vs 241.710 ± 5.238 ms (1.0102x, 6/10; paired CI -5.188 to +10.121 ms)

The lower means were inconclusive and failed the initial paired gate, so no scale/confirmation run was admitted and the probe was fully reverted. Raw evidence: bench/vs_tsgo/results/special-identifier-classification.20260901T035000Z/. README and detailed docs: commit 18844bd.

8 days ago

Measured and reverted exact pre-sizing of the three temporary declaration-space diagnostic maps.

The probe counted eligible HIR declaration kinds, reserved map capacity, then used the unchanged diagnostic passes/insertion order. Exact official output remained byte-identical.

Initial 10-pair screen after 3 alternating warmup pairs (all retained):

  • Wall: 327.868 ± 16.578 ms vs 318.948 ± 17.585 ms (1.0280x, 8/10; CI -10.141 to +27.981 ms)
  • CPU: 316.272 ± 13.006 ms vs 307.522 ± 9.762 ms (1.0285x, 8/10; CI -2.358 to +19.858 ms)

Independent 30-pair confirmation after fresh warmups (not pooled):

  • Wall: 250.214 ± 9.998 ms vs 248.246 ± 13.890 ms (1.0079x, 23/30; CI -3.764 to +7.700 ms)
  • CPU: 246.950 ± 8.510 ms vs 244.955 ± 10.931 ms (1.0081x, 24/30; CI -2.315 to +6.305 ms)

The confirmation failed the paired-mean admission rule, so no scale run was performed and the probe was fully reverted. Raw evidence: bench/vs_tsgo/results/declaration-map-presize.20260901T041500Z/. README and detailed docs: dd6e64c.

8 days ago

Measured and reverted exact reuse of isDeclNameSlot(node) inside typeOfIdentifier.

The candidate evaluated the immutable HIR predicate once at its first use and reused it in 36 later branches. Early special-case exits stayed before the computation; there was no cache, semantic gate, or diagnostic reordering.

Correctness:

  • Official 2,048-family and unchanged 32,768-family predicate projects both exited 0
  • Baseline/candidate stdout and stderr were byte-identical at both scales

Official screen: 10 reversed-order pairs after 3 alternating warmup pairs, all retained:

  • Wall: 292.454 ± 28.421 ms vs 300.577 ± 30.022 ms (0.9730x, 4/10; paired CI -33.078 to +16.832 ms)
  • CPU: 283.171 ± 19.615 ms vs 284.514 ± 15.643 ms (0.9953x, 5/10; paired CI -19.859 to +17.172 ms)

The initial gate failed, so the probe was fully reverted with no confirmation or scale timing. Raw evidence: bench/vs_tsgo/results/identifier-decl-slot-reuse.20260901T035734Z/. README and detailed docs: 7c2d11f.

8 days ago

Measured and reverted parser reuse of the scanner’s exact identifier escape flag.

The one-line probe replaced indexOfScalar(raw_identifier, \\) with tok.flags.has_escape under the same .identifier guard; decoder, fallback, and interning stayed unchanged.\n\nCorrectness:\n- Full ReleaseFast parser suite passed, including bare/escaped/invalid identifier controls\n- Byte-identical empty output at 2,048, 32,768, and 65,536 predicate families\n\nOfficial screen: 10 reversed-order pairs after 3 alternating warmup pairs, all retained:\n- Wall: 440.866 ± 24.461 ms vs 452.033 ± 25.669 ms (0.9753x, 5/10; paired CI -34.149 to +11.814 ms)\n- CPU: 377.824 ± 11.665 ms vs 383.668 ± 19.005 ms (0.9848x, 5/10; paired CI -24.280 to +12.592 ms)\n\nThe initial gate failed, so the probe was fully reverted with no confirmation or scale timing. Raw evidence: bench/vs_tsgo/results/parser-escape-flag-reuse.20260901T040925Z/. README and detailed docs: 93d9577.

8 days ago

Accepted and pushed a CheckJS/JSDoc scaling fix in 532373ee1; detailed evidence and the README row are in a64c2964a.

Cause: checkJSDocImportTypeModuleTargets resolved a top-level statement anchor for every ordinary JSDoc block before checking for import(...) / typeof import(...), creating a comments-by-statements path. The checker now reuses the exact source import marker and resolves an anchor lazily only for a relevant tag. No result cache, feature workaround, or benchmark-only behavior.

Validation:

  • focused ts_checker tests matching JSDoc import pass
  • official 128-family and deterministic 4,096-family baseline/candidate stdout and stderr are byte-identical and empty
  • official screen: 1.0161x wall, 1.0150x CPU; both paired 95% CIs positive
  • independent clean 30-pair confirmation: 1.0145x wall, 1.0158x CPU; CIs +0.035..+0.971 ms and +0.151..+0.916 ms
  • the earlier noisy 30-pair confirmation was retained and documented separately, not filtered or pooled
  • 4,096-family diagnostic scale: 1.2149x wall and 1.2143x CPU, 10/10 wins
  • pinned schema-3 checkpoint 20260901T044935Z: TS 6.0.3 241.3 +/- 59.1 ms, native TS7/tsgo 7.0.2 64.7 +/- 19.5 ms, Home 39.8 +/- 16.9 ms (1.63x faster than the fastest competitor)

Raw A/B identifier: checkjs-import-type-gate.20260901T043158Z. The detailed tables, hashes, fairness notes, and reproduction provenance are in docs/docs/TS_PERFORMANCE.md.

8 days ago

Accepted and pushed the exact diagnostic-reconciliation marker gate.

  • Source: https://github.com/home-lang/home/commit/587c64343
  • Docs/README: https://github.com/home-lang/home/commit/ae6044248
  • Design: every exact reconciliation branch now has a necessary sentinel in the existing one-pass source-marker index; ordinary files skip the otherwise repeated post-check scan. The original exact conditions and uncached fallback remain intact.
  • Correctness: byte-identical output at 2,048, 32,768, and 65,536 predicate families; focused marker coverage, full ReleaseFast ts_checker suite, and all 95 benchmark-harness tests pass.
  • Official 2,048-family confirmation: wall 248.825 ± 3.471 ms -> 242.644 ± 8.619 ms (1.0255x, 28/30 wins, paired 95% CI +2.540 to +9.822 ms); CPU 1.0265x with a positive CI.
  • 32,768 families: wall 1.0232x and CPU 1.0236x, 10/10 wins, both paired CIs positive.
  • 65,536 families: lower candidate means, but both CIs cross zero; all samples are retained and the run is documented as inconclusive rather than used for acceptance.
  • Pinned checkpoint 20260901T051415Z: JavaScript TypeScript 6.0.3 1178.4 ± 145.4 ms, native TypeScript 7.0.2 / tsgo 401.6 ± 32.8 ms, Home 267.2 ± 55.9 ms. Home retains a 1.50x lead and wins 29/30 paired wall rounds against tsgo; paired CI +120.576 to +148.318 ms.

Full methodology, hashes, raw-result identifiers, and tables are in docs/docs/TS_PERFORMANCE.md.

8 days ago

Follow-up probe measured and rejected: parser JSDoc-presence reuse.

  • Documentation: https://github.com/home-lang/home/commit/a6767c4e9
  • Profile: the post-gate 65,536-family sample showed 255 top-of-stack samples in the parser JSDoc diagnostic scan, so the probe reused the exact existing /** source-marker fact while preserving standalone fallback behavior.
  • Correctness: byte-identical output at 2,048, 32,768, and 65,536 families; full parser and driver suites passed.
  • Official 30-pair confirmation: candidate mean was 1.0081x lower on wall and 1.0074x lower on CPU, but both paired 95% CIs crossed zero.
  • Both 32,768-family sets were inconclusive. The first overlapped four unrelated CPU-saturating test shards; the independent set was hit by new test and service startup in rounds 7-8. Every sample, including the 4,999.780 ms and 7,011.918 ms candidate outliers, is retained and documented.
  • Decision: rejected and fully reverted because no uncontaminated retained set cleared the statistical gate. The accepted ca0bda46834cc05f9c5f57bac5dd5bdec88af388cf6b7c6fc39fcce9b60604ae binary is restored.

Raw evidence: bench/vs_tsgo/results/jsdoc-parser-presence-gate.20260901T053000Z/.

8 days ago

Measured and rejected another profile-driven probe: parser virtual-section fact reuse.

  • Documentation: https://github.com/home-lang/home/commit/f57d02a52
  • Design tested: driver-prepared sources supplied exact @filename: / @Filename: presence from the existing shared marker index; standalone parser callers retained their original discovery path.
  • Correctness: byte-identical output at 2,048, 32,768, and 65,536 predicate families; identical nonzero status and 348-byte diagnostics on a mixed virtual .d.ts/.js fixture; full parser and driver suites passed.
  • Official screen: 1.0069x lower wall and CPU means, 8/10 wins, but both paired 95% CIs crossed zero.
  • 32,768-family scale: only 1.0017x lower wall and 1.0027x lower CPU means, 4/10 wins, with both paired CIs crossing zero.
  • Decision: rejected and fully reverted. The accepted ca0bda46834cc05f9c5f57bac5dd5bdec88af388cf6b7c6fc39fcce9b60604ae binary is restored. No confirmation or competitor checkpoint was justified.

All raw samples are retained under bench/vs_tsgo/results/parser-virtual-section-fact.20260901T055116Z/.

8 days ago

Rejected and fully reverted reconciliation-sentinel root-set pruning after the fair A/B gate failed at confirmation/scale. The 2,048-family screen initially favored the candidate (wall 1.0124×, 9/10, paired CI +0.383 to +5.243 ms), but the independent 30-pair confirmation shrank to 1.0032× wall / 1.0034× CPU with both paired CIs crossing zero. At 32,768 families the candidate was slightly slower in both wall and CPU and won only 5/10 pairs. Exact output remained byte-identical at 2,048, 32,768, and 65,536 families; focused marker/gate tests passed. The accepted ca0bda… binary is restored. Documentation: https://github.com/home-lang/home/commit/2de056049 Raw evidence: bench/vs_tsgo/results/reconciliation-root-set.20260901T060254Z/

8 days ago

Rejected and fully reverted union flatten-buffer elision after its initial fair A/B gate failed. The probe avoided one temporary expansion allocation only when internUnion inputs contained no nested unions; all canonicalization semantics stayed unchanged. Exact output was byte-identical at 2,048, 32,768, and 65,536 predicate families, and focused union-interner tests passed. On the unchanged official workload, wall was 1.0056× with 6/10 candidate wins and paired CI -9.806 to +12.516 ms; CPU was 1.0035× with 6/10 and CI -8.621 to +10.312 ms. No scale/confirmation was admitted. Documentation: https://github.com/home-lang/home/commit/224d956b0 Raw evidence: bench/vs_tsgo/results/union-flatten-buffer.20260901T063000Z/

8 days ago

Rejected and fully reverted the combined prepared-parser source-fact bundle. The driver supplied exact JSDoc-comment and virtual-section presence from its existing shared marker index, while direct parser callers retained discovery fallback. Full parser/driver suites passed and exact output was byte-identical at 2,048, 32,768, and 65,536 families. The unchanged official screen remained noise: wall 1.0024×, 5/10 wins, CI -15.021 to +16.244 ms; CPU 1.0057×, 5/10, CI -8.944 to +11.802 ms. No scale or confirmation was admitted, and the accepted ca0bda… binary is restored. Documentation: https://github.com/home-lang/home/commit/8a6a285da Raw evidence: bench/vs_tsgo/results/parser-prepared-source-facts.20260901T070000Z/

8 days ago

Accepted default-export merge bucket records and pushed the source + benchmark documentation directly to main. The checker now stores one merge-entry record array per name/virtual-section bucket instead of five parallel arrays, reducing the common unique-name bucket from five allocations/growth paths to one while preserving grouping and diagnostic order. Source: https://github.com/home-lang/home/commit/1a7ac8a7a Docs: https://github.com/home-lang/home/commit/8f4fd51\n\nFair A/B results on the unchanged 2,048-family predicate workload: independent 30-pair confirmation wall 1.0285× (24/30, paired CI +3.677 to +9.625 ms) and CPU 1.0273× (25/30, CI +3.520 to +9.121 ms). At 32,768 families CPU is 1.0238× (9/10, CI +10.202 to +173.825 ms); wall is lower but explicitly inconclusive. Both 65,536 means are lower but their intervals cross zero and remain labeled inconclusive. Exact output is byte-identical at all three scales; full ReleaseFast checker and 95/95 harness tests pass. Raw A/B: bench/vs_tsgo/results/default-export-bucket-records.20260901T074000Z/.\n\nPinned schema-3 checkpoints compare JavaScript TypeScript 6.0.3 with native TypeScript/tsgo 7.0.2. Focused 20260901T065015Z: tsc 1004.8 ± 26.3 ms, tsgo 347.4 ± 9.4 ms, Home 224.5 ± 10.1 ms (1.55× vs TS7; 30/30 wins; CI +118.439 to +127.422 ms). Complete 20260901T065201Z: Home has the lowest mean on 20/20 workloads, wins 600/600 TS7 pairs, and every paired CI is positive; narrowest lead 1.53×.

8 days ago

Documented and pushed the rejected type-alias merge inline-first target probe in c0a5079: https://github.com/home-lang/home/commit/c0a507942

The exact representation probe kept the first class/interface target inline and allocated overflow storage only for true multi-target groups. Correctness and exact-output checks passed at 2,048, 32,768, and 65,536 predicate families, but the official 10-pair screen was inconclusive: wall 1.0089x with 6/10 wins and CI [-5.243, +9.348] ms; CPU 1.0049x with 5/10 wins and CI [-4.146, +6.371] ms. Two unrelated Zig test shards imposed a stable two-core external load throughout; all samples were retained. The initial gate failed, so no scale or competitor checkpoint was admitted.

The source probe was fully reverted and the accepted binary (SHA-256 9e86ee995ca30484ae41d0f0adafea23a386d1ad57fd932b4941909c20d4711d) restored. Raw evidence: bench/vs_tsgo/results/type-alias-merge-inline-first.20260901T083000Z/.

8 days ago

Documented and pushed the rejected duplicate-class threshold flag probe in 483baca: https://github.com/home-lang/home/commit/483bacad5

The exact representation probe replaced an unnecessary ClassGroup usize count with a boolean threshold while preserving the first declaration anchor and diagnostics. Focused three-class/two-interface coverage, the complete ReleaseFast ts_checker suite, and byte-exact empty output at 2,048, 32,768, and 65,536 predicate families all passed.

The first 10-pair set was retained but excluded because its load snapshots showed an unrelated Bun job at the start that had exited by the end. A predeclared rerun with the same frozen binaries was directionally slower: wall 226.580 +/- 2.854 ms baseline vs 228.710 +/- 4.979 ms candidate (1.0094x slower, 4/10 wins, CI [-4.636, +0.375] ms); CPU 225.118 +/- 2.760 vs 227.103 +/- 4.789 ms (1.0088x slower, 4/10 wins, CI [-4.247, +0.278] ms). A separate test262 shard and Spotlight each held approximately one core through the rerun; every sample was retained. The gate failed, so no scale timing or TS 6.0.3 vs native TS 7.0.2 checkpoint was admitted.

The probe and regression are fully reverted and the accepted binary SHA-256 9e86ee995ca30484ae41d0f0adafea23a386d1ad57fd932b4941909c20d4711d is restored. Raw evidence: bench/vs_tsgo/results/duplicate-class-flag.20260901T091500Z/.

8 days ago

Documented and pushed the rejected duplicate-class second-pass gate in 714ad6c: https://github.com/home-lang/home/commit/714ad6cf8

The exact necessary-condition probe skipped the interface rescan only when the complete class scan found no duplicate class group. Focused three-class/two-interface coverage, the complete ReleaseFast ts_checker suite, and byte-exact empty output at 2,048, 32,768, and 65,536 predicate families all passed.

The official 10-pair screen did not clear admission: wall 225.297 +/- 3.702 ms baseline vs 223.708 +/- 2.394 ms candidate (1.0071x, 5/10 wins, CI [-0.394, +3.571] ms); CPU 223.789 +/- 3.469 vs 222.307 +/- 2.316 ms (1.0067x, 7/10 wins, CI [-0.355, +3.319] ms). A separate one-core zig-js benchmark was present in both load snapshots; its worker changed while the load class remained present, and every sample was retained. Both intervals cross zero, so no confirmation, scale timing, or TS 6.0.3 vs native TS 7.0.2 checkpoint was admitted.

The probe and regression are fully reverted and the accepted binary SHA-256 9e86ee995ca30484ae41d0f0adafea23a386d1ad57fd932b4941909c20d4711d is restored. Raw evidence: bench/vs_tsgo/results/duplicate-class-second-pass-gate.20260901T094500Z/.

8 days ago

Documented and pushed the rejected local-boundary NodeId key probe in 0bc051c: https://github.com/home-lang/home/commit/0bc051c5d

The exact representation probe removed redundant virtual-section data from statement-boundary map keys while keeping declaration keys section-partitioned. The exhaustive indexed-vs-slow lookup suite (multiple virtual files, export wrappers, nested scopes, allocation failure), complete ReleaseFast ts_checker suite, and byte-exact empty output at 2,048, 32,768, and 65,536 predicate families all passed.

The official 10-pair screen was a near tie and failed admission: wall 228.922 +/- 3.841 ms baseline vs 228.610 +/- 2.939 ms candidate (1.0014x, 6/10 wins, CI [-1.605, +2.229] ms); CPU 227.242 +/- 3.518 vs 227.108 +/- 2.872 ms (1.0006x, 6/10 wins, CI [-1.398, +1.665] ms). A separate one-core zig-js parent/candidate benchmark remained present in both load snapshots; every sample was retained. No confirmation, scale timing, or TS 6.0.3 vs native TS 7.0.2 checkpoint was admitted.

The probe is fully reverted and the accepted binary SHA-256 9e86ee995ca30484ae41d0f0adafea23a386d1ad57fd932b4941909c20d4711d restored. Raw evidence: bench/vs_tsgo/results/local-boundary-node-keys.20260901T102500Z/.

8 days ago

Documented and pushed the rejected namespace declaration-pass gate in 126659a: https://github.com/home-lang/home/commit/126659a8c

The exact necessary-condition probe used the existing namespace/module/global source marker to skip four namespace-only declaration scans, while false positives and HIR-only/source-less integrations retained the original path. Focused namespace/ambient-module coverage, an explicit HIR-only fallback regression, the complete ReleaseFast ts_checker suite, and byte-exact empty output at 2,048, 32,768, and 65,536 predicate families all passed.

The first screen was retained but excluded because a 116% Bun job disappeared while Time Machine began across its load snapshots. The predeclared clean rerun still failed admission: wall 218.447 +/- 2.484 ms baseline vs 218.034 +/- 2.028 ms candidate (1.0019x, 6/10 wins, CI [-1.380, +2.207] ms); CPU 217.430 +/- 2.401 vs 216.850 +/- 1.979 ms (1.0027x, 7/10 wins, CI [-1.109, +2.269] ms). No samples were filtered, and no confirmation, scale timing, or TS 6.0.3 vs native TS 7.0.2 checkpoint was admitted.

The probe and regression are fully reverted and the accepted binary SHA-256 9e86ee995ca30484ae41d0f0adafea23a386d1ad57fd932b4941909c20d4711d restored. Raw evidence: bench/vs_tsgo/results/namespace-declaration-pass-gate.20260901T111500Z/.

8 days ago

Rejected and documented the recovered-parameter identity-reuse probe in a62a4ff.

  • Baseline: 9e86ee995ca30484ae41d0f0adafea23a386d1ad57fd932b4941909c20d4711d
  • Candidate: b7b91c25a92f5835b224425e4f16d7370bc532cc34e87c2a7e5fdcdbb8f9a10d
  • Exact empty output at 2,048 / 32,768 / 65,536 predicate families; focused + full checker and 95/95 harness tests passed.
  • 10-pair official screen favored the candidate (~0.56% wall, ~0.59% CPU), but the independent 30-pair confirmation crossed zero for both metrics.
  • The 65,536-family scaling run also crossed zero for wall and CPU despite 8/10 paired wins.

No inconclusive micro-optimization was admitted: source reverted, accepted binary restored. Raw evidence remains under bench/vs_tsgo/results/recovered-parameter-identity-reuse.20260901T123000Z/. The benchmark manifest and installed native compiler remain pinned and verified at TypeScript/tsgo 7.0.2; TS 7 and tsgo are one competitor, compared against JavaScript TypeScript 6.0.3.

8 days ago

Accepted and published the token-count HIR reservation optimization.

Commits:

  • Source: ed8bf949b — perf(ts): reserve HIR storage from token count (#416)
  • Benchmarks/docs: f58aa516c — docs(ts): publish HIR reservation benchmarks (#416)

What changed: after lexing determines the exact token count, the parser reserves proportional capacity for the five parallel HIR node columns and the child pool. This changes capacity only; recovery can still grow normally.

Correctness gates:

  • complete HIR, TS driver, TS parser, and ReleaseFast ts_checker suites passed
  • focused HIR invariant test passed
  • zig fmt --check, git diff --check, and all 95 benchmark-harness tests passed
  • baseline/candidate stdout and stderr were byte-identical at 2,048, 32,768, and 65,536 predicate families

Fair alternating-order A/B:

  • official 2,048-family, independent 30-pair confirmation: wall 1.0189× faster (26/30 wins, paired 95% CI +1.456 to +7.648 ms); CPU 1.0163× faster (27/30, +1.420 to +6.333 ms)
  • diagnostic 32,768-family, 10 pairs: wall 1.0067× faster (8/10, +1.671 to +50.651 ms); CPU 1.0057× faster (8/10, +0.138 to +44.724 ms)
  • official peak RSS increased by 0.509 MiB; at 32,768 families mean RSS decreased by 3.147 MiB. All samples were retained.

Fresh schema-3 competitor checkpoints use exactly tsc 6.0.3 versus native TypeScript/tsgo 7.0.2 (TS 7 and tsgo are the same competitor):

  • focused type_predicates_large: Home 221.7 ± 6.0 ms versus native TS 7.0.2 at 350.3 ± 11.1 ms (1.58× faster), 30/30 paired wins
  • full 20-workload checkpoint: Home has the lowest mean on 20/20 and wins 600/600 paired wall rounds against native TS 7.0.2; every workload's paired interval is positive. The narrowest mean lead is 1.59×.

Detailed evidence and raw-result identifiers are in TS_PERFORMANCE.md; the README contains the brief linked table.

8 days ago

Profiled and rejected the checker-directive marker indexing probe; no source change landed.

Documentation commit:

  • 2884a46cd — docs(ts): record directive marker probe rejection (#416)

Probe: register the exact allowUnreachableCode and noImplicitThis spellings in the existing one-pass source-marker index, replacing three independent post-check whole-source searches. The post-change profile confirmed those three scans disappeared.

Correctness:

  • complete ReleaseFast checker and TS driver suites passed
  • focused noImplicitThis: false behavior passed
  • all 95 benchmark-harness tests passed
  • zig fmt --check and git diff --check passed
  • baseline/candidate output was byte-identical at 2,048 and 32,768 predicate families

Exact final-source official evidence, all samples retained:

  • first 30 pairs: wall 1.0052× (20/30), CI -0.348 to +2.503 ms; CPU 1.0051× (20/30), CI -0.327 to +2.446 ms
  • second independent 30 pairs: wall 1.0198× (24/30), CI +1.415 to +8.487 ms; CPU 1.0179× (25/30), CI +1.520 to +7.024 ms
  • precommitted aggregate of all 60 final-binary pairs: wall 1.0125× (44/60), CI +1.070 to +4.996 ms; CPU 1.0115× (45/60), CI +1.109 to +4.274 ms; RSS statistically flat

Required final-source 32,768-family scale gate:

  • wall 1.0203× lower mean (7/10), but paired CI -416.122 to +760.379 ms crosses zero
  • CPU 1.0418× lower mean (7/10), CI +0.428 to +550.640 ms
  • the retained host snapshots show a one-core Zig build at the start and ten unrelated zig-js tests consuming roughly 80–91% of a core each at the end; paired wall differences ranged from -1473.438 to +2517.279 ms

No sample was filtered, replaced, or selectively rerun. Because the precommitted scale wall gate remained inconclusive, I rejected and fully reverted the probe despite the positive 60-pair official aggregate. Raw evidence is retained locally under bench/vs_tsgo/results/directive-marker-index.20260901T090828Z/; the detailed public record is in TS_PERFORMANCE.md, with a brief README table row.

Compiler comparison pins remain exactly tsc 6.0.3 and native TypeScript/tsgo 7.0.2; this rejected internal A/B did not replace the current admitted competitor snapshot.

8 days ago

Rejected and documented the follow-up broad checker-directive marker gate; no source change landed.

Documentation commit:

  • 3751fe1cf — docs(ts): record broad directive gate rejection (#416)

This smaller variant did not enlarge the source-marker automaton. It used the already-indexed broad @allow marker to skip the two exact allowUnreachableCode searches when absent, and the already-indexed @ marker to skip the exact noImplicitThis search when absent. Files containing those broad markers retained the original exact searches and semantics.

Correctness:

  • complete ReleaseFast checker suite passed
  • focused noImplicitThis: false behavior passed
  • zig fmt --check and git diff --check passed
  • frozen baseline/candidate output was byte-identical and empty on the unchanged official 2,048-family project

Primary fair A/B after three alternating warmup pairs, with reversed order and all 10 pairs retained:

  • wall: baseline 214.961 ± 1.612 ms; candidate 215.475 ± 3.620 ms; 0.9976× baseline/candidate, 4/10 candidate wins; paired CI -2.748 to +1.359 ms
  • CPU: baseline 213.774 ± 1.480 ms; candidate 214.255 ± 3.497 ms; 0.9978×, 6/10 candidate wins; paired CI -2.542 to +1.271 ms
  • RSS differed by about 0.003 MiB in the candidate's direction

The candidate has slightly worse wall and CPU means, and both timing intervals cross zero. It therefore failed the primary admission gate and was fully reverted without a confirmation, scale run, source commit, or competitor checkpoint. One unrelated Typesense process and Spotlight were active in the retained load snapshots; no sample was filtered or rerun.

Raw evidence is retained locally under bench/vs_tsgo/results/directive-broad-marker-gate.20260901T094320Z/. Detailed results are in TS_PERFORMANCE.md, with a brief README table row.

8 days ago

Rejected and fully reverted the stable pool-index inference probe after its independent confirmation failed the precommitted timing gate.

  • Logical change tested: replace recursive-inference member-slice copies with one-value-at-a-time reads through stable pool offsets.
  • Correctness: focused recursive-inference regression and complete ReleaseFast ts_checker suite passed; official baseline/candidate outputs were byte-identical.
  • 10-pair official screen: 1.0104x wall and 1.0100x CPU; 10/10 wins; both paired 95% CIs positive.
  • Independent 30-pair confirmation: 1.0150x wall mean (20/30 wins, CI -1.575 to +8.838 ms) and 1.0101x CPU mean (20/30 wins, CI -1.203 to +5.471 ms).
  • Every sample was retained. Because both confirmation timing intervals cross zero, no scale run, source commit, or TS 6.0.3 vs native TS 7.0.2 competitor checkpoint was admitted.

Documentation: cb63644 Raw evidence: bench/vs_tsgo/results/inference-stable-pool-index.20260901T095901Z/

8 days ago

Rejected and fully reverted the primitive type-name dispatch probe after its required scale gate remained inconclusive.

  • Logical change tested: route unresolved-signature primitive checks through the existing classifier and dispatch the exact same 12 lowercase spellings by length/first byte.
  • Correctness: focused regression, complete ReleaseFast ts_checker and TS driver suites, 95/95 benchmark-harness tests, formatting, and exact-output gates all passed.
  • Official 10-pair screen: 1.0046x wall and 1.0042x CPU; both paired 95% CIs positive.
  • Independent 30-pair confirmation: 1.0218x wall (20/30 wins, CI +1.983 to +8.664 ms) and 1.0200x CPU (22/30 wins, CI +2.150 to +7.167 ms).
  • Required 32,768-family set: 1.0027x wall and 1.0057x CPU, but both paired CIs crossed zero (-74.299 to +74.560 ms wall; -42.135 to +74.755 ms CPU).
  • Every sample was retained. Load snapshots record the unrelated queued threadfuzz and later Typesense/macOS activity. No source commit or TS 6.0.3 vs native TS 7.0.2 checkpoint was admitted.

Documentation: 1541b1b Raw evidence: bench/vs_tsgo/results/primitive-type-name-dispatch.20260901T102051Z/

8 days ago

Published the free-type-parameter root-memo rejection in e6947c3.

Official 2,048-family screen (10 alternating A/B pairs):

  • wall: baseline 216.023 ± 2.201 ms, candidate 217.643 ± 4.010 ms (0.9926×; 4/10 wins; paired 95% CI -3.836 to +0.372 ms)
  • CPU: baseline 214.927 ± 2.140 ms, candidate 216.599 ± 4.005 ms (0.9923×; 4/10 wins; paired 95% CI -3.795 to +0.246 ms)
  • peak RSS: baseline 75.139 ± 0.060 MiB, candidate 75.197 ± 0.015 MiB (0.9992×; 0/10 wins; paired 95% CI -0.094 to -0.022 MiB)

The candidate was slower and used more memory in every pair, so it was rejected before confirmation/scale. Source and focused regression are fully reverted. The detailed methodology, load disclosure, hashes, and raw-result path are documented in docs/docs/TS_PERFORMANCE.md; the README summary table is updated too.

No source commit or competitor checkpoint was admitted.

8 days ago

Published the free-type traversal generation-mark rejection in 0b20a4c.

The u32 form failed its 10-pair screen: timing CIs crossed zero and RSS was conclusively higher. A byte-epoch refinement then passed its screen (1.0227× wall and 1.0222× CPU, 10/10 wins, positive paired intervals) without an RSS penalty.

The required independent 30-pair confirmation did not establish the timing gain:

  • wall: 219.443 ± 3.498 ms baseline vs 218.508 ± 6.756 ms candidate (1.0043×; 23/30 wins; paired 95% CI -1.382 to +2.543 ms)
  • CPU: 218.265 ± 3.408 ms vs 217.191 ± 6.019 ms (1.0049×; 23/30 wins; CI -0.868 to +2.469 ms)
  • peak RSS: 75.080 ± 0.011 MiB vs 74.975 ± 0.111 MiB (CI +0.069 to +0.142 MiB)

Because both timing intervals cross zero, no scale run was admitted. Both source forms and the rollover regression are fully reverted. The detailed report and raw-result paths are in docs/docs/TS_PERFORMANCE.md, with a brief README table row. No source commit or competitor checkpoint was admitted.

8 days ago

Accepted and published the contextual cache descendant index.

Source: 21e6155 (perf(ts): index contextual cache descendants) Docs/README: d205881

The retained 4,096-family interface-composition profile showed clearCachedTypesWithin as the largest exclusive leaf (1,018 samples). The accepted implementation lazily indexes exact HIR parent→children edges and clears only the contextual function subtree; allocation failure falls back to the unchanged whole-HIR scan.

Official 128-family independent confirmation (30 reversed-order pairs):

  • wall: 39.353 ± 0.657 ms → 37.441 ± 0.684 ms (1.0511×; 29/30 wins; paired 95% CI +1.547 to +2.268 ms)
  • CPU: 38.498 ± 0.590 ms → 36.582 ± 0.584 ms (1.0524×; 30/30 wins; CI +1.618 to +2.203 ms)
  • peak RSS: 16.422 ± 0.008 MiB → 16.387 ± 0.036 MiB (CI +0.022 to +0.047 MiB)

Required 16× scale, 2,048 families (10 pairs):

  • wall: 3913.685 ± 89.745 ms → 3397.317 ± 35.948 ms (1.1520×; 10/10 wins; CI +459.034 to +564.619 ms)
  • CPU: 3903.645 ± 85.059 ms → 3389.624 ± 35.453 ms (1.1516×; 10/10 wins; CI +459.204 to +559.232 ms)
  • peak RSS rises by 1.5 MiB at this 92,160-line scale, the disclosed cost of two u32 index entries per HIR node.

Fresh targeted 30-run compiler checkpoint (TS 6.0.3 vs native TS 7.0.2 vs Home): 202.1 ± 6.3 ms, 66.1 ± 9.9 ms, and 40.8 ± 18.7 ms respectively. Home is 1.62× faster than TS7 with 29/30 wins and a +21.383 to +27.862 ms paired interval. The 139.8 ms first Home outlier remains included.

Correctness: focused descendant/sibling/index-reuse regression; complete ReleaseFast checker, driver, and CLI suites; all 20 version-pinned workload admissions and existing negative controls. Exact baseline/candidate output matches on official, 2,048-family, and 4,096-family projects.

All raw rounds, binaries, hashes, load snapshots, provenance, and corpora are linked from docs/docs/TS_PERFORMANCE.md. The README summary table is updated.

8 days ago

Published the next accepted TypeScript frontend optimization in 8d1d198b2, with docs/README in c4e5775b0.

The checker now uses complementary exact declaration-name indexes to prove when resolveValueDeclInStmt cannot succeed, skipping the full statement scan only for ordinary blocks with at least 16 statements. Virtual sections, recovery HIR, incomplete indexes, and allocation failures retain the original scan.

Final same-correctness A/B against accepted 21e6155d4:

  • official 128 families, 30 pairs: wall 36.772 -> 34.771 ms (1.0575x, 30/30 wins, paired CI +1.644..+2.348 ms); CPU 35.991 -> 33.947 ms (1.0602x, 30/30, CI +1.738..+2.343 ms); RSS +0.030 MiB
  • independent 2,048-family / 92,160-line scale, 10 pairs: wall 3285.301 -> 2621.967 ms (1.2530x, 10/10, CI +624.290..+703.416 ms); CPU 1.2525x; RSS +0.036 MiB
  • every sample retained; screen/confirmation/scale use reversed order after three alternating warmup pairs

All 20 positive and negative admissions pass against JavaScript TS 6.0.3 and the single native TS/tsgo 7.0.2 competitor. Final 30-round checkpoint: TS6 219.7±13.9 ms, native TS7 76.0±28.0 ms, Home 47.1±38.7 ms; Home 1.61x faster, 29/30 paired wins, TS7-minus-Home CI +16.520..+38.149 ms. Two early Home outliers remain included.

Verification: checker 4,325/4,325, driver 188/188, CLI 69/69, benchmark harness 95/95, Pickier clean. Raw final evidence: bounded-complementary-value-index.20260901T121547Z/, admission 20260901T122448Z/, checkpoint 20260901T122547Z/. The two memory-heavier refinements were rejected and documented separately.

8 days ago

Published another accepted profile-backed frontend optimization in b3dcb63c5, with detailed docs and the linked README row in 02b131431.

Fresh accepted-binary profiling showed virtualExportAssignmentTargetDeclForLocal taking 1,015 exclusive samples while scanning import-free roots. The helper now returns from the existing exact negative import-declaration fact; import-capable sources and HIR-only callers keep the original lookup.

Same-correctness A/B versus accepted 8d1d198b2:

  • official confirmation, 30 pairs: wall 36.161 -> 34.845 ms (1.0378x, paired CI +0.833..+1.802 ms); CPU 1.0377x, CI +0.898..+1.663 ms; RSS CI crosses zero
  • 2,048-family / 92,160-line scale, 10 pairs: wall 2728.437 -> 2351.781 ms (1.1602x, 10/10 wins, CI +349.128..+404.735 ms); CPU 1.1597x; RSS CI crosses zero
  • every sample retained with alternating order and before/after load snapshots

All 20 positive and negative admissions pass against JavaScript TS 6.0.3 and the single native TS/tsgo 7.0.2 competitor. Final 30-round checkpoint: TS6 210.3±8.6 ms, native TS7 67.5±11.8 ms, Home 35.7±2.0 ms; Home 1.89x faster, 30/30 paired wins, TS7-minus-Home CI +29.141..+36.480 ms.

Verification: checker 4,325/4,325, driver 188/188, CLI 69/69, benchmark harness 95/95, Pickier clean. Evidence: interface-composition-profile-final.20260901T122859Z/, import-free-export-assignment-gate.20260901T123335Z/, admission 20260901T123630Z/, checkpoint 20260901T124307Z/.

8 days ago

Recorded and reverted the next profile experiment in 384fe05c1.

The candidate reused the exact HIR namespace index to skip globalAugmentedValueType root scans when no decoded global namespace existed. It preserved virtual sections, escaped identifiers, multiple matches, and allocation-failure fallback, but failed the fair official screen:

  • wall 35.809 -> 35.962 ms (0.9957x, 4/10 wins, paired CI -1.491..+1.072 ms)
  • CPU 34.662 -> 34.560 ms (1.0030x, 6/10 wins, CI -1.017..+1.036 ms)
  • RSS was slightly lower, but timing was inconclusive and wall mean regressed

Every sample is retained under global-namespace-negative-index.20260901T124843Z/. The source is fully reverted; no confirmation, scale timing, source commit, or competitor checkpoint was admitted. README and detailed docs both link the rejection so it cannot be mistaken for an accepted win.

8 days ago

Rejected and fully reverted the qualified-annotation root namespace index probe.

  • Profile-backed target: typeAnnotationRootIsUnresolved repeatedly rescanned the source root for one-segment namespaces.
  • Exact candidate: reused the completed namespace index for ordinary sources, preserved scans for virtual sections/incomplete indexes, and skipped the import loop only when the existing conservative source marker proved no import token.
  • Baseline SHA-256: f451419a6bbd8e897e9f0b048f992a8034866d95d458591c916f090be0a95e23
  • Candidate SHA-256: 6b3e6d85483a1124ebdc6a2b4547c8d68752c40ef3e7241e6dcbafda628b2548
  • Official and 16x outputs were byte-identical and empty.
  • 10-pair official screen retained every sample: wall 52.427 -> 48.469 ms (1.0817x, 6/10, CI -0.642..+9.406 ms); CPU 50.360 -> 48.613 ms (1.0359x, 7/10, CI -0.635..+4.213 ms); RSS essentially flat.
  • Ten unrelated Zig test shards occupied most cores in both snapshots (load 26.33 -> 29.23). No rounds were filtered or rerun. Both timing intervals crossed zero, so no confirmation, scale timing, correctness suite, source commit, or TS 6.0.3 vs native TS/tsgo 7.0.2 checkpoint was admitted.

Documentation: https://github.com/home-lang/home/commit/588ee98cb Raw local evidence: bench/vs_tsgo/results/qualified-type-root-namespace-index.20260901T125755Z/

8 days ago

Accepted and pushed the next profile-backed optimization: the namespace-value miss index.

Source: https://github.com/home-lang/home/commit/4ba46f4d6 Documentation and README table: https://github.com/home-lang/home/commit/dee0937e9

What changed:

  • mergedNamespaceValueMemberType now returns an exact miss after its visible-namespace lookup has already completed the root index and found no namespace.
  • Virtual filename sections, visible/reopened namespaces, dotted namespace roots, and incomplete indexes retain the original fallback scan.
  • Dotted-marker allocation failure now leaves the namespace index incomplete, preserving the scan.

Frozen provenance:

  • Baseline SHA-256: f451419a6bbd8e897e9f0b048f992a8034866d95d458591c916f090be0a95e23
  • Candidate SHA-256: 4c0f758c9c8a8bf313ced6fd4d8b872e6f6b96166503b7c4035e8141a2fea7a9
  • Official and 16x outputs: byte-identical, empty, exit zero.

Fair A/B results, every pair retained, alternating order after three warmup pairs:

  • Official screen (10): wall 34.655 -> 33.321 ms, 1.0400x, CI +0.486..+2.185; CPU 33.709 -> 32.306 ms, 1.0434x, CI +0.720..+2.092; RSS flat.
  • Official confirmation (30): wall 36.506 -> 35.183 ms, 1.0376x, CI +0.700..+1.937; CPU 35.480 -> 34.027 ms, 1.0427x, CI +0.977..+1.930; RSS flat.
  • 2,048-family scale (10): wall 2506.140 -> 2077.577 ms, 1.2063x, 10/10, CI +387.978..+479.160; CPU 2486.218 -> 2057.291 ms, 1.2085x, 10/10, CI +389.549..+479.714; RSS flat.

Correctness:

  • Focused dotted- and merged-namespace tests pass.
  • ReleaseFast checker 4,325/4,325, driver 188/188, CLI 69/69.
  • Benchmark harness 95/95.
  • All 20 workload admissions and rejection controls pass with verified TS 6.0.3 and native TS/tsgo 7.0.2 provenance (20260901T132853Z).

Final 30-round checkpoint (20260901T132947Z): TS 6.0.3 210.2 +/- 5.2 ms; native TS 7.0.2 70.8 +/- 19.9 ms; Home 34.7 +/- 5.1 ms. Home is 2.04x faster than native TS7 with 30/30 paired wins and TS7-minus-Home CI +30.368..+44.490 ms. The first 61.2 ms Home outlier remains included.

Raw local A/B evidence: bench/vs_tsgo/results/namespace-value-miss-index.20260901T130826Z/.

8 days ago

Accepted the enum-free visible-namespace index in two small direct-to-main commits:

The fresh 4,096-family profile selected visibleTypeDeclarationExistsAt (776 exclusive samples). The implementation reuses the exact per-container namespace index only for attached, enum-free, nonvirtual sources; incomplete indexes, enum-bearing sources, virtual sections, allocation failure, and source-less HIR keep the original scan.

Fair retained A/B results:

  • Official 128-family screen, 10 pairs: 1.0265x wall and 1.0296x CPU; paired 95% CIs +0.312..+1.423 ms and +0.520..+1.352 ms.
  • Independent official confirmation, 30 pairs: 1.0318x wall and 1.0323x CPU; 25/30 wins for both; paired CIs +0.505..+1.627 ms and +0.596..+1.491 ms.
  • Independent 2,048-family scale, 10 pairs: 1.1308x wall and 1.1315x CPU; 10/10 wins; paired CIs +215.583..+271.102 ms and +218.572..+266.353 ms.
  • Scale RSS increased from 114.320 to 114.755 MiB (+0.435 MiB mean; baseline-minus-candidate CI -0.697..-0.173 MiB). This tradeoff is explicitly documented.

A 16-statement bounded refinement was rejected: both screen timing CIs crossed zero, so it received no confirmation or scale run. Its samples remain separate.

Correctness: ReleaseFast checker 4,325/4,325, driver 188/188, CLI 69/69, harness 95/95, plus all 20 version-pinned admissions and controls.

Final unfiltered 30-round competitor checkpoint:

  • TypeScript 6.0.3: 220.1 +/- 46.4 ms
  • Native TypeScript/tsgo 7.0.2: 69.9 +/- 21.6 ms
  • Home: 35.5 +/- 9.2 ms, 1.97x faster, 29/30 wins, paired TS7-minus-Home CI +29.691..+40.983 ms

All samples, including the shared outlier round, remain retained. TS 7 and tsgo are treated as the same single native competitor throughout.

8 days ago

Rejected and fully reverted the next profile-guided probe: unique interface-heritage index.

Documentation: https://github.com/home-lang/home/commit/86578ff2f

A fresh independent 8,192-family profile confirmed visibleTypeDeclarationExistsAt had fallen to one residual sample after the accepted optimization. The next untested leaf was interfaceHeritageReachesName at 1,029 exclusive samples; globalAugmentedValueType was skipped because its exact negative-index form had already failed admission.

The candidate used a pass-local exact map for unique interface names. Duplicate names, small statement lists, and incomplete allocation retained the original scan. Both frozen binaries produced identical empty output on the official and 2,048-family scale projects, and the ReleaseFast checker suite passed.

Official 128-family screen, all 10 reversed-order pairs retained:

  • Wall: 35.993 +/- 1.751 ms baseline vs 36.162 +/- 1.586 ms candidate; 0.9953x, 4/10 wins, paired CI -1.142..+0.824 ms.
  • CPU: 34.711 +/- 1.509 ms baseline vs 34.792 +/- 1.436 ms candidate; 0.9977x, 4/10 wins, paired CI -0.933..+0.859 ms.
  • RSS: 16.608 +/- 0.009 MiB baseline vs 16.591 +/- 0.019 MiB candidate; paired CI +0.005..+0.031 MiB.

The slight RSS reduction does not override the timing rule: both timing means regressed and both CIs crossed zero. No confirmation, scale timing, source commit, or TS 6.0.3 vs native TS/tsgo 7.0.2 checkpoint was admitted. Raw evidence remains separate under interface-heritage-index.20260901T140413Z/.

8 days ago

Published 2b4de1114 documenting two exact merged-interface scan-index designs, both rejected and fully reverted. The broad clean screen was 1.0146× wall / 1.0155× CPU, but paired CIs crossed zero (-0.770..+1.695 ms wall; -0.640..+1.612 ms CPU). The refined duplicate-only chain was 0.9990× wall / 1.0024× CPU, again with crossing CIs (-0.901..+0.871; -0.518..+0.754). Full checker correctness and byte-identical official/scale outputs passed for both. README summary and detailed evidence/hashes are linked from the performance docs.

8 days ago

Published 5615aab14 documenting two namespace merge-order probes, both rejected and fully reverted. The exact last-ordinal index screened at 1.0134× wall / 1.0110× CPU, but both paired CIs crossed zero (-0.319..+1.288 ms; -0.261..+1.041 ms). A simpler reuse of the existing function index regressed to 0.9889× wall / 0.9954× CPU with crossing CIs. Both passed the full ReleaseFast checker suite and byte-identical official/scale outputs. No confirmation, scale timing, source commit, or checkpoint was admitted.

8 days ago

Published ed4696540 documenting the rejected declarationName forced-inline probe. The clean screen was 1.0104× wall / 1.0060× CPU in mean, but paired CIs crossed zero (-0.138..+0.931 ms; -0.128..+0.574 ms). The candidate also increased the binary by 16,544 bytes (0.135%) and measured RSS. Full checker correctness and byte-identical official/scale outputs passed; the one-token source change was fully reverted. A visibly loaded preliminary set is retained separately and excluded.

8 days ago

Accepted and published the import-free virtual-import gate.

  • Source: 83c44368c
  • Benchmark docs + README summary: c41140b11
  • TypeScript comparison is pinned to JS TypeScript 6.0.3 versus the single native TypeScript/tsgo 7.0.2 competitor.
  • Official 128-family confirmation: 1.0327x wall, 18/30 wins, paired CI +0.138 to +2.649 ms.
  • 2,048-family scale: 1.0576x wall, 10/10 wins, paired CI +70.251 to +129.207 ms.
  • Final competitor checkpoint: Home 33.2 ms versus native TS 7.0.2 at 69.5 ms; 2.09x faster, 30/30 paired wins.

All 20 admission controls and the checker, driver, CLI, and 95-test benchmark harness passed. Full methodology, retained outliers, hashes, and artifacts are documented.

8 days ago

Starting the next profile-backed TypeScript frontend probe from clean origin/main (37215a5f7). A fresh 10-second sample of the independently scaled 8,192-family interface_composition project (368,640 generated lines; unchanged generator and options) records 271 exclusive samples in scriptObjectExpandoHasPrototypeAssignment. That helper scans the whole source root for NS.Member.prototype assignments even when the checker’s existing exact conservative .prototype marker proves the match impossible. I am evaluating a one-line attached-source negative gate; source-less HIR and every source containing .prototype retain the existing scan. Admission requires byte-identical outputs, a positive paired official screen and independent confirmation, the 16x scale check, correctness suites, and the version-pinned TS 6.0.3/native TS 7.0.2 controls. Any inconclusive or regressing candidate will be fully reverted and documented.

8 days ago

Rejected and fully reverted the profile-backed prototype-assignment marker gate; documentation and the linked README row are now on main in abd00d1d2. The initial loaded set is retained (32.053 -> 35.239 ms wall; paired CI -8.687..+2.315 ms). After the identified transient processes exited, the separately labeled 10-pair replacement measured 31.648 -> 31.780 ms wall (0.9958x, 5/10 wins, CI -0.813..+0.549) and 30.695 -> 30.781 ms CPU (0.9972x, 5/10, CI -0.792..+0.621). Both binaries were the same size and produced byte-identical empty official output. Because both timing intervals crossed zero and the means regressed, there was no confirmation, scale run, correctness suite, source commit, or competitor checkpoint. Every sample, binary, profile, hash, exact output, and load snapshot remains under script-expando-prototype-gate.20260902T211936Z/.

8 days ago

Starting the next independent profile-backed probe after the fully reverted prototype gate. The same accepted-code 8,192-family trace records 236 exclusive samples in moduleNamespaceTypeForLocalImport, the next untested whole-root miss scan. That helper can only match an import declaration, but unlike the already accepted virtualImportTypeForLocal gate it does not consult the existing conservative source_may_have_import_declaration fact. I am evaluating the corresponding attached-source negative gate; import-bearing source and source-less HIR retain the complete existing module/CommonJS/interop resolution path. The frozen accepted binary remains the baseline, and the same screen/confirmation/scale/correctness/admission rules apply.

8 days ago

Rejected and fully reverted the import-free module-namespace gate; documentation and the README link are pushed to main in 3cfaa51e6. The unchanged official 128-family screen retained every pair: wall 33.200 -> 33.275 ms (0.9978x, 5/10 wins, paired CI -0.816..+0.667) and CPU 31.856 -> 31.931 ms (0.9977x, 6/10, CI -0.575..+0.425). Both binaries were 12,026,760 bytes and produced byte-identical empty output. Two unrelated Zig builds occupied two full cores in both snapshots; since the candidate still regressed, there was no replacement, confirmation, scale timing, correctness suite, source commit, or competitor checkpoint. All evidence is retained under import-free-module-namespace-gate.20260902T212617Z/.

8 days ago

Starting the next independent profile target: the accepted 8,192-family trace records 211 exclusive samples in findTypeAliasDeclForHeritageCycle. Its first findTypeAliasDeclInScope lookup already consults the existing conservative type-alias source fact, but after an exact syntax miss the heritage fallback still rescans every root statement for a type alias. I am evaluating reuse of that same negative fact before only the fallback scan. Type-alias-bearing sources and source-less HIR retain the complete scoped and root lookup. The unchanged official corpus and all established admission rules remain the gate.

8 days ago

Rejected and fully reverted the type-alias heritage fallback gate; detailed evidence and the README row are pushed to main in 5d03cf219. Loaded screen: wall 34.963 -> 34.010 ms (1.0280x, 7/10 wins, paired CI -0.406..+2.311) and CPU 1.0278x with a crossing interval. After the two identified links exited, the one predeclared replacement encountered ten unrelated test shards and a new link; it retained every pair and measured wall 39.621 -> 38.878 ms (1.0191x, 6/10, CI -1.744..+3.229) and CPU 1.0112x with a crossing interval. I did not repeat measurements until noise favored the candidate. Byte-identical official output and equal 12,026,760-byte binaries passed; no confirmation, scale timing, correctness suite, source commit, or competitor checkpoint was admitted. Evidence remains under type-alias-heritage-fallback-gate.20260902T213124Z/.

8 days ago

Progress via #548: pushed https://github.com/home-lang/home/commit/3852cd38fb88d9e23a5e313da0755ca285077a74 to main.

Imported generic function and interface/class method signatures now retain local type parameters, constraints, and defaults across source-owned program schemas. A focused cross-module control now matches pinned tsc and tsgo exactly (only the deliberate TS2322; no false TS7006).

On the exact pinned Zod 4.5.2 corpus, deterministic diagnostics improved from 1,349 to 1,347 (two removed, zero added). Zod is not yet semantically admitted, so timing remains intentionally blocked and the README benchmark table was not given a misleading result.

8 days ago

Progress via #548: pushed https://github.com/home-lang/home/commit/18f936ab6237818800fd65c6470f1749f9ffcef0 to main.

Primitive keyword type arguments now remain intrinsic during unresolved-generic recovery even when same-spelling runtime functions exist. A focused reference-compiler control retains a genuine value-only TS2749 negative control.

On the exact pinned Zod 4.5.2 graph, a fresh same-parent ReleaseFast A/B is deterministic across two runs each: 1,348 diagnostics on parent 3852cd38f versus 1,323 on candidate 18f936ab6. The exact diff removes 25 false primitive TS2749 diagnostics and adds zero.

This also corrects the prior pre-commit snapshot count: the exact rebuilt 3852cd38f source has one additional TS7006 at classic/schemas.ts:1631, so 1,348 is the authoritative parent count. That contextual-typing gap remains visible. Zod is still not timing-eligible, so no README timing row was added.

8 days ago

Zod parity update: pushed https://github.com/home-lang/home/commit/7ef4a49a070d75621f88094858b6e0a440dc0260 to main, fixing contextual typing through named namespace re-exports whose resolver already supplied a canonical owner path. The untouched 106-file Zod 4.5.2 corpus is deterministic at 1,322 diagnostics, down from the verified 1,323 checker baseline; pinned tsc 6.0.3 and tsgo 7.0.2 remain silent. Full evidence and validation: /home-lang/home/issues/548#issuecomment-5520257374. No timing or README benchmark row yet because semantic parity is still incomplete.

8 days ago

Zod admission progress: c71870a resolves #588 and removes 156 false TS7006 diagnostics with zero additions on the untouched pinned 106-file corpus (1,322 -> 1,166, deterministic output hash 6f30c07c30b804eeb88181108347bfd5e11083d9000467fc6157906d62365ad6). Pinned tsc 6.0.3 and tsgo 7.0.2 remain silent. The final nine nested-callback TS7006 diagnostics are tracked in #589; timing/README publication remains correctly blocked until semantic parity.

8 days ago

Benchmark-parity progress: 90a9f5a fixes complete Array callback arity under #589. The pinned unchanged Zod corpus moves 1,166 -> 1,164 diagnostics with 0 additions, deterministically. The benchmark remains unadmitted and no timing/README row is published while nine TS7006 diagnostics remain.

8 days ago

Zod parity progress: aa659e5 removes the two false JSON transform callback TS7006 diagnostics with zero additions (1,164 -> 1,162, deterministic hash fcfb4df6c0f270edc09a9a6287be10eb0b4c1690df1ce0d198fb63089b24bd4a). Seven #589 TS7006 diagnostics remain, so the benchmark is still not admitted and no timing/README row is published.

8 days ago

TypeScript correctness progress: a5ae69070 landed directly on origin/main and completes #589/#609. The admitted Zod 4.5.2 baseline is now 1,148 diagnostics (from 1,149), with exact 0-added/1-removed parity delta, deterministic repeated output, and no emit. This is a correctness admission only; no new timing claim or benchmark-table change is being made.

8 days ago

#540 is complete on main in b87db62c6, 1743ca880, and e53d7e845.

The export-list correctness gate was expanded from 96 to 128 cases to include renamed-local direct and two-hop barrel controls. TS 6.0.3, native TS 7.0.2, and Home now each pass 128/128 (384/384 compiler checks). Pristine base Home passed 80/128. Direct owner misses now retain TS2459/TS2460 provenance, while barrel misses remain TS2305.

This is an untimed admission improvement, not a new performance result; the existing 20/20 macOS and Linux benchmark snapshot is unchanged. The detailed matrix/evidence is linked from the new README admission table and recorded under the “Indexed export queries and variable-list ownership” section of TS_PERFORMANCE.md.

8 days ago

Main advanced through #617: returned imported callable factories now retain contextual callback types. On the exact Zod 4.5.2 graph this removes 60 TS7006 diagnostics with zero additions (1,148 → 1,088); all other diagnostic counts are unchanged. Two ReleaseFast outputs per arm are deterministic, the focused Program suite is 172/172, and README/detail docs are updated in 77deef9. #548 remains open and untimed while the remaining 1,088 diagnostics are reduced through separately controlled child issues.

8 days ago

Opened #619 from the next post-#617 Zod cluster: imported homomorphic mapped arguments lose contextual method types when the explicit local type argument contains a polymorphic this member. The reference-controlled reduction and required no-reparse, shadowing, negative-code, and exact Zod A/B gates are in the issue.

8 days ago

Completed child slice #619 and shipped it to origin/main through ad4ae62.

The change adds exact mapped-receiver controls shared by TypeScript 6.0.3, native TypeScript 7.0.2, and Home, plus a documented pinned-Zod same-correctness audit: 112 diagnostics removed, zero added, and 42.2% lower mean wall time versus exact parent 77deef9. This does not admit Zod into the cross-compiler speed table; #548 remains open until Home reaches the zero-diagnostic oracle.

8 days ago

Next evidence-led correctness child is #624 under #548. Post-#619, TS7006 is the largest remaining pinned-Zod class at 368. A strict imported/barrel reduction isolates loss of optional, generic, and rest parameter tuples through conditional mapped prototype members; TypeScript 6/7 agree on only the deliberate TS2339, while Home adds eight implicit-any diagnostics. Timing remains gated behind zero-added semantic evidence.

8 days ago

#624 is complete and landed on main as b73c3a20a..4deb785cc.

On the pinned 106-file Zod 4.5.2 graph, Home moved from 976 to 833 diagnostics: 143 removed (127x TS7006, 16x TS7019), with zero normalized additions. Program 174/174, Checker 4,334/4,334, ReleaseFast, formatting, scoped lint, and the final byte-identical integration audit all pass. The README links to the full benchmark record.

Zod still has 833 diagnostics, so the broader zero-diagnostic admission work remains open.

8 days ago

Zod admission update: #627 landed on main at 2de0edb. ReleaseFast diagnostics on the frozen 106-file Zod 4.5.2 graph are now 710 (down from 833); TS7006 is 118 (down from 241). The exact identity diff is 123 removed and 0 added. Evidence is documented in docs/docs/TS_PERFORMANCE.md#generic-member-assigned-callback-context.

8 days ago

Scoped correctness follow-up #633 is now complete on main (4446c5864, c5c3fd009). TypeScript 6.0.3, native TypeScript 7.0.2, and Home agree on the focused dependent-default accept/reject oracle. The pinned Zod 4.5.2 audit moved 710 → 604 diagnostics, removing 106 with 0 added. Full evidence: https://github.com/home-lang/home/blob/main/docs/docs/TS_PERFORMANCE.md#dependent-generic-defaults

Follow-up coverage remains issue-driven: #634 tracks symbolic indexed-access defaults and #639 tracks the recursive constraint fixed-point limitation found by negative-control testing.

8 days ago

Correctness follow-up #634 is complete on main (f6a014d4b, 773af2405). TypeScript 6.0.3, native TypeScript 7.0.2, and Home agree on every focused symbolic indexed-default accept/reject location. The production Zod identity set is unchanged at 604 diagnostics with zero additions/removals. Evidence: https://github.com/home-lang/home/blob/main/docs/docs/TS_PERFORMANCE.md#symbolic-indexed-access-generic-defaults

Recursive declaration-owned fixed points remain tracked separately in #639.

8 days ago

Correctness update: #639 is fixed on main in 7d7cf23f8, with evidence in f7fa8f9c5.

Home now rejects both recursive generic-default constraint controls (TS2344/TS2344), matching the pinned TS 6.0.3 and native TS 7.0.2 semantic outcomes while preserving valid, readonly, owner-local, and two-file Program controls. The complete Zod identity audit removes four target TS2345 diagnostics, adds none, and leaves 600 remaining for subsequent issue-driven reductions.

Final CLI validation also exposed a separate pre-existing crash for --skipLibCheck and --ignoreConfig; it is isolated in #645 and linked to the existing TS5112 issue #486.

8 days ago

Correctness update: #645 is fixed on main in d318b0c28, with evidence in 5cbf35e3b.

Home now parses --ignoreConfig and --skipLibCheck as typed booleans, preserves positional files, honors explicit true/false overrides, suppresses only declaration checker diagnostics for skipLibCheck, retains syntax diagnostics, and completes the six-case TS6/TS7 oracle without the former exit 139. #486 remains open for the absent-flag TS5112 diagnostic; the independently exposed cross-file declared-global reduction is recorded on #480.

8 days ago

Correctness checkpoint #480 is complete and documented in 6b1368502. Home now matches pinned TypeScript 6.0.3 and native TypeScript 7.0.2 on all 60/60 global controls and 56/56 bound-global controls, including cyclic owners in both explicit root orders. ReleaseFast passes, but timing was intentionally skipped under concurrent load. The unchanged Zod graph remains 600 diagnostics; imported-owner rest signatures (16/20 total) and inherited nominal origins (44/52) remain open, so no benchmark-leadership scope is overstated.

8 days ago

Current TypeScript checkpoint is published in 4fda2da9e.

  • d0b9ef0aa (#651) removes quadratic CommonJS owner relocation by keeping CommonJS modules out of script-global publication.
  • e4e9d16c2 (#652) removes complete-HIR projection scans for already-typed receivers (82.4B -> 3.09B retired instructions on the unchanged large-predicate corpus).
  • c215ebe3d (#653) restores 95/95 benchmark harness tests without changing audit cases or oracles.
  • #487 is complete: graph types 720/720, discovery 84/84, export origins 96/96, owners 60/60, nominal origins 156/156. Globals 180/180, bound globals 168/168, CommonJS types 198/198, CommonJS discovery 132/132, and export lists 384/384 also pass.

Final schema-3 result 20260905T225537Z (TS 6.0.3, native TS 7.0.2, Home; 30 interleaved rounds after 3 warmups; verified unchanged provenance) records Home lower means on 20/20 workloads and 600/600 paired wins. Narrowest mean lead: 1.60x on type_predicates_large; CommonJS: 1.87x. One unrelated single-core fuzz process was present throughout and is disclosed in the docs; no sample was removed or rerun. The preceding honest discovery screen 20260905T223009Z remains documented at 17/20.

8 days ago

Published the latest untimed real-project correctness checkpoint in 4ef52ad, linked from the README. Pinned Zod 4.5.2 moved from 602 to 523 diagnostics (79 unique identities removed, 0 added) through 2e749f7 (#654) and 197ee07 (#534). The synthetic schema-3 benchmark remains 20/20 Home mean wins and 600/600 paired wins from the prior admitted checkpoint; Zod timing remains gated on zero diagnostics under #548.

8 days ago

Published the next untimed Zod correctness checkpoint in 6763779 after #656 (ab86dad): 523 -> 489 diagnostics, 34 TS2339 keys removed and 0 added; 113 unique removals versus the immutable 602 baseline. The admitted synthetic benchmark snapshot is unchanged.

8 days ago

Published the #657 semantic checkpoint on origin/main: 5f31fc7f1 implementation and 2143a4623 documentation. The fair cyclic callable oracle is 0 across Home/TS6/TS7; invalid controls match exactly; Program 189/189 and checker 4,353/4,353 pass. Zod stays 489/484 with zero identity churn. Two broader policies were measured and rejected (92 added keys; 156 added TS7006 keys), and those results are retained in the docs: https://github.com/home-lang/home/blob/main/docs/docs/TS_PERFORMANCE.md#parameterized-built-in-callable-transfer

8 days ago

Published #658 on origin/main: 0ffa17565 implementation, f880159a5 docs. Exact left-to-right dependent alias constraint instantiation removes 41 Zod TS2344 identities with zero additions (489/484 -> 448/443), while the invalid literal remains rejected identically by Home, TS6, and TS7. Checker 4,354/4,354 and Program 189/189 pass. Details: https://github.com/home-lang/home/blob/main/docs/docs/TS_PERFORMANCE.md#dependent-generic-alias-constraint-instantiation

8 days ago

Published the #659 conditional indexed-alias checkpoint: implementation 1332e4e6f, documentation 5d72ab3fd. Fair unqualified and qualified strict controls match TypeScript 6.0.3 and native TypeScript 7.0.2: constrained keys are clean and unconstrained keys retain one TS2344. Pinned Zod moves 448/443 -> 446/441, exactly 2 TS2344 removed and 0 keys added; cumulative immutable-baseline delta is 156 unique removals / 0 additions. Full checker 4,355/4,355 and Program 189/189 pass. No timing claim was admitted due outstanding diagnostics and shared-host build contention.

8 days ago

Published the #660 Map-entry tuple audit on main.

The fair three-engine oracle is exact: valid pipeline clean; invalid control one TS2322 from string[] to number[] in Home, TS 6.0.3, and TS 7.0.2. Pinned Zod improves 446/441 to 440/435 diagnostics/unique identities with zero additions. Timing is intentionally excluded because Zod is not yet diagnostic-clean and ReleaseFast built on a contended host. #416 remains open.

8 days ago

Published the #661 nested default-lib alias audit on main.

The exact three-engine oracle accepts nested PropertyKey and retains one TS2304 for MissingKey. Pinned Zod improves 440/435 to 436/431 diagnostics/unique identities with zero additions. Timing is excluded while the graph is not diagnostic-clean and the host is contended. #416 remains open.

8 days ago

Fair benchmark record update: #662, #663, and #664 are complete on main and documented in f26b768: https://github.com/home-lang/home/blob/main/docs/docs/TS_PERFORMANCE.md#zod-collection-and-generic-relation-audit-662664

Three focused positive/negative oracles now match TypeScript 6.0.3 and the native TypeScript preview for collection interfaces, conditional object spreads, and transitive generic argument constraints. The unchanged Zod 4.5.2 graph improves from 436 diagnostics / 431 unique identities to 430 / 425, with 6 removals and 0 additions; cumulative improvement from the immutable baseline is 172 unique removals and 0 additions. Timing is deliberately excluded because the shared host was contended and Home still reports diagnostics where TypeScript reports zero. Full checker and Program suites and a clean-cache ReleaseFast build pass.

8 days ago

Fair benchmark record update: #665 is complete and documented in a903452: https://github.com/home-lang/home/blob/main/docs/docs/TS_PERFORMANCE.md#partially-transferable-imported-class-methods

The admitted projection-only design matches TypeScript 6.0.3 and the native preview on a strict positive/negative two-file oracle, then removes 30 TS7006 identities from the unchanged Zod 4.5.2 graph with 0 additions (430/425 diagnostics/unique identities to 400/395). Two runs are byte-identical. A broader whole-class candidate crashed the corpus and was rejected without a commit. Timing remains excluded because the host was contended and Home still does not type-check the graph cleanly.

8 days ago

Published the #666 mapped contextual-member correctness admission in d748112: https://github.com/home-lang/home/blob/main/docs/docs/TS_PERFORMANCE.md#imported-mapped-contextual-members

The fair three-engine oracle matches exactly. Zod 4.5.2 remains outside timing because it still has 400 diagnostics; exact parent/candidate stderr and normalized identities are identical, and contended-host timings were excluded.

8 days ago

Imported overloaded object-literal context is now audited on main via #667 (b6f5eef4a, docs 9c13f230f). The strict oracle is an exact three-engine match; the unchanged Zod admission guard has 0 identity additions and byte-identical baseline/candidate output.

README summary: https://github.com/home-lang/home#typescript-performance Detailed audit: https://github.com/home-lang/home/blob/main/docs/docs/TS_PERFORMANCE.md#imported-overloaded-object-literal-context

No timing claim was admitted because the shared host was contended and Zod still has diagnostics.

8 days ago

Standard imported Extract<T, U> transfer is complete via #668 (40160d029, docs 13d74ca52). The new strict conditional mapped-handler oracle is an exact three-engine diagnostic-code match, including the distributive nonmatch and never fallback controls.

The unchanged Zod graph remains a valid zero-addition admission result; no timing claim was made on the contended host.

README: https://github.com/home-lang/home#typescript-performance Detailed audit: https://github.com/home-lang/home/blob/main/docs/docs/TS_PERFORMANCE.md#imported-extract-conditional-handlers

8 days ago

TS correctness/performance track update: #669 is closed on main. Imported nested indexed-access key domains now match TypeScript in the focused fair oracle, with explicit no-widening guards for missing and partial union coverage. Zod admission is deterministic and unchanged at 400 diagnostics / 395 identities, zero added/removed; it remains excluded from timing until diagnostic parity. Commits: 12e1c1d6c, 1ea1d2a7a, 15a508a11. Evidence: /home-lang/home/issues/669#issuecomment-5561267845

8 days ago

TS correctness/performance track update: #670 is closed on main. Qualified namespace declaration admission removes 6 false Zod TS2339 identities with zero additions (400/395→394/389), while keeping strict unsafe-graph guards. The separate 16 handler TS7006 sites remain for the next exact slice. Commits: 24f4376f1, e8a92aa2a. Evidence: /home-lang/home/issues/670#issuecomment-5561365837

8 days ago

Correctness checkpoint #671 is complete on origin/main (290487c0f, docs 6e199a3e2). The fair pinned Zod audit improves 394→374 diagnostics and 389→369 unique identities, exactly 20 false TS7006 removed and zero added; two candidate runs are byte-identical. Zod remains outside cross-compiler timing because TypeScript reports zero diagnostics. Evidence: /home-lang/home/issues/671#issuecomment-5561759700

8 days ago

Correctness checkpoint #672 is complete (673a648a9, docs 307892be9). Its focused oracle is fixed, while two Zod candidate runs remain byte-identical to #671 at 374 diagnostics / 369 identities. This is documented as a negative corpus result and makes no timing claim. Evidence: /home-lang/home/issues/672#issuecomment-5561862625

8 days ago

Correctness admission #673 landed on main (a730be062, docs 4d5d3d5a9). Fair Zod 4.5.2 A/B: 374 -> 350 diagnostics, 369 -> 345 location/code identities, 24 removed and 0 added; two byte-identical ReleaseSafe runs (68.84s, 71.47s). Zod still has diagnostics, so no cross-compiler timing claim was admitted. Details: /home-lang/home/issues/673#issuecomment-5568630029

8 days ago

#687 is complete on origin/main: code 901c0d0ec, docs ca6870a79.

On the unchanged pinned Zod 4.5.2 graph, Home improves 350 → 348 diagnostics and 345 → 343 unique identities, with exactly two TS7006 identities removed and zero added. The fair three-engine Promise-union oracle is clean for all valid cases and preserves the exact one-TS2322 negative control. Program 205/205 and checker 4,365/4,365 pass, along with ReleaseSafe and ReleaseFast builds.

The remaining four core/parse.ts TS7006 sites are now isolated to qualified imported issue-array element transfer and are tracked in #688.

8 days ago

Published fix: 48ef397 (refs #416; fixes #728), authored by glennmichael123 gtorregosa@gmail.com, without coauthors.

The predicate, large-predicate, and destructuring negative controls now accept only normal diagnostic exits 1 or 2 with the exact diagnostic multiset. Matching diagnostics followed by a crash or timeout no longer admit a compiler to timing.

Verification: all 96 benchmark harness tests pass, including 63 simulated admission decisions in the new matrix. README and TS_PERFORMANCE.md document the result as untimed, preserving the historical timing tables without claiming fresh validation or a speedup.

Local baseline preparation remains incomplete: a single-job ReleaseFast home-tsc build was stopped by the unchanged 3072 MB ceiling at a reported 3101 MB tree footprint. The old binary was not used to publish current performance numbers. Pinned competitor installs and Hyperfine are also absent on this checkout. Full benchmark leadership remains open.

8 days ago

Current-source execution is tracked in #732.

The local one-job ReleaseFast build was stopped by the repository supervisor at 3,588 MB under a 3,584 MB ceiling, then at 3,854 MB under a final 3,840 MB ceiling. The host remained healthy; no higher ceiling was attempted. The existing home-tsc binary is stale and was not benchmarked.

The repository's existing TypeScript Frontend Benchmark workflow was dispatched against current main, but GitHub rejected it before creating a run with HTTP 422: “Actions has been disabled for this repository.” Pinned competitors and Hyperfine are ready locally. No new performance result exists, so README and TS_PERFORMANCE timing tables remain unchanged.

#732 defines the fair recovery boundary: current ReleaseFast build, unchanged schema-3 admission, complete 30-round interleaved suite, retained provenance/raw samples, then documentation updates from that evidence.

8 days ago

Published build capacity and benchmark documentation to origin/main as glennmichael123 <gtorregosa@gmail.com>, without coauthors:

  • 11a38aa95 adds -Dhome-tsc-strip=true, uses it in the benchmark workflow and documented reproduction, and retains ReleaseFast semantics. The current compiler built with one job at 2,942 MB peak supervised tree footprint, down from the unstripped attempts that crossed 3,584 MB and 3,840 MB ceilings.
  • aa60cdbdf publishes focused result 20260911T033015Z in TS_PERFORMANCE.md and the README.

The focused run admitted unchanged checkjs_jsdoc and type_predicates_large, used 30 fresh processes after three warmups, rotated compiler order, retained all 180 samples, and verified artifact provenance unchanged before admission and after measurement. Mac14,9, 16 GiB, 10 cores, macOS 26.3.1 arm64. Benchmark peak was 452 MB.

WorkloadTypeScript 6.0.3Native TypeScript 7.0.2Home 0.1.0Home lead
checkjs_jsdoc270.0 ± 54.1 ms69.2 ± 3.7 ms39.0 ± 1.4 ms1.77×
type_predicates_large1257.2 ± 104.6 ms421.8 ± 20.1 ms288.0 ± 15.3 ms1.46×

This focused confirmation supplements the prior full 20-workload snapshot. It is not a cross-platform or full-suite claim. #733 tracks the narrower large-predicate scaling lead. #732 remains open because GitHub Actions is disabled and the Linux x64 full-suite runner still cannot be dispatched.

8 days ago

Published ef0174c05 directly to origin/main as Chris Breuer, without coauthors, after rebasing on the latest main.

All 20 detailed table rows match the generated verified report exactly. The archive has 600 byte-identical raw round files, 3,000 retained samples, 140 successful admission records, and 603 verified payload checksums. Home's measured result is 1/20 lowest medians across all five admitted compilers, and 11/20 faster than direct native TypeScript 7. No older host, launcher, or competitor result is merged into this table.

The next source-level optimization is tracked in #839, starting with the largest relative gap, reexport_graph (2.24× slower than Bun). The full goal remains open: #548 production admission, additional platforms, C++ repository selection under #838, and all remaining five-compiler losses still require work.

8 days ago

Published two small conventional commits directly to origin/main, as Chris Breuer and without coauthors:

  • Source: b18f19203, perf(ts): reuse bound export owners across name queries (#839).
  • Evidence/docs: 3318885fb, docs(ts): publish export-owner reuse measurements (#839).

Detailed current snapshot and same-parent acceptance and brief README table are updated. All 20 detailed rows and all 10 README rows match the verified generated report exactly.

The independent unchanged re-export confirmation improves 20.178 → 17.430 ms, 1.158×, 27/30 paired wins; paired mean saving 95% t interval 1.565–3.403 ms. The diagnostic same-generator 4096-leaf confirmation improves 1.701 → 1.538 s, 10/10 pairs, interval 131.280–226.124 ms. All samples and reversed command order are retained. Full Program 228, checker 4473, CLI 74, and harness 128 tests pass on the measured candidate. Pinned unmodified 106-file Zod has identical complete 196 TS + 3 HM9002 diagnostic identity multisets, with no added or removed diagnostics; this is stability, not production admission.

The complete five-compiler checkpoint retains 600 raw rounds / 3000 samples / 140 successful admissions / 603 verified checksums. Home leads 1/20, beats direct native TS 7 on 12/20, and still trails Bun on re-exports by 1.94×. The frozen measured source is precisely ef0174c05 plus the retained source patch; intervening compiler changes present after rebase are not assigned these timings.

  • Matrix archive, SHA-256 20d645283831bd360212267cbc27be7c54590c83fda2e9a02b6af6316d1e6672.
  • Paired archive, 4902 verified checksums, SHA-256 2c59c9f4781daae166031d43af2ece2d17e9180083e4b6a15eace89b9d37bd9a; all 266 pair rounds, full scale inputs, exact patch/scripts and semantic logs retained.

Documentation-only Pickier and git diff --check pass; the frozen candidate's repository-wide Pickier run has pre-existing 22074 findings, not a clean pass. A fresh published-tip repository-wide run is in progress.

#839 remains open. Code inspection has identified the next repeated-work site: each export-facts request constructs fresh origin queries, and recursive facts requests reopen and bind owners despite the adapter's retained query. The next candidate will test reuse of immutable owners and complete origin-query work without changing the fact traversal or introducing special cases. Any further source change requires a new exact-parent A/B and full semantic gates. #416, #838 and #548 remain open for competitor gaps, platform/C++ coverage and full production admission.

8 days ago

Published source 69c3d28ee and evidence/docs eaaddf213 directly to origin/main, as Chris Breuer, without coauthors. Both use conventional, #839-linked commit subjects; the worktree is clean.

Current detailed snapshot and the brief README table are updated. All 20 detailed rows and all 10 README rows match the verified generated report exactly. Documentation-only Pickier and git diff --check pass; full repository Pickier reports its 22074 findings, not a clean pass.

Performance and semantic acceptance

  • Exact parent 3318885fb; candidate source exactly 69c3d28ee, with no intervening upstream source in the rebase.
  • Official independent confirmation: 32.665 -> 24.885 ms, 1.313x, 25/30 paired wins; paired mean saving 95% t interval +2.516 to +13.013 ms.
  • Same-generator 4096-leaf confirmation: 2.503 -> 1.950 s, 1.283x, 9/10 wins; interval +255.781 to +710.265 ms. Official 64-leaf workload is unchanged.
  • Every screen/confirmation observation is retained. All 20 families were screened; three >3%-slower medians triggered independent 30-pair rechecks. Those median slowdowns did not reproduce, but startup remains 0.7% slower in its recheck (9/30 wins, saving CI -0.323 to +0.007 ms). Overlap is not equivalence or proof of no regression.
  • Full Program 230/230, checker 4483/4483, core CLI 74/74, entrypoint 33/33, harness 128/128 pass. No named-test filters/source exclusions; native test symbols are stripped under the unchanged guard.
  • Full unmodified pinned Zod: identical complete 196 TS + 3 HM9002 diagnostic identity multisets, zero additions/removals. Observed footprint is 887 MiB parent / 991 MiB candidate, an explicit memory tradeoff. This is regression stability, not production admission.

Fresh five-compiler result

20261008T031844Z: 140 successful admissions / 600 raw rounds / 3000 retained samples / 603 verified payload checksums, with unchanged provenance. Home leads 1/20 and beats direct native TS 7 on 12/20; Bun leads 18, Rust leads imports. Re-exports remain 1.99x slower than Bun. The largest relative loss in this run is CommonJS, 2.35x slower. No earlier host/run/competitor timing is merged into this table or attributed as a patch A/B.

  • Full matrix archive, SHA-256 50ea6212fdf1de7b6884a83d298c3a654a023ad1712e877a53163e70107f90ce.
  • Paired archive: 356 raw pair rounds / 5002 verified checksums, exact patch/scripts, complete admissions, all scale inputs and semantic logs; SHA-256 6f7abd669e0c0ad3692e7f96117bf78c18f0883c05586bd4d2cf8f861d1ade3e.
  • Candidate executable SHA-256 4b4af24fdb57dcfdba69de49a460014a1800cacdda7164a4fc8614e727e9ec2d.

#839 and the overall #416 goal remain open; #838 still needs canonical C++ selection/coverage and #548 full production admission. Code inspection identifies remaining general repeated work in recursive export-facts preparation, which still opens/binds nested owners independently of the retained query. That is a next source-level investigation, not an implemented or measured speed claim.

Execution headroom fluctuated again after publication (about 481 MiB free, below the unchanged admission/continuation disk floors). The successful completed runs are not relabeled as failed, and no new heavy work will be started below the guard. #732 remains the execution-capacity tracker. No resource ceiling/floor was relaxed or unrelated file/job altered.

8 days ago

Published source 30d3824da and evidence/docs a444cf021 directly to origin/main, as Chris Breuer, without coauthors. Both are conventional, issue-linked commits. The worktree is clean.

Current detailed snapshot and brief README table are updated. All 20 detailed rows and 10 README rows match the verified report exactly. Documentation-only Pickier/diff checks pass; repository Pickier retains 22082 findings, not a clean pass.

  • Same-parent independent official confirmation: 25.546 -> 20.730 ms, 1.232x, 25/30 wins; saving 95% t interval +2.446 to +9.779 ms. Unchanged-generator scale: 2.888 -> 2.351 s, 1.228x, 10/10, interval +375.313 to +791.154 ms.
  • The adverse initial overload screen (34.391 -> 42.957 ms, 2/10, interval -9.375 to -0.516 ms) is retained. All ten >3%-slower-median families receive independent 30-pair rechecks. Overloads are flat in that recheck; no recheck has an interval wholly below zero. Overlap is not equivalence. CommonJS remains 0.7% slower in its recheck and is explicitly documented.
  • Full Program 231/231, checker 4483/4483, core CLI 74/74, entrypoint 33/33, harness 128/128 pass. Unchanged checker artifact executes from cache; no named filters or source exclusions.
  • Pinned unmodified 106-file Zod has equal complete 196 TS + 3 HM9002 identity multisets, zero additions/removals. Observed footprints 1087/936 MiB (parent/candidate) are not a universal resource claim or production admission.
  • Fresh 20261008T042639Z: 140 admissions / 600 raw rounds / 3000 retained samples / 603 verified checksums, unchanged provenance. Home leads 2/20 (startup, overload_resolution) and beats direct native TS 7 on 15/20. Bun leads 17; Rust leads imports. Counts/margins are descriptive, not significance or cross-run causal claims. Re-exports still trail Bun by 1.27x, so #839 remains open.
  • Matrix archive: SHA-256 ed253feb8650bcb68995ba7c21ad83c07c2ed6652fc4747a879c00f35c60c8fd.
  • Paired archive: 566 byte-identical pair rounds / 5209 verified checksums, all admissions/observations, full scale inputs, exact patch/scripts and semantic logs; SHA-256 37199143215b6a03705bf3cba9975de232c43c8f4e0e9693ea0b8699a80e53bb.

No guard ceiling/floor is changed and no unrelated file/job is altered. Parent eaaddf2 has exactly the same compiler inputs as 69c3d28 (only documentation/evidence differ); frozen parent reuse is recorded, not mislabeled as a fresh compile. Candidate SHA-256: 92338a9715ef01c3bf7e7238f980e9df72e856340f6684daabf98924ceea4960.

The inherited eight-level fact cutoff is unchanged and explicitly outstanding in #843; storage reuse does not certify unbounded correctness. #416's full goal, #838 C++ selection/platform coverage, and #548 production admission also remain open. The next correctness investigation is a cycle-safe complete fact traversal under #843, alongside remaining performance gaps. No overall completion claim.

8 days ago

Published three small conventional commits directly to origin/main as Chris, no coauthors: 4e8ee86 fixes ambient enum option/access diagnostics (#844); 929d46a removes the export-fact depth cutoff with a cycle-safe retained-owner worklist (#843); aed1dad publishes detailed docs, a brief README cost table and verified raw evidence. Complete source suites passed (checker 4493, driver 199, Program 237, CLI 74, entrypoint 33), harness 128. Thirty original TS oracle cases exactly match; a new ordinary .ts default-import oracle still fails and is driven by open #845. Zod identities unchanged at 196 TS + 3 HM9002, not production admission. Exact-parent graph/scale confirmation medians are 2.9%/1.5% slower with intervals spanning zero; no speedup or equivalence claim. Large-predicate 3.1% screen warning and 0.5% slower independent recheck both retained. Archive retains 592 pair rounds, 448 passing admissions, 6206 verified checksums. Latest five-compiler matrix remains only 2/20 Home leads, so the leadership goal is not complete. Next: real module/default/interop oracle coverage under #845 and broader #843/#844 acceptance; continue logical performance work under #839 after correctness gates. Docs: https://github.com/home-lang/home/blob/main/docs/docs/TS_PERFORMANCE.md#complete-export-fact-traversal-and-option-diagnostics-2026-10-08-utc

8 days ago

Published two small conventional issue-linked commits directly to origin/main as Chris, no coauthors: 206cdf1 fixes default imports using retained module/source facts and actual JS admission (#845/#846); cde7cd3 publishes docs, README table and verified evidence. All final suites pass: checker 4501, Program 238, CLI 74, entrypoint 35, driver 199, harness 128. Native TS7 oracle 105/105, shared-config TS6 86/86; all 19 option-dialect cases retained explicitly, with native config locations now matching upstream #847. Exact parent b6e34fc Zod has identical 195 TS + 3 HM9002 identities, zero changes; not production admission. Cost confirmation inconclusive (graph 0.8% slower, scale 0.8% faster); retained large-predicate warning 3.5% slower and independent 0.9% slower recheck with zero-spanning interval. Archive 296 pair rounds, 224 admissions, 6271 checksums. Full repository lint still fails; targeted edited docs pass after correcting the earlier Markdown issue. Latest expanded five-compiler matrix remains 2/20 Home leads, so the full leadership goal is not complete. Next logical work remains closing benchmark gaps (#839), broader module/JS acceptance (#845/#846), production correctness (#548), and expanded platform/compiler coverage (#838). Report: https://github.com/home-lang/home/blob/main/docs/docs/TS_PERFORMANCE.md#default-module-owner-correctness-and-cost-checkpoint-2026-10-08-utc

8 days ago

Published #848 rejection evidence in 686089a after retaining tests in 773ca88, both conventional main commits as Chris without coauthors. Two general CommonJS path-index variants improved the local row ~5% but independently regressed large predicates, so neither compiler change was accepted. Restored original implementation; source-pinned restored native image exactly matched parent. README now has a brief tradeoff table linked to detailed rejection docs. Verified archives preserve all 686 paired rounds / 392 admissions, 56 profile admissions and 7031 checksums, plus the entire unaccepted five-compiler matrix 20261008T140417Z (600 rounds / 3000 samples, 140 admissions, 603 checksums). That prototype leads only 1/20 and is not the accepted current snapshot; prior accepted matrix remains dated separately. Goal remains incomplete. Next: general require/member/path lookup optimization with evidence that avoids the observed large-predicate tradeoff, continuing #848/#839 and broader correctness/platform/compiler scope.

8 days ago

Verified publication correction: docs commit 686089a was not pushed; main advanced and rejected it. Clean rebase and normal retry succeeded as 9ccd62c, with remote main verified and no force push/coauthors. Both #848 rejection archives, detailed docs and brief README table are now genuinely published. Source-pinned rejected experiments are not relabeled as results from the newly integrated library/config/substitution changes. Goal remains active and benchmark leadership remains unproven.

8 days ago

Child issue #849 is complete on main in 74b181394. The checker now groups static require/import-equals candidates by local name inside the existing declaration-index lifetime, with the full ordered scanner retained on allocation failure.

Integrated checker: 4,521/4,521. Exact-parent evidence retains 68 semantic admissions, full Zod identity, all raw rounds, and seven independent regression rechecks whose intervals span zero. The official and 1,024-family timing intervals are inconclusive; the independent 4,096-family run measured a +23.185 to +209.313 ms paired mean-saving interval. Full report and checksum-covered archive are linked from the README. Broader performance/parity work under #416 remains open.

8 days ago

Reviewed the landed #848/#849 implementations on main at 30ab18c. The grouped-require evidence archive verifies its published SHA-256 and every one of its 5,701 payload checksums. My earlier local #849 prototype remains preserved and uncommitted; its official and scale confirmation intervals crossed zero, so it is not promoted as a speedup or applied over the accepted implementation. Next: build and profile the current integrated source, preserving the 3,840 MB guard and shared machine lock, then select a remaining hotspot from current evidence. A new cross-compiler ranking is not claimed; #838 still owns the pinned matrix/C++ scope.

8 days ago

Completed #850 in small Chris-authored, conventional, no-coauthor commits on origin/main: source 00a9dcf and final docs/evidence 211d28c. Complete per-pass global reference facts preserve scanner semantics and allocation-failure behavior, with no persistent File/Checker state or language-rule shortcut. Frozen exact-parent official CommonJS confirmation has a 2.9% lower median; scale4096 has a 12.6% lower median, with positive paired mean-saving intervals. Scale1024 confirmation and the independent large-predicate recheck remain inconclusive, and all adverse observations are retained. Integrated source passes checker4527, Program247, supported build, 32 admissions, 116 semantic cases per four binaries, and unchanged full Zod198 diagnostic messages. README/report and both checksum-covered archives are published; timings remain explicitly frozen-parent, not relabeled after independent #842 integration. #416 is NOT complete: current accepted five-compiler ranking remains the older 2/20 checkpoint, #838 needs a fresh fully pinned matrix/platform scope, and #548 still has 195 TS + 3 HM9002. Next is the fresh matrix and its remaining measured gaps.

8 days ago

Fresh complete matrix published on origin/main in ac8af9c, as Chris without coauthors. Result20261008T202953Z measures landed compiler00a9dcf8f/metadata-source211d28ce3, native c16c8ca. Every one of 140 admissions, 600 original rotating-order rounds/3000 retained samples and 603 archive checksums verifies unchanged provenance. README10 rows and detailed20 rows match recomputed raw medians; the 12-checksum context archive preserves runner/guard/source proof and passing128-test harness log. Home currently leads1/20 (startup), ahead of nativeTS7 on11/20; Bun leads18, Rust imports. This replaces the old2/20 current ranking honestly, not as a causal patch regression. Largest current gaps: checkedJS/JSDoc2.19x, CommonJS2.04x, nullsafe1.97x, interfaces1.95x, TSX1.93x slower. C++ remains excluded for semantic failure, platform scope and Zod195TS+3HM9002 remain open. The full leadership goal is not achieved. The next scoped investigation targets Resolver.resolve allocating an owned concatenated key even on cache hits, preserving exact keys, trace/ambiguity and importer-condition semantics.

8 days ago

#851 adapted streaming resolver-key lookup is rejected after fair exact-parent confirmation: official reexports and both generated scales have wholly negative mean-saving intervals despite zero cache-hit allocations and complete semantic gates. No rejected compiler code landed. Small Chris/no-coauthor commits db28b2e and dce5796 retain general controls plus the complete rejection report/README table/raw archive. All452 rounds,256 admissions and13078 checksums verify; all adverse/inconclusive observations remain. Restored native is byte-identical to c16c8ca, so current accepted matrix remains Home1/20, not a newly improved ranking. #851 remains open; next work needs a different design with measured cost, or profiling the largest current checked-JS/CommonJS gaps. No workarounds, source-name shortcuts, hash edits, sample filtering or guard expansion were used.

8 days ago

Scoped #852 fairness gap fixed and evidence published in3491cdb45/6004a26 as Chris, no coauthors. CheckedJS now has a direct15-error gate at first/middle/last families; all five compilers pass isolated/combined controls and the fresh full protocol4 matrix145 admissions/600 rounds/3000 samples. CurrentHome1/20 first, ahead of nativeGo12/20; no universal lead or causal cross-run claim. README10/full docs20 rows match raw data. Profile of accepted compiler points to declaration-space and late checkSourceFile work, with exact instruction/source/input fingerprints and58 semantic image admissions. #853 tracks the next source-level investigation. Limits remain3840 MB/shared lock/disk floors. #416 remains active; platform/C++ scope and195TS+3HM9002 production gap remain unresolved.

8 days ago

Another small measured source chunk is pushed directly to main: class/interface modifier-merge index bbabc2f (#853), with docs/evidence/README commit b513c85, both sole Chris author/committer and no coauthors. Independent exact-parent confirmation supports about 1% lower medians for class hierarchy and 512-family JSDoc checking. All 442 paired rounds, 660 admissions, adverse large batch and inconclusive results are retained; the pooled large interval is positive but five-batch variation spans zero. Full checker4531 and harness136 pass, with unchanged Zod198 diagnostics. Detailed tables/raw archive: https://github.com/home-lang/home/blob/main/docs/docs/TS_PERFORMANCE.md#classinterface-modifier-merge-index-2026-10-08-utc . This A/B does NOT replace the latest full five-compiler matrix: Home still first 1/20, ahead of native TS7 12/20, with remaining C++/platform/Zod gaps. #853 remains open for the separately mapped whole-file JSDoc class-owner scan. The all-benchmark leadership goal remains incomplete.

8 days ago

Pushed a larger source-derived JSDoc performance chunk to main: ac34883 (#853), with complete docs/README/evidence in 9629578. Both are Chris-only conventional commits without coauthors. Exact-parent independent confirmation: official checked JS 29.662 -> 28.097 ms (5.3% lower), 512 families157.129 ->131.756 ms (16.1% lower), all five 8192 batches18.790 ->12.398 s (34.0% lower), all30 pairs favor the candidate in each scope. Pooled and between-batch large intervals are positive; all442 rounds/660 admissions and adverse-but-inconclusive risk results remain. Fullchecker4536 andharness136 pass; Zod198 diagnostics unchanged. Full report/raw evidence: https://github.com/home-lang/home/blob/main/docs/docs/TS_PERFORMANCE.md#class-local-typedef-owner-index-2026-10-09-utc . A fresh five-compiler matrix is starting, not inferred from A/Bs. Until that audit, the latest complete matrix remains Home1/20 and ahead of native TS7 12/20; C++/platform/Zod and all-benchmark leadership remain incomplete.

8 days ago

Published the fresh landed-owner five-compiler matrix and current-source profile in 4bbbd19 (Chris-only conventional commit, no coauthors, pushed to main). Result20261009T004232Z uses compilerac3488350/nativefb77a18e, validation4, all145 admissions /600 original rounds /3000 samples and603 verified archive checksums. Home still leads1/20 and beats nativeTS7 on11/20; Bun18 leaders, Rustimports. CheckedJS2.10x, interface/CommonJS2.02x, TSX1.98x and nullsafe1.97x remain gaps. Cross-run counts are descriptive, not causal regression/equivalence claims; earlier matrices and all A/Bs remain dated history. README10 rows/full20 rows match unrounded raw medians/ratios. Profile62 admissions and identical instruction sections support a new mapped repeated full-HIR nearest-prior var/let/const query (#854), not whole-run CPU percentages. Full report/evidence: https://github.com/home-lang/home/blob/main/docs/docs/TS_PERFORMANCE.md . Overall goal remains incomplete, with C++/platform/Zod gaps unchanged.

8 days ago

Pushed another measured compiler chunk and its complete evidence: af5fb32 / b9e6d25 (#854), Chris-only conventional main commits without coauthors. NodeId-only nearest-prior value candidates reduce independently confirmed JSDoc medians3.1% officially,9.9% at512 families,29.8% at8192; pooled and five-batch large intervals positive andall30 large pairs favor candidate. All472 rounds/660 admissions retained, including deep_types warning/extra recheck and inconclusive adverse-risk medians. Fullchecker4542/harness136 andallintegration modules pass; Zod198 unchanged. READMEtables/full docs/raw1585-checksum archive: https://github.com/home-lang/home/blob/main/docs/docs/TS_PERFORMANCE.md#nearest-prior-value-declaration-index-2026-10-09-utc . No competitor ranking inferred: latest published whole matrix predates this change and remainsHome1/20, nativeGo11/20. Remaining C++/platform/Zod/performance gaps and all-benchmark leadership remain incomplete.

8 days ago

Published refreshed nearest-prior matrix/profile in 5ea87f0, Chris-only conventional main commit without coauthors. Full result20261009T033439Z (sourceb9e6d2591/compileraf5fb320a/native69836df6) passes145 schema4 admissions and retains600 rounds/3000 samples with603 verified matrix checksums; all20 detailed/10 README rows match raw unrounded medians/ratios. Home remains1/20 and ahead of nativeTS7 11/20; Bun18, Rustimports. Current JSDoc gap1.95x, CommonJS1.98x, nullsafe1.96x, TSX1.90x and interfaces1.88x remain. These cross-run matrix counts are descriptive, not causal/equivalence verdicts. New diagnostic-only62-admission instruction-identical image/raw824/817-observation early/middle samples identify repeated virtual-section prefix and require-binding work, not whole-run percentages. Detailed tables/raw archives: https://github.com/home-lang/home/blob/main/docs/docs/TS_PERFORMANCE.md . All-benchmark leadership, C++/platform/Zod objectives remain incomplete.

8 days ago

New scoped performance checkpoint landed on main as Chris-only commits 30330c1 (source) and 71fa7db (docs/evidence), both linked to #854. Complete virtual-section source facts preserve exact semantics and full scalar OOM fallback. Independent checked-JS medians improve 4.0% at 512 families and 15.1% at 8,192, with all 30 large pairs faster and positive pooled/five-batch intervals. All 502 paired rounds, 660 admissions, full module/harness tests and unchanged pinned Zod diagnostics are documented with 1,617 verified payload checksums. Official performance is inconclusive; recursive generics retains a 1.5%-slower independent median and nearly negative interval, prominently documented as unresolved. Latest published competitor matrix is still Home 1/20 leads, ahead of native TS7 11/20; refreshing landed-source matrix next. C++ admission, other-platform coverage and Zod production admission remain unresolved. https://github.com/home-lang/home/blob/main/docs/docs/TS_PERFORMANCE.md#virtual-section-prefix-facts-2026-10-09-utc

8 days ago

Published the fresh five-compiler matrix and current-source profile in Chris-only main commit 484ad69 (source optimization 30330c1, A/B evidence 71fa7db). All 145 admissions and 3,000 samples verify with unchanged pins. Home still leads 1/20 and beats native TS7 11/20; Bun leads 18 and Rust leads imports. Checked-JS/CommonJS gaps are 2.04x/2.03x versus fastest competitors. Separate exact-parent scaling gains remain 4.0%/15.1%, with the unresolved recursive-generics warning retained. Complete source-owned require-binding facts are the next measured work item under #854. C++ admission, platform coverage, Zod production admission and universal leadership remain open. README/table/raw checksum evidence: https://github.com/home-lang/home/blob/main/docs/docs/TS_PERFORMANCE.md#landed-virtual-section-matrix-2026-10-09-utc

8 days ago

Correctness prerequisite landed in 18fc11133: Home now computes TypeScript's effective allowJs from omitted allowJs plus checkJs, while preserving explicit false. TS6/native TS7 differential controls agree on TS2322/TS5052/TS5053, and the rebased checker passed 4,546/4,546.

This is a semantic-admission correction, not a benchmark speedup claim. It prevents future benchmark/config matrices from accidentally comparing different admitted source sets. Detailed scope and remaining work are tracked in #846.

8 days ago

Published completed rejection checkpoint in Chris-only main commit68ea38d7a. All502 paired rounds/660 admissions retained with1665 verified primary checksums. The shared require-presence candidate improved checked-JS scales but was not shipped because independent class-hierarchy confirmation regressed (saving CI -0.429 to -0.041ms). Full candidate removed, newer source work preserved, no compiler changes in this commit. README table links all gains/adverse results and raw evidence. No new competitor/platform ranking or Zod admission inferred; latest published five-compiler matrix still Home1/20 leads, TS7 wins11/20. Further optimization requires a different logical design. Linux CI attempt was refused because repository Actions is disabled; runner/Actions access requested, no settings changed. https://github.com/home-lang/home/blob/main/docs/docs/TS_PERFORMANCE.md#shared-require-binding-presence-rejected-2026-10-09-utc

8 days ago

New evidence checkpoint published as Chris-only docs commit624916ec4. Presence-specific query facts were not shipped: independent interface-composition saving CI -6.423 to -1.076ms confirms regression, despite supported target scales. All532 rounds/660 admissions and1665 total primary+lint payload checksums retain every observation and warnings. Source/native restored, newer main runtime work preserved; no compiler changes in the commit. Latest five-compiler ranking remains the previously published1/20 Home leads,11/20 ahead of TS7, not updated by this rejected A/B. Zod/C++/other platforms and universal leadership remain incomplete. Next optimization must change actual repeated work without alignment/caps/omissions, not retest until pass. https://github.com/home-lang/home/blob/main/docs/docs/TS_PERFORMANCE.md#presence-specific-require-facts-rejected-2026-10-09-utc

8 days ago

Fresh current-main matrix and source profile published in Chris-only main commitabe538a86. Unchanged five compiler pins, all145 protocol4 admissions and3000 samples verify; Home leads1/20 (startup), beats nativeTS7 on13/20, Bun leads18 and Rust imports. This is a full matrix, not patch A/B or causal source-change attribution. Gaps remain checkedJS2.00x, nullsafe2.01x, interfaces1.92x, TSX1.85x and classes1.71x versus fastest measured competitor. Both rejected require-cache runtimes remain absent. Current-source previous-JSDoc ancestor-prefix scan is the next mapped investigation under#854, full semantic/performance gates remain mandatory. Zod/C++/other-platform coverage and universal leadership remain incomplete. https://github.com/home-lang/home/blob/main/docs/docs/TS_PERFORMANCE.md#restored-current-main-matrix-2026-10-09-utc

8 days ago

Accepted scoped #854 JSDoc ancestor-prefix optimization and results are pushed in two Chris-only, issue-linked conventional main commits:11055ba and0d2b0097abf6dbb37630505b69e8a261c7d53c9a. Complete532-round/660-admission exact-parent A/B gives8192-family median7.712274→7.007293s (9.1% lower),30/30 pairs faster across5 batches, positive pooled and batch intervals. Official/512 and independent class/interface checks remain inconclusive; recursive generics retains a slower independent median and nearly negative interval. Full semantic gates pass; unchanged Zod198 diagnostics means still unadmitted. README brief table, detailed full tables and immutable checksum evidence published: https://github.com/home-lang/home/blob/main/docs/docs/TS_PERFORMANCE.md#jsdoc-ancestor-prefix-facts-2026-10-09-utc . Existing five-compiler matrix predates this change (published1/20 Home leads); no new ranking or universal performance claim. Next step is clean-current-source five-compiler refresh with unchanged pins/protocol4/full admission, then fresh remaining-work mapping. C++ and other-platform coverage remain unresolved; no Actions settings or runner permissions changed.

8 days ago

Fresh landed-source matrix published in Chris-only conventional main commitb6608b14c631db91be6099e78c957ab67a3b5266 (https://github.com/home-lang/home/commit/b6608b14c631db91be6099e78c957ab67a3b5266), no coauthors. Result20261009T205353Z on source0d2b0097a/compiler11055ba47/native68c6ed517f9125ae1b570ff2e585c5b368745389af828258f6621fe5e6e0311c:145/145 admissions,600 equally rotating original rounds/3000 retained samples, unchanged5 pins/protocol4. Home leads1/20 and beats native TS7 on12/20; Bun18, Rust imports. Checked JS2.03x, null-safe1.97x, interfaces1.95x, TSX1.80x, classes1.70x slower than fastest competitor. Descriptive medians, not causal patch or equivalence claims. All20 rows,10-row README table and immutable evidence: https://github.com/home-lang/home/blob/main/docs/docs/TS_PERFORMANCE.md#landed-jsdoc-ancestor-prefix-matrix-2026-10-09-utc . Rawarchive603 checksums SHA2563d65ea6df449742f89053f94b2ae444fb5815ecdfc658b495f4a184fccc98915; context28checksums retains two supplemental-verification orchestration failures and correction. Actual measurement exit0; no measurement rerun/exclusion or admission weakening. Pickier retains11461 existing errors/10613 warnings. Universal leadership, Zod/C++/other-platform admission incomplete. Next: freshly map actual remaining work on landed source, retain recursive-generics and all existing independent risk controls.

8 days ago

Published complete rejected #857 namespace-import candidate evidence in Chris-only main docs commitaea27323599a13051ce1bfb8a98a19f4de457d1d. Independent destructuring slowdown13.908→14.030ms,9/30 faster, saving95% [-0.237,-0.029]ms rejects candidate despite supported2.3% 512-family and7.9% large gains. All592 rounds/660 admissions/eight semantic controls/native restoration, warnings and lock delays retained; candidate never committed/pushed. README table/full report/raw checksum links: https://github.com/home-lang/home/blob/main/docs/docs/TS_PERFORMANCE.md#ordered-namespace-import-candidates-2026-10-09-utc . Newer runtime main work preserved and clean standalone native68c6ed51 reproduced. Full published competitor snapshot still1/20 Home leads and12/20 versus nativeTS7; no new ranking inferred. Next evaluate the separately native-observed function-signature statement scan, including safe reuse of existing ordered facts instead of adding independent cache overhead. Carry destructuring and control-flow warnings plus all existing independent risks; no repeat-to-pass/layout tuning or semantic shortcuts. Universal leadership, Zod/C++/other-platform admission incomplete.

8 days ago

#859 complete frozen candidate REJECTED and full evidence/report/README table published to origin/main in Chris-only conventional commit e720676 (no coauthors). All622 pairs/660 admissions,original gates/current-main native/input proofs,all five large batches and warnings retained. Large8192 pooled medians7.2958365s→6.566492104s (30/30 faster) support scoped gain, but independent large predicates242.1781665→243.7080005ms (12/30) have wholly negative saving95CI[-7.550489701,-0.121624299]ms and reject. Candidate and nine controls removed,source clean/native68c6ed5 restored; no rejected code pushed,no repeat-to-pass/alignment changes. Report: https://github.com/home-lang/home/blob/main/docs/docs/TS_PERFORMANCE.md#shared-function-statement-groups-2026-10-10-utc . Raw archive1,892 checksums SHAa464393450de380317dc7f424ee3855311c73b8f731f9492b805945db28e7b1f,publicationcontext11 checksumsc66d7ee7f289f1185378c99963b5f172a73617d6883d62dc03e9e0be0a5dd23b. Latest five-compiler matrix stillHome1/20 leads,12/20 vsnativeTS7; no ranking update inferred from rejectedHome-only data. Zod195TS+3HM9002 remainsunadmitted and C++/Linux/Windows unresolved. Full goal remains active; future optimization must be materially different and carry the predicate regression risk alongside all prior risks.

8 days ago

#861unadmitted/incompleteA/B outcome publishedmaininChris-onlyissue-linkedconventionalec18f7fb3bed4a614f02d0c1eb91da099f9a3491,no coauthors. Source/nativeRESTORED,parent68...byte-identical;candidateNEVERpushed. ALL706retainedpairs/660admissions documented,not712planned/30largecompleted(24retained). Thirdbatchinterruptedexecutionrecordunknown,data-onlyrecoveryno retiming;fifthguard123at485MB/512floor,nocompletedpairs. Originalstrictverifierfailureandseparateunqualifieddataauditretained,no falsepass. Interface negativescreen andallzero-spanning/slowerpoints visible; no independentconfirmednegativeintervaldoesNOTestablishequivalence/acceptance. Report+READMEtable: https://github.com/home-lang/home/blob/main/docs/docs/TS_PERFORMANCE.md#simple-value-name-guard-2026-10-10-utc . Raw2001checksumsSHAeed995b6427dfa34c77f25f66d0b0641d75a925332ddd1629504b6008471845b;pubcontext16checksums236748dc5fd5413e69b0d045c10b059499580ef540ea9ee27e7e6ea00ab9e864. LatestfivecompilerrankingstillHome1/20leads,12/20vsnativeTS7;Zod195TS+3HM9002unadmitted,canonicalC++/LinuxWindowsunresolved(actualActionsdispatch422,no settingsmodified). Allknownjobsclosed. Goalcontinuesgenuinemateriallynewfeature/perfwork,notretimeunqualifiedattemptto-passorclaimuniversalsuccess.

8 days ago

Record and indexed-interface correctness work under #863 is landed in a6570c8; the complete admission report, README table and checksum-verified evidence are published in b4985e4 on origin/main. All 145 unchanged five-compiler synthetic admissions pass and all module gates pass. The unchanged pinned 106-file Zod graph remains unadmitted: 241 TS errors plus two HM9002 (clean parent 195 plus three; additional errors exposed under the wider graph are not called an improvement). No Zod timings or speedup claim. See https://github.com/home-lang/home/blob/main/docs/docs/TS_PERFORMANCE.md#imported-record-and-indexed-interface-admission-2026-10-10-utc . Native d58ddc54a147b3ad8b177a98a6b5cda04fd4df77595c5ccf44da690de5d57b32; raw archive 2022 verified checksums. Finite/symbolic keys, other Zod features, canonical C++ and other-platform coverage remain incomplete. Next performance work is a fresh complete landed-source matrix; the old 1/20 ranking remains a dated measurement, not a rank inferred from these admission checks.

8 days ago

Starting the next complete matrix on clean landed source b4985e4 (compiler implementation a6570c8), after a fresh standalone build must match qualified native d58ddc54a147b3ad8b177a98a6b5cda04fd4df77595c5ccf44da690de5d57b32. Frozen existing protocol: all 20 workloads, five pinned compilers, full positive/negative admission before timing, three warmups and 30 rotating rounds per row, all 3000 samples retained, unchanged 600-second/3840-MB guard. No benchmark source, configuration, output policy, alignment or run count is changed. No completed timings will be repeated or filtered. Zod and unsupported C++ remain explicitly unadmitted, not timed or called wins; other-platform coverage remains incomplete. The published prior matrix stays dated until this new run and independent verification finish.

8 days ago

Fresh matrix 20261010T051920Z completed once with exit 0 on landed source b4985e4 / native d58ddc5. Independent raw-data checks pass all 600 rotating rounds, 3000 samples, 145 admissions and unchanged provenance; canonical archive export is still waiting behind an unrelated live shared-lock holder, so full publication/archived-checksum verification remains pending. No timings repeated or filtered.

Raw descriptive medians: Home leads startup only (1/20), beats native TS7 on 12/20. Largest current fastest-competitor gaps: null_safe_access 34.066771 versus 16.895500 ms (2.016322x), checked JS 26.9904165 versus 13.5117915 ms (1.997545x), interfaces 35.426063 versus 17.9015205 ms (1.978942x). These are not causal patch or significance claims. Opened #864 for exact-native null-safe profiling and general optimization, with stronger inferred-local/optional-call negative controls required before new timing. The original corpus and existing protocol remain untouched while this matrix is being published. Zod, finite/symbolic Record domains, canonical C++ and other-platform coverage remain incomplete; universal leadership not established.

8 days ago

Published complete landed-source matrix 20261010T051920Z in Chris-authored conventional commit 1c0f38f on origin/main, no coauthors. Preserved the newer runtime commit by rebasing only the unpublished documentation chunk, no force push. README table and full report: https://github.com/home-lang/home/blob/main/docs/docs/TS_PERFORMANCE.md#landed-record-and-indexed-interface-matrix-2026-10-10-utc . All 600 rotating rounds / 3000 samples / 145 admissions retained and independently verified. Raw archive has 603 checksums, SHA-256 0f71bbe9dcc5a51089d993253c956e80ceb24e520c4de13d3eb9f4e02005255b; context archive has 31 checksums, SHA-256 8e6e787a1e917eea056c9debbb6c5fc358d8560b42a52cbd0ca7368ff4799ff9. No timing repeats, filtering, guard changes or benchmark-policy changes. Changed documents pass Pickier; existing full-repository 11460 errors/10614 warnings retained outside changed files.

Home still leads 1/20 and beats native TS7 on 12/20. Largest fastest-competitor gaps: null-safe access 2.02x, checked JS 2.00x, interfaces 1.98x; descriptive, not causal/significance claims. Zod241TS+2HM, finite/symbolic Record domains, canonical C++ and other-platform coverage remain incomplete. Next #864 step: execute untimed first/middle/last inferred-local and optional-call negative controls on copies of the actual existing null-safe workload before any new profiling/timing/optimization; original timed corpus stays unchanged.

8 days ago

Protocol-5 null-safe admission is landed in Chris-authored source commit 5a5db50 and documentation/evidence commit 666a8ad, pushed to origin/main without coauthors. Newer runtime work preserved. All 147 harness tests and 150/150 actual five-compiler admissions pass. Null-safe negative projects reject exactly 27 errors (18 TS2322; three each TS2339/TS2345/TS2493) at first/middle/last inferred locals, optional calls and tuple paths. Compiler and timed corpus unchanged; no new timings or optimization claim.

README has a brief outcome row and links to https://github.com/home-lang/home/blob/main/docs/docs/TS_PERFORMANCE.md#null-safe-inferred-result-admission-2026-10-10-utc . Raw evidence: 20261010-nullsafe-inferred-admission-864.tar.gz, SHA-256 6084fa605da7cdc3b7dd8858934b635ff57d799e65329281d82f3b0b02958ca2, all 24 payload checksums verified. Publication context SHA-256 fa1789b570931e9c81b695d8e94568166a732ae085db482bb3e565d51fec1de4, all 10 checksums verified. Changed documents pass Pickier; unchanged full-repository baseline 11460 errors/10614 warnings retained outside changed files. Historical matrix 20261010T051920Z remains protocol 4 and is not relabeled as having these stronger controls before timing.

Read-only mapping for actual native d58ddc5 is queued behind another live shared-lock holder. No diagnostic relink/image or sampling has started. Next step is exact-original-object layout proof outside declared relocation-sized words and current-native null-safe profiling, then a general optimization with complete gates/A-B/regression evidence. Zod241TS+2HM, finite/symbolic Record, C++ and other platforms remain incomplete; goal active.

8 days ago

Published complete live-HIR import-absence rejection in Chris-authored conventional origin/main commit35e3326510572dfc93d06293cad217ca167859ce, no coauthors. README table/link and full31-row report: https://github.com/home-lang/home/blob/main/docs/docs/TS_PERFORMANCE.md#live-hir-import-absence-rejected-2026-10-10-utc . All530 original pairs and280 admissions retained; no timing repeats/filtering/alignment tuning. Raw archive SHA-25666e1e2d44ee47056cdee463d6b5eb900dadbf10aa1dfa4464c7d081a1b27bda9, all1269 checksums; publication context SHA-2564d4880ea1624db0bb3d0b8eba17fc61520b37894a03ec3490a9bc2f777eee922, all13 checksums. Changed docs pass Pickier; unrelated11460errors/10614warnings retained outside changes.

Candidate never pushed; exact source/test patch removed, fresh parent native restored byte-for-byte to d58ddc5, sourceclean. Target17/30 faster but saving95% CI -0.106..+2.981ms; parent60.264167ms retained. No independent risk CI whollynegative, but no equivalence/gain inferred. Reexport adverse screen and zero-spanning independent check both retained. This exact candidate is rejected, not tuned for a favorable rerun. Next different profile-supported path: guardReferencesAssignedIdentifier inlines into aliasedGuardReferencesAreStable and scans every HIR node for identifiers contained in each guard span. The current actual-image PCs152/180/456/488 are retained; any faster range lookup must preserve whole-HIR span semantics including unrelated/recovery/zero/reversed/overlap spans, dynamic assignments, HIR growth/in-place mutation and OOM behavior. Source inspection is not itself a CPUshare/gain. Full universalgoal remains active and incomplete.

8 days ago

Landed #864 live-body supported-write proof in 0b8d1f0; complete docs/raw/README evidence in 274175d, Chris author/committer, no coauthors. Official independent null-safe median 33.131 → 21.737 ms (34.4% lower), positive +11.347 to +11.772 ms mean-saving interval, 30/30 faster pairs. All 530 pairs/280 admissions retained, no independent wholly-negative risk interval; uncertainty remains visible. Full report: https://github.com/home-lang/home/blob/main/docs/docs/TS_PERFORMANCE.md#live-body-write-proof-accepted-2026-10-10-utc . Separate full five-compiler protocol-5 matrix follows; existing 1/20 lead and 12/20 vs TS7 are not inferred to change from this A/B. Universal benchmark goal remains incomplete.

8 days ago

Complete post-adoption matrix published in d3cfdac: result20261010T081352Z, protocol5, five unchanged pins/all20 rows/150 admissions/600 rounds/3000 samples, no repeats/filtering. Home still leads1/20, now13/20 vs nativeTS7; nilsafe22.219ms vs TS7 27.316ms but Bun17.242ms. Largest fastest-competitor gaps checkedJS1.94x/interfaces1.88x/TSX1.77x. README and full evidence updated: https://github.com/home-lang/home/blob/main/docs/docs/TS_PERFORMANCE.md#adopted-write-proof-benchmark-matrix-2026-10-10-utc . RawSHA256 cd1453ab18b37f56c00ef0e7567c314d86e12b879af2423ff247291a45c7f799,603 checksums verified. Three small conventional issue-linked commits landed as Chris/no coauthors; universal goal remains active.

8 days ago

Fresh actual-native checked-JS profile under #854 published in 91c8756, Chris/no coauthors main. One unmodified adopted ff78 native process,36 complete admissions, fixed early/middle windows, exact cached link/object mapping independently verified. Root-statement traversal in require-assignment receiver checking is a current source-level investigation lead; no CPU-share or speedup claimed and no rejected presence cache revived. RawSHA256 2d5f88bb08f0446bac4307765f0d9cf9813983e53d1aefdb7e41be29d12673b3,47 verified checksums; README link/full report: https://github.com/home-lang/home/blob/main/docs/docs/TS_PERFORMANCE.md#current-native-checked-javascript-profile-2026-10-10-utc . Benchmark ranking unchanged1/20 leads,13/20 vsTS7. Next is exact syntax ownership/invalidation audit before any candidate implementation.

8 days ago

Completed #854 exactJSDoc single-line-scan experiment rejected on confirmedindependentstartup loss, despitepositivecheckedJSprimary. All590pairs/284admissions/33rows documented, raw1342checksumsverify; source+native restored and candidate neverpushed. Rejectiondocs0b133c8c0pushed asChris/no coauthors preservingruntime docs. Report: https://github.com/home-lang/home/blob/main/docs/docs/TS_PERFORMANCE.md#jsdoc-single-line-scan-rejected-2026-10-10-utc . No repeats/filtering/tuning; rankingremains1/20leads13/20vsTS7. Continuing current-native investigation andoriginalallbenchmark/correctness/platformgoal, notmarkingcomplete.

8 days ago

Pushed c52d8fd to origin/main as Chris, no coauthors: corrected a stale README Project status row claiming 19/20 wins. It now matches the published 20261010T081352Z protocol-5 matrix: lowest median 1/20, faster than native TS7 13/20, with a direct report link. No new speed claim or timing run. Preserved concurrent runtime commits and the isolated uncommitted Record candidate. Issue #863 current candidate completed checker 4564, Program 257, driver 200, CLI 76, entrypoint 38, harness 147; original 72 diagnostics and 180 image admissions pass, but a new general collection-bearing factory negative is silently accepted. Candidate held back; Zod remains unadmitted/untimed, universal goal incomplete.

8 days ago

Two further Chris-authored, no-coauthor main chunks landed: 28f059d fixes the TS_PERFORMANCE current-snapshot pointer to latest protocol-5 matrix 20261010T081352Z (1/20 leads, 13/20 versus native TS7) while retaining the prior protocol-4 table as historical; 0bba25b publishes held finite Record correctness qualification with a brief README table and report/raw links. No timing rank is inferred from correctness tests. Compiler source is still uncommitted because new polymorphic-this collection controls lose contextual def diagnostics; #863 has the exact failures. Archive 41116963b243d3c2631b14663d266560b3b724866acd55d27aa49d5bacef826f verifies all 252 payload checksums. Latest measured ranking remains unchanged, universal goal active/incomplete.

8 days ago

Benchmark admission requirement from Chris's latest direction: the fair TypeScript matrix must cover Home/Zig, TypeScript 6, native TypeScript 7/tsgo, Bun check, Rust tsc-rs, and the active C++ TypeScript port on the same pinned corpus/options/diagnostic semantics, machine, warmups, repetitions, and raw evidence.

The active C++ candidate is not yet admissible: the shared announcement identifies the author/project progress, but no canonical public repository, immutable revision, license, or equivalent check-only CLI has been established. I will not add a placeholder row or time a non-equivalent implementation. Once those four inputs are available, it can enter correctness qualification before timing.

8 days ago

Documentation-only qualification evidence pushed in Chris-authored commit 65a0332, without coauthors, linked to #863. README briefly reports full untimed gates, 168 diagnostic controls and 180 image admissions, with links to the full report and raw evidence; all 328 payload checksums verify. Compiler source remains uncommitted and performance qualification pending; unchanged Zod is unadmitted. Latest published timing matrix remains 20261010T081352Z: Home leads 1/20 workloads and is faster than native TS7 on 13/20. No speedup or universal completion claim. Concurrent Record/#846 work is preserved; fresh integration and qualification are required.

8 days ago

Performance-goal progress: documentation-only 664340c is on origin/main, with the README table and linked report for fresh exact-main semantic qualification under #863. Core source gates and 168 diagnostic / 180 image controls pass, but the unchanged full Zod graph has five new false TS2339; compiler source remains uncommitted and untimed. Full outputs, frozen parent/candidate natives and the failed diagnostic-build outcome are archived with 207 verified payload checksums. No new timing or ranking claim: the published matrix remains Home 1/20 lowest medians and 13/20 faster than native TS7, and the universal goal is not complete. Details: /home-lang/home/issues/863#issuecomment-6113167642

8 days ago

Progress: declaration/context identity recovery under #879/#863 landed in4b4060e05, separate full raw/timing docs in8c1ec1029, both origin/main Chris/no coauthors. Full4568/265/201/78/46/147 source/harness gates and294+180 admissions pass; frozen590pairs/104 phase admissions retained and all13 independent risks satisfy predeclared correctness-feature adoption rule. Zero-spanning intervals do not prove equivalence or universal gains. README table/fullreport with947 checksummed raw payloads is published. Old1/20 lowest-median and13/20-vs-nativeTS7 ranking belongs to older source; a fresh fullfive-pin matrix using exact landed executable is next. FullZod still233TS+2HM9002/unadmitted, unavailable-platform checks and universal performance goal remain open. https://github.com/home-lang/home/blob/main/docs/docs/TS_PERFORMANCE.md#declaration-identity-recovery-landed

8 days ago

Fresh landed-source matrix63708 passed whole selection preflight/admission and is now live in rotating interleaved timing, result directory20261011T224925Z. HOME_TSC selects exact adopted bb4c00d... frozen image while preserving historical checkout/source/binary. All20 official workloads/five pinned compilers/30runs/threewarmups under sameguard; no ranking result before complete provenance/round/admission verification. Landed source4b4060e05 and complete590-pair qualification docs8c1ec1029 remain published with947 checksum payloads. FullZod/platform gaps and universal goal remain open.

8 days ago

Fresh landed-source matrix original63708 terminated at unchanged disk guard exit123:510MB free,512MB critical floor.125/600 round files observed, source/pins unchanged; no complete verified ranking is claimed. All original admissions, metadata and partial raw rounds remain in20261011T224925Z. No guard bypass, unrelated cleanup, overwrites or selected-workload ranking. Inspecting partial-round integrity and verified disposable task-cache capacity before choosing a no-repeat continuation/checkpoint plan. Previous published ranking still describes older source; source/docs commits4b4060e05/8c1ec10 remain verified, universal goal open.

8 days ago

Continuation progress under #880: pushed 88b3fef and b0c6a04 to origin/main as Chris Breuer without coauthors.191 harness tests pass. Reporting verifies resumed raw lineage; deterministic archives preserve all original/supplement/phase/warmup bytes and disclose pauses. README table and TS_PERFORMANCE report now link the full interrupted matrix evidence:135 verified payloads,621/3000 samples retained, no selective ranking. Task-owned Zig caches are absent; source/raw evidence/retained binaries and unrelated/shared data preserved. Disk recovered; unchanged guarded initialization94100 is queued behind another task on the machine lock. No new timing yet. Universal goal remains incomplete; old1/20 ranking is not the newer compiler result, fullZod remains unadmitted, platform gaps remain open.

8 days ago

New evidence under #880: initialization94100 succeeded with unchanged provenance/host; all125 originals+metadata+admission independently byte-verified. Reexports guard40200 completed129 missing samples in26 supplemental rounds, retaining the original Bun sample without rerun. Remaining15 workloads now execute sequentially via controller34167 under unchanged600s/3840MB guards; TSX markercomplete. Full matrix remains unranked until all3000 samples and immutable lineage validate. Linux recheck: workflow345052841 stateactive and permissionsenabledtrue, but actual dispatch stillHTTP422 Actions disabled;0runs created, no settings changed. The actual dispatch is authoritative, not permissive metadata.

8 days ago

Published complete no-repeat continuation in bd0d82e (origin/main, Chris, no coauthors).600 rounds/3000 samples/150 admissions;621 original+2379 missing, zero repeats; all16 guarded phases and finalizationexit0. Exactprovenance+fullprotocol+immutablelineage verified.1502 archivepayloads independently verified; all20 docs/10 README rows checked. Latest paused same-host medians: Home lowest1/20, fasterTS7 on9/20. Older13/20 is a different snapshot, not a causalpatchbaseline; load/pause disclaimed. Observed controlflow2.61x/reexports2.39x/checkedJS1.88x gaps need current-image profiling before any optimization. #880 closed for achievedcheckpointacceptance; this goal remains incomplete. Linuxactualdispatch422disabled despite APIenabled;0runs/settingschanges. FullZod233TS+2HM remainsunadmitted/untimed. Sources/raw/retainedbinaries preserved; no workaround or easierbenchmark.

8 days ago

Current-image diagnostic progress published in ea59fe0 under #854: byte-identical reconstruction of bb4c00d, independently verified read-only object mapping, all36 strict admissions, one unmodified native process with two fixed windows, full66-payload raw archive and brief README table/link. No new timing or optimization gain claimed. #881 now tracks a genuine algorithmic replacement for repeated require receiver root scanning using complete owned declarations/sections, with scalar/oracle/OOM/reuse controls and full frozen qualification required. Existing coarse presence-cache rejections remain honored. The goal is open: paused matrix1/20 lowest medians,9/20 lower than nativeTS7; fullZod and other-platform gates remain unmet.

8 days ago

Performance qualification #881 is unqualified, source restored, documented in e7ed4c0 on main with README table/link and full1447-payload raw archive.877 complete pairs plus empty interruptedraw/264warmups retained. Official JS independent gain was inconclusive; final8192 phase hit unchanged600s guard. No cherry-picking or retry, no candidate adoption; source/raw/parent/candidate/previous binaries preserved. All source/admission gates passed and Zod diagnostics unchanged235, stillunadmitted. Broader goal remains incomplete; older complete paused competitor matrix is still1/20 lowest medians and9/20 vs nativeTS7, not universal leadership.

8 days ago

Progress: #882 completed all 44 frozen phases/880 pairs and was rejected under its unchanged adoption rule. Source restored, all raw evidence and adverse intervals published with README summary in Chris-only conventional commit 175c6ca. https://github.com/home-lang/home/blob/main/docs/docs/TS_PERFORMANCE.md#owned-jsdoc-attachment-memo-rejected-2026-10-12-utc . Latest complete competitor ranking remains 1/20 lowest medians and 9/20 below native TS7, not refreshed by this Home-only A/B. Broader goal remains active and incomplete; full-library/platform gaps remain. Task cache only removed with retained compiler/evidence verification; concurrent main source update preserved.

8 days ago

Latest-source baseline build and diagnostic profile completed under #854; docs/README/raw68-payload archive pushed as Chris in d82db94. Source/compiler fingerprints preserved, all36 admissions pass, one process/two predeclared windows. Root require-binding scans remain an exact-image optimization lead, not a measured speedup. Current competitor rankings are intentionally unchanged. https://github.com/home-lang/home/blob/main/docs/docs/TS_PERFORMANCE.md#latest-source-native-checked-javascript-profile-2026-10-12-utc . Goal remains active and incomplete.

Sign in to comment on this issue.