Documentation

    Table of Content
    • CodePorting.Native Product Family
      • CodePorting.Native Cs2Cpp
        • Getting Started
          • Product Overview
          • Installation
          • Licensing
          • How to use CodePorting.Native Cs2Cpp
            • How to Use Command line to port and build Projects
            • How to Use GUI to port and build Projects
        • Developer Guide
          • Porting Simple C# Projects
            • Porting Simple Console Application
            • Porting Simple Library
            • Porting Simple NUnit Test
          • Porting Dependent C# Projects
            • Porting Dependent Console Application
            • Porting Dependent Library
            • Porting Dependent NUnit Test
          • Porting Complex C# Projects
            • How to Convert Complex C# Console Application to C++
            • How to Convert Complex C# Library to C++
            • How to Convert Complex C# NUnit Test to C++
          • What Converts to What
            • Abstract Classes
            • Auto Properties
            • Break Statements
            • Class Constructors
            • Continue Statements
            • Delegates
            • Do While Statemetns
            • Enums TypeCast
            • Enums
            • Events
            • Exceptions
            • Expected Exceptions
            • Finalizers
            • For Statements
            • ForEach Statements
            • Generic Classes
            • Generic Delegates
            • Generic Interfaces
            • Generic Methods
            • Generic Structs
            • If Statements
            • Indexers
            • Lambda Expressions
            • Methods
            • Nested Classes
            • Properties
            • Return Statements
            • Simple Class
            • Simple Interface
            • Simple Struct
            • Simple Test
            • Standard TypeCast
            • Static Class
            • Static Constructor
            • Static-Methods
            • Static Properties
            • Switch Statements
            • Test with Setup Methods
            • Throw Statements
            • Try Catch Finally Statements
            • Try Catch Statements
            • Try Finally Statements
            • Var Expressions
            • Virtual Methods
            • While Statements
          • CodePorting.Native Cs2Cpp Attributes
          • CodePorting.Native Cs2Cpp Configuration File
            • CodePorting.Native Cs2Cpp Configuration File Structure
            • Attributes in Configuration file
            • Configuration file Nodes
            • Configuration file Options
          • Memory Management Model
            • Using aliasing constructor to create a smart pointer
          • Cmake Support
          • Limitations and Bugs
            • Porter Limitations and Bugs
            • Library Limitations and Bugs
            • Cpp Code Injection
        • Release Notes
          • 2020
            • CodePorting.Native Cs2Cpp 20.11
            • CodePorting.Native Cs2Cpp 20.12
            • CodePorting.Native Cs2Cpp 20.10
            • CodePorting.Native Cs2Cpp 20.9
            • CodePorting.Native Cs2Cpp 20.8
            • CodePorting.Native Cs2Cpp 20.7
            • CodePorting.Native Cs2Cpp 20.6
            • CodePorting.Native Cs2Cpp 20.5
            • CodePorting.Native Cs2Cpp 20.4
            • CodePorting.Native Cs2Cpp 20.3
            • CodePorting.Native Cs2Cpp 20.2
            • CodePorting.Native Cs2Cpp 20.1
          • 2021
            • CodePorting.Native Cs2Cpp 21.1
          • 2018
            • CodePorting.Native Cs2Cpp 18.9
            • CodePorting.Native Cs2Cpp 18.9.1
            • CodePorting.Native Cs2Cpp 18.10
            • CodePorting.Native Cs2Cpp 18.11
            • CodePorting.Native Cs2Cpp 18.12
          • 2019
            • CodePorting.Native Cs2Cpp 19.1
            • CodePorting.Native Cs2Cpp 19.2
            • CodePorting.Native Cs2Cpp 19.3
            • CodePorting.Native Cs2Cpp 19.4
            • CodePorting.Native Cs2Cpp 19.4.1
            • CodePorting.Native Cs2Cpp 19.5
            • CodePorting.Native Cs2Cpp 19.6
            • CodePorting.Native Cs2Cpp 19.7
            • CodePorting.Native Cs2Cpp 19.8
            • CodePorting.Native Cs2Cpp 19.9
            • CodePorting.Native Cs2Cpp 19.10
            • CodePorting.Native Cs2Cpp 19.11
            • CodePorting.Native Cs2Cpp 19.12

    What's on this Page

      • Major Features
      • Minor fixes
      • Full List of Issues Covering all Changes in this Release
      • Public API and Backward Incompatible Changes
    1. Home
    2. CodePorting.Native Product Family
    3. CodePorting.Native Cs2Cpp
    4. Release Notes
    5. 2019
    6. CodePorting.Native Cs2Cpp 19.8

    Major Features

    1. Multiple fixes were applied to System::Drawing subsystem to make it behave more in line with .Net implementation.
    2. Globalization data was improved for better reproduction of .Net behavior.
    3. Exception classes are no longer translated as value types. Thus, exception type trimming issue is resolved.

    Minor fixes

    1. ‘~/~/CPPCODE’ syntax behavior is fixed for the functions with no statements in the body.
    2. Generation of ‘static_cast(0)’ and alike code caused by recent type system changes was fixed.
    3. Porter crash caused by recent type system changes was fixed.
    4. GraphicsPath::get_PathTypesImpl() function was fixed when called with NaN arguments.
    5. Path::IsPathRooted() behavior is put in line with such of CoreFX.
    6. Graphics::MeasureCharacterRanges method was improved to behave like .Net version does.
    7. Multi-page tiff support was added.
    8. Used Skia version was updated.
    9. DateTime to String conversion using custom formats was fixed.
    10. Region::Intersect() is fixed for two similar regions.
    11. OutOfMemory exception was fixed when using PathGradientBrush.
    12. Missing auto-property initializers are now generated by porter.
    13. System::IOException is replaced with proper System::IO::IOException.
    14. Default open mode is fixed for System::IO::FileStream. Also, files locking is supported on Windows.
    15. Some exceptions when loading EMF files were fixed.
    16. System::Xml::XmlElement::HasAttribute() method was fixed for some cases related to attributes from ‘http://www.w3.org/2000/xmlns/' namespace.
    17. System::Uri class’es behavior was made closer to such of .Net Core implementation.
    18. FontFamily class construction performance issues were resolved. Also, text of exceptions thrown by this class was improved. Font style recognition was supported.
    19. ‘0’ custom format specifier rounding was fixed when using ‘System::Convert’ class.
    20. Porter was fixed for the cases of complex reference hierarchy between projects.
    21. System::Drawing::Bitmap::Clone() method was fixed for some cases.
    22. Text measurement accuracy was improved on Linux.
    23. MemoryStream’s methods were fixed to throw ArgumentNullException when applicable.
    24. Documentation comments translation was fixed for some cases.
    25. Leading backslash being treated incorrectly by Path class on Linux was fixed.
    26. Library binary size was reduced on Linux.
    27. FileStream now throws proper ArgumentException if being constructed with inconsistent path.
    28. Path::AltDirectorySeparatorChar on Linux is now consistent with CoreFX behavior.
    29. CppUnknownTypeParam attribute was fixed for null comparison cases.
    30. Hyeroglyphic fonts rendering was fixed for some cases.
    31. Some misprints in code documentation were fixed.
    32. System::Drawing::Imaging::PixelFormat references were fixed for 24-bit images.
    33. SEH exceptions when getting pixels of cloned bitmap were fixed.
    34. XmlConvert::ToString(char16_t) behavior was fixed.
    35. ‘replacements’ config node was supported inside ‘documentation_comments_translation’ group.
    36. CustomLineCap scaling issues were fixed.
    37. Dashed lines phase issues were fixed.
    38. Text smoothing issues with hyeroglyphic fonts were fixed.
    39. ‘add_category_name_to_timeout_tests’ option was supported by porter.
    40. Some additional optimizations were added to library binaries.
    41. Smart pointer ownership bug caused by using ‘new’ operator during ‘MakeObject()’ call was fixed.
    42. FileStream::get_CanRead() is fixed when FileStream is created with Append mode.
    43. Porter now supports ‘DYNABIC_PORTER_ENABLE_COLOR_OUTPUT’ environment variable. When set to ‘true’, it enables porter console output coloring.
    44. 1 bit-per-pixel bitmap cloning issues were fixed.
    45. Porter is now built using VS2017. Different MSBuild version is used by porter.
    46. StreamWriter linkage issues were fixed.
    47. End-of-line symbols inconsistency in generated code was fixed.
    48. Lines of multiline log messages are no longer mixed by porter when run in multicore environment.
    49. Implicit operator translation is fixed for types defined in referenced assembly.
    50. CppLambdaPassByValue attribute was supported by porter.
    51. XmlAttribute::get_OwnerElement() was fixed for the cases of deleted owner node.
    52. XmlTextReader::ReadString behaviour was fixed.
    53. SHA512Managed class constructor no longer throws NotImplementedException.
    54. 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

    KeySummaryCategory
    PDFCPP-1010Fix ~/~/CPPCODE for empty functionTask
    SLIDESCPP-1677Implement a full-featured Graphics::MeasureCharacterRanges methodTask
    SLIDESCPP-1672Implement a solution to save a multi-page tiffTask
    SLIDESCPP-1673Check the status of tests from SLIDESCPP_1441 categoryTask
    SLIDESCPP-1690Make use of multi-page tiff support in the Aspose.Slides for C++Task
    SLIDESCPP-1713Resolve the differences in Aspose.Foundation.Zip namespaces using CsToCppPorterTask
    SLIDESCPP-1748Improve Drawing::GraphicsPath classTask
    SLIDESCPP-1744Make System::Uri class behavior closer to .NET CoreTask
    SLIDESCPP-1746Use Aspose.Slides for .NET 19.4 featuresTask
    SLIDESCPP-1765Implement Rfc2898DeriveBytes classTask
    SLIDESCPP-1790Improve accuracy of text measurement in LinuxTask
    SLIDESCPP-1805Prepare Aspose.Slides for C++ v19.5 releaseTask
    SLIDESCPP-1824Analyze exceptions found in the recent Aspose.Slides for C++ build for Linux (v19.5)Task
    CSPORTCPP-2801Switch default library optionsTask
    CSPORTCPP-2812Support CsPorter for C++Task
    TASKSCPP-1252Implement StreamWriter constructor in asposecpplibTask
    CSPORTCPP-2813Drop VS 2015-built porter supportTask
    WORDSCPP-802Implement System.Security.SecureString classTask
    SLIDESCPP-1816Use Aspose.Slides for .NET 19.6 featuresTask
    SLIDESCPP-1861Prepare examples for gif and tiff formats testingTask
    SLIDESCPP-1878Porter: Implement documentation comments replacement from external sourcesTask
    WORDSCPP-706Create globalization data tablesTask
    TASKSCPP-1260Implement XPathNavigator.SelectSingleNode(string, XmlNamespaceManager) in asposecpplibTask
    TASKSCPP-1246Implement passing local variables to lambda functions by valueTask
    TASKSCPP-1269Imlement some methods in XmlDocumentType class of asposecpplib, which are used in FunctionalTests_18_7_0/ResourceExportType_ExportFontFaceTypesTestTask
    CSPORTCPP-1987Fix Exception type trimmingTask
    SLIDESCPP-1854Porter: Improve CppUnknownTypeParam attributeEnhancement
    SLIDESCPP-1914Porter: Improve XML documentation comments replacementEnhancement
    SLIDESCPP-1852Fix text smoothing when rendered using hieroglyphic fontsEnhancement
    SLIDESCPP-1917Porter: Add an option to automatically add a category to tests with timeoutEnhancement
    PDFCPP-999Review RegressionTests_v6_3Investigation
    SLIDESCPP-1803Check if asposecpplib size can be reduced at the momentInvestigation
    SLIDESCPP-1835Analyze wrong symbol size in RegressionTests_v18_12.Render_SLIDESNET_38546 testInvestigation
    SLIDESCPP-1843Analyze wrong font style rendering issuesInvestigation
    CSPORTCPP-2789Drop static_cast and similar codeBug
    PDFCPP-1026Fix PDFNEWNET_38043 testBug
    SLIDESCPP-1678Fix RegressionTests_v19_2.SLIDESNET_40768 testBug
    SLIDESCPP-1679Fix RegressionTests_v19_1.SLIDESNET_40719 testBug
    SLIDESCPP-1694Fix Region::Intersect operation of two similar regionsBug
    SLIDESCPP-1695Fix OutOfMemory exception when using PathGradientBrushBug
    SLIDESCPP-1697Porter: Initializer is missing for auto-implemented propertiesBug
    SLIDESCPP-1708Fix ArgumentOutOfRangeException test errors In LinuxBug
    SLIDESCPP-1723Fix test BlobManagerTests.TestTempFilesFolderBug
    SLIDESCPP-1723Fix test BlobManagerTests.TestTempFilesFolderBug
    SLIDESCPP-1729Fix SEH exception with code 0xc00000fd while running Aspose.Slides.RegrTests.CppBug
    SLIDESCPP-1731Fix a failed Miscellaneous.SLIDESNET_40794 testBug
    SLIDESCPP-1739Fix a failed RegressionTests_v19_3.SLIDESNET_40862 testBug
    SLIDESCPP-1759Fix RegressionTests_v15_3.SLIDESNET_40099_Render_SLIDESNET_36259 testBug
    SLIDESCPP-1760Fix RegressionTests_v7_3.SLIDESNET_40149_Render_SLIDESNET_16801 testBug
    SLIDESCPP-1762Fix RegressionTests_v19_1.SLIDESNET_32305 testBug
    SLIDESCPP-1771Aspose.Slides library porting fails when using MSBuild 15.0Bug
    SLIDESCPP-1777Fix RegressionTests_v17_7.SLIDESNET_40154_SLIDESNET_39058_2 testBug
    SLIDESCPP-1770Fix RegressionTests_v15_11.SLIDESNET_40099_SLIDESJAVA_34245 testBug
    SLIDESCPP-1798Fix failed RegressionTests_v18_4.SLIDESNET_40135_SLIDESNET_39627 testBug
    SLIDESCPP-1809Fix a failed SvgToShapesTests.RectColorLayoutTest testBug
    SLIDESCPP-1836Fix creating a FileStream object with inconsistent pathBug
    SLIDESCPP-1844Fix value of Path::AltDirectorySeparatorChar for LinuxBug
    SLIDESCPP-1860Fix Image.PixelFormat value for 24 bit per pixel imagesBug
    SLIDESCPP-1868Fix SEH exceptions caused by getting pixels of a copied bitmapBug
    SLIDESCPP-1851Fix RegressionTests_v16_8.SLIDESNET_37734 testBug
    SLIDESCPP-1884Fix tests from OdpShapes test groupBug
    SLIDESCPP-1955Fix 1bpp bitmap cloning issueBug
    TASKSCPP-1257Incorrect porting of implicit operator usage in cross-library mode.Bug
    PDFCPP-1036Fix XmlAttribute::get_OwnerElementBug
    PDFCPP-1040fix XmlTextReader::ReadString incorrect behaviourBug
    TASKSCPP-1274Fix TestMPP14StreamDecryptor.TestCanCreateEncryptionDescriptorSHA512 testcaseBug
    WORDSCPP-817Aspose.Words for C++ Code Execution VulnerabilityBug

    Public API and Backward Incompatible Changes

    1. References to Aspose::Foundation::Zip were removed.
    2. System::DataMisalignedException class was supported.
    3. Rfc2898DeriveBytes class was implemented.
    4. CryptoStream::FlushFinalBlock() method has been added.
    5. TryParse(String, TimeSpan&) and Duration() methods are supported by TimeSpan class.
    6. Multiple changes to graphics subsystem may result in some images being rendered in a different way now.
    7. EXTERNAL_REFCOUNT feature is now disabled in debug to make behavior consistent with release version.
    8. StreamWriter::StreamWriter(const String&, bool, const EncodingPtr&, int) overload constructor was implemented.
    9. System.Security.SecureString class was implemented.
    10. HashSet::HashSet(SharedPtr) constructor was implemented.
    11. XPathNavigator::SelectSingleNode(String, SharedPtr) was implemented.
    12. Some stub classes and methods were added.
    13. XmlDocument::get_DocumentType() method was implemented.
    14. ((( 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()); } )))