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.12

    CodePorting.Native Cs2Cpp 21.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

    Major Features

    1. The compilation issues with GCC 10.0 and Clang 13.0 were fixed across our headers and in the generated code.
    2. The performance of the Stream and TextWriter methods was improved. The methods of these classes no longer copy the smart pointers that are passed to them. The API for these classes and their subclasses was changed accordingly.
    3. The System::Collections::Generic::IEnumerable<T>::get_Current() method now returns const references to pointers and strings to avoid the copying where possible. This increases the performance. The porter avoids returning reference to the temporary variables by generating service code which assigns such temporary values to enumerator’s field. The CppDisableEnumeratorCurrentValueHolder and CppEmitEnumeratorCurrentValueHolder attributes and the emit_enumerator_current_value_holder option were introduced. They can be used to impose manual control over such behavior.
    4. The packaging scheme for the Linux OS was changed. The single CodePorting.Native.Cs2Cpp_x86_64_libstdcpp_21.12.zip package is now provided instead of compiler-specific versions. The single libaspose_cpp_x86_64_libstdcpp_libc2.23.so library should now be used with any compiler on the Linux OS.

    Minor fixes

    1. The exceptions thrown by the Socket and Dns classes were improved.
    2. The class_ptr_alias option was supported by the porter. For each public class, the porter generates Ptr member type which is an alias to the smart pointer for this class when this option is enabled.
    3. The code of Array::CopyTo() and ArrayView::CopyTo() methods was simplified.
    4. The overloads were added to RandomNumberGenerator and RNGCryptoServiceProvider methods that work with ArrayView and StackArray instead of ArrayPtr.
    5. The access violation was fixed in the HttpWebResponse::GetResponseHeader() method.
    6. The HMACSHA512 class was implemented.
    7. The porter no longer generates unwanted ToString() calls when translating the additional test failure message.
    8. The porter no longer generates unwanted forward declarations when translating the generic delegates.
    9. More usage examples were added to the API reference.
    10. The indentation was fixed in the generated code for the member initializers.
    11. The conditions of generating the SetTemplateWeakPtr() method were fixed.
    12. Unwanted Boost symbols are no longer exported from Linux builds.
    13. The System::String to std::*string conversion operators were moved to the string.h header.
    14. The memory management issue was fixed inside the System::String::Join() method.
    15. The force_const_ref_return_type_simple_properties porter option was improved. When it is enabled, the porter generated incorrect code for the properties where the property type didn’t match the type of the field being returned. This was fixed. Also, this option now supports the properties with more than one return statement and with the field of the field (of the field, and so on) being returned. Previously, only a single return statement with this class’es fields were supported.
    16. The bug was fixed in the porter. The overload methods with iostream-like arguments were ill-formed in case of non-void return types. This was fixed.

    Full List of Issues Covering all Changes in this Release

    KeySummaryCategory
    EMAILCPP-316Prepearing Aspose.Email for C++ Release 21.10Task
    CSPORTCPP-4689Review code changesTask
    CSPORTCPP-3916Upgrade Linux compilersTask
    SLIDESCPP-3177Improve System::IO::Stream class performanceEnhancement
    SLIDESCPP-3178Improve System::IO::TextWriter class pefrormanceEnhancement
    CSPORTCPP-4730Remove redundant forward declarations for delegatesEnhancement
    CSPORTCPP-3867Add usage examples for system classesNew feature
    CSPORTCPP-4731Fix styling for constructor initializer listEnhancement
    CSPORTCPP-4732Fix bug with SetTemplateWeakPtrBug
    WORDSCPP-1140lld linker reports ld.lld: warning: found local symbolBug
    CSPORTCPP-4634Unify Linux packagesTask
    TASKSCPP-1681Enhance force_const_ref_return_type_simple_properties porter option appliance.Enhancement
    TASKSCPP-1682Avoid CODEPORTING_CURRENT_RETTYPE macro usage in library and ported codeEnhancement
    PDFCPP-1732Add support to RandomNumberGenerator and depended classesTask
    BARCODECPP-478Add fixes to Metered License supportTask

    Public API and Backward Incompatible Changes

    1. The get_Current method of the IEnumerable class and its inheritors now returns the value by reference instead of returning by value when a collection stores reference types or strings. The implementations of this method should be updated where applicable.
    2. Methods of Stream, TextWriter and their inheritor classes now accept arguments by const reference instead of copying pointers. The overriding methods should be updated where applicable.
    3. The suffix of the library built for Linux OS was changed. Now the code built using any compiler should be linked against libaspose_cpp_x86_64_libstdcpp_libc2.23.so. libaspose_cpp_gcc6.so and libaspose_cpp_clang3_libstdcpp.so are no longer provided.
    4. The supported glibc version may be changed in the upcoming releases.
    5. The new implementation of the classes that belong to the System::Xml namespace will be provided in one of the upcoming releases. Minor API changes are to be expected.
    6. The new IEnumerable-level iterators and iterators for collections with duck typing will be introduced in one of the upcoming releases. The code which is dependent on EnumeratorBasedIterator or DuckTypedIterator may require some changes.
    7. The CODEPORTING_CURRENT_RETTYPE macro was deprecated. It will be removed in one of the upcoming releases.