CppInterOp version 1.3.0
Introduction
This document contains the release notes for the language interoperability library CppInterOp, release 1.3.0. CppInterOp is built on top of Clang and LLVM compiler infrastructure. Here we describe the status of CppInterOp in some detail, including major improvements from the previous release and new feature work. Note that if you are reading this file from a git checkout, this document applies to the next release, not the current one.
CppInterOp exposes API from Clang and LLVM in a backward compatibe way. The API support downstream tools that utilize interactive C++ by using the compiler as a service. That is, embed Clang and LLVM as a libraries in their codebases. The API are designed to be minimalistic and aid non-trivial tasks such as language interoperability on the fly. In such scenarios CppInterOp can be used to provide the necessary introspection information to the other side helping the language cross talk.
What's New in CppInterOp 1.3.0?
Some of the major new features and improvements to CppInterOp are listed here. Generic improvements to CppInterOp as a whole or to its underlying infrastructure are described first.
External Dependencies
- CppInterOp now works with:
- cling (based on patched clang16)
- clang-repl
- based on patched clang16
- clang17
- clang18
Introspection
GetFunctionArgDefault
andGetFunctionArgName
now consider template
functions- Consolidate the template instantiation logic.
Incremental C++
- Add Code Completion API
- Improved Windows support
- Add API for detection of resource and include directories from the system
compiler
Misc
- Improved installation of the CppInterOp folder.
Fixed Bugs
Special Kudos
This release wouldn't have happened without the efforts of our contributors, listed in the form of Firstname Lastname (#contributions):
FirstName LastName (#commits)
A B (N)
Aaron Jomy (19)
mcbarton (17)
Vassil Vassilev (10)
Alexander Penev (4)
What's Changed
- [cmake] Work around a bug in the llvm config. by @vgvassilev in #200
- Fix Cmake install folder by @alexander-penev in #201
- Add llvm 18 support by @mcbarton in #202
- [cmake] Modify cmake config file to set correct suffix and prefix for library by @mcbarton in #203
- Implement detection of resource and include dirs. by @vgvassilev in #204
- [cmake] Set the language to C++. by @vgvassilev in #209
- [cmake] Clean up and improve the CppInterOp config for Windows. by @vgvassilev in #208
- Export symbols in Windows DLL by @alexander-penev in #213
- Add LLVM version info to CPPINTEROP_LLVM_* variables by @alexander-penev in #214
- [ci]Update clang-format job by @maximusron in #216
- Consolidate the template instantiation logic. by @vgvassilev in #128
- Fix usage of InstantiateTemplate by @maximusron in #217
- Update GetFunctionNumArgs API for template functions by @maximusron in #219
- Update GetFunctionReturnType API for template functions by @maximusron in #218
- Update GetFunctionRequiredArgs for template functions by @maximusron in #220
- Make running emscripten_wasm dependent on sucessfull run of build in ci by @mcbarton in #223
- Update GetFunctionArgDefault for template functions by @maximusron in #225
- Update GetFunctionArgName API for template functions by @maximusron in #224
- [ci] Reduce bot lag by building cache first by @mcbarton in #227
- Fix issue with wasm build cache missing by @mcbarton in #228
- Enable template features by @maximusron in #215
- Tests for static GetClassDecls by @maximusron in #230
- [ci] Add boost and eigen for Cppyy test suite by @maximusron in #231
- Remove osx x86 jobs from ci by @mcbarton in #235
- [ci] Cppyy tests - fix pytest failing by @maximusron in #233
- Reduce warnings ci by @mcbarton in #236
- Reduce cache size by @mcbarton in #229
- [Interpreter] Forward declare input to process so it's registered in JIT by @maximusron in #238
- [ci] Report failure in cppyy tests except runxfail/valgrind by @maximusron in #239
- [ci] Revert pytest-xdist worker restart for cppyy tests by @maximusron in #241
- Update codecov-action to v4 (node 16 to node 20 migration) by @mcbarton in #250
- [clang-tidy] Add missing commas in the config. by @vgvassilev in #247
- [ci] Skip valgrind on OS X, capture error on full test run by @maximusron in #248
- Reduce windows cache size + add options needed for wasm build of CppInterOp on Windows to llvm cache by @mcbarton in #249
- [ci] Show error on valgrind by @maximusron in #252
- Add Code Completion by @alexander-penev in #246
- Add back osx x86 jobs to ci by @mcbarton in #256
- ForceDeclarationOfImplicitMembers might deserialize by @vgvassilev in #259
- Add xeus-cpp build to ci + remove xeus-clang-repl builds from ci by @mcbarton in #258
- [ci] Update OS X and clang 16 exitcodes by @maximusron in #253
- [ci] Run the cppyy tests on osx even though there is no valgrind. by @vgvassilev in #261
- No longer use true for OS X pytest by @maximusron in #263
- Reduce warnings and errors ci by @mcbarton in #264
- Speed up build_cache process when not needing to build cache by @mcbarton in #270
- [ci] Fixes for crashes on workflow by @maximusron in #268
- Update clang format and clang tidy by @mcbarton in #269
- Change to python 3.11 by @mcbarton in #267
- Fix clang tidy + remove warnings when building by @mcbarton in #272
- Fix typo in release notes by @maximusron in #275
Full Changelog: v1.2.0...v1.3.0