Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
5558 commits
Select commit Hold shift + click to select a range
adb136c
x86: own complete insert/extract rows and terminal memory zeroing
cpunion Oct 29, 2026
1426b8a
docs: record complete K and insert extract qualification
cpunion Oct 29, 2026
60c89e4
test(x86): retain Go-encoded extract fault boundaries
cpunion Oct 29, 2026
dd065ab
test(x86): compile mode32 KMOVQ broadcast seeds
cpunion Oct 29, 2026
b887de7
docs: record CI consumer repairs and indirect owner audits
cpunion Oct 29, 2026
f464a5d
amd64: join remaining vector moves and preserve half aliases
cpunion Oct 29, 2026
1849275
docs: record qualified move family and completed CI diagnosis
cpunion Oct 29, 2026
ed6ac1c
fix: retain prefix source obligations before architectural traps
cpunion Oct 29, 2026
a2638a7
test: join complete precision half and scalar conversion rows
cpunion Oct 29, 2026
842fbc0
docs: condense active closeout status and remaining work
cpunion Oct 29, 2026
7405dc0
docs: distinguish SDK gates from shared policy checks
cpunion Oct 29, 2026
fb36468
amd64: share raw segment prefix scanning
cpunion Oct 29, 2026
0f267ab
docs: record qualified decoder compaction and residual format work
cpunion Oct 29, 2026
5616f67
test: separate unbound raw formats from initialized translation
cpunion Oct 29, 2026
6a7ae63
amd64: share typed approximation forms and native memory operands
cpunion Oct 29, 2026
a399846
test: complete AVX witness transport grammars from official rows
cpunion Oct 29, 2026
4b8d78d
amd64: retain implicit MULX dependencies through observable results
cpunion Oct 29, 2026
8295784
amd64: share VSIB forms and retain active gather faults
cpunion Oct 29, 2026
de53c92
test: verify complete BMI rows with original Go bytes and objects
cpunion Oct 29, 2026
34f057c
test: require witness grammar for every official AVX row
cpunion Oct 29, 2026
fb87783
test: avoid unused preloads in native approximation witnesses
cpunion Oct 29, 2026
0d5b018
amd64: share addsub and round forms with precise observable reads
cpunion Oct 29, 2026
e02a48d
test: compile complete remaining vector and state rows
cpunion Oct 29, 2026
8620995
amd64: retain authenticated ROUND literal inputs across typed lowering
cpunion Oct 29, 2026
5ff337e
docs: record complete AVX grammar and remaining qualification boundaries
cpunion Oct 29, 2026
bfa05d6
test: verify initialized legacy floating operations across five targets
cpunion Oct 29, 2026
e11ccff
test: distinguish unbound floating forms in corpus baselines
cpunion Oct 29, 2026
fad14e2
docs: record passing baseline CI and reviewed instruction classificat…
cpunion Oct 29, 2026
dcc2bcd
test: format AVX witness gate and synchronize coverage notes
cpunion Oct 29, 2026
e59ae6e
fix: require complete inputs for dead indexed vector operations
cpunion Oct 29, 2026
88b600e
test: give the MULX emitter a complete matching source context
cpunion Oct 29, 2026
26411b5
fix: preserve legacy floating memory operations and initialized raw a…
cpunion Oct 29, 2026
570a034
test: join complete legacy conditional move rows
cpunion Oct 29, 2026
ad73d3a
test: compile the original round runtime source on every host
cpunion Oct 29, 2026
6ddb0a4
test: retain audited VSIB input classifications across SDK profiles
cpunion Oct 29, 2026
6084dd2
fix: preserve sealed raw source across normalization and lowering views
cpunion Oct 29, 2026
137945f
test(x86): require Rosetta before running amd64 static-read oracle
cpunion Oct 29, 2026
e407231
test(x86): reject edited caller certificates and recapture fresh sources
cpunion Oct 29, 2026
5317f28
x86: join remaining scalar rm rows and retain native scan input oblig…
cpunion Oct 29, 2026
707f853
docs: record reviewed bit-scan input classification and closeout scope
cpunion Oct 29, 2026
85be44c
source: retain complete SDK package inventories within shared bounds
cpunion Oct 29, 2026
3551c62
docs: record completed CI round and SDK inventory repair limits
cpunion Oct 29, 2026
5e869bd
test: observe complete legacy media and compare source modes
cpunion Oct 29, 2026
154fdc7
test: share typed legacy MMX and SSE source-row transport
cpunion Oct 29, 2026
a0941a8
test: share complete scalar compare and test source-row transport
cpunion Oct 29, 2026
2a84b43
fix: retain input proof for faulting scalar comparisons
cpunion Oct 29, 2026
c6bedd6
test: record reviewed scalar memory comparison contexts
cpunion Oct 29, 2026
fe0b760
docs: record qualified legacy formats and GP validation work
cpunion Oct 29, 2026
0b69bbf
x86: require whole-source proof for faulting scalar reads
cpunion Oct 29, 2026
258c122
x86: reuse scalar read effects without widening source authority
cpunion Oct 29, 2026
5858532
fix: preserve typed GP faulting reads and hardware segment targets
cpunion Oct 29, 2026
7acc75a
Model x86 counter control as one typed family
cpunion Oct 29, 2026
e1c3cf7
Close native static bit-string write effects without range grants
cpunion Oct 29, 2026
8a3bf76
Keep bare counter and hardware segment fixture contracts explicit
cpunion Oct 29, 2026
e071c96
Separate extension formats from proven numerical and physical inputs
cpunion Oct 29, 2026
c3fb5dc
Preserve scoped pointer data bits through native word exchange
cpunion Oct 30, 2026
88f7141
Observe bounded relative SDK headers through one canonical source route
cpunion Oct 30, 2026
c84e4a2
Bound SDK compiler object records by their actual namespaces and blocks
cpunion Oct 30, 2026
c3da378
Preserve SDK duplicate identities and compiler BSS declarations
cpunion Oct 30, 2026
8882e07
Verify complete runtime capture in both x86 modes and record qualific…
cpunion Oct 30, 2026
798cf56
Record reviewed missing-input contexts in all eight Go source profiles
cpunion Oct 30, 2026
ecb5fd7
test(x86): preserve unbound formats and reproduce initialized static …
cpunion Oct 30, 2026
f5bef23
fix(x86): retain exact raw segment read contracts
cpunion Oct 30, 2026
954c43c
test(x86): bind initialized stack expression objects
cpunion Oct 30, 2026
4178b35
fix(x86): close exchanges over owned numeric static storage
cpunion Oct 30, 2026
904872b
test(x86): bound segment matrix output without sampling
cpunion Oct 30, 2026
88ba166
docs: record CI input repairs and complete bounded matrix checks
cpunion Oct 30, 2026
3b27235
test(x86): distinguish old Go PCALIGN defect from object acceptance
cpunion Oct 30, 2026
4e94a9f
test(x86): reject joined errors in PCALIGN observation
cpunion Oct 30, 2026
67c4446
docs: record complete local CI repairs and fresh SDK outcomes
cpunion Oct 30, 2026
83f92a6
perf: parse generated LLVM IR from owned memory buffers
cpunion Oct 30, 2026
70ced1b
fix: retain independent identities for in-memory LLVM modules
cpunion Oct 30, 2026
612b6d1
fix: decode canonical signed native frame locals across readers
cpunion Oct 30, 2026
924458b
test(x86): close original x87 source rows and object witnesses
cpunion Oct 30, 2026
5cbfd9e
test(x86): add native header grammar RED checkpoint
cpunion Oct 30, 2026
4a72c29
test(x86): keep header fixture in observed static namespace
cpunion Oct 30, 2026
4581004
fix(x86): retain complete ordered native TEXT header metadata
cpunion Oct 30, 2026
a3d01e0
docs: condense current qualification and remaining work
cpunion Oct 30, 2026
6a7d837
test(x86): retain reproduced ten-byte input obligations
cpunion Oct 30, 2026
079f1e5
test(x86): draft complete ten-byte safety and precision boundaries
cpunion Oct 30, 2026
6c6e853
test(x86): format bounded ten-byte family TDD checkpoint
cpunion Oct 30, 2026
0388a93
test: retain actual zero-width x87 decoder metadata
cpunion Oct 30, 2026
dbb34fc
test: observe raw x87 APIs independently from typed feature checks
cpunion Oct 30, 2026
cb1953f
fix: require typed proof for ten-byte x87 memory forms
cpunion Oct 30, 2026
33e38dc
fix: preserve exact ten-byte x87 operand-role diagnostics
cpunion Oct 30, 2026
6805b93
test: classify unproved ten-byte x87 source forms as context
cpunion Oct 30, 2026
d6cb924
docs: record accepted public CI and integrated family checks
cpunion Oct 30, 2026
38663dc
test: cover remaining x87 move source rows before transport closure
cpunion Oct 30, 2026
461ee55
test: bind x87 move transport bytes and exact destination roles
cpunion Oct 30, 2026
f743310
feat: close x87 move source tables with shared directional transport
cpunion Oct 30, 2026
86a534a
test: reject non-injective x87 class tuple spellings without panic
cpunion Oct 30, 2026
d20cfaa
fix: validate x87 class tuple arity before indexed transport
cpunion Oct 30, 2026
b2ac5da
test: observe complete legacy literal SIMD rows and byte immediates
cpunion Oct 30, 2026
d988d2b
test: bound literal SIMD source metadata and named mode contracts
cpunion Oct 30, 2026
d5ca124
test: verify complete literal spans and original SIMD row roles
cpunion Oct 30, 2026
df9c47e
feat: share closed literal SIMD source encoding and complete row view
cpunion Oct 30, 2026
3bb5199
test: keep literal SIMD private escape metadata closed
cpunion Oct 30, 2026
c767ab1
fix: keep one-atom SIMD literals outside leading escape forms
cpunion Oct 30, 2026
0541fd5
test: compile every original literal SIMD format through typed emitters
cpunion Oct 30, 2026
df01da1
test: reuse typed float-shuffle dispatch in literal format objects
cpunion Oct 30, 2026
e048c41
test: observe complete scalar multiply and MOVBE source rows
cpunion Oct 30, 2026
83ceb3c
test: bound scalar source roles and signed immediate selection
cpunion Oct 30, 2026
8cbcce4
feat: share scalar multiply and MOVBE row transport
cpunion Oct 30, 2026
8e94af0
test: reject overflowing scalar source escape metadata
cpunion Oct 30, 2026
53543c5
test: keep scalar table carriers closed to word widths
cpunion Oct 30, 2026
aff5890
fix: bound scalar source widths and escape before offset arithmetic
cpunion Oct 30, 2026
189be9c
docs: record verified source-family joins and CI recovery
cpunion Oct 30, 2026
d905e36
docs: record complete scalar source-format qualification
cpunion Oct 30, 2026
c75f33e
test: inventory implicit integer family source rows and byte banks
cpunion Oct 30, 2026
ded5ee9
test: reject inconsistent complete scalar schemas before payload sele…
cpunion Oct 30, 2026
5335247
feat: share complete scalar schemas for implicit integer row transport
cpunion Oct 30, 2026
452857d
docs: distinguish preceding CI from the current publication
cpunion Oct 30, 2026
af5b973
refactor: share floating opcode name projection
cpunion Oct 30, 2026
3f45ce4
docs: record scalar closure and measured FP cleanup
cpunion Oct 30, 2026
8189413
test: observe complete extension MOV source and physical aliases
cpunion Oct 30, 2026
1732b74
feat: stage shared extension MOV source transport after complete RED
cpunion Oct 30, 2026
2e85591
docs: record MOV family closure and published integration status
cpunion Oct 30, 2026
9e48d67
ci: avoid remote Go cache egress blocking compiler setup
cpunion Oct 30, 2026
d17ffe5
test: observe complete ordinary MOV tables before source transport
cpunion Oct 30, 2026
5ed7c08
test: retain minimum SDK signed MOVQ first-match bytes
cpunion Oct 30, 2026
2a6582d
feat: project complete ordinary MOV source tables
cpunion Oct 30, 2026
3f40f36
test: bind ordinary MOV objects to initialized source roles
cpunion Oct 30, 2026
8e41ac5
test: isolate MOV input obligations from unrelated outputs
cpunion Oct 30, 2026
0cf248f
test: require original MOV addresses with captured initialized frames
cpunion Oct 30, 2026
0c86797
test: retain address MOV widths and source identity domains
cpunion Oct 30, 2026
4709760
fix: classify captured frame MOV addresses through typed LEA roles
cpunion Oct 30, 2026
65ef279
test: separate named frame addresses from TYPE_CONST displacements
cpunion Oct 30, 2026
413ac5b
fix: restrict frame MOV address projection to original named roles
cpunion Oct 30, 2026
969f14f
fix: lower named frame MOV addresses with existing LEA writeback
cpunion Oct 30, 2026
5480dc2
test: qualify captured MOV addresses and retain live-use limits
cpunion Oct 30, 2026
9fff23f
test: isolate truncated address live-use checks with known upper bytes
cpunion Oct 30, 2026
ae68467
test: keep FLAGS independent from named frame address writes
cpunion Oct 30, 2026
24a8250
test: bound MOV frame-parameter address syntax and original identity
cpunion Oct 30, 2026
05c1fbd
test: retain public FP-address outcomes after syntax-query failures
cpunion Oct 30, 2026
b82a5f9
test: isolate original MOVQ mode32 rewrite diagnostics
cpunion Oct 30, 2026
dbdff75
test: retain Unicode frame symbols and reject address-to-NUM transport
cpunion Oct 30, 2026
158c716
test: keep Unicode frame symbols accepted by Go assembler
cpunion Oct 30, 2026
cd399fd
test: compare named local address bias with original Go execution
cpunion Oct 30, 2026
1c59a99
test: retain invalid frame names as independent Go rejections
cpunion Oct 30, 2026
9cde2d7
fix: share original local address bias with LEA emission
cpunion Oct 30, 2026
c83fabb
fix: retain named frame source identity and unknown address bytes
cpunion Oct 30, 2026
77f094d
test: reject unverified access fields as address projection inputs
cpunion Oct 30, 2026
c023c7d
fix: ignore uncertified native input fields during address formation
cpunion Oct 30, 2026
4b59b73
test: bind original MOV address rewrites to canonical Go LEA owners
cpunion Oct 30, 2026
1f6fda5
docs: record ordinary MOV grammar and verified address semantics
cpunion Oct 30, 2026
0d65027
test: retain named stack and physical displacement boundaries
cpunion Oct 30, 2026
449f142
fix: keep named stack offsets distinct from physical macros
cpunion Oct 30, 2026
26c061b
test: retain bounded bare address roles across widths and APIs
cpunion Oct 30, 2026
d002359
fix: project bound AUTO addresses before querying typed LEA effects
cpunion Oct 31, 2026
4d4cc54
fix: validate original LEA AUTO roles in fixed-frame shape planning
cpunion Oct 31, 2026
e286f23
diagnose original frame input instability
cpunion Oct 31, 2026
27bef14
test: retain complete exchange source and prefix counterexamples
cpunion Oct 30, 2026
a57e679
test: bind exchange prefixes to each original and target function
cpunion Oct 30, 2026
1695b3a
fix: preserve exchange prefixes and complete source transport
cpunion Oct 31, 2026
78701db
test: stage complete legacy scalar conversion source counterexamples
cpunion Oct 31, 2026
bae6e6e
fix: retain complete legacy scalar conversion source transport
cpunion Oct 31, 2026
dbef783
test: stage initialized original scalar conversion objects
cpunion Oct 31, 2026
db8c168
test: reproduce ordinary ABIInternal Void result coupling
cpunion Oct 30, 2026
1bf3f60
test: distinguish register Void proof from logical frame admission
cpunion Oct 31, 2026
a7d5522
fix: make ordinary register result obligations optional for Void
cpunion Oct 31, 2026
76e7cb2
test: count Void source-shape and reaching-state passes separately
cpunion Oct 31, 2026
652b6ba
docs: update family validation and remaining runtime acceptance
cpunion Oct 31, 2026
51da345
test: retain complete explicit SIMD source transport rows
cpunion Oct 31, 2026
9da97be
test: keep prior shared-table owners outside explicit SIMD remainder
cpunion Oct 31, 2026
dca1502
feat: project complete explicit SIMD source transport grammars
cpunion Oct 31, 2026
fa467c9
test: compile initialized explicit SIMD original forms through all APIs
cpunion Oct 31, 2026
72ea9d2
test: require source-bound physical MMX move-mask transfer
cpunion Oct 31, 2026
3098a83
test: use existing typed arithmetic flag constants
cpunion Oct 31, 2026
08f9813
fix: keep typed MMX move-mask inside its source-bound region
cpunion Oct 31, 2026
130bd94
test: bind move-mask transfer after the retained TEXT header
cpunion Oct 31, 2026
ccc03ec
test: bind physical MMX mask objects and required Linux differential …
cpunion Oct 31, 2026
cd249a9
fix: bind compare mandatory prefixes to their complete precision role
cpunion Oct 31, 2026
017fb65
test: observe defined FLAGS and retain immediate boundary source oracles
cpunion Oct 31, 2026
23c1d95
test: cover every ordinary GP mask destination and dead-result inputs
cpunion Oct 31, 2026
db1c011
perf: allocate MMX mask forms only for matching native sites
cpunion Oct 31, 2026
dbedc8e
docs: record explicit SIMD format and MMX validation
cpunion Oct 31, 2026
5c33032
test: distinguish MMX mask probe context from initialized regions
cpunion Oct 31, 2026
9f3819c
test: classify uninitialized physical MMX mask probes as context
cpunion Oct 31, 2026
e04799a
docs: explain MMX probe state and audited baseline correction
cpunion Oct 31, 2026
89e3fb3
perf: allocate native MMX forms only for matching sites
cpunion Oct 31, 2026
8dcc98b
test: reproduce complete zero-operand source transport gaps
cpunion Oct 31, 2026
f2dc1b9
feat: project complete zero-operand literal source grammar
cpunion Oct 31, 2026
266fdd1
test: bind compile-only native Go oracles to Linux target
cpunion Oct 31, 2026
083fc42
test: bind complete packed move-mask forms to initialized results
cpunion Oct 31, 2026
0310af3
docs: record literal grammar, CI fixture repairs and measured allocat…
cpunion Oct 31, 2026
05ff856
test: inventory complete GP data flags and CPU source formats
cpunion Oct 31, 2026
bb4b453
test: align GP reference formats with complete Go operand schemas
cpunion Oct 31, 2026
330965e
feat: share complete GP data flags and CPU source transport
cpunion Oct 31, 2026
468ab6a
test: reject padding in scalar register opcode spans
cpunion Oct 31, 2026
91f3f09
fix: preserve captured scalar source identity and opcode spans
cpunion Oct 31, 2026
f055393
test: preserve captured obj enums and synthetic source contracts
cpunion Oct 31, 2026
9373753
test: cover complete scalar move alias grammar and effects
cpunion Oct 31, 2026
4ab3606
test: separate numerical raw aliases from native source authority
cpunion Oct 31, 2026
3c5cbc4
test: preserve actual scalar alias modes and displacement grammar
cpunion Oct 31, 2026
eab8eb3
refactor: share typed source forms for scalar move aliases
cpunion Oct 31, 2026
a6db7be
test: execute scalar move alias values flags and bounded memory
cpunion Oct 31, 2026
2f44e92
test: observe alias ZF independently of copied scalar value
cpunion Oct 31, 2026
fcabf92
test: inventory complete remaining media and x87 source formats
cpunion Oct 31, 2026
10de809
feat: share complete media and x87 source transport
cpunion Oct 31, 2026
f0a64c2
docs: condense typed-family progress and remaining source contracts
cpunion Oct 31, 2026
226500d
test: require owned prepared cache for CMOV runtime batches
cpunion Oct 31, 2026
dd3e7d1
test: isolate and prepare CMOV runtime tool cache
cpunion Oct 31, 2026
7af4acd
docs: align x86 coverage snapshot with committed baseline
cpunion Oct 31, 2026
d2490fb
test: expose complete special-move source joins and original encodings
cpunion Oct 31, 2026
df39ef2
feat: share complete non-TLS fallback source transport
cpunion Oct 31, 2026
f00f414
test: reject malformed complete fallback table sentinels
cpunion Oct 31, 2026
6d350c6
fix: preserve complete fallback table structure before projection
cpunion Oct 31, 2026
2356e42
docs: record qualified fallback families and remaining source groups
cpunion Oct 31, 2026
70d614d
test: inventory complete state system memory source tables
cpunion Oct 31, 2026
099de52
test: separate original frontend failures from source encodings
cpunion Oct 31, 2026
87d0346
test: retain isolated SDK frontend failure without invented listing
cpunion Oct 31, 2026
8e520e2
test: expose incomplete state source closure and frontend metadata
cpunion Oct 31, 2026
4ee2051
feat: close state system memory source formats without semantic widening
cpunion Oct 31, 2026
38bcabf
test: bind complete state source identities to captured enums
cpunion Oct 31, 2026
8737935
test: reject source member relabeling across complete table groups
cpunion Oct 31, 2026
e239c34
test: preserve captured state member payload identity
cpunion Oct 31, 2026
a3463e3
fix: bind state view members to their captured encoder metadata
cpunion Oct 31, 2026
9781649
test(x86): observe original state backend bytes and relocations
cpunion Oct 31, 2026
0e717b6
test(x86): preserve original tests in Go 1.20 backend overlay
cpunion Oct 31, 2026
c73a81a
test(x86): share append-only backend test overlay across SDKs
cpunion Oct 31, 2026
a79ec3d
test: expose complete stack and control source encodings
cpunion Oct 31, 2026
4cc80f4
test: preserve original indirect call and legacy DUFF source contracts
cpunion Oct 31, 2026
adbd21d
feat: share complete stack and control source transport
cpunion Oct 31, 2026
beb9583
test: bind stack source members and backend marker owners
cpunion Oct 31, 2026
e7d8f3d
test: observe contextual TLS fallback source identities before joining
cpunion Oct 31, 2026
382616d
test: reject altered TLS receipts and cross-width source identities
cpunion Oct 31, 2026
017fff2
test: join only actual contextual TLS receipts and source widths
cpunion Oct 31, 2026
95665c2
test: expose retagged actual TLS controls and relocation content
cpunion Oct 31, 2026
e5834cd
test: preserve exact original TLS object receipt identity
cpunion Oct 31, 2026
20279ac
test: seal TLS captures and join saved source bytes and relocations
cpunion Oct 31, 2026
6f386ea
docs: record complete x86 source inventory and accepted CI lineage
cpunion Oct 31, 2026
9285ff8
docs: distinguish source views from translator execution coverage
cpunion Oct 31, 2026
849c517
test: add SSE and VEX minmax native conformance owners
cpunion Nov 1, 2026
3712b2b
docs: refresh accepted CI and native minmax closeout state
cpunion Nov 1, 2026
1ea24e1
refactor: remove superseded floating fallback input paths
cpunion Nov 1, 2026
c39638f
test: reuse native minmax oracle for raw instruction inputs
cpunion Nov 1, 2026
269115a
test: derive raw minmax boundaries from noframe Go objects
cpunion Nov 1, 2026
43c4999
test: cover raw minmax high register and address banks
cpunion Nov 1, 2026
9448990
test: verify original REX and VEX generation witnesses
cpunion Nov 1, 2026
3c05d6d
test: observe preserved Y aliases in raw legacy minmax
cpunion Nov 1, 2026
c3a3fb8
docs: record accepted CI and raw minmax native results
cpunion Nov 1, 2026
4c477f9
test: retain complete floating arithmetic translation benchmark
cpunion Nov 1, 2026
dc29364
refactor: normalize floating arithmetic through one typed grammar
cpunion Nov 1, 2026
899f2ba
docs: record current CI acceptance and floating grammar measurements
cpunion Nov 1, 2026
2c033f8
docs: retain native floating arithmetic qualification and coverage li…
cpunion Nov 1, 2026
0cb4850
fix: share the physical mode32 boundary across floating arithmetic
cpunion Nov 1, 2026
71eb702
test: follow the canonical arithmetic catalog in CLI extraction fixtures
cpunion Nov 1, 2026
a9ec02f
test: retain physical mode32 boundaries in the full floating matrix
cpunion Nov 1, 2026
e97ae1d
docs: record fixture repair and shared physical mode32 qualification
cpunion Nov 1, 2026
b531c83
docs: bind repaired grammar to fresh native qualification
cpunion Nov 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
6 changes: 6 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Shell scripts are executed and inspected verbatim on every CI host.
*.sh text eol=lf
# Original Go test drivers and embedded ASM/C retain byte-exact hash guards.
*.go text eol=lf
# Tracked ASM conformance sources retain their original whole-program hashes.
*.s text eol=lf
9 changes: 9 additions & 0 deletions .github/actions/publish-windows-llvm22/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
name: Publish Windows LLVM 22
description: Validate and publish one installed LLVM prefix without retry-dependent paths.
inputs:
attempt:
description: The successful setup-msys2 attempt (1, 2, or 3).
required: true
runs:
using: node24
main: index.cjs
157 changes: 157 additions & 0 deletions .github/actions/publish-windows-llvm22/index.cjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,157 @@
'use strict';

const fs = require('node:fs');
const path = require('node:path');
const {execFileSync} = require('node:child_process');

function requireThat(condition, message) {
if (!condition) throw new Error(message);
}

function absent(file) {
try { fs.lstatSync(file); } catch (error) {
if (error.code === 'ENOENT') return;
throw error;
}
throw new Error('publication target already exists: ' + file);
}

function directory(file) {
const stat = fs.lstatSync(file);
requireThat(stat.isDirectory() && !stat.isSymbolicLink(), 'not an owned directory: ' + file);
return stat;
}

function noLinks(file) {
const stat = fs.lstatSync(file);
requireThat(!stat.isSymbolicLink() && (stat.isFile() || stat.isDirectory()),
'redirected or unsupported prefix entry: ' + file);
if (stat.isDirectory()) {
for (const name of fs.readdirSync(file)) noLinks(path.join(file, name));
}
}

function publishPrefix({runnerTemp, attempt, systemRoot, run}) {
requireThat(typeof attempt === 'string' && /^[123]$/.test(attempt), 'unknown successful bootstrap attempt');
for (const value of [runnerTemp, systemRoot]) {
requireThat(typeof value === 'string' && path.isAbsolute(value) &&
path.normalize(value) === value && !/[\x00-\x1f]/.test(value), 'invalid absolute system path');
}
for (let ancestor = runnerTemp; ; ancestor = path.dirname(ancestor)) {
directory(ancestor);
if (ancestor === path.dirname(ancestor)) break;
}
const source = path.join(runnerTemp, 'plan9asm-msys2-attempt-' + attempt, 'msys64', 'clang64');
const target = path.join(runnerTemp, 'plan9asm-llvm22');
const proof = path.join(runnerTemp, 'plan9asm-llvm22-proof');
directory(path.dirname(path.dirname(source)));
directory(path.dirname(source));
const original = directory(source);
absent(target);
absent(proof);
noLinks(source);
for (const relative of ['bin/llvm-config.exe', 'bin/clang.exe', 'bin/clang++.exe',
'include/_mingw.h', 'lib/libkernel32.a']) {
requireThat(fs.lstatSync(path.join(source, relative)).isFile(), 'missing prefix input: ' + relative);
}

// lstat covers symlinks/junctions; Windows attributes also reject other
// reparse tags. Inspect before descending and never follow a redirected node.
const checkReparse = `
$ErrorActionPreference = 'Stop'
$root = Get-Item -Force -LiteralPath $env:PLAN9ASM_LLVM22_CHECK
for ($item = $root; $null -ne $item; $item = $item.Parent) {
if ($item.Attributes -band [IO.FileAttributes]::ReparsePoint) { throw 'reparse ancestor' }
}
$pending = [Collections.Generic.Stack[IO.FileSystemInfo]]::new()
$pending.Push($root)
while ($pending.Count) {
$item = $pending.Pop()
if ($item.Attributes -band [IO.FileAttributes]::ReparsePoint) { throw 'reparse prefix entry' }
if ($item -is [IO.DirectoryInfo]) {
foreach ($child in $item.GetFileSystemInfos()) { $pending.Push($child) }
}
}`;
run(path.join(systemRoot, 'System32', 'WindowsPowerShell', 'v1.0', 'powershell.exe'),
['-NoLogo', '-NoProfile', '-NonInteractive', '-Command', checkReparse],
{env: {...process.env, PLAN9ASM_LLVM22_CHECK: source}});
const checked = directory(source);
requireThat(original.dev === checked.dev && original.ino === checked.ino, 'prefix replaced during validation');
for (let ancestor = path.dirname(source); ; ancestor = path.dirname(ancestor)) {
directory(ancestor);
if (ancestor === path.dirname(ancestor)) break;
}
noLinks(source);
absent(target);
// Windows directory rename is same-volume and cannot replace an existing
// file/directory. Do not copy, merge, remove failed attempts, or retry a move.
fs.renameSync(source, target);
const moved = directory(target);
requireThat(original.dev === moved.dev && original.ino === moved.ino, 'published prefix identity changed');

const bin = path.join(target, 'bin');
// No bootstrap PATH: the relocation probe must resolve its DLLs, linker,
// headers and runtime from the moved prefix, not a retained old installation.
const env = {...process.env, PATH: [bin, path.join(systemRoot, 'System32'), systemRoot].join(path.delimiter)};
if (process.platform === 'win32') {
for (const name of Object.keys(env)) if (name.toUpperCase() === 'PATH' && name !== 'PATH') delete env[name];
}
const query = (file, args) => {
const result = run(file, args, {env});
requireThat(typeof result === 'string' && !result.includes('\0'), 'invalid tool output');
return result;
};
const config = path.join(bin, 'llvm-config.exe');
const clang = path.join(bin, 'clang.exe');
const line = value => {
requireThat(/^[^\r\n]+\r?\n?$/.test(value), 'expected one tool output line');
return value.replace(/\r?\n$/, '');
};
const samePath = (value, expected) => path.normalize(line(value).replace(/[\\/]/g, path.sep)) === expected;
requireThat(line(query(config, ['--version'])) === '22.1.8', 'expected LLVM 22.1.8');
for (const [flag, relative] of [['--prefix', ''], ['--bindir', 'bin'], ['--includedir', 'include'], ['--libdir', 'lib']]) {
requireThat(samePath(query(config, [flag]), path.join(target, relative)), 'LLVM prefix did not relocate: ' + flag);
}
requireThat(/^clang version 22\.1\.8(?:\s|$)/.test(query(clang, ['--version'])), 'expected Clang 22.1.8');
const resources = path.join(target, 'lib', 'clang', '22');
requireThat(samePath(query(clang, ['--print-resource-dir']), resources), 'Clang resources did not relocate');
directory(resources);
const flags = args => {
const value = query(config, args).replace(/\r/g, '').replace(/\n/g, ' ').trim();
requireThat(value.length > 0 && !/[\x00-\x1f]/.test(value) &&
!/plan9asm-msys2-attempt-/i.test(value), 'invalid or attempt-dependent LLVM flags');
return value;
};
const environment = {
CGO_CFLAGS: flags(['--cflags']),
CGO_CXXFLAGS: flags(['--cxxflags']),
CGO_LDFLAGS: flags(['--ldflags', '--libs', 'all', '--system-libs']),
LLVM_CONFIG: config, CC: clang, CXX: path.join(bin, 'clang++.exe'),
CGO_ENABLED: '1', GOFLAGS: '-tags=byollvm',
};
fs.mkdirSync(proof); // Exclusive, retained on failure; never overwrite a probe.
const input = path.join(proof, 'publication.c');
const output = path.join(proof, 'publication.exe');
fs.writeFileSync(input, '#include <stdint.h>\nint main(void) { return sizeof(uintptr_t) == 8 ? 0 : 1; }\n', {flag: 'wx'});
query(clang, [input, '-o', output]);
requireThat(fs.lstatSync(output).isFile(), 'compiler did not produce the native probe');
query(output, []);
return {environment, path: bin};
}

module.exports = {publishPrefix};
if (require.main === module) {
try {
requireThat(process.platform === 'win32', 'Windows LLVM publication requires Windows');
const result = publishPrefix({runnerTemp: process.env.RUNNER_TEMP, attempt: process.env.INPUT_ATTEMPT,
systemRoot: process.env.SystemRoot || process.env.SYSTEMROOT,
run: (file, args, options) => execFileSync(file, args,
{...options, encoding: 'utf8', timeout: 120000, maxBuffer: 1024 * 1024, windowsHide: true})});
fs.appendFileSync(process.env.GITHUB_ENV, Object.entries(result.environment).map(([key, value]) => `${key}=${value}\n`).join(''));
fs.appendFileSync(process.env.GITHUB_PATH, result.path + '\n');
console.log('Published and executed LLVM 22.1.8 from ' + result.path);
} catch (error) {
console.error(error.stack || error.message);
process.exitCode = 1;
}
}
44 changes: 39 additions & 5 deletions .github/actions/setup-go/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,6 @@ inputs:
go-version:
description: Go version accepted by actions/setup-go
required: true
cache:
description: Whether actions/setup-go should cache dependencies
required: false
default: "true"

runs:
using: composite
Expand All @@ -22,7 +18,45 @@ runs:
echo "GOCACHE=${RUNNER_TEMP}/go-build-cache" >> "$GITHUB_ENV"

- name: Set up Go
id: install_go
uses: actions/setup-go@v7
with:
go-version: ${{ inputs.go-version }}
cache: ${{ inputs.cache }}
# Account cache egress exhaustion must not block compiler installation.
# The writable job-local Go caches above remain available.
cache: false

# Some self-hosted runner interruptions report a successful action before
# its download completes. Neither that outcome nor an ambient Go is proof
# that the requested compiler was installed.
- name: Verify Go installation
shell: bash
env:
REQUESTED_GO_VERSION: ${{ inputs.go-version }}
INSTALLED_GO_VERSION: ${{ steps.install_go.outputs.go-version }}
run: |
set -euo pipefail

if [[ ! "$INSTALLED_GO_VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
echo "Go installer did not report a complete stable version" >&2
exit 1
fi

if [[ "$REQUESTED_GO_VERSION" =~ ^[0-9]+\.[0-9]+\.x$ ]]; then
minor="${REQUESTED_GO_VERSION%.x}"
if [[ "$INSTALLED_GO_VERSION" != "$minor."* ]]; then
echo "Requested Go $REQUESTED_GO_VERSION, installed $INSTALLED_GO_VERSION" >&2
exit 1
fi
elif [[ "$REQUESTED_GO_VERSION" != "$INSTALLED_GO_VERSION" ]]; then
echo "Requested Go $REQUESTED_GO_VERSION, installed $INSTALLED_GO_VERSION" >&2
exit 1
fi

actual="$(GOTOOLCHAIN=local go env GOVERSION)"
if [[ "$actual" != "go$INSTALLED_GO_VERSION" ]]; then
echo "Installed Go $INSTALLED_GO_VERSION, but PATH selects $actual" >&2
exit 1
fi
printf 'Verified Go %s: %s\n' "$INSTALLED_GO_VERSION" "$(command -v go)"
GOTOOLCHAIN=local go version
34 changes: 34 additions & 0 deletions .github/actions/setup-node22/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
name: Setup Node.js 22
description: Install the exact Node.js runtime shared by CI producers and verifiers

runs:
using: composite
steps:
- name: Install Node.js 22
id: install_node22
uses: actions/setup-node@v6
with:
node-version: '22.23.4'

# An installer step marked successful without its output must not borrow
# the runner image's ambient Node or produce an incompatible WASM scope.
- name: Verify Node.js installation
shell: bash
env:
EXPECTED_NODE_VERSION: 'v22.23.4'
INSTALLED_NODE_VERSION: ${{ steps.install_node22.outputs.node-version }}
run: |
set -euo pipefail

if [[ "$INSTALLED_NODE_VERSION" != "$EXPECTED_NODE_VERSION" ]]; then
echo "Expected Node $EXPECTED_NODE_VERSION, installer reported '$INSTALLED_NODE_VERSION'" >&2
exit 1
fi

actual="$(node --version)"
actual="${actual%$'\r'}"
if [[ "$actual" != "$EXPECTED_NODE_VERSION" ]]; then
echo "Installed Node $INSTALLED_NODE_VERSION, but PATH selects '$actual'" >&2
exit 1
fi
printf 'Verified Node %s: %s\n' "$actual" "$(command -v node)"
72 changes: 54 additions & 18 deletions .github/actions/setup-windows-llvm22/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,42 @@ runs:
using: composite
steps:
- name: Set up MSYS2 for LLVM 22
id: msys2_attempt_1
continue-on-error: true
uses: msys2/setup-msys2@v2
with:
msystem: CLANG64
path-type: inherit
release: true
location: ${{ runner.temp }}/plan9asm-msys2-attempt-1
update: true

# These are bounded installer retries, not test retries or LLVM fallbacks.
# Only the first two bootstrap failures may proceed to another attempt.
# setup-msys2 refuses an existing installation, including a failed update's
# directory. Keep each fresh attempt separate; the action rewrites its
# msys2 shell wrapper to the successful installation without deleting any.
- name: Retry MSYS2 bootstrap (2 of 3)
id: msys2_attempt_2
if: ${{ steps.msys2_attempt_1.outcome == 'failure' }}
continue-on-error: true
uses: msys2/setup-msys2@v2
with:
msystem: CLANG64
path-type: inherit
release: true
location: ${{ runner.temp }}/plan9asm-msys2-attempt-2
update: true

- name: Retry MSYS2 bootstrap (3 of 3, failure is fatal)
id: msys2_attempt_3
if: ${{ steps.msys2_attempt_1.outcome == 'failure' && steps.msys2_attempt_2.outcome == 'failure' }}
uses: msys2/setup-msys2@v2
with:
msystem: CLANG64
path-type: inherit
release: true
location: ${{ runner.temp }}/plan9asm-msys2-attempt-3
update: true

- name: Install LLVM 22
Expand Down Expand Up @@ -39,27 +71,31 @@ runs:

# libc++ supplies the compiler runtime. Keep the exact LLVM component
# set mutually consistent while acknowledging the cc-libs virtual.
pacman --noconfirm -U \
--assume-installed "$prefix-cc-libs=$LLVM_VERSION" \
"${urls[@]}"
install_status=1
for attempt in 1 2 3; do
if pacman --noconfirm -U \
--assume-installed "$prefix-cc-libs=$LLVM_VERSION" \
"${urls[@]}"; then
install_status=0
break
else
install_status=$?
fi
if (( attempt < 3 )); then
echo "Pinned LLVM install attempt $attempt failed ($install_status); retrying in 5 seconds" >&2
sleep 5
fi
done
if (( install_status != 0 )); then
exit "$install_status"
fi

if [[ "$(llvm-config --version)" != "$LLVM_VERSION" ]]; then
echo "expected LLVM $LLVM_VERSION, got $(llvm-config --version)" >&2
exit 1
fi

flatten() {
local value=$1
value="${value//$'\r'/}"
value="${value//$'\n'/ }"
printf '%s' "$value"
}
echo "CGO_CFLAGS=$(flatten "$(llvm-config --cflags)")" >> "$GITHUB_ENV"
echo "CGO_CXXFLAGS=$(flatten "$(llvm-config --cxxflags)")" >> "$GITHUB_ENV"
echo "CGO_LDFLAGS=$(flatten "$(llvm-config --ldflags --libs all --system-libs)")" >> "$GITHUB_ENV"
clang_bin="$(cygpath -w /clang64/bin)"
echo "CC=$clang_bin\\clang.exe" >> "$GITHUB_ENV"
echo "CXX=$clang_bin\\clang++.exe" >> "$GITHUB_ENV"
echo 'CGO_ENABLED=1' >> "$GITHUB_ENV"
echo 'GOFLAGS=-tags=byollvm' >> "$GITHUB_ENV"
echo "$clang_bin" >> "$GITHUB_PATH"
- name: Publish stable LLVM 22 prefix
uses: ./.github/actions/publish-windows-llvm22
with:
attempt: ${{ steps.msys2_attempt_1.outcome == 'success' && '1' || steps.msys2_attempt_2.outcome == 'success' && '2' || steps.msys2_attempt_3.outcome == 'success' && '3' || '' }}
Loading