Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
194 commits
Select commit Hold shift + click to select a range
0a31df5
Define compiler architecture and verification contracts
jgoppert Aug 20, 2026
8631034
Establish shared IR primitives and parser foundations
jgoppert Aug 20, 2026
6d8e0ab
Enforce semantic name and type resolution
jgoppert Aug 20, 2026
f14b5db
Instantiate arrays and construct flat model IR
jgoppert Aug 20, 2026
ce709a2
Evaluate constants and flatten functions and connections
jgoppert Aug 20, 2026
ff1c69c
Complete flat equation and algorithm lowering
jgoppert Aug 20, 2026
0a92985
Prepare and scalarize structural equation systems
jgoppert Aug 20, 2026
c8e974e
Transform structural systems into solvable DAE form
jgoppert Aug 20, 2026
72167c9
Define checked DAE model and expression IR
jgoppert Aug 20, 2026
f3372f0
Analyze DAE dependencies and function shapes
jgoppert Aug 20, 2026
7d21f57
Construct valid DAE programs and event ownership
jgoppert Aug 20, 2026
6260497
Lower equations, algorithms, and initialization into DAE
jgoppert Aug 20, 2026
e39c14d
Replace legacy GALEC parsing and code generation
jgoppert Aug 20, 2026
8b0d37e
Evaluate checked DAE programs and projections
jgoppert Aug 20, 2026
f083b19
Define typed Solve programs and structural patterns
jgoppert Aug 20, 2026
121951d
Lower derivative, tensor, and scalar Solve expressions
jgoppert Aug 20, 2026
7422d1d
Lower functions, events, and discrete Solve semantics
jgoppert Aug 20, 2026
3e24113
Validate Solve lowering and assignment ownership
jgoppert Aug 20, 2026
bc8cd3c
Build Solve layouts, AD, initialization, and schedules
jgoppert Aug 20, 2026
6c606aa
Evaluate exact Solve programs and refresh plans
jgoppert Aug 20, 2026
2f49fef
Execute Solve runtimes, projections, and FMI events
jgoppert Aug 20, 2026
aeb5a4d
Integrate native execution and numerical solver backends
jgoppert Aug 20, 2026
8e9717d
Define and evaluate checked GALEC IR
jgoppert Aug 20, 2026
aef871d
Lower checked algorithms into shared GALEC kernels
jgoppert Aug 20, 2026
ffe25cd
Render target templates from checked codegen views
jgoppert Aug 20, 2026
b97ca1a
Generate target code and working-memory plans
jgoppert Aug 20, 2026
ba25afc
Orchestrate compiler sessions, targets, tools, and bindings
jgoppert Aug 20, 2026
919f467
Add target and runtime end-to-end regression coverage
jgoppert Aug 20, 2026
3991d92
Add language and pipeline semantic regression coverage
jgoppert Aug 20, 2026
ff03784
Enforce architecture and MSL parity regression gates
jgoppert Aug 20, 2026
17b9fdd
Address compiler audit findings
jgoppert Aug 20, 2026
c93457e
Derive FMI event indicator inventory
jgoppert Aug 20, 2026
a98399c
Release Cranelift JIT arenas with compiled owners
jgoppert Aug 20, 2026
690b2b8
Widen checked numeric array elements in Solve IR
jgoppert Aug 20, 2026
ef269ef
Enforce compiler audit hygiene and CI gates
jgoppert Aug 20, 2026
8a31969
refactor: enforce review architecture invariants
jgoppert Aug 20, 2026
446edba
refactor: make scope identity authoritative
jgoppert Aug 20, 2026
7edc402
refactor: centralize compiler proof ownership
jgoppert Aug 20, 2026
93033da
refactor: hand structural analysis to solve
jgoppert Aug 20, 2026
f98ac11
refactor: centralize scalar and tensor primitives
jgoppert Aug 20, 2026
b14ac6e
refactor: centralize automatic integrator selection
jgoppert Aug 20, 2026
b7c873e
refactor: read delay bounds through FMI variables
jgoppert Aug 20, 2026
abf9860
feat: implement complete FMI ME lifecycle
jgoppert Aug 20, 2026
4ce2f32
refactor: remove legacy MSL worker paths
jgoppert Aug 20, 2026
3db0383
refactor: remove dead public compiler surfaces
jgoppert Aug 20, 2026
3e079ae
Project dependent parameters and index-list array updates
jgoppert Aug 21, 2026
9c9191f
Prove straight-line integer locals in range
jgoppert Aug 21, 2026
578a2ea
Refresh the Nix Python vendor hash
jgoppert Aug 21, 2026
c34f9e9
Drop a stray nix build result symlink
jgoppert Aug 21, 2026
4b88809
Scope the SPEC_0021 exception gate to the lints it governs
jgoppert Aug 21, 2026
19a8e43
Import rumoca-core primitives from their owning crate
jgoppert Aug 21, 2026
505e30a
Split oversized GALEC and Solve sources under the SPEC_0021 budget
jgoppert Aug 21, 2026
9a7348a
Move GALEC working-memory detail into the language catalog
jgoppert Aug 21, 2026
1ba17d7
Restore the workspace lint gate
jgoppert Aug 21, 2026
5e22d5d
Give MLS promote and the loop-carry proofs single owners
jgoppert Aug 21, 2026
752b7d7
Register every SPEC_0022 lexical contract
jgoppert Aug 21, 2026
2e09503
Keep a loop carry its last store
jgoppert Aug 21, 2026
f509a3b
Keep nested worktrees out of the workspace
jgoppert Aug 21, 2026
a2e06b3
Report a build identity from the CLI and the Python binding
jgoppert Aug 21, 2026
9f0e5cc
Lower a record local carried across a loop
jgoppert Aug 22, 2026
5ba5b2a
Square every reducible base through a bound temporary
jgoppert Aug 22, 2026
a2cfe20
Bake the build identity instead of passing it through the environment
jgoppert Aug 22, 2026
56ceb7a
Scan only this checkout for environment-variable usage
jgoppert Aug 22, 2026
8a9a824
Compare loop-compaction deletion against a liveness oracle
jgoppert Aug 22, 2026
814051c
Join proven integer ranges across conditional arms
jgoppert Aug 22, 2026
a375443
Derive the event-indicator inventory once, not per step
jgoppert Aug 22, 2026
99f33b6
Gate store deletion on a liveness witness
jgoppert Aug 22, 2026
ecd06d9
Execute the preservation theorem for loop compaction
jgoppert Aug 22, 2026
7c2a842
State the verification architecture and gate the semantics it trusts
jgoppert Aug 22, 2026
9d77a70
Project assertion messages through the call they describe
jgoppert Aug 22, 2026
e7d7699
Audit every emission surface and gate its acceptance contract
jgoppert Aug 22, 2026
0d360cc
Name the concepts that were argument lists
jgoppert Aug 22, 2026
4ea4424
Compare the interpreter and the native executor where it counts
jgoppert Aug 22, 2026
7c6f98e
Classify the totality debt and pin it so it only falls
jgoppert Aug 22, 2026
9c1af02
Witness every loop-local deletion, and empty the pass defect ledger
jgoppert Aug 22, 2026
edf2ad9
Pin the flight and canary corpus behind a fail-closed gate
jgoppert Aug 22, 2026
a694d68
Rebuild the identity when the checkout moves
jgoppert Aug 22, 2026
4ee5111
Match diagnostic mnemonics by suffix in the galec suite
jgoppert Aug 22, 2026
577b6e9
Overlay scratch regions by proven non-concurrency
jgoppert Aug 22, 2026
7a58f95
Gate the flight artifacts on an embedded budget
jgoppert Aug 22, 2026
1494a76
Record the embedded efficiency dossier for the flight track
jgoppert Aug 22, 2026
c5ad6be
Lower a guarded dynamic-subscript element write to its checked selection
jgoppert Aug 22, 2026
55fd5f8
Close the three vacuity paths in the corpus-pin gate
jgoppert Aug 22, 2026
4e80802
Carry the dynamic-axis proof of an element write in types
jgoppert Aug 22, 2026
ffd7329
See a target-gated dependency as the production edge it is
jgoppert Aug 22, 2026
5cdf4d2
Execute two type-away clusters and lower the totality ceilings
jgoppert Aug 22, 2026
83b8862
Enumerate the liveness-join clauses over their whole bounded domain
jgoppert Aug 22, 2026
f9bfdb3
Keep the projection test builders inside the nesting budget
jgoppert Aug 22, 2026
550c59d
Split contraction bodies at the outer tensor index
jgoppert Aug 23, 2026
18a362c
Overlay branch-local scratch slots within a working-memory region
jgoppert Aug 23, 2026
31b17a2
Read every production scope in the remaining dependency bans
jgoppert Aug 23, 2026
8ad231d
Solve loop-entry integer bounds by checked fixpoint
jgoppert Aug 23, 2026
73e7b7b
Budget the flight artifacts on floating-point arithmetic
jgoppert Aug 23, 2026
cb05e65
Pass aggregates to specializations without marshalling copies
jgoppert Aug 23, 2026
8d3ea23
Order group definitions by value dependency and guard local reuse
jgoppert Aug 23, 2026
f02a83c
Coerce call arguments to their formal element type and fold frozen de…
jgoppert Aug 23, 2026
f0d2dd0
Split selector axes so identity iterations vanish
jgoppert Aug 23, 2026
704437b
Keep the merged gate and view inside the architecture rules
jgoppert Aug 23, 2026
e45fecb
Snapshot an aggregate whose update reads storage it overwrites
jgoppert Aug 23, 2026
a67a8f5
Propagate the Evaluate mark through record members
jgoppert Aug 23, 2026
32c7d38
Keep a guard split from separating a target's assignments
jgoppert Aug 23, 2026
51086e1
Give store-reach for function values one owner and close the class
jgoppert Aug 23, 2026
552067f
Equalize overlay siblings at call-boundary bound-clash addresses
jgoppert Aug 23, 2026
dece9cc
Keep a time-only root as an FMI event indicator
jgoppert Aug 23, 2026
946d47b
Coalesce the correlated guards behind a deferred value read
jgoppert Aug 23, 2026
f3fd25c
Split the correlated-guard tests into their own module
jgoppert Aug 23, 2026
6e30912
Format the workspace to the pinned rustfmt
jgoppert Aug 23, 2026
2ee2f6e
Order inherited components at the extends-clause position
jgoppert Aug 23, 2026
b9a3b35
Revert "Order inherited components at the extends-clause position"
jgoppert Aug 23, 2026
3404594
Reject a cross-clock coincident same-tick algebraic cycle at construc…
jgoppert Aug 23, 2026
acf17e6
Synthesize Lie-group-ready Jacobians from a jacobian construct
jgoppert Aug 24, 2026
f52e0df
Gate the standard-Modelica emitter on the CLI feature
jgoppert Aug 24, 2026
b192fec
Drop the doc link to the removed location-to-span helper
jgoppert Aug 24, 2026
4271c92
Emit position-independent calls from the pure-call-table JIT
jgoppert Aug 24, 2026
d7280af
Emit position-independent calls from the model-eval JIT
jgoppert Aug 24, 2026
f21129d
Record the GALEC scratch support partial in the render inventory
jgoppert Aug 24, 2026
a2cdc1f
Solve coupled algebraic loops by tearing in the runtime projection
jgoppert Aug 24, 2026
886e2d4
Format the tearing test module to the pinned rustfmt
jgoppert Aug 24, 2026
b97de63
Check out Rust sources with LF so source-inspection tests hold on Win…
jgoppert Aug 24, 2026
c7f09b5
Reach JIT callees through far calls instead of range-limited branches
jgoppert Aug 24, 2026
f9ae457
Judge corpus artifact rootedness host-independently
jgoppert Aug 24, 2026
ab6d187
Decline projection on a singular isolator instead of aborting
jgoppert Aug 24, 2026
67d1b61
Resolve the compile-unit entry before climbing for its package root
jgoppert Aug 24, 2026
39cc738
Report the inner render error instead of a missing-field lie
jgoppert Aug 24, 2026
b2e7ab9
Canonicalize package-layout test expectations for symlinked temp dirs
jgoppert Aug 24, 2026
99c004d
Order same-tick exchanges by clock coincidence, not clock identity
jgoppert Aug 24, 2026
56cb5dc
Pin behavior of untested lowering, eval, and xtask helpers
jgoppert Aug 24, 2026
9d627a3
Match the focus document by canonical identity in compile-unit loading
jgoppert Aug 24, 2026
3162804
Select redeclared replaceable functions by exact slot identity
jgoppert Aug 24, 2026
276e545
Expect canonical sibling spellings in parse-error assertions
jgoppert Aug 24, 2026
594c225
Review the star-point and zero-flow near-band boundaries
jgoppert Aug 24, 2026
efb331d
Name a real loop member in the same-tick cycle diagnostic
jgoppert Aug 24, 2026
f0be9ba
Judge every manifest path's rootedness host-independently
jgoppert Aug 24, 2026
9d86756
Evaluate a torn block's sweep as one prepared batch
jgoppert Aug 25, 2026
516843c
Emit straight-line kernels and index-restricted blocks for GALEC hot …
jgoppert Aug 25, 2026
e5827b9
Record the re-measured embedded budgets and the errno-free sqrt note
jgoppert Aug 25, 2026
4af4ffd
Lower a clocked tensor definition once, not once per coordinate
jgoppert Aug 25, 2026
ec67baa
Place working-memory values in a proved arena
jgoppert Aug 25, 2026
bdaa2c9
Count a function uncovered only when every copy of it is
jgoppert Aug 25, 2026
2c8053c
Publish the coverage measurement the gate judged
jgoppert Aug 25, 2026
86780e7
Refound the coverage baseline on the enforcing environment
jgoppert Aug 25, 2026
3648313
Carry composed contractions and row contractions from lowering
jgoppert Aug 25, 2026
0a87cdd
Cover the facts the carried contraction introduced
jgoppert Aug 25, 2026
24e29df
Specialize the count-2 fill and scaled-add kernels
jgoppert Aug 25, 2026
6246eeb
Read a record's previous sample field by field
jgoppert Aug 25, 2026
25668b8
State the embedded-c-galec instance guarantee the code emits
Aug 26, 2026
9462298
Hold the three hand-written specialization lists equal
Aug 26, 2026
c380d18
Vendor the eFMI schema tree once and lend it
Aug 26, 2026
0eeed4e
Read a scope step's arm in one place
Aug 26, 2026
4a21022
Drop the block name's unread quoting flag
Aug 26, 2026
faf3cb7
Retire the two uncalled render entry points
Aug 26, 2026
4bde5f8
Ask context_resident only about locals
Aug 26, 2026
a9f1fe0
Stop threading a rounding mode with one value
Aug 26, 2026
83b20dc
Evaluate a repeated call once, where its arguments are ready
jgoppert Aug 26, 2026
b701afb
Stop building scope values nobody reads
Aug 26, 2026
5d04441
Stop laundering type names through a lossy lookup
Aug 26, 2026
57c1585
Enumerate the GALEC expression shape once per search
Aug 26, 2026
9968620
Retire the uncallable external-function diagnostic
Aug 26, 2026
541297a
Share a guarded repeated call under the guard it already ran under
jgoppert Aug 26, 2026
de59944
Point the container suites at the schemas a target ships
Aug 26, 2026
9435222
Share a call repeated inside one conditional branch
jgoppert Aug 26, 2026
0a18a6f
Spell the new prose without em dashes
Aug 26, 2026
fa1111d
Resolve a borrowed asset bundle for directory targets too
Aug 26, 2026
2260a95
Match the schemas bundle before believing its lender
Aug 26, 2026
0d87bfe
Retire the last two rounding claims in the catalogs
Aug 26, 2026
8d756cb
Record the solve-json schema change for 0.10.x
Aug 26, 2026
96b7d65
Name the type the asset doc links to
Aug 26, 2026
1c6f350
Order one shared-call node after the node whose temporary it reads
jgoppert Aug 26, 2026
5b5287e
Evaluate a repeated function call once per activation
jgoppert Aug 26, 2026
d431b0d
Escape emitted Modelica strings the parser can read
jgoppert Aug 26, 2026
41f0484
Place a callee's array output in the slot its caller already owns
jgoppert Aug 26, 2026
86e887b
Order the placement plan and prove the aliasing case three ways
jgoppert Aug 26, 2026
81eee5a
Read the storage a destination may use instead of forcing it
jgoppert Aug 26, 2026
c461ca2
Refuse a total-write witness that also writes the output partially
jgoppert Aug 26, 2026
b27812b
Declare a destination pointer only where the body spells the output
jgoppert Aug 26, 2026
3484558
Resolve the dead-public-surface gate by declaration identity
jgoppert Aug 26, 2026
802a093
Mint the constant-fold warnings in a W range and see the whole workspace
jgoppert Aug 26, 2026
c11a79b
Count a dropped read-back as no reason to alias the caller's region
jgoppert Aug 26, 2026
07b2e80
Read a signal check's fallback instead of assuming it names everything
jgoppert Aug 26, 2026
082f77b
Name the self-read the placement theorem always needed
jgoppert Aug 26, 2026
8447456
Diagnose a destination whose rank or element type moved
jgoppert Aug 26, 2026
2ad4a9a
Record why the array-formal refusal stays
jgoppert Aug 26, 2026
7d49678
Write down the error-signal accumulation contract
Aug 26, 2026
9396869
Evaluate a staging nest's invariant guard once
Aug 26, 2026
d784efb
Evaluate a staging nest's invariant guard once
jgoppert Aug 26, 2026
e119921
Give the extent comparison and the assignment arm their own names
jgoppert Aug 26, 2026
2db72b7
Place a callee's array output in storage the caller owns
jgoppert Aug 26, 2026
50501f1
Separate the call-structure and data-structure emission axes
Aug 27, 2026
987bdeb
Serve a conditional branch from the node its own guard selects
jgoppert Aug 27, 2026
fab9573
Pin the branch a guarded node now serves
jgoppert Aug 27, 2026
29efcba
Serve a conditional branch from the node its guard already selects
jgoppert Aug 27, 2026
50fdd46
Honor Modelica's Inline and LateInline annotations
Aug 27, 2026
557955c
Substitute a callee that is called from exactly one place
Aug 27, 2026
853791b
Separate the call-structure and data-structure emission axes
jgoppert Aug 27, 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
  •  
  •  
  •  
2 changes: 2 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
*.jinja text eol=lf
*.rs text eol=lf
83 changes: 83 additions & 0 deletions .github/actions/apt-install/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
name: Install apt packages
description: Install Ubuntu packages without allowing apt mirrors to hang a job indefinitely

inputs:
packages:
description: Whitespace-separated package names
required: true
timeout-seconds:
description: Wall-clock limit for each apt invocation
required: false
default: '120'

runs:
using: composite
steps:
- name: Install requested packages
shell: bash
env:
APT_PACKAGES: ${{ inputs.packages }}
APT_TIMEOUT_SECONDS: ${{ inputs.timeout-seconds }}
run: |
set -euo pipefail

if [[ ! "$APT_TIMEOUT_SECONDS" =~ ^[1-9][0-9]*$ ]]; then
echo "::error::timeout-seconds must be a positive integer"
exit 2
fi

read -r -a packages <<< "$APT_PACKAGES"
if (( ${#packages[@]} == 0 )); then
echo "::error::packages must contain at least one package name"
exit 2
fi

missing=()
for package in "${packages[@]}"; do
if [[ ! "$package" =~ ^[A-Za-z0-9][A-Za-z0-9+.:_~-]*$ ]]; then
echo "::error::invalid apt package name: $package"
exit 2
fi
if ! dpkg-query -W -f='${db:Status-Status}\n' "$package" 2>/dev/null |
grep -Fxq installed; then
missing+=("$package")
fi
done

if (( ${#missing[@]} == 0 )); then
echo "All requested apt packages are already installed"
exit 0
fi

echo "Missing apt packages: ${missing[*]}"

bounded_apt() {
sudo env DEBIAN_FRONTEND=noninteractive \
timeout --signal=TERM --kill-after=15s "${APT_TIMEOUT_SECONDS}s" \
apt-get \
-o Acquire::Retries=2 \
-o Acquire::http::Timeout=20 \
-o Acquire::https::Timeout=20 \
-o DPkg::Lock::Timeout=60 \
"$@"
}

# Hosted runners normally retain usable indexes. Avoid contacting every
# configured mirror when those indexes can satisfy the install directly.
if bounded_apt install -y --no-install-recommends "${missing[@]}"; then
exit 0
fi

for attempt in 1 2; do
echo "apt refresh/install attempt $attempt of 2"
if bounded_apt update &&
bounded_apt install -y --no-install-recommends "${missing[@]}"; then
exit 0
fi
if (( attempt < 2 )); then
sleep 10
fi
done

echo "::error::apt package installation failed after bounded retries"
exit 1
2 changes: 1 addition & 1 deletion .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,5 +67,5 @@ If `net_added_lines` is positive, add:
- [ ] New APIs are required and minimal.
- [ ] Old/new parallel paths removed unless explicitly migrating.
- [ ] No `#[allow(clippy::...)]` added outside generated code.
- [ ] Every commit signed off (`git commit -s`); no `Co-Authored-By` for AI.
- [ ] Every commit signed off (`git commit -s`); no named AI assistant/session references or AI `Co-Authored-By` trailers.
- [ ] External material (if any) attributed and Apache-2.0 compatible.
Loading
Loading