Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
1cf79e5
docs: design for non-recursive (work-stack) type checker
jaredramirez Jun 28, 2026
bbf5ecc
docs: Phase 1 implementation plan for non-recursive type checker
jaredramirez Jun 28, 2026
85dfdfc
check: add iterative checkExpr driver skeleton (full passthrough)
jaredramirez Jun 28, 2026
22f7de2
check/test: two-pass differential harness for iterative checker
jaredramirez Jun 29, 2026
adad928
check/test: deep-nesting stack-safety stress test
jaredramirez Jun 29, 2026
d88a2a3
check: extract checkEnterPrologue/checkExitEpilogue (no-op refactor)
jaredramirez Jun 29, 2026
d4c90ba
check: migrate e_tuple_access to iterative driver
jaredramirez Jun 29, 2026
cad771b
check: migrate e_block to iterative driver (flatten block spine)
jaredramirez Jun 29, 2026
2e2e4f7
check: add honest statement-nested deep-nesting test + doc (5b limita…
jaredramirez Jun 29, 2026
a289707
check: migrate 22 leaf expr kinds to iterative driver
jaredramirez Jun 29, 2026
9040717
check: migrate single-child expr kinds to iterative driver
jaredramirez Jun 29, 2026
04e7fbe
check: migrate multi-child expr kinds (list/tuple/tag/call-family) to…
jaredramirez Jun 29, 2026
9890698
check: migrate e_call to iterative driver (interleaved func/args + ac…
jaredramirez Jun 29, 2026
41dd57f
Migrate e_interpolation to iterative checkExprIter driver
jaredramirez Jun 29, 2026
9a43815
Migrate e_for to iterative checkExprIter driver
jaredramirez Jun 29, 2026
e53d04e
Migrate e_if to iterative checkExprIter work-stack driver
jaredramirez Jun 29, 2026
823c32e
Migrate e_match to iterative checkExprIter driver (helper-delegating)
jaredramirez Jun 29, 2026
49a9a8a
Migrate e_lambda to iterative checkExprIter driver
jaredramirez Jun 29, 2026
3acb1a6
Migrate e_record to iterative checkExprIter driver
jaredramirez Jun 30, 2026
784b1d0
Migrate e_str to iterative checkExprIter driver
jaredramirez Jun 30, 2026
d74c894
check: address code-review findings on the iterative checkExpr driver
jaredramirez Jun 30, 2026
95e26ac
Update comments to reflect new reality
jaredramirez Jul 1, 2026
703e574
Merge remote-tracking branch 'origin/main' into iterative-checker-pro…
rtfeldman Jul 3, 2026
c5adaad
Use explicit error sets in deep nesting tests
rtfeldman Jul 3, 2026
2f2d838
Satisfy semantic audit wording
rtfeldman Jul 3, 2026
013ae97
Fix platform relation publication after merge
rtfeldman Jul 3, 2026
525e744
Remove unused relation substitution receiver
rtfeldman Jul 3, 2026
a53ea19
Fix platform glue type publication
rtfeldman Jul 3, 2026
c06ad7f
Scope return constraints to owning lambda
rtfeldman Jul 3, 2026
2574024
Handle tuple access through aliases
rtfeldman Jul 4, 2026
ae39aa6
Reduce generated record parser duplication
rtfeldman Jul 4, 2026
ed8de93
Suppress musl realpath valgrind noise
rtfeldman Jul 4, 2026
426c61f
Remove unused record parser dispatch helper
rtfeldman Jul 4, 2026
127ac42
Stabilize Zig CI for stacked checker PR
rtfeldman Jul 5, 2026
e096301
Broaden musl realpath valgrind suppression
rtfeldman Jul 5, 2026
dcd343d
Suppress musl realpath value reads under valgrind
rtfeldman Jul 5, 2026
9b23f1d
Suppress musl realpath readlink valgrind noise
rtfeldman Jul 5, 2026
f93da60
Suppress musl realpath readlink size valgrind noise
rtfeldman Jul 5, 2026
3e1d212
Mark realpath output defined for memcheck
rtfeldman Jul 5, 2026
c92c133
Mark realpath length defined for memcheck
rtfeldman Jul 6, 2026
2acfe4c
Merge pull request #9929 from roc-lang/issue-9827-return-constraints
rtfeldman Jul 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 9 additions & 3 deletions .github/workflows/ci_zig.yml
Original file line number Diff line number Diff line change
Expand Up @@ -272,26 +272,32 @@ jobs:
cpu_flag: -Dcpu=x86_64_v3
target_flag: ''
release_jobs_flag: ''
zig_test_timeout_flag: ''
- os: macos-15
cpu_flag: ''
target_flag: ''
release_jobs_flag: ''
zig_test_timeout_flag: ''
- os: ubuntu-24.04
cpu_flag: ""
target_flag: -Dtarget=x86_64-linux-musl
release_jobs_flag: ''
zig_test_timeout_flag: ''
- os: ubuntu-24.04-arm
cpu_flag: ''
target_flag: '' # Native build for kcov (Zig 0.15.2 x86_64 has DWARF bug) # TODO ZIG 16: re-check if DWARF bug is fixed in 0.16
release_jobs_flag: -j4 # Avoid hosted ARM runner disconnects under full ReleaseFast parallelism.
release_jobs_flag: -j2 # Avoid hosted ARM runner disconnects under ReleaseFast parallelism.
zig_test_timeout_flag: ''
- os: windows-2022
cpu_flag: -Dcpu=x86_64_v3
target_flag: ''
release_jobs_flag: ''
zig_test_timeout_flag: --test-timeout 5m
- os: windows-2025
cpu_flag: -Dcpu=x86_64_v3
target_flag: ''
release_jobs_flag: ''
zig_test_timeout_flag: --test-timeout 5m

steps:
- name: Checkout
Expand Down Expand Up @@ -357,11 +363,11 @@ jobs:

# 1) in debug mode
- name: build and execute tests, build repro executables
run: zig build run-test-zig -Dfuzz -Dsystem-afl=false ${{ matrix.target_flag }}
run: zig build ${{ matrix.zig_test_timeout_flag }} run-test-zig -Dfuzz -Dsystem-afl=false ${{ matrix.target_flag }}

# 2) in release mode
- name: Build and execute tests, build repro executables. All in release mode.
run: zig build ${{ matrix.release_jobs_flag }} run-test-zig -Doptimize=ReleaseFast -Dfuzz -Dsystem-afl=false ${{ matrix.cpu_flag }} ${{ matrix.target_flag }}
run: zig build ${{ matrix.release_jobs_flag }} ${{ matrix.zig_test_timeout_flag }} run-test-zig -Doptimize=ReleaseFast -Dfuzz -Dsystem-afl=false ${{ matrix.cpu_flag }} ${{ matrix.target_flag }}

- name: Check for snapshot changes
run: |
Expand Down
39 changes: 39 additions & 0 deletions ci/valgrind.supp
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,42 @@
fun:enframe
fun:__libc_malloc_impl
}

# musl realpath conditionally inspects internal path-buffer bytes while
# canonicalizing a path. Valgrind 3.26 reports this inside libc before control
# returns to Zig's std.fs realpath wrapper; this does not indicate that Roc
# read uninitialized program memory. Match any internal realpath helper frames
# because Zig's optimized libc memcpy path varies by source/destination length.
{
musl-realpath-dir-realpath
Memcheck:Cond
...
fun:realpath
fun:Io.Threaded.dirRealPathFilePosix
}

{
musl-realpath-value-dir-realpath
Memcheck:Value8
...
fun:realpath
fun:Io.Threaded.dirRealPathFilePosix
}

{
musl-realpath-readlink-dir-realpath
Memcheck:Param
readlink(buf)
fun:readlink
fun:realpath
fun:Io.Threaded.dirRealPathFilePosix
}

{
musl-realpath-readlink-bufsiz-dir-realpath
Memcheck:Param
readlink(bufsiz)
fun:readlink
fun:realpath
fun:Io.Threaded.dirRealPathFilePosix
}
Loading