Documentation

    Table of Content
    • CodePorting.Translator Product Family
      • CodePorting.Translator Cs2Cpp
        • Getting Started
          • Product Overview
          • Installation
          • Licensing
          • How to use CodePorting.Translator Cs2Cpp
            • How to Use Command line to translate and build Projects
            • How to Use GUI to translate and build Projects
        • Developer Guide
          • Translating Simple C# Projects
            • Translating Simple Console Application
            • Translating Simple Library
            • Translating Simple NUnit Test
          • Translating Dependent C# Projects
            • Translating Dependent Console Application
            • Translating Dependent Library
            • Translating Dependent NUnit Test
          • Qt support
          • Translating 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
            • AbstractClasses
            • BreakStatements
            • ClassAutoProperties
            • ClassConstructors
            • ClassEvents
            • ClassFinalizers
            • ClassGenericMethods
            • ClassIndexers
            • ClassMethods
            • ClassProperties
            • ClassStaticConstructor
            • ClassStaticMethods
            • ClassStaticProperties
            • ClassVirtualMethods
            • ContinueStatements
            • Delegates
            • DoWhileStatements
            • Enums
            • EnumTypeCast
            • Exceptions
            • ExpectedException
            • ForeachStatements
            • ForeachStatementsStd
            • ForStatements
            • GenericClasses
            • GenericDelegates
            • GenericInterfaces
            • GenericStructs
            • IfStatements
            • LambdaExpressions
            • NestedClasses
            • ReturnStatements
            • SimpleClass
            • SimpleInterface
            • SimpleStruct
            • SimpleTest
            • StandardTypeCast
            • StaticClass
            • SwitchStatements
            • TestWithSetupMethods
            • ThrowStatements
            • TryCatchFinallyStatements
            • TryCatchStatements
            • TryFinallyStatements
            • VarExpressions
            • WhileStatements
          • CodePorting Translator Cs2Cpp Attributes
          • CodePorting Translator Cs2Cpp Configuration File
            • CodePorting.Translator Cs2Cpp Configuration File Structure
            • Attributes in Configuration file
            • Configuration file Nodes
            • Configuration file Options
          • Memory Management Model
            • Memory Management Model Description
            • Using aliasing constructor to create a smart pointer
          • Cmake Support
          • C++ code injection
          • C++ user-defined exception classes
          • Limitations and Bugs
            • Translator Limitations and Bugs
            • Library Limitations and Bugs
            • Cpp Code Injection
        • Release Notes
          • 2022
            • CodePorting.Translator Cs2Cpp 22.6
            • CodePorting.Native Cs2Cpp 22.5
            • CodePorting.Native Cs2Cpp 22.4
            • CodePorting.Native Cs2Cpp 22.3
            • CodePorting.Native Cs2Cpp 22.2
            • CodePorting.Native Cs2Cpp 22.1
          • 2021
            • CodePorting.Native Cs2Cpp 21.12
            • CodePorting.Native Cs2Cpp 21.11
            • CodePorting.Native Cs2Cpp 21.10.1
            • CodePorting.Native Cs2Cpp 21.10
            • CodePorting.Native Cs2Cpp 21.9
            • CodePorting.Native Cs2Cpp 21.8
            • CodePorting.Native Cs2Cpp 21.7
            • CodePorting.Native Cs2Cpp 21.6
            • CodePorting.Native Cs2Cpp 21.5
            • CodePorting.Native Cs2Cpp 21.4
            • CodePorting.Native Cs2Cpp 21.3
            • CodePorting.Native Cs2Cpp 21.2
            • CodePorting.Native Cs2Cpp 21.1
          • 2020
            • CodePorting.Native Cs2Cpp 20.12
            • CodePorting.Native Cs2Cpp 20.11
            • 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
          • 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
          • 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
    1. Home
    2. CodePorting.Translator Product Family
    3. CodePorting.Translator Cs2Cpp
    4. Release Notes
    5. 2021
    6. CodePorting.Native Cs2Cpp 21.10

    CodePorting.Native Cs2Cpp 21.10

    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

    Major Features

    1. Calls to the methods of System.Diagnostics.Debug are now translated into macros. This allows not performing any calculations in the Debug mode, same as in C#. The ‘alternative_debug_class’ option was supported by the porter. This option can be used to apply this behavior to other classes.
    2. Debug libraries for Linux OS are no longer included in the CodePorting.Native Cs2Cpp packages. From now on, Release CodePorting.Native Cs2Cpp Linux libraries should be linked to your code both in Debug and in Release. For CMake users, no changes are required, as the references to correct libraries will be propagated automatically. In the pre-generated build and project files on Linux OS, references to libaspose_cpp_clang3_libstdcppd.so should be replaced with libaspose_cpp_clang3_libstdcpp.so, and references to libaspose_cpp_gcc6d.so should be repalced with libaspose_cpp_gcc6.so. For Windows users, no changes are required, as both Debug and Release libraries are still supplied for VS compiler.
    3. API reference was improved for multiple classes. Usage examples were added. Some misprints were fixed.
    4. The ‘CppOverrideAccessModifier’ attribute was improved. Protected and private modes were supported, and all analysis done by the porter is now affected by this attribute.

    Minor fixes

    1. The Encoding::GetEncoding() method now throws ArgumentException if the encoding name is incorrect, same way as .Net implementation does.
    2. The memory corruption issue was fixed within the System::String::Join method.
    3. The methods of the MemoryManagement class were fixed to work properly with the arguments of the WeakPtr type.
    4. The ‘override’ qualifiers are now properly placed when the CppRenameEntity attribute is used.
    5. The bug was fixed in the porter which caused the ‘CppOverrideAccessModifier’ attribute place ‘override’ qualifier on the attributed methods.
    6. Now the ‘[]’ suffix can be used for the arrays in the in-config attributes.
    7. The bug was fixed in the porter leaving some cases of ArrayRawPointer and ConstArrayRawPointer parameter modes unrecognized in some cases.
    8. The bug was fixed in the porter affecting the ‘import’ configuration file tag sanity check.
    9. Some previously missing options were added into default porter.config file.
    10. The CppIgnoreBaseType attribute didn’t erase the related include for base class. This was fixed in the porter.
    11. The porter didn’t auto-place friend declarations when porting the classes from the System namespace. This was fixed.
    12. Some entities from non-generic System.Collections interfaces caused the porter to misplace ‘override’ qualifier in the classes that inherit these interfaces. This was fixed.
    13. Some code was moved between the porter’s assembilies. Some unrequired classes were removed.
    14. The code generated for GetSharedMembers() method was fixed.
    15. The DeflateStream class was fixed for having more than one entries being read simultaneously.
    16. The porter didn’t recognize and merge partial class declarations if non-partial types were declared in the same files. This was fixed.
    17. The System::String::StartsWith method was fixed for the strings with BOM in them.
    18. The Dns::GetHostByName method now throws proper SocketException on socket errors in non-English-cultured environments.

    Please consult respective sections of our wiki for more information.

    Full List of Issues Covering all Changes in this Release

    KeySummaryCategory
    CSPORTCPP-4518StringTestCase::JoinObjectsTest system test is failed periodicallyBug
    SLIDESCPP-3095Rework Debug.Assert translation to C++Enhancement
    CSPORTCPP-2211Drop debug library from Linux releasesTask
    CSPORTCPP-4561Fix MemoryManagement class to work with WeakPtr argumentsBug
    CSPORTCPP-4559Incorrect ‘override’ specifier placementBug
    CSPORTCPP-4563Improve MemoryManagement class documentationEnhancement
    WORDSCPP-680Add an option for porting Aspose.Debug methods as macroTask
    SLIDESCPP-3127Porter: Improve CppOverrideAccessModifier attributeEnhancement
    CSPORTCPP-4568Support CodePorting.Native Cs2CppTask
    CSPORTCPP-4596Fix check of config attributeBug
    CSPORTCPP-4576Update options default valuesEnhancement
    SLIDESCPP-3133Porter: Generation of an unnecessary #include directiveBug
    SLIDESCPP-3140Porter: Improve Debug.Assert translation when porting types from the System namespaceBug
    SLIDESCPP-2998Porter: Fix adding friend declarations for classes from System namespaceBug
    CSPORTCPP-4578Misplaced override in ported codeBug
    CSPORTCPP-4610Remove IBaseAttributeConditionTask
    CSPORTCPP-4611Refactor NRefactoryCollectionTask
    CSPORTCPP-4605Support CodePorting.Native Cs2CppTask
    CSPORTCPP-4606Tests fail with ENABLE_CYCLES_DETECTION_EXT option enabledBug
    SLIDESCPP-3148Fix RegressionTests_v21_10.SLIDESNET_42700 testBug
    PDFCPP-1687Partial classes portingBug
    SLIDESCPP-3159Fix System::String::StartsWith method behavior for strings with BOMBug
    CSPORTCPP-3867Add usage examples for system classesTask
    CSPORTCPP-4635The ‘DnsTest.TestExceptionType’ test failsBug

    Public API and Backward Incompatible Changes

    1. libaspose_cpp_clang3_libstdcppd.so and libaspose_cpp_gcc6d.so are no longer populated. If you have references to these libraries in your project or build files, please update them to use libaspose_cpp_clang3_libstdcpp.so or libaspose_cpp_gcc6.so instead.
    2. The CppAddFunctionArgument and CppPassFunctionArgument attributes are now deprecated. The ArrayRawPointer and ConstArrayRawPointer values of the CppArgumentKind attribute are also deprecated. The support of these will be removed in the next version of CodePorting.Native Cs2Cpp.