CodePorting.Native Cs2Cpp 19.8
Major Features
- Multiple fixes were applied to System::Drawing subsystem to make it behave more in line with .Net implementation.
- Globalization data was improved for better reproduction of .Net behavior.
- Exception classes are no longer translated as value types. Thus, exception type trimming issue is resolved.
Minor fixes
- ‘~/~/CPPCODE’ syntax behavior is fixed for the functions with no statements in the body.
- Generation of ‘static_cast(0)’ and alike code caused by recent type system changes was fixed.
- Porter crash caused by recent type system changes was fixed.
- GraphicsPath::get_PathTypesImpl() function was fixed when called with NaN arguments.
- Path::IsPathRooted() behavior is put in line with such of CoreFX.
- Graphics::MeasureCharacterRanges method was improved to behave like .Net version does.
- Multi-page tiff support was added.
- Used Skia version was updated.
- DateTime to String conversion using custom formats was fixed.
- Region::Intersect() is fixed for two similar regions.
- OutOfMemory exception was fixed when using PathGradientBrush.
- Missing auto-property initializers are now generated by porter.
- System::IOException is replaced with proper System::IO::IOException.
- Default open mode is fixed for System::IO::FileStream. Also, files locking is supported on Windows.
- Some exceptions when loading EMF files were fixed.
- System::Xml::XmlElement::HasAttribute() method was fixed for some cases related to attributes from ‘http:
//www.w3.org/2000/xmlns/' namespace. - System::Uri class’es behavior was made closer to such of .Net Core implementation.
- FontFamily class construction performance issues were resolved. Also, text of exceptions thrown by this class was improved. Font style recognition was supported.
- ‘0’ custom format specifier rounding was fixed when using ‘System::Convert’ class.
- Porter was fixed for the cases of complex reference hierarchy between projects.
- System::Drawing::Bitmap::Clone() method was fixed for some cases.
- Text measurement accuracy was improved on Linux.
- MemoryStream’s methods were fixed to throw ArgumentNullException when applicable.
- Documentation comments translation was fixed for some cases.
- Leading backslash being treated incorrectly by Path class on Linux was fixed.
- Library binary size was reduced on Linux.
- FileStream now throws proper ArgumentException if being constructed with inconsistent path.
- Path::AltDirectorySeparatorChar on Linux is now consistent with CoreFX behavior.
- CppUnknownTypeParam attribute was fixed for null comparison cases.
- Hyeroglyphic fonts rendering was fixed for some cases.
- Some misprints in code documentation were fixed.
- System::Drawing::Imaging::PixelFormat references were fixed for 24-bit images.
- SEH exceptions when getting pixels of cloned bitmap were fixed.
- XmlConvert::ToString(char16_t) behavior was fixed.
- ‘replacements’ config node was supported inside ‘documentation_comments_translation’ group.
- CustomLineCap scaling issues were fixed.
- Dashed lines phase issues were fixed.
- Text smoothing issues with hyeroglyphic fonts were fixed.
- ‘add_category_name_to_timeout_tests’ option was supported by porter.
- Some additional optimizations were added to library binaries.
- Smart pointer ownership bug caused by using ‘new’ operator during ‘MakeObject()’ call was fixed.
- FileStream::get_CanRead() is fixed when FileStream is created with Append mode.
- Porter now supports ‘DYNABIC_PORTER_ENABLE_COLOR_OUTPUT’ environment variable. When set to ‘true’, it enables porter console output coloring.
- 1 bit-per-pixel bitmap cloning issues were fixed.
- Porter is now built using VS2017. Different MSBuild version is used by porter.
- StreamWriter linkage issues were fixed.
- End-of-line symbols inconsistency in generated code was fixed.
- Lines of multiline log messages are no longer mixed by porter when run in multicore environment.
- Implicit operator translation is fixed for types defined in referenced assembly.
- CppLambdaPassByValue attribute was supported by porter.
- XmlAttribute::get_OwnerElement() was fixed for the cases of deleted owner node.
- XmlTextReader::ReadString behaviour was fixed.
- SHA512Managed class constructor no longer throws NotImplementedException.
- Code vulnerability caused by unchecked array element access in StringCollection class was fixed.
Please consult respective sections of our wiki for more information.
Full List of Issues Covering all Changes in this Release
Key | Summary | Category |
---|---|---|
PDFCPP-1010 | Fix ~/~/CPPCODE for empty function | Task |
SLIDESCPP-1677 | Implement a full-featured Graphics::MeasureCharacterRanges method | Task |
SLIDESCPP-1672 | Implement a solution to save a multi-page tiff | Task |
SLIDESCPP-1673 | Check the status of tests from SLIDESCPP_1441 category | Task |
SLIDESCPP-1690 | Make use of multi-page tiff support in the Aspose.Slides for C++ | Task |
SLIDESCPP-1713 | Resolve the differences in Aspose.Foundation.Zip namespaces using CsToCppPorter | Task |
SLIDESCPP-1748 | Improve Drawing::GraphicsPath class | Task |
SLIDESCPP-1744 | Make System::Uri class behavior closer to .NET Core | Task |
SLIDESCPP-1746 | Use Aspose.Slides for .NET 19.4 features | Task |
SLIDESCPP-1765 | Implement Rfc2898DeriveBytes class | Task |
SLIDESCPP-1790 | Improve accuracy of text measurement in Linux | Task |
SLIDESCPP-1805 | Prepare Aspose.Slides for C++ v19.5 release | Task |
SLIDESCPP-1824 | Analyze exceptions found in the recent Aspose.Slides for C++ build for Linux (v19.5) | Task |
CSPORTCPP-2801 | Switch default library options | Task |
CSPORTCPP-2812 | Support CsPorter for C++ | Task |
TASKSCPP-1252 | Implement StreamWriter constructor in asposecpplib | Task |
CSPORTCPP-2813 | Drop VS 2015-built porter support | Task |
WORDSCPP-802 | Implement System.Security.SecureString class | Task |
SLIDESCPP-1816 | Use Aspose.Slides for .NET 19.6 features | Task |
SLIDESCPP-1861 | Prepare examples for gif and tiff formats testing | Task |
SLIDESCPP-1878 | Porter: Implement documentation comments replacement from external sources | Task |
WORDSCPP-706 | Create globalization data tables | Task |
TASKSCPP-1260 | Implement XPathNavigator.SelectSingleNode(string, XmlNamespaceManager) in asposecpplib | Task |
TASKSCPP-1246 | Implement passing local variables to lambda functions by value | Task |
TASKSCPP-1269 | Imlement some methods in XmlDocumentType class of asposecpplib, which are used in FunctionalTests_18_7_0/ResourceExportType_ExportFontFaceTypesTest | Task |
CSPORTCPP-1987 | Fix Exception type trimming | Task |
SLIDESCPP-1854 | Porter: Improve CppUnknownTypeParam attribute | Enhancement |
SLIDESCPP-1914 | Porter: Improve XML documentation comments replacement | Enhancement |
SLIDESCPP-1852 | Fix text smoothing when rendered using hieroglyphic fonts | Enhancement |
SLIDESCPP-1917 | Porter: Add an option to automatically add a category to tests with timeout | Enhancement |
PDFCPP-999 | Review RegressionTests_v6_3 | Investigation |
SLIDESCPP-1803 | Check if asposecpplib size can be reduced at the moment | Investigation |
SLIDESCPP-1835 | Analyze wrong symbol size in RegressionTests_v18_12.Render_SLIDESNET_38546 test | Investigation |
SLIDESCPP-1843 | Analyze wrong font style rendering issues | Investigation |
CSPORTCPP-2789 | Drop static_cast and similar code | Bug |
PDFCPP-1026 | Fix PDFNEWNET_38043 test | Bug |
SLIDESCPP-1678 | Fix RegressionTests_v19_2.SLIDESNET_40768 test | Bug |
SLIDESCPP-1679 | Fix RegressionTests_v19_1.SLIDESNET_40719 test | Bug |
SLIDESCPP-1694 | Fix Region::Intersect operation of two similar regions | Bug |
SLIDESCPP-1695 | Fix OutOfMemory exception when using PathGradientBrush | Bug |
SLIDESCPP-1697 | Porter: Initializer is missing for auto-implemented properties | Bug |
SLIDESCPP-1708 | Fix ArgumentOutOfRangeException test errors In Linux | Bug |
SLIDESCPP-1723 | Fix test BlobManagerTests.TestTempFilesFolder | Bug |
SLIDESCPP-1723 | Fix test BlobManagerTests.TestTempFilesFolder | Bug |
SLIDESCPP-1729 | Fix SEH exception with code 0xc00000fd while running Aspose.Slides.RegrTests.Cpp | Bug |
SLIDESCPP-1731 | Fix a failed Miscellaneous.SLIDESNET_40794 test | Bug |
SLIDESCPP-1739 | Fix a failed RegressionTests_v19_3.SLIDESNET_40862 test | Bug |
SLIDESCPP-1759 | Fix RegressionTests_v15_3.SLIDESNET_40099_Render_SLIDESNET_36259 test | Bug |
SLIDESCPP-1760 | Fix RegressionTests_v7_3.SLIDESNET_40149_Render_SLIDESNET_16801 test | Bug |
SLIDESCPP-1762 | Fix RegressionTests_v19_1.SLIDESNET_32305 test | Bug |
SLIDESCPP-1771 | Aspose.Slides library porting fails when using MSBuild 15.0 | Bug |
SLIDESCPP-1777 | Fix RegressionTests_v17_7.SLIDESNET_40154_SLIDESNET_39058_2 test | Bug |
SLIDESCPP-1770 | Fix RegressionTests_v15_11.SLIDESNET_40099_SLIDESJAVA_34245 test | Bug |
SLIDESCPP-1798 | Fix failed RegressionTests_v18_4.SLIDESNET_40135_SLIDESNET_39627 test | Bug |
SLIDESCPP-1809 | Fix a failed SvgToShapesTests.RectColorLayoutTest test | Bug |
SLIDESCPP-1836 | Fix creating a FileStream object with inconsistent path | Bug |
SLIDESCPP-1844 | Fix value of Path::AltDirectorySeparatorChar for Linux | Bug |
SLIDESCPP-1860 | Fix Image.PixelFormat value for 24 bit per pixel images | Bug |
SLIDESCPP-1868 | Fix SEH exceptions caused by getting pixels of a copied bitmap | Bug |
SLIDESCPP-1851 | Fix RegressionTests_v16_8.SLIDESNET_37734 test | Bug |
SLIDESCPP-1884 | Fix tests from OdpShapes test group | Bug |
SLIDESCPP-1955 | Fix 1bpp bitmap cloning issue | Bug |
TASKSCPP-1257 | Incorrect porting of implicit operator usage in cross-library mode. | Bug |
PDFCPP-1036 | Fix XmlAttribute::get_OwnerElement | Bug |
PDFCPP-1040 | fix XmlTextReader::ReadString incorrect behaviour | Bug |
TASKSCPP-1274 | Fix TestMPP14StreamDecryptor.TestCanCreateEncryptionDescriptorSHA512 testcase | Bug |
WORDSCPP-817 | Aspose.Words for C++ Code Execution Vulnerability | Bug |
Public API and Backward Incompatible Changes
- References to Aspose::Foundation::Zip were removed.
- System::DataMisalignedException class was supported.
- Rfc2898DeriveBytes class was implemented.
- CryptoStream::FlushFinalBlock() method has been added.
- TryParse(String, TimeSpan&) and Duration() methods are supported by TimeSpan class.
- Multiple changes to graphics subsystem may result in some images being rendered in a different way now.
- EXTERNAL_REFCOUNT feature is now disabled in debug to make behavior consistent with release version.
- StreamWriter::StreamWriter(const String&, bool, const EncodingPtr&, int) overload constructor was implemented.
- System.Security.SecureString class was implemented.
- HashSet::HashSet(SharedPtr) constructor was implemented.
- XPathNavigator::SelectSingleNode(String, SharedPtr) was implemented.
- Some stub classes and methods were added.
- XmlDocument::get_DocumentType() method was implemented.
- ((( The following syntax is no longer valid: try { Foo(); } catch (const System::Exception &e) { System::Console::WriteLine(e.get_Message()); } Instead, use the following syntax: try { Foo(); } catch (const System::Exception &e) { System::Console::WriteLine(e->get_Message()); } )))