Changelog
To get latest version of Scapix, use latest cmodule release in your CMake file.
2024-08-22 (cmodule v2.0.1):
- fix: standard header parsing when using msvc 17.10+ (classes declared in extern “C++")
- fix: skip unsupported struct types (partial specialization)
- refactor(js): add generated smart_ptr_constructor
- fix(js): skip allow_subclass for classes without accessible default constructor
- cmodule: update pybind11 to version 2.13.5
- cmodule: update fmt to version 11.0.2
- cmodule: update boost to version 1.86.0
2024-03-29 (cmodule v2.0.0):
Major new version with many changes:
- new repository: scapix-jni (split from scapix repository)
- new repository: scapix-java-api (split from scapix repository)
- new repository: scapix-core (split from scapix repository)
- C++20 required
- CMake 3.20 required
- Scapix Bridge: update clang to version 18.1.1
- Scapix JNI:
Scapix Link Java
renamed to Scapix JNI
- Scapix JNI: namespace changed from
scapix::link::java
to scapix::jni
- Scapix JNI: new_object() is now a global function: jni::new_object<java::lang::String>()
- cmodule: update pybind11 to version 2.12.0
- Remove
SCAPIX_META_STRING
macro (no longer necessary - with C++20 strings can be passed as template parameters)
- Scapix Java API: provide pre-generated C++ headers for all JDK and Android platforms
- Scapix Java API: dramatically increase compilation speed of generated headers (about 5 times!) by redesigning jni::ref to work with incomplete types
2024-03-05 (cmodule v1.0.46):
- fix(xcode): set correct LIBRARY_SEARCH_PATHS for SDKs using EFFECTIVE_PLATFORM_NAME (iOS, watchOS, tvOS) commit
2024-02-21 (cmodule v1.0.44):
- fix: skip unsupported struct types (union, anonymous, lambda, etc.) 55
- cmodule: update scapix-bin to version 2.0.16
- cmodule: update zlib to version 1.3.1
- cmodule: update fmt to version 10.2.1
- cmodule: update boost to version 1.84.0
2023-10-21 (cmodule v1.0.43):
- fix(xcode): add LIBRARY_SEARCH_PATHS, new XCode no longer finds libs outside of build tree commit
- fix(java): Passing null callbacks 54
- fix(cmake): Respect CMAKE_CXX_STANDARD, in addition to target_compile_features() 31
2023-08-19 (cmodule v1.0.42):
- feat(java-api): ref<> and object<> redesign
- feat(java-api): implement NativeException.getMessage()
- fix(java-api): workaround for bug in NewWeakGlobalRef in JDK 17+
- fix(java-api): array<>::new_() with generated headers
- fix(java-api): local_frame
- fix(java-api): get_string_region
- fix(cs): using clang with ms stdlib
- fix(emscripten): add define EMSCRIPTEN
- fix(cmake): rename cmake var SCAPIX_ROOT to fix warning in CMake 3.27
- cmodule: update scapix to version 1.0.36
- cmodule: update Boost to version 1.83.0
- cmodule: update pybind11 to version 2.11.1
- cmodule: update zstd to version 1.5.5
- cmodule: update zlib to version 1.3
- cmodule: update curl to version 8.2.1
- cmodule:
CMODULE_DISABLE_WARNINGS
- also disable CMake deprecation warnings for libraries built by cmodule
- cmodule: removed
CMODULE_SHARED_LIBS
option, use CMake standard BUILD_SHARED_LIBS
instead.
- cmodule: refactor code to prevent repeated configuration - improves CMake configuration speed about 30%
2023-06-21 (cmodule v1.0.41):
- fix(java): array/map/set types nested inside map/set 52
2023-06-19 (cmodule v1.0.40):
- fix(python): generate enum definitions 49
- add(python): preserve nested class/struct/enum hierarchy
- fix: ignore nested private class/struct/enum
2023-05-23 (cmodule v1.0.39):
- fix(java): workaround for VS 17.6 regression (remove object_base::base_class)
- fix(java): set_static_field() with object parameter
- fix(java): DetachCurrentThread() may be called after VM destruction
- fix(java): add compatibility with gcc 9 in C++20 mode
- fix(java): check exception after GetPrimitiveArrayElements() call
- refactor(java): minor changes
2023-04-02 (cmodule v1.0.38):
- update clang to version 16.0.0
- update pybind11 to version 2.10.4
- cmake: set <policy_max> version to 3.26 (removes cmake warnings)
- improve scapix generator include directories handling for better compatibility with various build environments
- msvc: improve forward compatibility with future MSVC versions
- java: improve error reporting when Java exception is raised
- android: add example of ProGuard rules required with ‘minifyEnabled true’
2022-08-31 (cmodule v1.0.36):
- fix (Java, Java Script, C#):
std::vector<bool>
conversion 43
- fix: including compiler built-in headers (like
<immintrin.h>
) with any version of clang/gcc 41
- fix: class with no bridged functions, not even a public default constructor 42
- fix (Java): memory leak when C++ exception is caught in Java under some circumstances
- fix: build sometimes fails when Scapix updated to new version without full rebuild
- update ZLIB to version 1.2.12
2022-05-16 (cmodule v1.0.35):
- feat: add SCAPIX_META_STRING C++20 implementation - Much faster compilation speed for code with many SCAPIX_META_STRING statements, when using C++20 mode.
- fix(java): update jdk-11.0.2 generated headers - Add support for C++20 reserved keywords.
- feat(java): SCAPIX_JAVA_AUTO_ATTACH_THREAD option - With SCAPIX_JAVA_AUTO_ATTACH_THREAD option, Scapix automatically calls AttachCurrentThread() if current thread is not attached to JNI Env.
2022-05-08 (cmodule v1.0.34):
- CMake: allow calls to
add_library(lib)
and scapix_bridge_headers(lib)
from different directories (CMake files).
2022-05-02 (cmodule v1.0.33):
- Java: add support for
std::function
type conversion from C++ to Java
- Java: add configuration option for custom JNI_OnLoad function -
SCAPIX_CUSTOM_JNI_ONLOAD
- Java: add configuration option for using application ClassLoader instead of FindClass JNI API -
SCAPIX_CACHE_CLASS_LOADER
- update clang to version 14.0.0
- update pybind11 to version 2.9.2
2021-11-18 (cmodule v1.0.32):
- add support for overriding C++ virtual functions in JavaScript (Python and JavaScript supported, other languages coming soon)
- improve detection of virtual functions eligible for overriding in bridged languages
- add support for targets using C++17 / C++20 / C++23 build mode
- improve detection of JDK on macOS
- fix: exception with C# bool field in struct returned from C++
- fix: build when SCAPIX_BRIDGE is not defined
2021-10-13 (cmodule v1.0.31):
- add support for overriding C++ virtual functions in Python (support for other languages coming soon)
- callbacks from C++ to ObjC/Swift now use @autoreleasepool to insure ObjC/Swift objects are released before returning to C++
- update clang to version 13.0.0
- update pybind11 to version 2.8.0
2021-05-10 (cmodule v1.0.29):
- add support for C++ structs
- update clang to version 12.0.0
- fix parser bug with self including C++ headers (usually used with circular header dependencies and forward class declarations)
2021-03-24 (cmodule v1.0.28):
- Apple platforms (macOS, iOS, tvOS, watchOS): add support for other CMake generators in addition to Xcode generator
2021-02-11 (cmodule v1.0.27):
- add support for Apple Silicon Mac (Darwin-arm64) as host platform
- add support for Apple watchOS and Apple tvOS
- update Emscripten support for compatibility with latest Emscripten SDK
2020-12-08:
- fix crash: passing shared_ptr with null value (Java, C#)
- fix bindings generation on macOS: use clang builtin headers only with msvc (to avoid conflicts with system clang builtin headers)
2020-11-13:
- update clang to version 11.0.0
- integrate clang builtin headers (fixes issue with new Visual Studio 16.8)
2020-09-25:
- simplify XCode integration (generated xcconfig file now contains all required settings)
- add new example for XCode integration: scapix_example_objc
2020-08-01:
- update clang to version 10.0.1
- macOS: rebuild scapix and scapix_java executables to target macOS 10.12+
- Java bridge: add support for multiple bridged C++ libs
- scapix_java: update list of C++ keywords to C++20
2020-07-01:
- C# bridge: use C++ namespaces, add support for multiple native libraries.
2020-05-03:
2020-05-03:
- Added enum types support (using underlying integer type).
2020-05-03:
- Added unsigned integer types support.
2019-10-05:
- Emscripten bridge: use native target headers when running Scapix generator instead of host headers.
2019-10-04:
- Scapix generator: update clang to version 9.0.0, don’t generate anything on compilation error, remove unnecessary trace message.
2019-10-01:
- Use native target headers when running Scapix generator instead of host headers (except Emscripten bridge).
2019-09-26:
- Switch to Cmake built-in iOS support, remove custom
ios.toolchain.cmake
file.
2019-07-26:
- Added support for JavaScript (Emscripten) language bridge.
2019-05-30:
2019-03-13:
2019-03-06: