Skip to content

Releases: compiler-research/CppInterOp

CppInterOp version 1.4.0

19 Oct 08:15
Compare
Choose a tag to compare

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

69 284 294

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

New Contributors

Full Changelog: v1.3.0...v1.4.0

CppInterOp version 1.3.0

09 May 09:51
713343a
Compare
Choose a tag to compare

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 and GetFunctionArgName 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

257

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

01 Mar 08:30
Compare
Choose a tag to compare

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

Full Changelog: v1.1.0...v1.2.0

CppInterOp version 1.1.0

11 Nov 10:09
Compare
Choose a tag to compare

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 or LLVM_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

14 Aug 11:03
Compare
Choose a tag to compare

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, and HasDefaultConstructor.

  • 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, and InstantiateTemplateFunctionFromString.

Just-in-Time Compilation

  • Facilities getting the compiled representation of the entities such as MakeFunctionCallable, InsertOrReplaceJitSymbol, Allocate, Deallocate, Construct, and Destruct.

Incremental C++

  • Facilities for setting up the infrastructure such as CreateInterpreter, GetInterpreter, AddSearchPath, and AddIncludePath.

  • Facilities for consuming incremental input such as Declare, Process and Evaluate.

Debugging

  • Facilities for debugging such as EnableDebugOutput, IsDebugOutputEnabled, and DumpScope.

Misc

  • Facilities for getting entities' string representation such as GetName, GetCompleteName, GetQualifiedName, GetQualifiedCompleteName, GetFunctionSignature, GetTypeAsString, ObjToString, and GetAllCppNames.

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)