21 Commits
Author SHA1 Message Date
Chris Tate 6a78f9a96b Release 0.0.2
- Number(string), Array.from(string), dot specifiers, workspace registration
- Coverage renders full diagnostics; LLVM declares guarded against the runtime header
v0.0.2
2026-07-22 22:02:28 -05:00
Chris Tate 3b5bbc7eaa Vercel CLI source ladder: five frontend fixes from the typecheck gate
- Bare '.' and '..' specifiers resolve as relative directory imports
- TS default imports of supported builtins pass under the project's interop knobs
- Workspace packages register eagerly before the tsc gate; their shipped JS never gates
- Benign-cycle admission accepts d.ts-rooted callable arguments in the init window
- npm-static auto probes from the importing file's realm; ladder fixtures renumbered 2390/2391
2026-07-22 21:35:46 -05:00
Chris Tate 46febafe93 Parity bookkeeping for the new dot-specifier fixtures
- resolver-parity routes bare '.' and '..' through the relative arm (ts5 resolves them relative too)
- order-parity baselines recorded for corpus 2386/2387 and the workspace-unclean npm case
2026-07-22 21:12:38 -05:00
Chris Tate 235709a53d Agent-driven release process: RELEASING.md, changelog, version stamp
- RELEASING.md makes 'prepare X release' a complete prompt; AGENTS.md points at it
- CHANGELOG.md carries the marked 0.0.1 entry; the marked block is the release body
- sync-versions.mjs stamps the three packages in lockstep
- A github-release job tags and publishes the body after npm publish
2026-07-22 21:04:18 -05:00
Chris Tate 9deedfd074 Add the agent-driven release process: docs, sync script, tag job
- RELEASING.md documents the lockstep three-package prepare flow and the marked-changelog convention
- CHANGELOG.md starts with an Unreleased section and the marked 0.0.1 entry that becomes the GitHub release body
- AGENTS.md states repo-wide build/test conventions and defers docs-site specifics to docs/AGENTS.md
- scripts/sync-versions.mjs stamps runtime and compiler from the CLI version; the workflow's sync check now hints at it
- release.yml gains a github-release job that tags v<version> after a successful publish, never gating npm
2026-07-22 21:03:10 -05:00
Chris Tate 5d25bdb004 Vercel CLI source ladder: five frontend fixes from the typecheck gate
- workspace-linked untyped dists register before the tsc gate and take the node_modules-JS island treatment (errors suppressed, out of userFiles)
- bare '.' and '..' specifiers resolve as relative directory imports (corpus 2386, coverage fixture dot-parent, SEMANTICS 362)
- TS default imports of supported builtins pass under the project's adopted interop knobs (corpus 2387)
- benign-cycle admission accepts d.ts-rooted callable arguments — promisify(fs.readFile) at a cycle member's top level (SEMANTICS 363)
- --npm-static auto probes runtime JS from the importing file's realm, not the entry's (nested-realm fixture)
2026-07-22 20:57:56 -05:00
Chris Tate 8af0ae65f3 Number(string) lowers statically: JS-exact ToNumber in the runtime
- ECMA StringNumericLiteral exactly; 1M-string fuzz bit-exact against Node
- Unary + on strings and %d over strings ride the same libCall on both backends
- 50k-case oracle file under ASan; size canaries re-based one page
2026-07-22 20:40:05 -05:00
Chris Tate 855e80910c Re-base the static size canaries and order-parity baselines
- StringToNumber (~1.3KB in the always-linked string TU) tipped the Mach-O static class one 16KB page: hello-world measured 336,328 before and 353,000 after, so both canary arms move to 361,000 with the under-a-page cushion kept
- order-parity baselines record the three new tonumber corpus fixtures
2026-07-22 20:19:15 -05:00
Chris Tate e53dc344a5 Lower Number(aString), unary + on strings, and %d over strings
- num.fromString rides both backends: the C emitter case and the LLVM declare table entry (declare double @scr_string_to_number(ptr), the C prototype exactly)
- Number(string) retires its fence; the union hint now points at narrowing (numbers, booleans, and strings lower)
- unary + on string operands and util.format %d string arguments take the same libCall
- corpus 2387 (argv-style CLI parsing), 2388 (the grammar zoo edge by edge), 2389 (+str idioms and %d) — differential-verified on both backends
2026-07-22 20:02:21 -05:00
Chris Tate 5d6abeaefe JS-exact StringToNumber in the runtime, fuzz-verified against Node
- scr_string_to_number: ECMA-262 StringNumericLiteral exactly — StrWhiteSpace trim (empty → +0), signed decimals through strtod over the validated span, unsigned 0x/0o/0b through the exact bignum rounding, trailing garbage → NaN
- oracle suite mirrors the formatting precedent: gen-tonumber-cases.mjs (Node is the oracle), 50k committed cases asserting bit-equal doubles under ASan + RC audit
- fuzzed once against Node on 1,000,000 mixed-shape strings: 1000000/1000000 bit-exact
2026-07-22 20:02:10 -05:00
Chris Tate 349ea4f51c LLVM runtime ABI guard and the differential scratch race fix
- Unique per-lane binary basenames end the shared-scratch race behind the CI failures
- Two latent emitter declare mismatches fixed; a header-parsed ABI guard test pins the class
2026-07-22 19:53:45 -05:00
Chris Tate e6b75ed803 Array.from and spread split strings by code points
- One interned helper walks the UTF-16 cursor; astral characters stay whole
- Both spellings share the lowering; corpus 2386 pins both backends against Node
2026-07-22 19:53:18 -05:00
Chris Tate 1e9b966894 llvm-differential: unique binary basenames end the shared-scratch race
- fs corpus programs derive scratch paths from tail(process.argv[1]); both native lanes were named "program" and run concurrently, so they raced on the same scratch tree
- reproduced locally by racing the two same-named binaries (6-9 of 10 runs diverge); distinct basenames run clean
- explains the seven fs/path failures of CI run 29965245855, including a C-lane empty stdout no LLVM codegen bug could produce
- the basename also carries the flavor so a plain and sanitized full run cannot collide either
2026-07-22 19:25:30 -05:00
Chris Tate bfc415ab59 Match LLVM runtime declares to scr_runtime.h and guard the ABI
- fsp.readFile now passes only the path: the C prototype has no encoding parameter, so the generic path declared an argument the runtime never had
- net.serverAddress: family is a +1 ScrStr* ("IPv4"/"IPv6"), not a double — the declare, call, and field store all read it through the wrong register class
- new llvm-runtime-abi test parses scr_runtime.h and cross-checks every literal backend declare plus every declare emitted for an fs/path corpus slice
2026-07-22 19:25:22 -05:00
Chris Tate 7fca9785ea Coverage renders the diagnostics it stops on
- A type-error stop prints the same code frames a build prints
- The import-site stop renders its diagnostics below the blocker table
- Coverage is the first command reached for; the verdict line alone swallowed the fix
2026-07-22 19:23:23 -05:00
Chris Tate 005a54caa2 Default OG and tagline: TypeScript-to-Native Compiler 2026-07-22 19:04:55 -05:00
Chris Tate bcc094862b Docs: TypeScript-to-Native Compiler hero, npm install quickstart
- Quickstart installs from npm; from-source moves to a pointer at the repo
- Node floor matches the package engines field
2026-07-22 18:45:02 -05:00
Chris Tate 60a135f505 Publish with provenance only from a public repository
- npm rejects provenance from internal-visibility repos; the flag now follows repo visibility
2026-07-22 18:38:28 -05:00
Chris Tate 6439e2aa85 Pin the pnpm version in the release workflow 2026-07-22 18:35:17 -05:00
Chris Tate 8e6a20d59f Release workflow: npm trusted publishing on version change
- OIDC id-token in the Release environment; no npm token secret
- pnpm pack rewrites workspace deps; npm publish adds provenance
- Publishes runtime, compiler, cli in dependency order; re-runs skip published versions
2026-07-22 18:31:33 -05:00
Chris Tate 23d5918a53 init 2026-07-22 18:08:04 -05:00