diff --git a/CHANGELOG.md b/CHANGELOG.md index 9645bce1..e0690df8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,490 @@ +## [0.11.0] - 2021-1-29 + +- 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 + +- 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 + +- 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) + +- 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] (#1427) + +- 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 + + ## [0.10.5] - 2020-6-27 - Don't add ABI-specific parameters when wrapping C