Following major improvements and fixes are applied in this regular monthly release:
Tests translation approach is improved. Now, virtual function called from methods marked with TestFixtureSetUp, TestFixtureTearDown, SetUp and TearDown attributes are fully supported. Also, TestFixture objects are now created once before running tests from current fixture, and deleted afterwards. ‘cleanup_tests’ option is now ignored by porter
Named mutex implementation is added
Compilation of library code using Visual Studio 2015 is explicitly disabled
Possible static initialization fiasco is now detected by porter and reported as warning
PreserveWhitespace mode is enabled for XmlDocument class
New ‘obfuscate_cpp_headers’ option is supported. It allows generating headers with some type and name information removed for non-public fields
New ‘nunit_assert_class_aliases’ option is supported. It allows treating calls into methods of some ported classes same way calls into NUnit’s Assert class methods are treated
Graphics::FillRegion() method is implemented
Threading::Thread class’es behavior is improved to match .Net behavior better. Now the thread is detached after start, so dropping thread object reference doesn’t result in interthreading errors
Several System::Diagnostics::Process methods are implemented for Linux platform
A way to detect multiimage gifs is added
Simple string raw pointer operations are supported inside ‘fixed’ statement
StringBuilder now calls proper version of ToString() method even if not marked with CppConstMethod attribute
NS deduction mechanism is fixed in System::Xml::Node::SetAttribute() method
Array::Sort() implementation is fixed for value types supporting CompareTo method
Types of enumerators of collections from System::Collections namespace being treated as value types is fixed
Porter crash when having ambiguity between two or more methods, one having ‘params’-typed argument block, is fixed
Dot in subject string expression now properly matched against ‘any symbol’ dot by Regex class
‘aspose_cpp’ library suffixes for Visual Studio 2017 are switched from ‘vc150’ to ‘vc141’ which is more common
System::String::Contains behavior is fixed for empty string used as argument
XmlTextReader::get_AttributeCount() is fixed when situations when reader is currently pointed to attribute node
Porter behavior is fixed for situations when method parameter name matches such of one of the class’es parameters
Graphics::MeasureString() behavior is fixed for some corner cases
Buffer::BlockCopy() method is fixed to work with rvalues when compiled with GCC
GraphicsPath::AddBeziers() overloads are implemented
PlatformNotSupportedException exception type is supported
Environment::GetFolderPath() is supported on Linux for SpecialFolder::Personal folder type
Visualizations of System::String and System::SmartPtr inside Visual Studio are fixed and improved
Accuracy of Graphics::MeasureString() method is improved. Special treatment of leading spaces is added. Behavior when no glyphs are present in the font used is fixed
‘exclude’ parameter of ‘cut_namespaces’ option is fixed to work with delegates
Some errors within FileStream class are fixed
Header name resolving mechanism is fixed when porter-generated header name matches name of existing header file
Few memory issues within the library are fixed
Complex assignment operators on indexers are fixed. There is an expression duplication issue causing increment or other similar operations to be executed twice
List and Array sorting order is fixed for NaN values to match C# behavior
GraphicsPath::AddPolygon() behavior is fixed for some cases.
Tiff format with CMYK color model is now supported
XmlConvert::ToString() method now uses correct invariant culture with DateTime objects.
Quality of hashes provided by Object::GetHashCode() method is improved.
False positive ‘Failed to parse constructor initializer’ porter errors are downgraded to warnings. The aren’t removed totally to avoid loosing true alerts.
String::Join() method is fixed for empty input array to return empty string instead of null string.
Missing include when using cascaded CppConstexpr attribute is fixed.
Please consult respective sections of our wiki for more information.
Full List of Issues Covering all Changes in this Release
Improve TestFixture translation approach
Port classes from namespace Aspose.TestFx.GoldComparers.FailedTestCollector
/TestReplace.TestReplaceAcrossParagraph/ Dot is not recognized as “any character” by Regex.
Fix issues with Text tests
Get tests passed
Support Aspose.BarCode for C++
Fix Aspose.Slides for C++ build issues in Linux environment
Analyze missing slide elements rendering issue
Implement ‘Personal’ case of Environment::GetFolderPath for Linux environment
Improve accuracy of the Graphics::MeasureString method
Fix aborting execution when running RegressionTests_v18_8 tests
Porter: Option cut_namespaces:exclude is not applied for delegates
Implement StringFormatFlags.MeasureTrailingSpaces functionality for MeasureString
Implement System::Diagnostics::Process::GetCurrentProcess() for Linux environment
Fix text measuring when a font doesn’t have required glyphs
The output pptx file is corrupted
Porter: Headers conflict resolving mechanism is broken
Check Aspose C++ Library for memory access issues (v18.9)
Fix translation of complex assignment operations to indexers
Fix Array/List sorting when it contains NaN values
Fix RegressionTests_v17_2.SLIDESNET_35542 test
Modify Skia to support decoding of Tiff images with CMYK color model
Fix NotImplementedException while running Miscelaneous.Test_SLIDESNET_33637 test
Improve quality of hash values returned by Object::GetHashCode()
Force porter to fail the build on file errors
Fix RegressionTests_v16_4.SLIDESNET_36934 test
Implement identification of multi-images GIF
Porter: Missing include directive when CppConstexpr is applied
Porter: Add support of simple raw pointer operations in the fixed statement
Public API and Backward Incompatible Changes
The way tests were translated is changed. If you have tests in your solution, you must re-port full solution instead of individual project, as tests ported by previous porter versions won’t be compatible with tests ported by actual porter.
In System::Threading::Mutex class, Mutex(bool, String) constructor and Remove(String) static method are added.
System::Details::Skia namespace is moved to System::Drawing::Details::Skia. No clients’ code should be impacted.
IsMultiImage() method is added into Bitmap and Image classes.