CppSharp v0.11.0 Release Notes
🍎 The NuGet package now supports Linux and macOS as well
⬆️ Upgrade to .NET Core 3.1 and improve build system
👉 Make auto-compiling of C# work with .NET Core
➕ Adding extract interface pass
➕ Add a log for changes per release
🛠 Fixed alias of signed char cannot be marshaled
➕ Add missing quotes to support paths with spaces in build scripts
👍 Ignore the still unsupported dependent type names
Rewrite GenerateEnumFromMacros helper to also look into enum items.
🛠 Fix generation of overloads in NAPI by re-ordering final calculated states.
⚡️ Update expression evaluator code from latest upstream.
👌 Improve visiting options implementation in CodeGenerator.
Clean multiline function signatures in the AST converter.
🛠 Fix generation of text blocks using NewLineKind.IfNotEmpty.
Git ignore IDEA project folders.
🔄 Change XML comments to be tested at run-time
Generate valid C++ for pointers in template args
👍 Better detect invalid specialized functions
Simplify the marking of invalid functions
Generate valid C++ for protected constructors
Generate valid C++ for protected destructors
Only implement abstract classes in C++ for ctors/dtors
🛠 Fix test generation for QuickJS generator.
✂ Remove unused code in QuickJS module generator.
➕ Add enum support to QuickJS generator.
Marshaling correctness fix for enum and primitive types in NAPI.
Abstract marshaler into overridable method in NAPI sources.
Extract NAPI VarPrefix and ArgumentPrefix to base class.
➕ Add missing clang headers
🍎 Create a single nuget package that supports windows / linux / macos
🔨 Refactor QuickJS generator structure to follow NAPI patterns.
➕ Add initial QuickJS primitive type support and test suite.
✅ Ensure a tested specialization is really generated
✅ Place all output of tests in their own directories
👉 Use C++17 in all native projects
0️⃣ Disable getter/setter to property pass by default in non-managed backends.
🛠 Fix forward include collector to consider value class semantics in function returns.
Factor VarPrefix and ArgumentPrefix helpers into base marshaler.
Implement basic visiting behavior in some CodeGenerator overloads.
Normalize visiting overloads to be virtual.
Module.ExternalClassTemplateSpecializationsto avoid emitting the same specialization in multiple files
➕ Add initial Node and N-API testing infrastructure and tests.
⚡️ Big update to NAPI generator with initial support for basic examples.
➕ Add DFA/NFA state machine utility code.
Replace outdated Clang compiler flags such as
std=c++1zand replace it with
GenerateSequentialLayoutdefault value to
Simplify TU.FileRelativeDirectory by using Path.GetDirectoryName.
⚡️ Update driver to only generate system modules for C# generators.
➕ Add ILibrary.GenerateCode as a custom code generation callback.
⬆️ Upgrade .NET projects to C# 8.0.
👌 Improve generation of type printing declaration names for C language.
Rework constructor generation in C++ code generator.
📜 Setup include dirs on the module instead of parser options in the CLI.
👌 Improve error handling in CLI and avoid defaulting to a generator on unknown option..
➕ Add N-API generator support to the CLI.
Extract and re-use GetIncludePath across multiple generators.
🛠 Fix TU.FileRelativeDirectory to be more robust against some paths.
Fully resolve include dirs paths in driver option validation.
🛠 Fix ShouldGenerateClassNativeField to use NeedsBase instead of HasBase.
⚡️ Update Class.HasNonIgnoredBase to use the actual base class.
🛠 Fix rename pass not handling some declarations due to early return.
📦 Manage package versions centrally
Only upload artifacts from master branch
✅ Make unit tests independent of the generator
✅ Simplify code that regenerates test bindings
Only use premake for native projects and improve c# projects.
🚚 Move GeneratorTestFixture type to its own file.
🛠 Fix typo and move alignment offsets to cpp file
✅ Export or implement accessible functions in tests
Export symbols for indirectly accessible constructors
🏗 Publish artifacts for CI builds (#1533)
🛠 Fix importing/exporting redeclaration in symbols
🏗 CI: Add
Restorestep to make it easier to analyze build times
Don't warn repeatedly about an existing LLVM dir
Don't download LLVM if its destination exists
🛠 Fix the expression-generator after changed paths
🛠 Fix a regressive crash when generating parser bindings
✂ Remove redundant overrides from the generated C++/CLI
⚠ Disable the msvc warning about unexported template specializations
🛠 Fix naive version comparison
🛠 Fix GCC version detection
🏗 Move all LLVM files to /build/llvm
Ignore premake5 binaries
✂ Remove secondary Zstandard compression from LLVM packages
🏗 Show a message explaining how to build LLVM when a pre-built package is unavailable.
🛠 Fix wrong LLVM package name when GCC version is >= 10
➕ Add LLVM commands to build.sh
✅ Test using a specialization from a dependent module
➕ Add install_tools target to build.sh and fix LLVM CI.
🏗 Deprecate GCC 7 and add GCC 10 build for LLVM CI.
🚚 Move generated .vcxproj files back to their original place
➕ Add missing
-configurationoption to build.sh script
0️⃣ Replace Generate*.bat files with a single generate.sh which uses VS2019 by default
✂ Remove DownloadDeps.bat file
➕ Add build.sh and test.sh with execute permissions
🏁 Only search for MSVC toolchain in Windows
📦 Generate correct LLVM package name regardless of the current operating system
👍 Avoid using "action:vs* filter because there are better ones that are more specific (#1523)
Convert the visiting options to an enum
⚡️ Update CanCheckCodeGenInfo to check function types as well.
Check for a dependent expression before walking variable initializer.
🛠 Some Premake robustness fixes for Clang toolchain.
🖨 Use explicit native type printer kind in CLI headers code.
✅ Ignore testing the incorrect marshalling of parameters typed const& to primitives
👍 Don't check the unsupported operator= for symbols
➕ Add initial NAPI and JS generator.
➕ Add initial QuickJS generator.
➕ Add C++ generator support to the CLI.
✂ Remove artificial limitations for cross-generation in CLI.
Simplify target-specific message output code in CLI.
➕ Add a new option to set a prefix for generated files in CLI.
👌 Improve module naming heuristics and add an option for setting it explicitly.
👍 Implement C support as generator kind in CLI.
🔨 Refactor string.Format calls in CLI.
Implement Method.HasSameSignature for signature comparison.
Implement Method.ToString() to help with debugging.
🏗 A temporary hack to deal with a bug in MSVC v142 - VS 2019 build tools
Don't wrap trivial constructors and destructors
Ensure bindings are regenerated as needed without using DisableFastUpToDateCheck (#1511)
Continue implementation of C++ generator.
➕ Add pass to fix up pure C++ methods to C++ generator.
🖨 More robust C++ type printing of incomplete class declarations.
💾 Save existing parameter when doing C++ parameter type printing.
➕ Add initial C base generator.
Check if module exists before using it in C code generator.
More robust enum generation for C family languages in C code generator.
🛠 Fix C generator GenerateMethodSpecifier to support pure and const specifiers.
➕ Add set of generated declarations to CLITypeReferences.
➕ Add initial block visitor to GeneratorOutputPass.
Only add files to module if module is not null.
➕ Add per-declaration support for decl maps.
➕ Add BlockGenerator.NeedsNewLine helper property.
🛠 Fix class nested enums to be handled by the rename pass.
Document recently added GenerationOutputMode option.
➕ Add TypeQualifiersMode to Type and implement in C++ type printer.
➕ Add new VisitQualifiedType overload to visitors.
Set include path as weell as file path when creating a new TU.
🛠 Fix IsGeneratedOverride to take virtual methods into account.
➕ Add some helper class hierarchy methods.
🛠 Fix CppMarshal WriteClassInstance to deal with incomplete classes.
Rework Generator interface and add GenerationOutputMode option.
👌 Improve IsTypeComplete to be more robust.
👌 Improve ignored check for decls with explicit generation kinds.
Generate acessor methods for C targets in field to property pass..
Set the correct enum integer type in GenerateEnumFromMacros.
🛠 Fix ignored base checking in CheckIgnoredDecls.
📜 Be more strict when constructing a regex for parsing macros.
🖐 Handle enum items in rename pass.
🛠 Fix code to use BaseClass property instead of first base.
➕ Add initial implementation of declaration maps.
✂ Remove unsupported Visual Studio versions from generate options
📇 Rename GenerateProjects.bat to Generate.bat
➕ Add GenerateVS2019.bat shortcut similar to GenerateMake.bat
Prevent projects from picking up obj files that are generated sometimes (#1508)
🛠 Fix all of our warnings in the parser
🛠 Fix error in Tests.lua by requiring gmake2 module.
➕ Add a GCC 9 build to the LLVM CI build matrix.
🛠 Fix minor issue when invoking Premake without an action.
Compress LLVM archives using zstd.
🏗 Call MSBuild in x86 build with Win32 platform.
🏗 Pass the target architecture when building LLVM.
🏗 Publish artifacts after building LLVM.
🛠 Fix VS environment paths by setting global env variables.
🍎 Do not use LLD when building LLVM under macOS.
Generate C++ for constructors of abstract types
📦 Use NUnit3TestAdapter package (#1504)
➕ Add a build for LLVM to the CI
🏁 Use correct C# parser bindings for windows x64 (#1501)
Avoid installing NUnit if its already installed. (#1500)
✅ Generate code from tests where libraries appear
🛠 Fix generation of SequentialLayout structures (#1499)
⚡️ Update parser bindings. (#1497)
🛠 Fix CS0162 warning about unreachable code (#1492)
🛠 Fix CS0109 warnings about new keyword not being required. (#1493)
Enable Multi-processor Compilation (MSVC)
🛠 Fix C4273 warnings about inconsistent dll linkage (#1491)
🛠 Fix warnings about unnecessary using directives. (#1489)
🛠 Fix C4251 warnings (#1487)
Avoid generating an interface with a Dispose method if we already inherit from IDisposable. (#1486)
🛠 Fix finding of symbols for members of templates
⚠ Always ignore warnings about missing PDB files
⬇️ Reduce number of "download progress" messages. (#1482)
Mark variables with constant expressions as found
👉 Make the CPP ABI visible only to the STD symbols
Generate valid C++ for destructors of nested types
Always use the mangled names as reported by Clang
👷 Switch CI to GitHub Actions
Call the destructor instead of deleting the object in the generated symbols
📜 Regenerate the parser bindings with sequential layouts (#1479)
✂ Remove dummy variable and use discards instead available since C# 7.0 (#1478)
Fallback to LayoutKind.Explicit when a custom alignment is specified. (#1476)
Layout.GetSize()method as it's no longer relevant (#1474)
String.CSharpSignatureTypereturning incorrect type when the given type is a pointer or a reference. (#1473)
🔦 Expose if a variable is a constant expression
🛠 Fix the generation of sequential layouts
🏗 Create projects which always build generated code
Simplify the marshalling of returned pointers (#1470)
VTable: improve codegen & make it thread safe (#1469)
Create VTables class to cache delegates pointing to native virtual methods (#1468)
👌 Improve UTF32Marshaller performance (#1467)
👌 Improve generation of C# (#1466)
🐎 Reduce calls to ConcurrentDictionary to improve performance (#1464)
Ensure expression is a valid float constant before trying to append
🛠 Fix passing of CMake options to LLVM on Windows
⚡️ Update the kind of completed specializations (#1460)
🛠 Fix ambiguous conversion functions (#1458)
Prevent string destructor from being called twice when its passed by value (#1455)
✂ Remove unsupported calling convention usage (#1454)
🛠 Fix PInvokeStackImbalance when calling C++ methods (#1453)
Load symbols at startup to avoid very expensive ResolveSymbol calls everywhere (#1447)
🛠 Fix IntPtr array marshalling bug and move hard to read code to CppSharp.Runtime (#1446)
🛠 Fix string marshalling bug and move hard to read code to CppSharp.Runtime (#1445)
Add support for const char32_t* and fix const wchar_t* in linux / osx (#1444)
Copy arrays of primitive values using System.Buffers.MemoryCopy (#1440)
🛠 Fix marshalling for bool arrays (#1439)
🛠 Fix wrong [MarshalAs(UnmanagedType)] for strings (#1438)
✂ Remove call argument to fix broken build (#1436)
👍 Basic support for static constexpr variables (#1435)
➕ Add support for C++ character literals (u, U, L) (#1434)
⬆️ Upgrade premake in preparation for .NET Core (#1298)
0️⃣ Use C# 'default literal' to avoid using a type's name that may be renamed (#1432)
➕ Add missing
Variable.Typenull check. (#1430)
🛠 Fix generated constructor cant use
placement newwhen class overloads
🛠 Fix generation of VS projects under non-Windows platforms.
🛠 Fix wrong marshalling for static member arrays (#1428)
🛠 Fix wrong generated destructor
Ignore non-const data() method for std types like basic_string c++17
🛠 Fix crash when trying to read a CXXRecordDecl that doesn't have a definition (#1426)
✂ RemovePass is now generic.
➕ Added the ability to remove a built-in pass.
🛠 Fix anonymous member name colliding with enclosing type name (#1425)
👍 Allow the users to overwrite CppSharp type maps.
Find libraries even when given with no extensions
➕ Add an option for building with Visual Studio 2019
🛠 Fix GCC path detection for Ubuntu 20.
🚚 Move libraries to a new class for linking options
🛠 Fix memory leaks when using the driver
📜 Simplify ClangParser by making it static
Pack the lld headers as well
✅ Import native DLL-s (tests and parser) with MSVC
✅ Implement and export all methods in tests