Skip to content

Add cwasm support to lind-boot#758

Merged
rennergade merged 3 commits intomainfrom
lind-boot-cwasm
Feb 19, 2026
Merged

Add cwasm support to lind-boot#758
rennergade merged 3 commits intomainfrom
lind-boot-cwasm

Conversation

@rennergade
Copy link
Contributor

@rennergade rennergade commented Feb 18, 2026

Closes #643

  • Add --precompile flag to lind-boot for AOT-compiling .wasm → .cwasm
  • Add --allow-precompile flag to lind-boot for running .cwasm artifacts
  • Restore --precompile-only mode to lind_compile
  • Full lind_compile pipeline now produces .cwasm again: .c → .wasm → wasm-opt
    → .cwasm
  • lind_run passes --allow-precompile by default

@rennergade
Copy link
Contributor Author

Putting this up as a draft. This probably will need some help discussion and help on reformatting to fit the tests again and configuring our scripts correctly.

Copy link
Member

@Yaxuan-w Yaxuan-w left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome! The general implementation makes sense to me. Left a few suggestions.

@Yaxuan-w
Copy link
Member

Yaxuan-w commented Feb 18, 2026

reformatting to fit the tests again and configuring our scripts correctly.

Since we've already have pre-compilation flag option in python scripts, we should be able to just modify the make test in Makefile to enable this.

@rennergade rennergade marked this pull request as ready for review February 18, 2026 20:09
@github-actions
Copy link
Contributor

End-to-End Test Report

Test Preview

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases149
Number of Successes149
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
File Tests
chartests.cSuccessNone0.050255s4.225853s
Success
chdir_getcwd.cSuccessNone0.050663s4.221844s
Success
chmod.cSuccessNone0.056078s4.254347s
Success
clock_gettime_highlevel.cSuccessNone0.120432s4.418975s
Success
clock_gettime_simple.cSuccessNone0.044919s4.239842s
Success
cloexec.cSuccessNone0.054787s3.843347s
Success
close.cSuccessNone0.063690s4.252682s
Success
creat_access.cSuccessNone0.053127s4.213645s
Success
doubleclose.cSuccessNone0.045477s3.813039s
Success
dup.cSuccessNone0.046080s4.203883s
Success
dup2.cSuccessNone0.052108s3.859532s
Success
dup3.cSuccessNone0.049310s4.204986s
Success
dupwrite.cSuccessNone0.053259s3.802907s
Success
fchdir.cSuccessNone0.056223s4.261931s
Success
fchmod.cSuccessNone0.058419s4.198757s
Success
fcntl.cSuccessNone0.052461s4.239717s
Success
fdatasync.cSuccessNone0.051982s4.188124s
Success
filetest.cSuccessNone0.052243s3.833202s
Success
filetest1000.cSuccessNone0.061775s3.831699s
Success
flock.cSuccessNone0.061096s4.263835s
Success
fstat.cSuccessNone0.055864s4.231080s
Success
fstatfs.cSuccessNone0.046920s4.185506s
Success
fsync.cSuccessNone0.051877s4.206954s
Success
ftruncate.cSuccessNone0.056850s4.259128s
Success
getcwd.cSuccessNone0.050177s4.238946s
Success
getrandom.cSuccessNone0.053271s4.240091s
Success
ioctl.cSuccessNone0.058279s4.213093s
Success
link.cSuccessNone0.056578s4.234870s
Success
lseek.cSuccessNone0.058336s4.283273s
Success
mkdir_rmdir.cSuccessNone0.055576s4.251565s
Success
open.cSuccessNone0.047229s4.172966s
Success
pread_pwrite.cSuccessNone0.049968s4.227422s
Success
printf.cSuccessNone0.044931s3.805802s
Success
read.cSuccessNone0.054588s4.190642s
Success
readbytes.cSuccessNone0.051321s3.818933s
Success
readlink.cSuccessNone0.053028s4.192858s
Success
readlinkat.cSuccessNone0.054837s4.185749s
Success
rename.cSuccessNone0.056068s4.231135s
Success
sc-writev.cSuccessNone0.052117s4.220497s
Success
stat.cSuccessNone0.054093s4.220764s
Success
statfs.cSuccessNone0.047709s4.186554s
Success
sync_file_range.cSuccessNone0.051924s4.252857s
Success
truncate.cSuccessNone0.055736s4.229441s
Success
unlink.cSuccessNone0.056001s4.242644s
Success
unlinkat.cSuccessNone0.055204s4.229630s
Success
write.cSuccessNone0.046334s3.826677s
Success
writeloop.cSuccessNone0.055589s3.828568s
Success
writepartial.cSuccessNone0.055204s3.830696s
Success
writev.cSuccessNone0.054510s4.212881s
Success
Math Tests
math_link_smoke.cSuccessNone0.057295s3.893185s
Success
math_tests.cSuccessNone0.061701s4.034628s
Success
Memory Tests
brk.cSuccessNone0.051686s4.211397s
Success
malloc.cSuccessNone0.050204s3.827389s
Success
malloc_large.cSuccessNone0.050590s4.207672s
Success
memcpy.cSuccessNone0.048967s3.829608s
Success
memory_error_test.cSuccessNone0.055462s4.268030s
Success
mmap.cSuccessNone0.045848s4.245759s
Success
mmap_aligned.cSuccessNone0.047455s4.213517s
Success
mmap_complicated.cSuccessNone0.053781s4.261816s
Success
mmap_file.cSuccessNone0.056291s4.262812s
Success
mmap_shared.cSuccessNone0.055282s4.333882s
Success
mmaptest.cSuccessNone0.050106s4.224485s
Success
mprotect.cSuccessNone0.048565s4.222236s
Success
mprotect_boundary.cSuccessNone0.047709s4.235143s
Success
mprotect_end_region.cSuccessNone0.047140s4.227356s
Success
mprotect_middle_region.cSuccessNone0.047136s4.221175s
Success
mprotect_multiple_times.cSuccessNone0.050160s4.248563s
Success
mprotect_same_value.cSuccessNone0.047293s4.232554s
Success
mprotect_spanning_regions.cSuccessNone0.049496s4.239543s
Success
sbrk.cSuccessNone0.050744s4.231065s
Success
segfault.cSuccessNone0.055940s4.264916s
Success
shm.cSuccessNone0.053440s4.273339s
Success
shmtest.cSuccessNone0.048872s4.231912s
Success
vtable.cSuccessNone0.060588s3.847531s
Success
Networking Tests
dnstest.cSuccessNone0.053900s4.247273s
Success
epollcreate1.cSuccessNone0.055229s4.229451s
Success
gethostname.cSuccessNone0.047017s3.819198s
Success
getsockname.cSuccessNone0.055719s4.202913s
Success
getsockopt.cSuccessNone0.057222s4.283564s
Success
makepipe.cSuccessNone0.046360s3.807111s
Success
pipe.cSuccessNone0.055741s4.240912s
Success
pipe2.cSuccessNone0.055296s4.218397s
Success
pipeinput.cSuccessNone0.057116s4.241809s
Success
pipeinput2.cSuccessNone0.058849s4.251790s
Success
pipeonestring.cSuccessNone0.056853s4.260530s
Success
pipepong.cSuccessNone0.055602s4.314559s
Success
pipewrite.cSuccessNone0.051570s4.201471s
Success
poll.cSuccessNone0.054468s4.199166s
Success
recvfrom-sendto.cSuccessNone0.055583s4.210557s
Success
serverclient.cSuccessNone0.055019s3.835953s
Success
shutdown.cSuccessNone0.056602s3.843170s
Success
shutdown_fork.cSuccessNone0.055521s4.240418s
Success
simple-select.cSuccessNone0.056509s4.249613s
Success
simple_epoll.cSuccessNone0.054810s4.239755s
Success
socket.cSuccessNone0.054305s3.813389s
Success
socket_cloexec.cSuccessNone0.052946s4.201155s
Success
socketepoll.cSuccessNone0.053868s3.819088s
Success
socketpair.cSuccessNone0.054369s4.258766s
Success
socketselect.cSuccessNone0.053310s4.206387s
Success
tcp_connect_single.cSuccessNone0.054279s4.224938s
Success
uds-getsockname.cSuccessNone0.054628s4.231524s
Success
uds-socketselect.cSuccessNone0.055120s3.846400s
Success
Process Tests
chain_thread.cSuccessNone1.054654s5.344442s
Success
exit.cSuccessNone0.051351s3.801451s
Success
fork2malloc.cSuccessNone0.055195s4.236810s
Success
fork_select.cSuccessNone0.053483s4.255372s
Success
fork_simple.cSuccessNone0.051390s4.203632s
Success
fork_syscall.cSuccessNone0.058871s4.285863s
Success
forkandopen.cSuccessNone0.055123s4.231577s
Success
forkdup.cSuccessNone0.056285s3.859624s
Success
forkexecuid.cSuccessNone0.053477s4.246529s
Success
forkexecv-arg.cSuccessNone0.052899s4.246320s
Success
forkexecv.cSuccessNone0.052024s4.225752s
Success
forkfiles.cSuccessNone0.056192s4.236139s
Success
forkmalloc.cSuccessNone0.070685s4.217407s
Success
forknodup.cSuccessNone0.055919s4.232093s
Success
function-ptr.cSuccessNone0.052478s4.170851s
Success
getegid_syscall.cSuccessNone0.056349s4.256843s
Success
getgid_syscall.cSuccessNone0.056179s4.275795s
Success
getpid.cSuccessNone0.046600s4.177428s
Success
getpid_syscall.cSuccessNone0.055743s4.305453s
Success
getppid.cSuccessNone0.054511s4.237790s
Success
getppid_syscall.cSuccessNone0.058633s4.260236s
Success
getuid.cSuccessNone0.055909s4.218444s
Success
getuid_syscall.cSuccessNone0.053458s4.258177s
Success
hello-arg.cSuccessNone0.044360s3.838454s
Success
hello.cSuccessNone0.044468s3.824167s
Success
longjmp.cSuccessNone0.045350s3.820085s
Success
mutex.cSuccessNone2.059487s6.470802s
Success
sem_forks.cSuccessNone0.057639s4.254972s
Success
setsid.cSuccessNone0.046337s3.806837s
Success
template.cSuccessNone0.054677s4.227742s
Success
test_exec_nofork.cSuccessNone0.052677s4.202404s
Success
test_unlink_open_file.cSuccessNone0.048712s3.799146s
Success
thread.cSuccessNone0.048688s4.344997s
Success
uname.cSuccessNone0.046738s4.181874s
Success
wait.cSuccessNone2.050917s5.856198s
Success
waitpid_anychild.cSuccessNone0.054151s4.235117s
Success
waitpid_syscall.cSuccessNone1.055348s5.263456s
Success
waitpid_wnohang.cSuccessNone0.053693s3.861174s
Success
Signal Tests
alarm.cSuccessNone7.053940s10.832307s
Success
setitimer.cSuccessNone7.054636s10.863043s
Success
sigalrm.cSuccessNone2.055774s5.862758s
Success
sigchld.cSuccessNone1.056227s4.895710s
Success
signal-fork.cSuccessNone4.055363s7.865485s
Success
signal-simple.cSuccessNone0.056553s3.872350s
Success
signal_fork.cSuccessNone0.050583s4.235896s
Success
signal_int_ignored.cSuccessNone2.054943s6.267815s
Success
sigprocmask.cSuccessNone1.054473s4.835701s
Success
Fail Tests

Summary

MetricCount
Total Test Cases2
Number of Successes2
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Memory Tests
mmap-negative1.cSuccessNone0.114719s4.181008s
Success
mmap-negative2.cSuccessNone0.128286s4.199973s
Success

@rennergade rennergade merged commit 9f91227 into main Feb 19, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

lind-boot: slow startup time due to wasm-only loading path

2 participants