Releases: compiler-research/CppInterOp
CppInterOp version 1.4.0
Introduction
This document contains the release notes for the language interoperability library CppInterOp, release 1.4.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.4.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:
- llvm19
Introspection
- Add GetBinaryOperator interface
- Add GetIncludePaths interface
- Improve template instantiation logic
Incremental C++
- Improve the wasm infrastructure
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)
mcbarton (16)
Vipul Cariappa (8)
Aaron Jomy (8)
maximusron (4)
Vassil Vassilev (2)
Gnimuc (2)
What's Changed
- Run wasm build unconditionally in the ci by @mcbarton in #276
- Fix number of processors environment variable Windows by @mcbarton in #277
- Speed up running of Ubuntu jobs ci by @mcbarton in #271
- [ci] No longer do true for cppyy valgrind by @aaronj0 in #278
- Fix warning micromamba envirnoment setup ci by @mcbarton in #282
- Mark new valgrind xfail in unittests by @aaronj0 in #289
- [ci] Add token to upload codecov reports by @aaronj0 in #285
- Fix bug due to swiftlint osx jobs ci by @mcbarton in #291
- Remove hardcoding of CMAKE_PREFIX_PATH wasm build by @mcbarton in #292
- [tests] Conditionally skip valgrind xfails using llvm::sys by @aaronj0 in #281
- Treat all warnings as errors by @mcbarton in #288
- Fix unit test failure by @aaronj0 in #297
- Add Conda badges by @mcbarton in #293
- Fix wasm build ci by @mcbarton in #296
- Remove unneeded installation of dependencies for Ubuntu wasm jobs by @mcbarton in #300
- Add minor fixes for cross-platform support by @Gnimuc in #301
- Fix clang tidy review workflow by @mcbarton in #303
- Fix wasm jobs in ci due to changes in xeus-cpp requirements by @mcbarton in #307
- Update template function selection to use min required args by @aaronj0 in #309
- Add llvm 19 by @mcbarton in #312
- Implement
GetIncludePaths
by @Vipul-Cariappa in #311 - Remove Windows wasm llvm by @mcbarton in #316
- [docs] Update LLVM version by @aaronj0 in #317
- Support recent cling. by @vgvassilev in #318
- Add
GetBinaryOperator
by @Vipul-Cariappa in #319 - GetBinaryOperator returns vector of functions by @Vipul-Cariappa in #320
- Fix: resolve nested attributes of anonymous records in GetDatamembers by @Vipul-Cariappa in #321
- Resolve static attributes of records by @Vipul-Cariappa in #322
- Update
GetDataMember
to use an out param by @aaronj0 in #325 - Fix README typos by @aaronj0 in #327
- Add cppyy build isolation command in README by @aaronj0 in #328
- Improve template instantiation for
GetMethodTemplate
by @aaronj0 in #326 - using
getFirstDecl
forTranslationUnitDecl
for consistent pointers by @Vipul-Cariappa in #329 - Update README.md build instructions to be closer to ci build instructions by @mcbarton in #332
New Contributors
- @Gnimuc made their first contribution in #301
- @Vipul-Cariappa made their first contribution in #311
Full Changelog: v1.3.0...v1.4.0
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
CppInterOp version 1.2.0
Introduction
This document contains the release notes for the language interoperability library CppInterOp, release 1.2.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.2.0?
Some of the major new features and improvements to Clad are listed here. Generic improvements to Clad as a whole or to its underlying infrastructure are described first.
External Dependencies
- CppInterOp now works with:
- cling (based on patched clang13)
- clang-repl
- based on patched clang16
- clang17
Misc
- Add support for Windows
- Add support for Wasm
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)
fsfod (30)
mcbarton (10)
Vassil Vassilev (6)
Shreyas Atre (4)
Alexander Penev (2)
Saqib (1)
Aaron Jomy (1)
What's Changed
- Add missing dependencies for LLVM_LINK_LLVM_DYLIB by @vgvassilev in #166
- Move cmake config files by @alexander-penev in #167
- Fix Cmake package return info by @alexander-penev in #168
- Added fixes which caused issues building on Apple Silicon by @mcbarton in #170
- Update CppInterOpConfig.cmake.in to get correct library location by @mcbarton in #171
- Update macos and ubuntu ci to be more extensive by @mcbarton in #173
- Added Dpcumentation of cppyy Enhancements and how they relate to LibInterOp by @QuillPusher in #160
- [Tests] CppInterOp: Enable GetFunctionAddress test for macOS by @SAtacker in #176
- Update README.md build instructions by @mcbarton in #179
- [Symbol Names] Workaround: Mangle names for macOS by @SAtacker in #177
- [CI] Update CI to include a Windows build of CppInterOp + other general CI improvements by @mcbarton in #180
- Various windows fixes by @fsfod in #181
- Update README.md build instructions to fix typos and mistakes by @mcbarton in #185
- Specify the build configuration when building on Windows by @vgvassilev in #186
- [ci] Allow rerunning gh actions with debug logging. by @vgvassilev in #187
- Add xeus-clang-repl build to ci by @mcbarton in #189
- add CI job that runs full test suite by @maximusron in #190
- Increase Code Coverage by @SAtacker in #192
- Add ability to compile CppInterOp and tests on Windows with different compiler by @mcbarton in #195
- Windows test fixes by @fsfod in #196
- Remove redundant ci jobs by @mcbarton in #197
- [CI] Add wasm support to CI for osx and Linux by @mcbarton in #198
New Contributors
- @mcbarton made their first contribution in #170
- @SAtacker made their first contribution in #176
- @fsfod made their first contribution in #181
- @maximusron made their first contribution in #190
Full Changelog: v1.1.0...v1.2.0
CppInterOp version 1.1.0
Introduction
This document contains the release notes for the language interoperability library CppInterOp, release 1.1. 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.1?
Some of the major new features and improvements to Clad are listed here. Generic improvements to Clad as a whole or to its underlying infrastructure are described first.
External Dependencies
- Add llvm17 support.
- CppInterOp now works with cling (based on patched clang13) and clang-repl (based on clang16 with patches and clang17).
Incremental C++
- Support clang plugins.
Incremental CUDA
- Support incremental compilation of CUDA. Creating a CUDA-aware infrastructure can be done with
Cpp::CreateInterpreter({}, {"--cuda"});
Misc
- Improve discovery of clang/llvm based on
Clang_DIR
orLLVM_DIR
. - Implement facilities connect with
find_package(CppInterOp)
. - Add basic OSX support.
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)
Vassil Vassilev (25)
Smit1603 (6)
Alexander Penev (5)
Smit Shah (2)
Krishna-13-cyber (1)
CppInterOp version 1.0
Introduction
This document contains the release notes for the language interoperability library CppInterOp, release 1.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.0?
Some of the major new features and improvements to Clad are listed here. Generic improvements to Clad as a whole or to its underlying infrastructure are described first.
External Dependencies
- CppInterOp now works with cling (based on patched clang13) and clang-repl (based on patched clang16)
Introspection
-
Facilities enabling the is-a operation such as
IsAggregate
,IsNamespace
,IsClass
,IsComplete
,IsBuiltin
,IsTemplate
,IsTemplateSpecialization
,IsTypedefed
,IsAbstract
,IsEnumScope
,IsEnumConstant
,IsEnumType
,IsSmartPtrType
,IsVariable
,IsFunctionDeleted
,IsTemplatedFunction
,IsMethod
,IsPublicMethod
,IsProtectedMethod
,IsPrivateMethod
,IsConstructor
,IsDestructor
,IsStaticMethod
,IsVirtualMethod
,IsPublicVariable
,IsProtectedVariable
,IsPrivateVariable
,IsStaticVariable
,IsConstVariable
,IsRecordType
,IsPODType
,IsTypeDerivedFrom
,IsConstMethod
, andHasDefaultConstructor
. -
Facilities for obtaining the introspection representations of entities such as
GetIntegerTypeFromEnumScope
,GetIntegerTypeFromEnumType
,GetEnumConstants
,GetEnumConstantType
,GetEnumConstantValue
,GetSizeOfType
,SizeOf
,GetUsingNamespaces
,GetGlobalScope
,GetUnderlyingScope
,GetScope
,GetScopeFromCompleteName
,GetNamed
,GetParentScope
,GetScopeFromType
,GetBaseClassOffset
,GetClassMethods
,GetDefaultConstructor
,GetDestructor
,GetFunctionsUsingName
,GetFunctionReturnType
,GetFunctionNumArgs
,GetFunctionRequiredArgs
,GetFunctionArgType
,GetDatamembers
,LookupDatamember
,GetVariableType
,GetVariableOffset
,GetUnderlyingType
,GetCanonicalType
,GetType
,GetComplexType
,GetTypeFromScope
,InstantiateClassTemplate
, andInstantiateTemplateFunctionFromString
.
Just-in-Time Compilation
- Facilities getting the compiled representation of the entities such as
MakeFunctionCallable
,InsertOrReplaceJitSymbol
,Allocate
,Deallocate
,Construct
, andDestruct
.
Incremental C++
-
Facilities for setting up the infrastructure such as
CreateInterpreter
,GetInterpreter
,AddSearchPath
, andAddIncludePath
. -
Facilities for consuming incremental input such as
Declare
,Process
andEvaluate
.
Debugging
- Facilities for debugging such as
EnableDebugOutput
,IsDebugOutputEnabled
, andDumpScope
.
Misc
- Facilities for getting entities' string representation such as
GetName
,GetCompleteName
,GetQualifiedName
,GetQualifiedCompleteName
,GetFunctionSignature
,GetTypeAsString
,ObjToString
, andGetAllCppNames
.
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)
Baidyanath Kundu (141)
Vassil Vassilev (68)
Alexander Penev (16)
Smit1603 (8)
Krishna-13-cyber (4)
Vaibhav Thakkar (2)
QuillPusher (2)