Crafter.Build/tests
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Jorijn van der Graaf 45b9f5cbb7
fix(wasm): what the review found
-flto in a wasm configuration's compileFlags or linkFlags reached the
link, where LTO code generation runs without the backend options that
keep exception handling: every landing pad was dropped, and the build
succeeded with throws that escaped their catch blocks. -fno-exceptions
there made every `import std;` fail on the std module built with
exceptions, and a wasm shared library failed to link against the eh/
libc++, which is static archives built without -fPIC. Build() refuses
all three now, each with a line that says why, before it makes a
directory or starts a thread.

The sysroot check sat in BuildStdPcm, which the linter calls as well.
There the error only dropped the compile command, so lint ran no AST
rule on a wasm configuration and reported it clean. It also refused
static libraries, which never link, fired after the shader and
external threads had started, and called a missing sysroot, or one
without the target, "no C++ exception support". It is part of the same
early check now, which first says when the sysroot or the target's
directory is missing, and asks for libunwind only where something
links.

C sources got only the signal.h define. setjmp.h refused to compile in
C, and a C object given -wasm-enable-sjlj through compileFlags used the
legacy exception encoding next to C++ objects in the standard one, a
mix engines refuse to load. They get WasmCompileFlags now, like the C++
units, a variant pass's flags included.

The baseline probes include simd: V8 and SpiderMonkey switch SIMD off
on x86 CPUs without SSE4.1, which virtual machines often present, and
such an engine passed the exception-handling probe only to fail
compiling the module; the manifest tests expect it on every entry. The
Flatpak pins WASI_SDK_EXCEPTIONS=DUAL, which
wasi-sdk 34 defaults to only with clang 23 or newer, and checks that
the eh/ libunwind got installed: the wasm tests skip without it, so CI
would otherwise pass a Flatpak whose every wasm build fails.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 06:10:41 +01:00
..
CleanProject test(cli): a word after format is a glob, not the clean verb 2026-10-20 19:08:26 +02:00
CompilerWarning refactor: drop Windows host support 2026-10-02 22:03:34 +02:00
ConcurrentCacheRace linting 2026-07-23 01:24:42 +02:00
ConcurrentDependencyReset linting 2026-07-23 01:24:42 +02:00
ConcurrentExternalFetch test(external): race BuildExternal as well as GitFetch 2026-10-31 02:09:24 +01:00
DependencyLink linting 2026-07-23 01:24:42 +02:00
DependencyNotes test(agents): the cases the review found 2026-10-31 05:02:36 +01:00
DuplicateModule test: two builds of one module are refused before anything compiles 2026-10-31 05:19:30 +01:00
ExternalArtifactTime fix(external): fetch and build each clone once per build pass 2026-10-31 02:09:24 +01:00
GitSubmodules fix: rebuild and relink on what changed, submodules at their revisions, and mingw found where it is 2026-10-20 20:20:29 +02:00
HelloWorld linting 2026-07-23 01:24:42 +02:00
HostCacheSourceStamp test(host-cache): changed declarations recompile project.so 2026-10-06 16:50:41 +02:00
HostCacheToolchainKey fix: key PCM and project.so freshness on content, not installed mtimes 2026-10-02 23:18:09 +02:00
HostToolingSibling test: a project and its pragma dependency load a shared sibling apart 2026-10-31 05:11:41 +01:00
IncrementalHeaderChange test: header-change incrementality across every compile path 2026-07-31 11:11:49 +00:00
IncrementalInterfaceChange fix: re-resolve module imports before checking staleness 2026-07-30 17:12:24 +00:00
LinkFlagsChange fix: rebuild and relink on what changed, submodules at their revisions, and mingw found where it is 2026-10-20 20:20:29 +02:00
Lint feat(lint): const-local and constexpr-constant rules 2026-07-31 00:50:48 +02:00
MingwMissing fix: rebuild and relink on what changed, submodules at their revisions, and mingw found where it is 2026-10-20 20:20:29 +02:00
ModuleInterface linting 2026-07-23 01:24:42 +02:00
ProjectArgs test: specs and ProjectDependency() in a project file's static initialisers 2026-10-31 05:11:41 +01:00
ProjectDependency test: specs and ProjectDependency() in a project file's static initialisers 2026-10-31 05:11:41 +01:00
RunSingleTestExit linting 2026-07-23 01:24:42 +02:00
Script test: -- reaches neither the project args nor the script 2026-10-31 05:11:41 +01:00
ShaderCompile fix: rebuild and relink on what changed, submodules at their revisions, and mingw found where it is 2026-10-20 20:20:29 +02:00
ShaderIncludeChange fix: rebuild and relink on what changed, submodules at their revisions, and mingw found where it is 2026-10-20 20:20:29 +02:00
ShaderVariantBuild test(shader): variants through the Shader API and through Build() 2026-10-06 16:50:41 +02:00
SharedExternalFetch test(external): tests that share a dependency fetch it once a run 2026-10-31 02:09:24 +01:00
StandardArgs fix: key the host PCM cache on source content, add clean, hash project args 2026-07-30 17:43:09 +00:00
StaticLib linting 2026-07-23 01:24:42 +02:00
SysrootCompileFlags test(sysroot): the compile command forces the sysroot's libc++ 2026-10-06 16:50:41 +02:00
SysrootStdModule test(sysroot): cover the std module source choice for a sysroot build 2026-10-03 16:37:00 +02:00
TestRunnerSpec feat(toolchain): resolve the compiler in one place 2026-10-02 22:26:31 +02:00
ToolchainResolve fix: rebuild and relink on what changed, submodules at their revisions, and mingw found where it is 2026-10-20 20:20:29 +02:00
TransitiveInterfaceChange test change 2026-08-05 05:49:42 +02:00
VariantId test(incremental): a compiler update perturbs VariantId 2026-10-03 20:09:22 +02:00
VersionFlag feat(toolchain): resolve the compiler in one place 2026-10-02 22:26:31 +02:00
WasiBrowserRuntime fix(wasm): what the review found 2026-10-31 06:10:41 +01:00
WasiBrowserRuntimeExit test(wasi-runtime): exit and park, under node 2026-10-31 05:55:32 +01:00
WasiSysrootWithoutExceptions test(wasm): exceptions in a wasm build, and a sysroot without them 2026-10-31 05:54:48 +01:00
WasmExceptions test(wasm): exceptions in a wasm build, and a sysroot without them 2026-10-31 05:54:48 +01:00
WasmHelloRuns test(wasm): exceptions in a wasm build, and a sysroot without them 2026-10-31 05:54:48 +01:00
WasmVariants fix(wasm): what the review found 2026-10-31 06:10:41 +01:00