All Versions
25
Latest Version
Avg Release Cycle
63 days
Latest Release
819 days ago

Changelog History
Page 1

  • v1.0.1 Changes

    December 30, 2021
    • Generate valid C# for independent specialisations with nested fields

    • Don't revisit parameters when checking to ignore

    • Generate valid C# for templates with external specializations only

    • โฌ‡๏ธ Drop CI with windows 32-bit because of premake

    • Generate valid C# for nested in external specializations

    • Generate valid C# for independent external specializations

    • Generate valid C# for nested external specializations

    • Generate valid C# for unresolvable base templates

    • Generate valid C# for classes with dependent fields nested in templates with independent fields

    • Generate valid C++ for redeclaration of friends

    • Generate valid C++ for specialisations with void

    • Generate valid C# for pure functions returning or taking dependent pointers

    • ๐Ÿ›  Fix a crash when processing templates with variable arguments (#1641)

    • Report errors when linking of generated C++ fails

    • Ensure complete classes in class templates

    • ๐Ÿ–จ Print C++ for some kinds of non-type template parameters

    • ๐Ÿ‘ Always ignore functions returning unsupported specializations

    • Generate valid C# for unions in templates with non-type args

    • ๐Ÿ›  Fix a test for the new msvc in vs 2022

    • Match names of parameters in templates to their specializations

    • โ†ช Work around adding an STD name-space to a custom header

    • Generate valid C# for fields with types system template specializations

    • Generate valid C# for variables which use float

    • Generate valid C# for variables with > 1 arg

    • Generate valid C++ for variadic functions

    • ๐Ÿ›  Fix C# layouts for classes with nameless unions

    • Generate valid C# for copy ctors with extra args

    • Generate valid C# for destructors of templates with dependent fields

    • ๐Ÿšš Don't generate or move ignored specializations

    • ๐Ÿ“‡ Rename templates only used through aliases

    • Generate valid C# for internal fields of type external specialization

    • Generate valid C# for static object-typed fields

    • Trim specializations only used in ignored types

    • Instantiate specialized classes nested in templates

    • Generate valid C++ for protected inline functions

    • Generate valid C++ for parameters by value

    • Generate valid C++ for conversion operators in name-spaced classes

  • v1.0.0 Changes

    October 12, 2021
    • โž• Add built-in compilation of extra symbols

    • ๐Ÿ›  Fix naming for function pointers with strings

    • ๐ŸŒ Ignore external (no module) translation units

    • ๐Ÿ›  Fix instantiation of specializations not to crash

    • 0๏ธโƒฃ Generate valid C# for default args: typedefed refs to enums assigned empty ctors

    • Extend finding of functions to also get overloads

    • 0๏ธโƒฃ Ensure valid C# for default args assigned secondary bases

    • Generate valid C++ for protected ctors of pure classes

    • Generate valid C# for constants in namespaceless modules

    • Generate valid C# for types nested in external typedef-ed specializations

    • Generate valid C# with explicit external specializations

    • ๐Ÿ›  Fix templated indexers returning objects

    • 0๏ธโƒฃ Generate valid C# for specializations in default args

    • Generate valid C++ for pure implemented dtors

    • ๐Ÿ†“ Free returned by value instances, not object ones

    • Generate valid C# for forwarded specializations

    • 0๏ธโƒฃ Bind default constructors with dependent pointers

    • Generate valid C# for setters returning Booleans

    • Place returns as needed without an extra block

    • 0๏ธโƒฃ Generate valid C# for default params in specialisations

    • Resolve overloads with typedef-ed mapped params

    • Generate C++ deconflicted with system functions (#1626)

    • ๐Ÿ–จ Don't print tags for nameless and typedef classes

    • ๐Ÿ›  Fix C4099 (class as struct) in generated C++/CLI

    • Bind the tag kind (struct, class, enum) of a type

    • ๐Ÿ“œ Regenerate the parser bindings

    • โœ‚ Delete the C++ copy when returning by value (#1623)

    • โœ‚ Delete the longer needed patching of msvc headers

    • Don't evaluate dependent variables

    • โœ‚ Delete the longer needed patching of msvc headers

    • โšก๏ธ Update LLVM to the latest version

    • ๐Ÿ›  Fix for "vector subscript out of range" exception (#1621)

    • ๐Ÿ›  Fix incorrect dtor call for non-owned instances (#1615)

    • ๐Ÿ›  Fix regressed marshalling of lists in C++/CLI

    • ๐Ÿ›  Fix for Visual Studio 2019 16.10 (#1614)

    • Generate valid C# for public fields of typedef-ed primitive pointer

    • Resolve names matching those of system functions

    • โž• Add a mechanism to selectively initialize allocated unmanaged memory in the default constructor.

    • ๐Ÿ‘ Much improved support for marshaling const char* to string

    • โœจ Enhanced ExpressionEvaluator to return implicitly typed uint, long, and ulong values from EvaluateNumber when there is no literal type suffix applied to a numeric expression string.

    • ๐Ÿ‘ท Attempt to resolve a GitHub CI Actions isue: CI is currently failing because restore can't find NUnit and friends. The error message and google search indicate that GitHub Actions is only looking in the "Microsoft Visual Studio Offline Packages" cache. Add a nuget.config file to in an attempt to tell GitHub Actions to query nuget.org in addition to the offline cache.

    • bug fix: When generating the get accessor for a field composed of an embedded array of structs use __GetOrCreateInstance to initialize the managed array wrapper rather than __CreateInstance so that __Instance holds a pointer to the memory allocated for the array in the outer struct rather than an independent copy of that memory.

    • Repaired broken alignment padding generation for structs with embedded arrays of structs

    • Generate comments for field

    • ๐Ÿ›  Fix the regressed generation of C++ for variables

    • โž• Add work-in-progress TypeScript interface bindings generator.

    • โž• Add MarkEventsWithUniqueIdPass pass for global event handling.

    • Maintain DeclarationsList integrity by clearing item offsets.

    • โž• Add CppSharp VS Code workspace.

    • Implement two-step initialization for QuickJS.

    • โž• Add QuickJS runtime project and initial features.

    • ๐Ÿ‘Œ Improve support for default arguments in NAPI generator.

    • โž• Add support for generation of default argument expressions in C generator.

    • โž• Add experimental GenerateExternalDataFields option and supporting code.

    • โž• Add C code generator GenerateClassEvents for common event handling.

    • ๐Ÿ–จ Introduce a scope kind stack for type printers.

    • Rework C enum generation for more accurate handling.

    • โž• Add convenience constructor to ArrayType.

    • Create target directory when generating files.

    • โž• Add new pass to convert C++ FastDelegate types into CppSharp delegates.

  • v0.11.1 Changes

    • โช Restore backwards compatibility with .NET Framework

    • โœ‚ Remove looking MSVC headers up with COM

    • Look for the Clang headers along the main entry (#1573)

  • v0.11.0 Changes

    • ๐ŸŽ 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.

    • Flush Module.ExternalClassTemplateSpecializations to 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++1z and replace it with std=c++17

    • ๐Ÿ”„ Change GenerateSequentialLayout default value to true

    • 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

    • โž• Add LanguageVersion.CPP20 support

    • 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 Restore step 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 -configuration option 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)

    • โœ‚ Remove Layout.GetSize() method as it's no longer relevant (#1474)

    • ๐Ÿ›  Fix String.CSharpSignatureType returning 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 f suffix (#1465)

    • ๐Ÿ›  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.Type null check. (#1430)

    • ๐Ÿ›  Fix generated constructor cant use placement new when class overloads operator new (#1431)

    • ๐Ÿ›  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

  • v0.10.5 Changes

    June 27, 2020
    • Don't add ABI-specific parameters when wrapping C

    • Prioritize public non-field properties when resolving naming conflicts

    • ๐Ÿ›  Fix patching of virtual tables for MSVC with RTTI

    • ๐Ÿ†“ Free the memory of the patched v-tables

    • ๐Ÿ›  Fix parsing of member pointers with MSVC

    • Generate valid C# for constructors taking const&

    • Generate valid C# for returned function pointers

    • ๐Ÿ”ฆ Expose returned values of non-void setters

    • Ensure enumerations lack conflicts when renamed

    • ๐Ÿ›  Fix generation for fields of type const reference

  • v0.10.4 Changes

    May 23, 2020
    • ๐ŸŽ Simplify the required headers for macOS bindings

    • ๐Ÿ— Option to allow caller to specify it does not want unchanged output files to be modified. This supports incremental build in VS. (#1373) - Ali Alamiri [email protected]

    • CreateInstance factory overload to pass flag informing wrapper if it should own the native pointer passed to it. - Ali Alamiri [email protected]

    • ๐Ÿง force bash use to avoid ./premake5-linux: 3: ./premake5-linux: Bad substitution error if other default shell in the system - Lorenzo Delana [email protected]

    • Made the original virtual tables static too

    • Pass native pointers to bases in the generated C#

    • ๐Ÿ–จ Check type maps when printing C++ for pointers

    • Do not add type alias templates twice to the AST

    • ๐Ÿ›  Fix all leaks of memory in the old expressions

    • โž• Add template functions to their context

    • ๐Ÿ›  Fix leaking memory by removing a useless assignment

    • ๐Ÿ›  Fix leaking the memory of an entire Clang AST

    • ๐Ÿ–จ Ignore type maps when printing C++ for symbols

    • ๐Ÿ–จ Implement more accurate managed type printing in C++ type printer.

    • ๐Ÿ–จ Use a native type printer context when looking for type maps in CSharpSourcesExtensions.DisableTypeMap.

    • ๐Ÿ–จ Use explicit type printer when printing types in C# GenerateMethodSpecifier.

    • ๐Ÿ”จ Refactor CodeGenerator.GenerateMethodSpecifier to allow explicit specifier kind.

    • Do not check declaration access for explicitly generated declarations.

    • ๐Ÿ›  Fix TranslationUnit.FileRelativeDirectory to be more robust against null include paths.

    • ๐Ÿ›  Fix formatting to of Declaration.GenerationKind to ease debugging.

    • Ignore implicitly deleted copy constructor methods.

    • Correctly marshal constant arrays in C++/CLI (#1346)

    • Marshal pointer to primitive typedefs in C++/CLI (#1355) - Ali Alamiri [email protected]

    • ๐Ÿ›  Fix a regression when renaming classes

    • ๐Ÿ›  Fix naming conflicts with nested types and members

    • publish the clang lib folder - Ali Alamiri [email protected]

    • ๐Ÿ“œ Implement basic support for parsing function-like macros.

    • ๐ŸŒ Implement TranslationUnit.ToString() to help with debugging.

    • โž• Add debug option and flags to the Premake build and compile scripts.

    • Generate valid C# for parameters typedef-ed to mapped types

    • โšก๏ธ Update the version of Mono used for builds (CI)

    • ๐Ÿ›  Fix the regressed C# marshalling of char*

    • ๐Ÿ– Handle pointer to pointer param (#1343) - Ali Alamiri [email protected]

    • ๐Ÿ– Handle returned pointers to std::vector in C++/CLI - Ali Alamiri [email protected]

    • Implement abstract templates to call virtuals

    • ๐Ÿ–จ Correctly align printed information for debugging

    • Set the render kind of inline command comments

    • ๐Ÿ›  Fix all memory leaks in tests

    • Generate by ref parameters of type a pointer to enum

    • ๐Ÿ‘‰ Use UnsupportedType description for type name instead of empty string (#1339) - Ali Alamiri [email protected]

  • v0.10.3 Changes

    April 09, 2020
    • Ensure complete template specializations in AST

    • โž• Add an option and checking for generation of deprecated declarations

    • ๐Ÿ—„ Implement parsing and AST processing of C++ deprecated attributes

    • ๐Ÿ–จ Make sure we use a native type printer for symbols code generation

    • Git ignore new include folders for cross generation

    • ๐Ÿ›  Fix marshaling for wchar_t in C++ generator mode

    • ๐Ÿ›  Fix includes setup for parser bindings generation in macOS host platform

    • ๐Ÿ›  Fix generation of field property setters in C++ generator

    • ๐Ÿ›  Fix FieldToProperty pass to ignore non-public properties in C++ generator

    • ๐Ÿ›  Fix declaration access for generated fields flattened from anonymous types

    • ๐Ÿ”„ Change standard type maps to be more specific about its supported generators

    • Generate forward ref header for enum defined inside a class in C++/CLI (#1322) - Ali Alamiri

    • ๐Ÿšš Move the GenerateInclude logic to GetTypeReference (#1319) - Ali Alamiri

    • ๐Ÿ›  By reference enum param fixes (#1321) - Ali Alamiri

    • โž• Add declaration context as object to function class block - Ali Alamiri

    • โž• Add blocks for ctor, dtor, and finalizer bodies. Add constructor that takes a bool from the caller to indicate if the callee should own the pointer passed to it or not - Ali Alamiri

    • โž• Add generic type map handling methods for later refactoring of generators

    • ๐Ÿ›  Fix type printing of typedef qualifiers in C++ type printer

    • ๐Ÿ›  Fix C++ parser ambiguity in generation of C++ method identifiers by wrapping them in parens

    • ๐Ÿ›  Fix generation of C++ constructor for abstract classes

    • ๐Ÿ›  Fix generation of native instance constructors in C++ generator

    • ๐Ÿ›  Fix marshaling of C++ references in C++ marshaler

    • ๐Ÿ”จ Minor refactoring to allow better IDE inspection and debugging

    • ๐ŸŒ Rewrite GenerateEnumFromMacros to search through multiple translation units

    • ๐Ÿ›  Fix CppTypePrinter to check for typemaps for tag types and keep track of them

    • ๐Ÿ–จ Implement a few overloads in CppTypePrinter that trigger the type maps checking code

    • ๐Ÿ›  Fix ignore type checking to take type maps into account

    • ๐Ÿ›  Fix ignored declaration checking to properties desugar field types

    • ๐Ÿ›  Fix GetterSetterToProperty pass heuristic to also detect โ€œonโ€ as a verb

    • ๐Ÿ–จ CppTypePrinter now takes a BindingContext for further usage in type maps handling

    • Only generate โ€œoverrideโ€ in header files for C++ generator

    • ๐Ÿšš Guard MoveFunctionToClassPass pass registration against CLI and C# generators

    • Ignore generated field method acessors when processing properties in GetterSetterToProperty

    • โž• Add cli namespace to header to ensure the array type does not conflict with other types called array - Ali Alamiri

    • ๐Ÿ›  Marshal non primitive fixed arrays (#1311) - Ali Alamiri

    • Ensure typedefs of std::vector are mapped - Ali Alamiri

    • ๐Ÿ“ฆ Simplify the structure of the LLVM package

    • 0๏ธโƒฃ Always keep default constructors in the AST

    • ๐Ÿšš Keep copy/move constructors and assignment in AST

    • ๐Ÿšš Move the body of a template function to its header

    • ๐Ÿ–จ Implement proper array printing with C array name suffix notation

    • ๐Ÿ›  Fix CLITypeReferences so it generates regular C++ code in C++ generator mode

    • โž• Add CXXOperatorArityZero enum item for further usage in subsequent code

    • ๐ŸŽ‰ Initial C++ generator backend

  • v0.10.2 Changes

    March 27, 2020
    • Associate getter/setter methods with their associated property in GetterSetterToProperty pass

    • โž• Added optional getter/setter pair creation for fields in FieldToProperty pass

    • ๐Ÿ”จ Refactor CLI handling of enums to be based on generic C generator

    • 0๏ธโƒฃ Default to .h file extension in C code generator

    • โž• Add helper methods to ignore and generate specific translation units

    • Guard a few more language-specific passes in the driver

    • ๐Ÿ›  Fix generation of multiple interfaces in C# for some edge cases

    • ๐Ÿ›  Fix templates to be abstract if any specialization is abstract

    • ๐Ÿ›  Fix TranslationUnit.FileRelativePath for invalid units

    • ๐Ÿ–จ Re-use common C++ declaration type printing code in CLITypePrinter

    • ๐Ÿ‘ Allow changing the default TypePrinterContextKind when creating a type printer

    • โœ‚ Remove needless pointer offsets from generated C#

    • ๐Ÿ›  Fix a crash for secondary bases with secondary bases

    • ๐Ÿ›  Fix bug related to processing of potential property methods

    • Ensure generated symbols can use placement new

    • ๐Ÿ›  Fix Mono not being found on the PATH on recent macOS versions

    • ๐Ÿ‘ป Instantiate exception specifications before reading

    • โšก๏ธ Update LLVM to the latest version

    • ๐Ÿ›  Fix a syntax error in CMake listing Clang modules

    • ๐Ÿ— Enable building lld as part of LLVM

    • โช Restore modules needed for compiling with Clang

    • ๐Ÿ‘Œ Support Visual Studio 2019 for building Clang

    • โšก๏ธ Update Travis to Ubuntu Xenial 18.04

    • โšก๏ธ Simplify and optimize the printing of pointers in C++

    • ๐Ÿ›  Fix printing of function pointers in C++

    • Don't export symbols for explicit specializations

    • โœ… Avoid invalid template specializations in tests

    • โšก๏ธ Update the printing of comments to the new Clang

    • โ†ช Work around MSVC 32 crashing reading of exported symbols in Mach-O

    • ๐Ÿ‘Œ Improve Xcode toolchain lookup to be more robust

    • Implement logic for -fgnuc-version= argument required by LLVM

    • โšก๏ธ Update LLVM to the latest version

    • ๐Ÿ”จ Refactor Clang builtins directory logic and move it to the managed side

    • Escape C# strings correctly

    • ๐Ÿ‘Œ Improve CS_INTERNAL so it now applies to all declarations

    • ๐Ÿ–จ Print the parser target triple in verbose mode

    • ๐Ÿ— Always re-create the Clang resource directory when building

    • Cleanup Clang resource directory lookup logic

    • โœ‚ Remove old workaround for testing issue that does not seem necessary anymore

    • Git ignore .vscode directory

    • ๐Ÿ— Workaround Premake issue when copying the resource include directories at build time

    • ๐Ÿ›  Fix warning about #pragma once in source file

    • โšก๏ธ Update bootstrap tool to run against latest LLVM

    • โšก๏ธ Update bootstrap tool to find LLVM build directory

    • โž• Add options to disable tests and examples from the build

    • ๐Ÿ‘Œ Improve the ignoring of dependent name types

    • Implement UnresolvedUsingType and UnresolvedUsingTypename

    • ๐Ÿ›  Fix the tests for exception types

    • Switch to Xcode 11 in Travis CI

    • ๐Ÿ–จ Extend printing and reading of exception types

    • ๐Ÿ›  Fix the check to ignore dependent name types

    • Ignore unused destructors when generating symbols

    • ๐Ÿ›  Fix the printing of "noexcept" in C++

    • โœ… Make destructors virtual in abstract classes for tests

    • Avoid generating abstract implementations for template classes

    • ๐Ÿ›  Fix template type checking in CovariantTypeComparer

    • Git ignore nested temporary obj folders

    • ๐ŸŽ Workaround System.TypeLoad exception when running test-suite on macOS

    • ๐Ÿ›  Fix enum with zeros for hex literals

    • ๐Ÿ›  Fix the moving of free functions to classes to match by module too

    • ๐Ÿ‘ Generate valid C# when an external module has an unsupported operator

    • ๐Ÿ›  Fix a possible overflown stack when ignoring

    • ๐Ÿ‘ฎ Force compilation of all functions of specializations

    • Fill in missed values when cloning functions

    • โšก๏ธ Optimize the moving of functions to classes

    • โœ‚ Delete a custom pass added as standard

    • ๐Ÿ›  Fix the C++ printing of function pointers in parameters

    • Eliminate generated symbols for ignored functions

    • ๐Ÿ›  Fix printing of type defs in C++

    • โœ‚ Remove the internal C# functions for virtual destructors

    • Give unique names to exported inlined functions

    • Generate symbols for methods of specializations

    • โšก๏ธ Optimize all passes which visited useless items

    • ๐Ÿ‘‰ Make the pass for properties more extendable

    • Simplify overrides of overrides of secondary bases

    • โšก๏ธ Optimize calls to base getters in properties

    • ๐Ÿ›  Fix comparison of char and const char* in overloading

    • โšก๏ธ Optimize the pass for properties

    • Clarify limitations around exceptions and RTTI

    • Destroy returned by value std::strings

    • โฌ†๏ธ Upgrade ANSI marshalling to UTF-8 marshalling

    • Generate valid C# when a renamed override causes conflicts

    • Ensure protected nested types are accessible with multiple inheritance

    • ๐Ÿ›  Fix the regressed indentation of printed comments

    • Generate projects for .NET 4.7 to use new features

    • Simplify the generated C# for marshalling strings

  • v0.10.1 Changes

    July 04, 2019
    • ๐Ÿ›  Fix the getting of references to pointers in C#

    • ๐Ÿ›  Fix the passing of references to pointers in C#

    • Prefer non-mapped types when resolving ambiguous overloads

    • ๐Ÿ‘‰ Make indexers use non-trivial copy ctors if any

    • ๐Ÿ›  Fix a memory leak when passing an indirect std::string

    • ๐Ÿ— Build the generator before test bindings for easy testing

    • ๐Ÿ›  Fix memory leaks in the map for std::string

    • ๐Ÿ›  Fix the passing of std::string by value

    • Guard against null for objects passed by value

    • Generate valid C# for implicit conversion to const char*

  • v0.10.0 Changes

    • Generate valid C# when passing a const ref to char

    • Generate valid C# when a secondary base has a public anonymous field

    • Generate valid C# when a method from a secondary base has no native symbol

    • Generate valid C# for typedef-ed type parameters

    • Ensure found type maps always contain the type sought after

    • Flatten anonymous types to avoid empty names

    • 0๏ธโƒฃ Generate valid C# for template parameters with a default value

    • ๐Ÿ›  Fix returned objects by value attributed with inalloca

    • ๐Ÿ›  Fix default arguments to only map to null if pointers

    • Generate valid C# for returned const void pointers

    • ๐Ÿ›  Fix regressions with void pointers and references

    • Generate valid C# for r-values to void pointers

    • ๐Ÿ Make the default build for Windows 64-bit

    • ๐Ÿ Sped the LLVM build on Windows up by parallelizing

    • Generate valid C# when a field with an anon type starts with '$'

    • Generate valid C# when a function is named "get"

    • 0๏ธโƒฃ Enable Clang-based look-up for system includes by default