mirror of
https://github.com/ChaiScript/ChaiScript.git
synced 2026-04-30 19:09:26 +08:00
* Fix #666: TSAN builds don't actually use threads TSAN builds did not explicitly enable MULTITHREAD_SUPPORT_ENABLED, so they relied on the CMake default. This adds -DMULTITHREAD_SUPPORT_ENABLED=ON to both TSAN jobs and expands the CI matrix to cover threading on/off with Debug/Release for Linux, macOS, and Windows MSVC. Also excludes async-dependent .chai tests from non-threaded builds and adds a Threading_Config_Test to verify the threading configuration is correct in both modes. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Address review: use Ninja generator for all unix CI targets Requested by @lefticus in PR #670 review. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: leftibot <leftibot@users.noreply.github.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
27 lines
646 B
C++
27 lines
646 B
C++
#include <chaiscript/chaiscript.hpp>
|
|
|
|
int main() {
|
|
#ifndef CHAISCRIPT_NO_THREADS
|
|
// When threading is enabled, verify that async() is registered and functional
|
|
chaiscript::ChaiScript chai;
|
|
const auto result = chai.eval<int>(R"(
|
|
var f = async(fun() { return 42; });
|
|
f.get();
|
|
)");
|
|
if (result != 42) {
|
|
return EXIT_FAILURE;
|
|
}
|
|
#else
|
|
// When threading is disabled, verify that async() is NOT registered
|
|
chaiscript::ChaiScript chai;
|
|
try {
|
|
chai.eval("async(fun() { return 0; })");
|
|
return EXIT_FAILURE;
|
|
} catch (const std::exception &) {
|
|
// Expected: async should not exist
|
|
}
|
|
#endif
|
|
|
|
return EXIT_SUCCESS;
|
|
}
|