261 Commits

Author SHA1 Message Date
leftibot
7b95ff5126
Fix #655: Async issues with threads outliving the chaiscript engine (#656)
* Fix #655: Join async threads before engine destruction to prevent heap-use-after-free

Issues #632 and #636 (PRs #651 and #653) both stem from the same root cause: async
threads spawned via async() can outlive the Dispatch_Engine, accessing shared state
(global objects map, type maps) after it has been destroyed. The fix moves async()
registration from the stdlib module into ChaiScript_Basic, where spawned threads are
tracked via Dispatch_Engine. The engine's destructor now joins all outstanding async
threads before destroying shared data structures.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Address review: follow rule of 5, explicitly default move operations

Requested by @lefticus in PR #656 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>
2026-04-11 16:12:41 -06:00
leftibot
340e7d4b16
Fix #472: Emscripten Frontend (#662)
* Fix #472: Add Emscripten/WebAssembly build for browser-based ChaiScript

Port Rob Loach's ChaiScript.js work (https://github.com/RobLoach/ChaiScript.js)
into the main repository as an Emscripten build target. Adds a GitHub Actions
workflow that builds ChaiScript to WebAssembly and publishes artifacts (JS, WASM,
HTML) for embedding in the official ChaiScript.com website. Includes an HTML
interactive playground frontend and a native test validating the eval API surface.

Co-Authored-By: Rob Loach <robloach@gmail.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Address review: publish WASM assets as release under wasm-latest tag

Add a publish job to the emscripten workflow that creates a prerelease
tagged wasm-latest with chaiscript.js, chaiscript.wasm, and
chaiscript.html as downloadable assets. Runs only on pushes to the
develop branch. The website repo can fetch these via the public
GitHub Releases API on a daily cron without any cross-repo auth.

Requested by @lefticus in PR #662 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: Rob Loach <robloach@gmail.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 15:58:28 -06:00
leftibot
92abd226a9
Fix #660: Windows builds are broken (#661)
* Fix #660: Fix Windows builds, remove Appveyor, add sanitizer CI builds

Add missing #include <chrono> to src/main.cpp which caused MSVC build
failures since high_resolution_clock and duration_cast were used without
the header (GCC/Clang included it transitively). Remove obsolete
appveyor.yml (superseded by GitHub Actions). Add ASAN+UBSAN build
jobs for Linux and macOS in the CI workflow.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Address review: add Windows ASAN+UBSAN sanitizer support

- Add MSVC-native ASAN support in CMakeLists.txt (/fsanitize=address)
  with /RTC removal and /INCREMENTAL:NO (both incompatible with ASAN)
- Add Windows MSVC ASAN CI job
- Add Windows ClangCL ASAN+UBSAN CI job (UBSAN requires Clang, not
  available in native MSVC)
- Fix sanitizer guard to include AppleClang (macOS sanitizer jobs were
  silently not enabling sanitizers)

Requested by @lefticus in PR #661 review.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Address review: remove Windows sanitizers, add TSAN for Linux/macOS

Remove windows-sanitizers and windows-clangcl-sanitizers CI jobs.
Add linux-tsan and macos-tsan CI jobs using ENABLE_THREAD_SANITIZER.

Requested by @lefticus in PR #661 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>
2026-04-11 15:06:33 -06:00
FellowTraveler
0870cb5a3a Add C++20 support
ChaiScript now successfully builds on my Mac with C++20, and passes 100% of the unit tests.
2023-06-18 06:42:51 -05:00
IohannRabeson
53fe932be4 Properly create a library called Chaiscript.
This allows to properly use Chaiscript as submodule with CMake.
2021-06-08 23:00:43 -04:00
irabeson
b3ed4466f3 Add include directory to chai target.
This way, the path to the Chai's include directory is automagicaly
knowns by any CMake project using chai.
2021-06-07 11:35:52 -04:00
Bernd Amend
55ec76fd39 fix testcase "Test unicode matches C++" 2021-05-22 23:54:18 +02:00
Bernd Amend
4ec767bdc9 drop /std:c++latest and /std:c++17
Both are already set by cmake
2021-05-22 22:37:08 +02:00
Bernd Amend
59f64d8d82 set min required cmake version to 3.12
The already used functionallity already
requires a more recent cmake version.
Short summary why a never version is required:
  CMAKE_CXX_STANDARD requires >=3.1
  CMAKE_COMPILER_IS_GNUCC requires >3.7
  ENABLE_LTO can be simplified with >3.11 (3.13 VS)
2021-05-22 18:45:12 +02:00
Bernd Amend
b5d81613cf cmake suppress some clang compiler warnings 2021-05-22 18:45:12 +02:00
Bernd Amend
2c92e83afa drop CPP17_FLAG since cmake is already taking care of it 2021-05-22 18:45:12 +02:00
Bernd Amend
c580726020 Change the default value of USE_LIBCXX to FALSE
By default clang is already using the system
standard library. Therefore it is unexpected
that chaiscript always uses libcxx if clang
is used.
2021-05-22 18:45:12 +02:00
Bernd Amend
816cb5e8e2 unify formatting if ( -> if( 2021-05-22 18:45:12 +02:00
Guo Yunhe
cb1867dfd1
Update CMakeLists.txt 2019-11-09 12:01:50 +02:00
Guo Yunhe
0aa186abbe
Update CMakeLists.txt 2019-11-09 11:37:32 +02:00
Guo Yunhe
63951d06f2
Update CMakeLists.txt 2019-11-09 11:36:31 +02:00
Guo Yunhe
741893204a
Update CMakeLists.txt 2019-11-09 11:19:38 +02:00
Guo Yunhe
3e62181414
Use LIBDIR instead of lib
In Linux, the library should be installed to /usr/lib64 on 64bit machine
2019-11-09 11:10:45 +02:00
Alek Mosingiewicz
8d0fc74341 Ci fix after moving to cpp17 (#455)
* Update travis configuration.

* Update GCC_VER in travis configuration.

* Leave only Visual Studio 15 in Appveyor.

* Travis - remove GCC_VER 4.9.

* Travis - update clang-xcode.

* Travis - update clang compiler.

* Travis - downgrade clang compiler to 3.4.

* Revert "Travis - downgrade clang compiler to 3.4."

This reverts commit bd6698bccea9252dd00e8f28fb31334b0e3ea743.

* Travis - clang-6.0 package and compiler.

* Travis - remove (perhaps unnecessary) compiler option.

* Travis - restore clang compiler option.

* Update .travis.yml

* Another attempt to fix Travis config for clang.

* Another attempt to fix Travis config for clang.

* Compiler package for clang.

* Compiler package for clang.

* Xcode 10.

* Remove xcode from equation.

* Force install clang-6.0.

* Does it install these packages at all???.

* Does it install these packages at all???.

* Some appveyor fixes.

* Update CMakeLists.txt

Enforce C++17 standard

* Update .travis.yml

Restore xcode, block CLANG_VER.

* experimental/variant for Apple compilers.

* Remove OSX pipeline.

* Remove OSX pipeline.

* Attempt at fixing AppVeyor pipeline.

* Restore proper VS version in AppVeyor configuration.

* Revert preprocessor changes in json.hpp.
2018-10-20 08:50:08 -06:00
Jason Turner
63d1b16a7e Merge branch 'upgrade-cmake' into best_practices 2018-05-30 08:32:07 -06:00
Jason Turner
a880319db8 Merge branch 'develop' into best_practices 2018-05-30 08:30:29 -06:00
Jason Turner
c19705da5d Merge remote-tracking branch 'origin/c++17' into develop 2018-05-29 13:21:09 -06:00
Jason Turner
7d5dda244e Fix capitalization for case sensitive file systems 2018-05-26 10:36:04 -06:00
Jason Turner
73f177c73e Move to official catch cmake support, update catch
This is an effort to fix the issues on Appveyor with newer versions of
CMake. Will have to double check that it does not break Travis
2018-05-26 09:26:13 -06:00
Jason Turner
8bc7b9bfa1 Add notes for v6.1.0 release prep 2018-05-25 16:49:57 -06:00
Jason Turner
9c28f2f180 enhance building of fuzzer 2018-05-25 16:23:19 -06:00
Jason Turner
c902771f16 Use catch's test parser 2018-02-19 16:36:08 -07:00
Jason Turner
21b397c2cb Prep for moving to Catch2 official test parsing 2018-02-19 11:34:16 -07:00
Jason Turner
35af4edb30 Ignore some warnings from clang++ 2018-02-02 21:04:21 -07:00
Jason Turner
cb30a97832 Workaround for /permissive- on MSVC
Addresses #403
2018-01-19 13:01:05 -07:00
Jason Turner
eb93760f1b Fix building on MSVC in C++17 mode
Closes #403 #396 #395
2018-01-19 10:26:31 -07:00
Jason Turner
f8c8bad468 Merge remote-tracking branch 'origin/c++17' into best_practices 2017-12-16 11:52:07 -07:00
Jason Turner
6bfc130b73 Fix pull from develop, fix gcc warnings 2017-12-16 11:50:32 -07:00
Jason Turner
4a61d1e511 Enable C++latest for C++17 Visual Studio builds 2017-12-14 08:13:19 -07:00
Jason Turner
21500a1dcc Add source tracking for uninit memory sanitizer 2017-08-22 16:13:17 -06:00
Jason Turner
7986ea08b6 More work towards all noexcept, warning cleanups 2017-08-09 14:36:45 -06:00
Jason Turner
7f6f1d8a59 Fix clang warnings, fix misplaced noexcept 2017-07-31 16:12:16 -06:00
Jason Turner
0f74597139 Limit when coverage happens to only one build target 2017-07-20 15:08:53 -06:00
Jason Turner
700a620552 Add option to compile in C++17 mode for testing 2017-06-06 16:47:23 -06:00
Jason Turner
0f9d9cae4a Merge pull request #332 from ftk/develop
Ability to disable module loading support at compile time
2017-03-21 12:55:30 -07:00
Jason Turner
9847618cf3 Fix use after move during parsing
closes #337
2017-03-21 12:17:30 -07:00
Jason Turner
204faa82c1 Add failing static chaiscript test 2017-03-21 11:58:21 -07:00
ftk
d22c27b627 Added option to disable dynload in cmakelists.txt 2017-03-08 12:31:30 +03:00
Jason Turner
4e6e63ab5d Cleanups and split up into _basic options 2016-08-27 10:33:44 -06:00
Jason Turner
7561aa8828 Get all unit tests passing 2016-06-29 21:06:31 -06:00
Jason Turner
c57ea79d0d Update reference to prelude 2016-03-13 16:26:46 -06:00
Jason Turner
c71dd8051b Merge branch 'update_travis_toolchain' of github.com:ChaiScript/ChaiScript into update_travis_toolchain 2016-03-07 14:25:47 -07:00
Jason Turner
fe8f571f47 Add test_module to set of required modules during build 2016-03-07 07:16:57 -07:00
Jason Turner
947d7c2591 Merge branch 'develop' into update_travis_toolchain
Conflicts:
	.decent_ci-Windows.yaml
	CMakeLists.txt
	include/chaiscript/chaiscript_defines.hpp
2016-03-05 21:12:14 -07:00
Jason Turner
594958ea8b Address MSVC2013 specific warnings 2016-03-05 07:46:28 -07:00