4. csPorter for C++ 18.11 Release Notes

Last modified by Tilal Ahmad on 2018/11/23 06:54

Major Features

Following major improvements and fixes are applied in this regular monthly release:

  1. 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
  2. Named mutex implementation is added
  3. Compilation of library code using Visual Studio 2015 is explicitly disabled
  4. Possible static initialization fiasco is now detected by porter and reported as warning
  5. PreserveWhitespace mode is enabled for XmlDocument class
  6. New 'obfuscate_cpp_headers' option is supported. It allows generating headers with some type and name information removed for non-public fields
  7. 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
  8. Graphics::FillRegion() method is implemented
  9. 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
  10. Several System::Diagnostics::Process methods are implemented for Linux platform
  11. A way to detect multiimage gifs is added
  12. Simple string raw pointer operations are supported inside 'fixed' statement

Minor fixes

  1. StringBuilder now calls proper version of ToString() method even if not marked with CppConstMethod attribute
  2. NS deduction mechanism is fixed in System::Xml::Node::SetAttribute() method
  3. Array::Sort() implementation is fixed for value types supporting CompareTo method
  4. Types of enumerators of collections from System::Collections namespace being treated as value types is fixed
  5. Porter crash when having ambiguity between two or more methods, one having 'params'-typed argument block, is fixed
  6. Dot in subject string expression now properly matched against 'any symbol' dot by Regex class
  7. 'aspose_cpp' library suffixes for Visual Studio 2017 are switched from 'vc150' to 'vc141' which is more common
  8. System::String::Contains behavior is fixed for empty string used as argument
  9. XmlTextReader::get_AttributeCount() is fixed when situations when reader is currently pointed to attribute node
  10. Porter behavior is fixed for situations when method parameter name matches such of one of the class'es parameters
  11. Graphics::MeasureString() behavior is fixed for some corner cases
  12. Buffer::BlockCopy() method is fixed to work with rvalues when compiled with GCC
  13. GraphicsPath::AddBeziers() overloads are implemented
  14. PlatformNotSupportedException exception type is supported
  15. Environment::GetFolderPath() is supported on Linux for SpecialFolder::Personal folder type
  16. Visualizations of System::String and System::SmartPtr inside Visual Studio are fixed and improved
  17. 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
  18. 'exclude' parameter of 'cut_namespaces' option is fixed to work with delegates
  19. Some errors within FileStream class are fixed
  20. Header name resolving mechanism is fixed when porter-generated header name matches name of existing header file
  21. Few memory issues within the library are fixed
  22. Complex assignment operators on indexers are fixed. There is an expression duplication issue causing increment or other similar operations to be executed twice
  23. List and Array sorting order is fixed for NaN values to match C# behavior
  24. GraphicsPath::AddPolygon() behavior is fixed for some cases.
  25. Tiff format with CMYK color model is now supported
  26. XmlConvert::ToString() method now uses correct invariant culture with DateTime objects.
  27. Quality of hashes provided by Object::GetHashCode() method is improved.
  28. False positive 'Failed to parse constructor initializer' porter errors are downgraded to warnings. The aren't removed totally to avoid loosing true alerts.
  29. String::Join() method is fixed for empty input array to return empty string instead of null string.
  30. 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

CSPORTCPP-1805Improve TestFixture translation approachEnhancement
WORDSCPP-651Port classes from namespace Aspose.TestFx.GoldComparers.FailedTestCollectorTask
PDFCPP-767Fix CsToCppPorter - conversion to stringBug
CSPORTCPP-2187Add VS2015 disablement macro to public headersTask
BARCODECPP-374Implement SIOF detectionTask
WORDSCPP-673System::Array<System::String>::Sort does not work the same as in .NETBug
CSPORTCPP-2127Fix member class porting as value typeBug
WORDSCPP-672bool vs String ambiguity detector doesn't work with params argumentsBug
WORDSCPP-610XmlDocument.PreserveWhitespace throws NotImplementedExceptionBug
WORDSCPP-570/TestReplace.TestReplaceAcrossParagraph/ Dot is not recognized as "any character" by Regex.Bug
PDFCPP-793Fix issues with Text testsTask
PDFCPP-747Get tests passedInvestigation
BARCODECPP-379Support Aspose.BarCode for C++Task
SLIDESCPP-1371Fix Aspose.Slides for C++ build issues in Linux environmentTask
SLIDESCPP-1377Analyze missing slide elements rendering issueTask
SLIDESCPP-1379Implement 'Personal' case of Environment::GetFolderPath for Linux environmentTask
SLIDESCPP-1380Improve accuracy of the Graphics::MeasureString methodTask
SLIDESCPP-1386Fix aborting execution when running RegressionTests_v18_8 testsTask
SLIDESCPP-1393Porter: Option cut_namespaces:exclude is not applied for delegatesTask
SLIDESCPP-1395Implement StringFormatFlags.MeasureTrailingSpaces functionality for MeasureStringTask
SLIDESCPP-1405Implement System::Diagnostics::Process::GetCurrentProcess() for Linux environmentTask
SLIDESCPP-1411Fix text measuring when a font doesn't have required glyphsTask
SLIDESCPP-1412The output pptx file is corruptedBug
SLIDESCPP-1422Porter: Headers conflict resolving mechanism is brokenTask
SLIDESCPP-1424Check Aspose C++ Library for memory access issues (v18.9)Task
SLIDESCPP-1429Fix translation of complex assignment operations to indexersTask
SLIDESCPP-1435Fix Array/List sorting when it contains NaN valuesTask
SLIDESCPP-1426Fix RegressionTests_v17_2.SLIDESNET_35542 testTask
SLIDESCPP-1444Modify Skia to support decoding of Tiff images with CMYK color modelTask
SLIDESCPP-1459Fix NotImplementedException while running Miscelaneous.Test_SLIDESNET_33637 testTask
SLIDESCPP-1449Improve quality of hash values returned by Object::GetHashCode()Task
SLIDESCPP-1451Force porter to fail the build on file errorsTask
SLIDESCPP-1463Fix RegressionTests_v16_4.SLIDESNET_36934 testTask
SLIDESCPP-1472Implement identification of multi-images GIFTask
SLIDESCPP-1473Porter: Missing include directive when CppConstexpr is appliedTask
SLIDESCPP-1479Porter: Add support of simple raw pointer operations in the fixed statementTask

Public API and Backward Incompatible Changes

  1. 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.
  2. In System::Threading::Mutex class, Mutex(bool, String) constructor and Remove(String) static method are added.
  3. System::Details::Skia namespace is moved to System::Drawing::Details::Skia. No clients' code should be impacted.
  4. IsMultiImage() method is added into Bitmap and Image classes.
Created by Tilal Ahmad on 2018/11/23 06:54