|
| 1 | +Introduction |
| 2 | +============ |
| 3 | + |
| 4 | +This document contains the release notes for the language interoperability |
| 5 | +library CppInterOp, release 1.0. CppInterOp is built on top of |
| 6 | +[Clang](http://clang.llvm.org) and [LLVM](http://llvm.org>) compiler |
| 7 | +infrastructure. Here we describe the status of CppInterOp in some detail, |
| 8 | +including major improvements from the previous release and new feature work. |
| 9 | +Note that if you are reading this file from a git checkout, this document |
| 10 | +applies to the *next* release, not the current one. |
| 11 | + |
| 12 | +CppInterOp exposes API from Clang and LLVM in a backward compatibe way. The API |
| 13 | +support downstream tools that utilize interactive C++ by using the compiler as |
| 14 | +a service. That is, embed Clang and LLVM as a libraries in their codebases. The |
| 15 | +API are designed to be minimalistic and aid non-trivial tasks such as language |
| 16 | +interoperability on the fly. In such scenarios CppInterOp can be used to provide |
| 17 | +the necessary introspection information to the other side helping the language |
| 18 | +cross talk. |
| 19 | + |
| 20 | + |
| 21 | +What's New in CppInterOp 1.0? |
| 22 | +============================= |
| 23 | + |
| 24 | +Some of the major new features and improvements to Clad are listed here. Generic |
| 25 | +improvements to Clad as a whole or to its underlying infrastructure are |
| 26 | +described first. |
| 27 | + |
| 28 | +External Dependencies |
| 29 | +--------------------- |
| 30 | + |
| 31 | +* CppInterOp now works with cling (based on patched clang13) and clang-repl |
| 32 | + (based on patched clang16) |
| 33 | + |
| 34 | + |
| 35 | +Introspection |
| 36 | +------------- |
| 37 | + |
| 38 | +* Facilities enabling the is-a operation such as `IsAggregate`, `IsNamespace`, |
| 39 | + `IsClass`, `IsComplete`, `IsBuiltin`, `IsTemplate`, |
| 40 | + `IsTemplateSpecialization`, `IsTypedefed`, `IsAbstract`, `IsEnumScope`, |
| 41 | + `IsEnumConstant`, `IsEnumType`, `IsSmartPtrType`, `IsVariable`, |
| 42 | + `IsFunctionDeleted`, `IsTemplatedFunction`, `IsMethod`, `IsPublicMethod`, |
| 43 | + `IsProtectedMethod`, `IsPrivateMethod`, `IsConstructor`, `IsDestructor`, |
| 44 | + `IsStaticMethod`, `IsVirtualMethod`, `IsPublicVariable`, |
| 45 | + `IsProtectedVariable`, `IsPrivateVariable`, `IsStaticVariable`, |
| 46 | + `IsConstVariable`, `IsRecordType`, `IsPODType`, `IsTypeDerivedFrom`, |
| 47 | + `IsConstMethod`, and `HasDefaultConstructor`. |
| 48 | + |
| 49 | +* Facilities for obtaining the introspection representations of entities such as |
| 50 | + `GetIntegerTypeFromEnumScope`, `GetIntegerTypeFromEnumType`, |
| 51 | + `GetEnumConstants`, `GetEnumConstantType`, `GetEnumConstantValue`, |
| 52 | + `GetSizeOfType`, `SizeOf`, `GetUsingNamespaces`, `GetGlobalScope`, |
| 53 | + `GetUnderlyingScope`, `GetScope`, `GetScopeFromCompleteName`, `GetNamed`, |
| 54 | + `GetParentScope`, `GetScopeFromType`, `GetBaseClassOffset`, `GetClassMethods`, |
| 55 | + `GetDefaultConstructor`, `GetDestructor`, `GetFunctionsUsingName`, |
| 56 | + `GetFunctionReturnType`, `GetFunctionNumArgs`, `GetFunctionRequiredArgs`, |
| 57 | + `GetFunctionArgType`, `GetDatamembers`, `LookupDatamember`, `GetVariableType`, |
| 58 | + `GetVariableOffset`, `GetUnderlyingType`, `GetCanonicalType`, `GetType`, |
| 59 | + `GetComplexType`, `GetTypeFromScope`, `InstantiateClassTemplate`, and |
| 60 | + `InstantiateTemplateFunctionFromString`. |
| 61 | + |
| 62 | + |
| 63 | +Just-in-Time Compilation |
| 64 | +------------------------ |
| 65 | + |
| 66 | +* Facilities getting the compiled representation of the entities such as |
| 67 | + `MakeFunctionCallable`, `InsertOrReplaceJitSymbol`, `Allocate`, `Deallocate`, |
| 68 | + `Construct`, and `Destruct`. |
| 69 | + |
| 70 | + |
| 71 | +Incremental C++ |
| 72 | +--------------- |
| 73 | + |
| 74 | +* Facilities for setting up the intrastructure such as `CreateInterpreter`, |
| 75 | + `GetInterpreter`, `AddSearchPath`, and `AddIncludePath`. |
| 76 | + |
| 77 | +* Facilities for consuming incremental input such as `Declare`, `Process` and |
| 78 | + `Evaluate`. |
| 79 | + |
| 80 | + |
| 81 | +Debugging |
| 82 | +--------- |
| 83 | + |
| 84 | +* Facilities for debugging such as `EnableDebugOutput`, `IsDebugOutputEnabled`, |
| 85 | + and `DumpScope`. |
| 86 | + |
| 87 | + |
| 88 | +Misc |
| 89 | +---- |
| 90 | + |
| 91 | +* Facilities for getting entities' string representation such as `GetName`, |
| 92 | + `GetCompleteName`, `GetQualifiedName`, `GetQualifiedCompleteName`, |
| 93 | + `GetFunctionSignature`, `GetTypeAsString`, `ObjToString`, and |
| 94 | + `GetAllCppNames`. |
| 95 | + |
| 96 | + |
| 97 | +Special Kudos |
| 98 | +============= |
| 99 | + |
| 100 | +This release wouldn't have happened without the efforts of our contributors, |
| 101 | +listed in the form of Firstname Lastname (#contributions): |
| 102 | + |
| 103 | +FirstName LastName (#commits) |
| 104 | + |
| 105 | +A B (N) |
| 106 | + |
| 107 | +Baidyanath Kundu (141) |
| 108 | +Vassil Vassilev (68) |
| 109 | +Alexander Penev (16) |
| 110 | +Smit1603 (8) |
| 111 | +Krishna-13-cyber (4) |
| 112 | +Vaibhav Thakkar (2) |
| 113 | +QuillPusher (2) |
0 commit comments