The behavior of many library classes was put closer to such of .Net originals in cases of exception throwing, parameter checking, and other details not concerning major features. This includes:
Regular exceptions-related classes;
Text and encoding-related classes;
Some other classes.
Porter now supports the porting of an ‘unsafe’ block statement.
Porter is now capable of placing ‘override’ instructions in ported code where necessary.
CppConstWrapper attribute is now working properly for methods with arguments, non-virtual members, properties, and indexers.
Porter is now capable of generating more simplistic code for some cases:
‘simplify_using_statements’ option was supported by porter making it possible to generate simpler code for ‘using’ statements which should be useful e. g. for examples porting.
Translation of Assert.Zero and Assert.AreNotEqual was simplified.
Translation of property initializers for variable creation statements was simplified.
Simplier code is now generated for ‘foreach’ statement translation if ‘foreach_as_range_based_for_loop’ option is enabled. This applies to library classes with ‘begin-end’ semantics support and to other classes specified via ‘types_with_begin_and_end_methods’ configuration file node.
Reflection support was extended. Many related classes were implemented. Porter is now capable of propagating attributes and constructors info (see ‘attributes_into_reflection_info’ option).
A simple implementation for sorting strings using CompareOptions::StringSort was added.
False positives for ‘virtual function call from constructor/destructor’ warning were fixed.
‘goto case’ statement was fixed with the switch of character type.
XmlWriter’s indentation settings were put in line with such in .Net.
A crash was fixed in ported code on some compilers caused by an exception being thrown from ‘finally’ block.
XmlConvert::TryDecodingName was fixed for non-ASCII characters.
Iterator comparison for System::Collections::ObjectModel::Collection was fixed.
Porter now properly replaces multiple documentation tags with the same name. The replacement of the ‘exception’ documentation tag was supported. Text for ‘see’ documentation tag now gets reduced for compact view.
StopWatch class was fixed to provide interval values during the counting, not only after it is stopped.
UTF-7 decoding is now fully supported.
Comment delimiters (bars of slashes) are now ported unmodified, no longer being recognized as triple-slash documentation comment prefix followed by a comment.
Dictionary class now works properly with structures implementing the IEquatable interface.
The shared pointer leak was fixed on the unsuccessful call of the dynamic_pointer_cast() method.
Compilation issues with Matrix class used without Point structure include were fixed.
Porter is now capable of generating platform-independent XXX_SHARED_CLASS macros for exporting classes.
Output file name unicalization can now be disabled using ‘make_cpp_file_name_uniq’ option.
Porter is now capable of translating casts to non-generic IList interface (see ‘allow_cast_to_non_generic_list’ option).
Previously unsupported types of tiff files were supported by the Drawing subsystem.
CppUnknownTypeParam, CppValueTypeParam, CppForceDynamicCastToTypeParam and CppForceDynamicCastFromTypeParam attributes can now be used from configuration files.
Some memory leaks were fixed in System::Xml submodule.
Figure connection was fixed in GraphicsPath::AddPath() method.
A shared pointer leak via creating an aliased null-pointer was fixed.
Equals() call via aliased pointer created based on weak pointer was fixed.
do_try_finally.h now works properly in C++17 mode.
Some world matrix-related drawing issues were fixed.
The vertical positioning of a fallback font was fixed.
Misprint in namespace end comments in ported code was fixed.
‘First’ and ‘Count’ LINQ methods were supported in ported code.
XPathDocument(System.IO.Stream) constructor was supported.
Porter is now capable of removing comments to private entities (see ‘remove_private_comments’ option).
Codepage issues in license text were fixed.
Please consult the respective sections of our wiki for more information.
Full List of Issues Covering all Changes in this Release
Add porter option to auto-detect virtual function calls from constructors
Formatting output XML files do not match Slides.Net
Automate MathMLTests testing
An app crashes if an exception is thrown in the lambda-expression of the System::MakeScopeGuard constructor.
Porting tests for exceptions
Simplify using statements generated by porter
Simplify test code generated by porter
Porting tests: GroupTest, MatchTest, RegexTest, and others
Porter: Fix porting an unsafe statement block
Simplify object initializers generated by porter
Support CodePorting.Native Cs2Cpp
Porter: Implement an ability to replace multiple documentation tags with the same name
Porter: Implement replacing of ‘exception’ documentation tag
Porter: Implement an ability to reduce text for ‘see’ tag
Porting tests: MutexTest, SemaphoreTest, ThreadTest, and others
Use the auto keyword for variable declarations
The StopWatch::get_Elapsed returns an incorrect value