The new CppArrayInnerIndexer attribute was supported by the porter which allows the ported code to use the members of internal vector to access array elements instead of .Net-styled accessors implemented at System::Array and System::ArrayPtr level. This increases the performance by the cost of skipping the boundary checks.
The GroupBy LINQ method was supported.
The forward declarations in the generated code are now grouped by namespaces and ordered to avoid violating C++ declare-before-use rule. Several related inclusion generation issues were fixed.
The external_include configuration file node was added which makes the porter to insert custom inclusion lines into generated files.
The CppAddFunctionArgument and CppPassFunctionArgument attributes were added which make the porter to generate and pass additional arguments for the methods being translated.
The CppWeakPtr attribute now works with the generic argument-typed fields and properties.
The force_const_ref_return_type_for_auto_properties option now works with the generic argument-typed properties.
The previously uncompiled references to null exceptions in the ported code are now replaced with references to System::Exception::NullException which doesn’t create any ambiguity with its type.
Some code smell issues were fixed in the porter’s code. Some code was moved between the DLLs.
The CppInline attribute now works with property getters and setters.
The work of the CppPortConstStringAsWChar was fixed for some cases.
The UnsafeConst value of the CppArgumentKind attribute was fixed for the char pointers.
The size of the CodePorting.Native Cs2Cpp API library and ported binaries was decreased. Implementation of some internal library members were changed.
The types referred by the in-config attribute declarations can now use short C# notation (like ‘int’ or ‘char’) instead of fully qualified one (like ‘System.Int32’ or ‘System.Char’).
The GraphicsPath rendering was fixed for some cases of closed figures.
The support of the System::Tuple class in the porter was improved. It is now possible to replace custom tuples with the system one using typemap records in the configuration file.
The rendering of bitmaps with different DPIs at the same bitmap was fixed.
Some compilation issues for various compilers were fixed in the library code.
The compilation of the translated foreach statement for duck-typed collections was fixed in some cases.
Some unneccessary locking was fixed in the porter which improves performance in some cases on multicored machines.
The export of protected internal members was fixed in the porter.
The unneccessary export of template class members in the ported code was fixed.
The System::Text::Encoding::GetEncoding() method now throws ArgumentException if there are non-ASCII symbols in the encoding name.
Please consult respective sections of our wiki for more information.
Full List of Issues Covering all Changes in this Release
Implement String.Join(String, Object) method
Implement CppWeakPtr attribute appliance to properties/fields which type is a template parameter
Porter: Improve the translation of exceptions
Do small fixes to code
Implement new attribute ArrayOnStack for porter
Review user-defined exceptions: article and approach
Implement BinaryWriter.Write(String) method
Porter: Fix CppInline attribute usage for getters/setters
Porter: Fix CppPortConstStringAsWChar attribute usage for code within System namespace
Porter: Fix CppArgumentKind attribute with UnsafeConst parameter usage for pointers to char
Analyze and reduce the size of the binary artifacts
Fix porter attribute reader for reading short CSharp types like uint, ulong, e.t.c
CppArrayInnerIndexer - submit on MR.
Implementing Linq GroupBy functionality in asposecpplib
Create test and MR for GraphicsPath::AddPath fix
Porter: Improve System.Tuple class handling
Improve Graphics::DrawImage() and Graphics::DrawImageUnscaled() methods
Separate code dependent on NRefactory from CsToCppPorter.Settings
foreach translation doesn’t compile
Prepearing Aspose.Email for C++ Release 21.7
Compatibility between CppArgumentKind raw pointers and CppArrayOnStack attributes