Introduction
This document contains the release notes for the language interoperability library CppInterOp, release 1.5.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.5.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.
New Features
- Jupyter-Lite Integration: Added a Jupyter-Lite demo for xeus-cpp showcasing CppInterOp's capabilities in a browser-based environment. (#380)
- New C API: Introduced a libclang-style C API for better integration with CppInterOp's interpreter and scope manipulations. This includes new types CXScope and CXQualType. (#337)
Enhancements
-
Emscripten Build Improvements:
-
Documentation Updates:
-
CI/CD Optimization:
Bug Fixes
-
Build and Deployment:
-
General Stability:
-
Miscellaneous:
Maintenance
-
CI Updates:
-
Code Cleanup:
- Removed unused code and addressed minor issues for better maintainability. (#356)
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)
mcbarton (46)
Vipul Cariappa (6)
Anutosh Bhat (6)
Aaron Jomy (4)
Anurag Bhat (3)
Aaron Jomy (3)
Vassil Vassilev (2)
Gnimuc (2)
Atharv Dubey (1)
What's Changed
- Use
getExecutionEngine
to obtain the JIT for Cling > LLVM16 by @aaronj0 in #330 - Remove flag as no undefined symbols found while building for wasm by @anutosh491 in #335
- Remove continue-on-error Windows jobs ci by @mcbarton in #313
- Refactoring the API for multiple interpreter instance support by @Gnimuc in #338
- Change standard clang format to Cpp14 by @mcbarton in #340
- Remove Fortran files from .gitignore by @mcbarton in #341
- Revert back to Cpp11 clang-format by @mcbarton in #345
- Remove random coverage flags ci by @mcbarton in #343
- [cmake] Support non-standalone builds by @aaronj0 in #347
- Remove unxip ci osx by @mcbarton in #348
- Add support for an external interpreter by @aaronj0 in #346
- [ci] No longer run cppyy with clang-repl16 by @aaronj0 in #349
- [ci] Update pytest verbosity, drop OSX-clang16 cppyy jobs by @aaronj0 in #350
- resolve static constexpr class attribute by @Vipul-Cariappa in #351
- Spelling error in README.md by @DoobyDoPap in #354
- Update gtest used to v1.15.2 by @mcbarton in #344
- Remove ci warnings about linking of openssl brew by @mcbarton in #339
- refactor
Cpp::GetAllCppNames
by @Vipul-Cariappa in #355 - Update doc build instructions by @mcbarton in #342
- Reduce size of llvm cache by not build webassembly target for llvm<19 by @mcbarton in #357
- Stale issue and PR workflow by @mcbarton in #362
- Dont use conda emsdk by @mcbarton in #361
- Update labels for stale prs in stale-pr-and-issues.yml by @mcbarton in #366
- Add markdown linter workflow by @mcbarton in #363
- Remove unused code by @mcbarton in #356
- Update ReleaseNotes.md to reflect llvm 19 support by @mcbarton in #369
- Try to fix developer documentation deployment by @mcbarton in #372
- Update UsingCppInterOp.rst to not reference use of patches + small other updates by @mcbarton in #370
- Build target sphinx-cppinterop in ci docs job by @mcbarton in #371
- Add exemptions to stale-pr-and-issues.yml by @mcbarton in #368
- Revert changes to #372 by @mcbarton in #374
- Added pull_request_template.md by @mcbarton in #299
- Update ci.yml to use MacOS 15 for arm osx jobs by @mcbarton in #364
- Increase operations-per-run in stale-pr-and-issues.yml to 90 so more issues and PRs get processed by @mcbarton in #376
- Fix git clang workflow os to Ubuntu 22.04 by @mcbarton in #377
- Fix assert for external interpreter by @aaronj0 in #367
- fixes some variables in CppInterOpconfig.cmake.in file by @anutosh491 in #336
- Fixes read the docs by @mcbarton in #381
- Add Jupyter-Lite xeus-cpp demo to CppInterOp by @mcbarton in #380
- Fix deploy-pages.yml by @mcbarton in #382
- Update deploy-pages.yml to install xeus-cpp kernel by @mcbarton in #383
- Reduce cache size by @mcbarton in #386
- Fix cling llvm cache by @mcbarton in #387
- Add a libclang-style C API by @Gnimuc in #337
- Add issue templates by @mcbarton in #378
- Update
GetDatamembers
andGetUnderlyingScope
to work withUsingShadowDecl
by @Vipul-Cariappa in #385 - Fix llvm 17 build instructions Windows by @mcbarton in #389
- Remove dependency on zlib for the emscripten build by @anutosh491 in #373
- Improve emscripten llvm build in ci by @mcbarton in #384
- Use a Shared build for cppinterop while building for wasm by @anutosh491 in #375
- Remove environment-wasm-build.yml file as redundant by @anutosh491 in #391
- Update non wasm build instructions by @mcbarton in #393
- Make -DUSE_REPL=On default by @faze-geek in #360
- fix
GetVariableOffset
in cases of multi-level and multiple inheritance by @Vipul-Cariappa in #396 - Add Emscripten Build Instructions by @mcbarton in #390
- disable unnecessery clang-tidy checks in unittests by @Vipul-Cariappa in #399
- Documentation changes as REPL is set to ON by default by @faze-geek in #398
- Cppyy bug by @faze-geek in #401
- Separate out emscripten and non emscripten builds into separate workfows by @mcbarton in #402
- Remove duplicate badge which was not removed in previous PR. by @mcbarton in #403
- Separate out Unix and Windows non emscripten builds ci by @mcbarton in #404
- [ci] Shorten CI names by @vgvassilev in #406
- Fix issues with DLM tests by @aaronj0 in #388
- Separate out Ubuntu and MacOS builds ci by @mcbarton in #408
- Update Emscripten-build-instructions.md to match PR in xeus-cpp compiler-research/xeus-cpp#199 by @mcbarton in #410
- Fix xeus cpp build by @mcbarton in #409
- Fix copying xcpp.data for xeus-cpp-lite deploy page by @anutosh491 in #411
- Fix emscripten build ci and deployment by @mcbarton in #412
- Attempt to fix emscripten build by @mcbarton in #413
- Attempt to fix emscripten deployment by @mcbarton in #414
- Fixed shared library location xeus-cpp deployment by @mcbarton in #415
New Contributors
- @anutosh491 made their first contribution in #335
- @DoobyDoPap made their first contribution in #354
- @faze-geek made their first contribution in #360
Full Changelog: v1.4.0...v1.5.0