What's Changed
- Fix VersionTuple.IsEmpty. by @rolfbjarne in #693
- Add Copilot instructions and fix two small irregularities by @tannergooding in #701
- Split large hand-written generator files into cohesive partials by @tannergooding in #702
- Fix native library resolution for dotnet tools on Linux by @Happypig375 in #700
- Fix incorrect 64-bit alignment computation for records with a vtable by @tannergooding in #703
- Fix potential null dereference of ObjCTypeParamList in Cursor argument and type-param APIs by @tannergooding in #704
- Avoid boxing in flag enum checks by using bitwise tests by @tannergooding in #705
- Fix ValueLazy caching being defeated by readonly fields by @tannergooding in #706
- Avoid allocating per-instance lazy factory delegates using function pointers by @tannergooding in #707
- Cache normalized file names to avoid re-allocating them per cursor by @tannergooding in #708
- Fix generation of long-typed defines when on Linux by @Exanite in #699
- Collapse Desc flag boilerplate into shared helpers by @tannergooding in #710
- Unify duplicated bool type transforms into a shared helper by @tannergooding in #711
- Hoist XmlWriterSettings and dispose StringWriter in XmlOutputBuilder by @tannergooding in #713
- Use SearchValues for qualified-name separator scans by @tannergooding in #712
- Standardize argument-name validation in OutputBuilderFactory by @tannergooding in #714
- Avoid allocating per-cursor LazyList factory delegates using function pointers by @tannergooding in #715
- Split the largest generator methods into dedicated partial files by @tannergooding in #716
- Decompose GetCursorName into focused private helpers by @tannergooding in #717
- Promote anonymous-name prefixes to consts with helper predicates by @tannergooding in #718
- Drop net8.0 and modernize DllImportResolver invocation-list enumeration by @tannergooding in #719
- Harden generator against malformed macro and uuid inputs by @tannergooding in #720
- Fix template-argument accessors for function and variable template specializations by @tannergooding in #721
- Centralize anonymous type-kind tag literal and use range slicing by @tannergooding in #722
- Use global.json SDK for the nightly publish jobs by @tannergooding in #723
- Return a success exit code for --version by @tannergooding in #724
- Fix missing closing parenthesis for non-int transparent struct boolean conversion by @tannergooding in #725
- Fix missing semicolon on non-const global struct initializers by @tannergooding in #726
- Fix invalid codegen for bool bitfields by @tannergooding in #727
- Concatenate adjacent string literals in deprecated attribute messages by @tannergooding in #728
- Don't emit a namespace closing brace for file-scoped namespaces in single-file output by @tannergooding in #729
- Strip enum member type name from sibling references in initializers by @tannergooding in #730
- Qualify nested type references with their containing types by @tannergooding in #731
- Don't dereference a null type when building a template argument name by @tannergooding in #732
- Qualify anonymous enum references with their backing class for exclude-using-statics-for-enums by @tannergooding in #733
- Map nullptr type to void* instead of the invalid type name null by @tannergooding in #734
- Fix invalid single-file codegen for generate-helper-types by @tannergooding in #735
- Disambiguate nested record names that clash with a sibling field by @tannergooding in #736
- Fix method class over-indentation under file-scoped namespaces by @tannergooding in #737
- Emit single-file helper types below the method class instead of mid-file by @tannergooding in #738
- Don't crash on undefined function-like macros by @tannergooding in #739
- Insert explicit byte-pointer casts for void pointer arithmetic by @tannergooding in #740
- Add opt-in uint, nint, and nuint indexers for fixed buffer helper structs by @tannergooding in #741
- Fix incorrect expectedCursorKind for UsingEnumDecl by @tannergooding in #742
- Ensure SAL/C++ attributes on fields generate a CppAttributeList by @tannergooding in #743
- Fix compatible-mode remap of pointer-to-fnptr-typedef fields by @tannergooding in #744
- Lower a type remapped to a fixed-size buffer to a pointer by @tannergooding in #745
- Add a package README for ClangSharpPInvokeGenerator by @tannergooding in #746
- Don't emit duplicate members for structs with multiple vtbl bases by @tannergooding in #748
- Replace System.CommandLine with a custom argument parser by @tannergooding in #749
- Model multiple-inheritance vtbl bases as ABI-correct subobjects by @tannergooding in #750
- Support struct field type remapping via --with-type by @tannergooding in #751
- Add a generation best-practices guide for ClangSharpPInvokeGenerator by @tannergooding in #752
- Replace inline generator-test golden strings with a checked-in baseline harness by @tannergooding in #753
- Add docs for library use and the XML binding format by @tannergooding in #754
- Model nested multiple inheritance of polymorphic bases as ABI-correct subobjects by @tannergooding in #755
- Give a clear diagnostic when the output location conflicts with the file mode by @tannergooding in #756
- Add default remappings for well known fixed-width and pointer-width typedefs by @tannergooding in #757
- Auto-detect an installed clang resource directory on Unix by @tannergooding in #758
- Annotate generated bindings with GeneratedCodeAttribute by @tannergooding in #759
- Expose Type.UnqualifiedType by @tannergooding in #760
- Pass
thisas a pointer when a callee expects one by @tannergooding in #761 - Ensure unsigned enum initializers cast to the signed underlying type by @tannergooding in #762
- Project C++ copy assignment
operator=as a C# assignment orop_Assignby @tannergooding in #763 - Don't emit function-local type declarations inline in the method body by @tannergooding in #764
- Unify identical ThisAsPointerTest baselines and document the convention by @tannergooding in #767
- Pass operator-call arguments by reference where the parameter expects it by @tannergooding in #766
- Qualify hoisted function-local anonymous records by their function by @tannergooding in #765
- Add --typePrefixStrip for stripping a prefix from type and enum member names by @tannergooding in #768
- Fix crash on out-of-line class-template member definitions and harden getVtblIdx by @tannergooding in #769
- Add --with-enum-member-strip for per-enum member name stripping by @tannergooding in #770
- Add --with-conditional to wrap single-file output in a preprocessor conditional by @tannergooding in #772
- Degrade gracefully on C++ pointer-to-member types by @tannergooding in #771
- Extend --with-conditional to multi-file output by @tannergooding in #774
- Don't emit unnecessary unchecked scope for native-int literals by @tannergooding in #773
- Add opt-in --with-equality-members for generated structs by @tannergooding in #775
- Remove nightly package publishing by @tannergooding in #776
- Recover CLSID/IID Guid constants from extern const-GUID globals by @tannergooding in #777
- Add opt-in generate-extern-variables for extern global bindings by @tannergooding in #778
- Add opt-in Objective-C binding generation by @tannergooding in #780
- Add a workflow to regenerate the native libclang and libClangSharp packages by @tannergooding in #779
- Add support for scraping struct over-alignment as NativeAlignment by @tannergooding in #781
- Fix InvalidCastException resolving dependent template-specialization bases by @tannergooding in #782
- Ensure that decayed array delegate and function pointer parameters are handled correctly by @tannergooding in #783
- Clean up and unify the ClangSharpPInvokeGenerator command-line options by @tannergooding in #784
- Port libClangSharp to the LLVM 22 Clang AST by @tannergooding in #785
- Update baselines and docs for the 21.1.8.4 version bump by @tannergooding in #788
- Add glob matching to the name-matching options by @tannergooding in #787
- Fix regenerate-native builds against the official LLVM release by @tannergooding in #790
New Contributors
- @Happypig375 made their first contribution in #700
Full Changelog: v21.1.8.3...v21.1.8.4