@@ -22,34 +22,75 @@ Some of the major new features and improvements to CppInterOp are listed here.
2222Generic improvements to CppInterOp as a whole or to its underlying
2323infrastructure are described first.
2424
25+ This release focuses on improving runtime introspection, extending the JIT and
26+ incremental compilation capabilities, introducing a new API dispatch mechanism,
27+ and delivering numerous robustness and correctness fixes across the interpreter
28+ and code generation layers.
29+
2530## External Dependencies
2631
2732- CppInterOp now works with:
2833 - llvm21
2934
35+
3036## Introspection
3137
32- -
38+ - Adds ` GetDoxygenComment() ` to extract Doxygen documentation comments from
39+ C++ declarations.
40+ - Adds ` GetSpellingFromOperator ` and ` GetOperatorFromSpelling ` helpers.
41+ - Adds ` GetPointerType ` and improved ` GetReferencedType ` with rvalue support.
42+ - Adds ` GetReferenceValueKind ` , replacing ` IsLValueReferenceType ` and
43+ ` IsRValueReferenceType ` .
44+ - Adds type qualifier utilities: ` HasTypeQualifier ` , ` RemoveTypeQualifier ` , and
45+ ` AddTypeQualifier ` .
46+ - Improved type printing and reflection:
47+ - ` GetCompleteName ` now includes template parameters.
48+ - Fixed handling of default arguments and return types in templated functions.
49+ - Adds ` IsLambdaClass ` and multiple fixes for templated and forward-declared
50+ entities.
51+ - Improves correctness of variable offsets, base class introspection, and method
52+ lookup.
3353
34- ## Just-in-Time Compilation
3554
36- -
55+ ## Just-in-Time Compilation
3756
38- ## Incremental C++
57+ - Adds full support for --Out-of-Process JIT--, including documentation and test
58+ infrastructure.
59+ - Improves clang-repl integration and symbol handling across LLVM 18–21.
60+ - Adds ` DefineAbsoluteSymbol ` to define injected symbols in the JIT.
61+ - Major improvements to ` JitCall ` and runtime code generation:
62+ - Constructor call support and improved handling of arrays in
63+ construct/destruct APIs.
64+ - Support for move semantics (e.g. ` std::unique_ptr ` ).
65+ - Fixes for lambdas as return types, duplicate symbols, enums vs. functions,
66+ and namespace conflicts.
67+ - Improves diagnostics in ` JitCall::AreArgumentsValid ` .
3968
40- -
4169
42- ## Misc
70+ ## Incremental C++
4371
44- -
72+ - Adds Cling transaction guards to prevent crashes in ` GetNamed ` and
73+ ` GetAllCppNames ` .
74+ - Improves interpreter lifetime management and ownership semantics.
75+ - Stabilizes successive ` Declare ` calls and template instantiation workflows.
76+ - Improves integration with LLJIT and incremental execution.
4577
46- ## Fixed Bugs
4778
48- [ XXX ] ( https://github.com/compiler-research/CppInterOp/issues/XXX )
79+ ## Misc
4980
50- <!-- -Get release bugs
51- git log v1.7.0..main | grep 'Fixes|Closes'
52- --->
81+ - Introduces a new __ API Dispatch mechanism__ :
82+ - Allows using CppInterOp without direct linking via runtime symbol dispatch
83+ (` CppGetProcAddress ` ).
84+ - Prevents LLVM/Clang symbol leakage into client applications.
85+ - Enables safe dynamic loading of CppInterOp alongside other LLVM-based
86+ libraries.
87+ - Current limitations:
88+ - Overloaded public APIs are not supported.
89+ - API must be initialized via ` LoadDispatchAPI ` before use.
90+ - Default arguments are not available in dispatched calls.
91+ - Improves Emscripten support, CI pipelines, and deployment examples.
92+ - Reorganizes public headers (` CppInterOp.h ` ) into a dedicated include path.
93+ - Numerous improvements to CMake configuration, CI workflows, and documentation.
5394
5495## Special Kudos
5596
@@ -60,7 +101,15 @@ FirstName LastName (#commits)
60101
61102A B (N)
62103
63- <!-- -Find contributor list for this release
64- git log --pretty=format:"%an" v1.7.0...main | sort | uniq -c | sort -rn |\
65- sed -E 's,^ *([0-9]+) (.*)$,\2 \(\1\),'
66- --->
104+ Matthew Barton (61; CI, Emscripten & deployment work, build and workflow maintenance)
105+ Aaron Jomy (36; API dispatch, JIT / JitCall improvements, extensive tests and docs)
106+ Vipul Cariappa (34; template & codegen fixes, type-reflection and interpreter robustness)
107+ Vassil Vassilev (12; interpreter lifecycle, test coverage, refactorings and cleanup)
108+ Abhinav Kumar (2; out-of-process JIT implementation and related integration)
109+ Aditya Pandey (2; GetDoxygenComment API and README/build corrections)
110+ Vincenzo Eduardo Padulano (1; target-existence checks and robustness fixes)
111+ Stephan Hageboeck (1; test/build adjustments and gtest compatibility)
112+ Mattias Ellert (1; platform-correctness tests for struct sizing)
113+ Jonas Hahnfeld (1; conditional LLVM option handling / build integration)
114+ Anutosh Bhat (1; compatibility fix for CLANG_VERSION_MAJOR > 21)
115+
0 commit comments