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++
          • Qt support
          • 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 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
            • 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
            • Porter Limitations and Bugs
            • Library Limitations and Bugs
            • Cpp Code Injection
        • Release Notes
          • 2022
            • 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.Native Product Family
    3. CodePorting.Native Cs2Cpp
    4. Release Notes
    5. 2020
    6. CodePorting.Native Cs2Cpp 20.11

    CodePorting.Native Cs2Cpp 20.11

    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. Number formatting was improved significantly and put in line with .Net behavior.
    2. A new CppOverrideAccessModifiers attribute was supported making it possible to change access modifiers for types and entities in ported code.
    3. GetSharedMembers() method generation can now be disabled by using a new generate_get_shared_members option.
    4. A bug was fixed in ported code allowing it to use private constructors via System::MakeObject() calls. Now, only those constructors available to calling context can be used.
    5. In-type RTTI macros generation can now be disabled in porter by using a new generate_rtti_info option.
    6. A new CppInline attribute was added to make it possible moving entities implementations into headers.
    7. A new allow_using_directives_in_headers option was added to make porter generate shorter code by the price of adding using namespace directives into header code.
    8. Porter now translates extension method calls into proper static member function calls. A new extensions_as_method option was added to make it possible switching to old behavior where needed.
    9. It is now possible to control the order of types and members in output header file. To do so, one may use new CppPlaceAfter and CppPlaceBefore attributes.

    Minor Fixes

    1. Many issues were fixed within System::Xml subsystem.
    2. Redirects are now supported by HttpWebRequest implementation.
    3. Creating a font with a new style now works properly on Linux.
    4. Decimal::PrintTo() now always uses dot as a floating point delimiter.
    5. Some components of object creation controlling system were moved to a different point in code.
    6. Anti aliasing was fixed for some fonts rendering on Linux.
    7. Loading fonts from byte arrays was fixed on Linux.
    8. A new for_each_member_cycles_only porter option was added making it possible to filter output gv files so that they only contain reference loops.
    9. The sorting order of the items returned by FontFamily::get_Families now matches such in .Net.
    10. A bug was fixed in List class causing resetting contained pointers modes to default on underlying vector resize.
    11. Incorrect text cropping was fixed for EMF images.

    Please consult respective sections of our wiki for more information.

    Full List of Issues Covering all Changes in this Release

    KeySummaryCategory
    WORDSCPP-1016Fix formatting issuesBug
    CSPORTCPP-3641Porting tests for the System.XML namespaceTask
    WORDSCPP-1021Support HttpWebRequest.AllowAutoRedirect propertyNew feature
    SLIDESCPP-2599Fix creating a font with a new style (Linux)Bug
    SLIDESCPP-2586Porter: Implement mechanism that allows public classes be inherited from internal interfacesNew feature
    WORDSCPP-1009Port Console.Write() and Console.WriteLine() calls using standart C++ stream-based I/OMew feature
    CSPORTCPP-1049Move constructor self references and leakage detection to MakeObject() levelEnhancement
    WORDSCPP-1023Disable GetSharedMembers() generationNew feature
    CSPORTCPP-1387Fix all constructors being effectively publicBug
    WORDSCPP-1025Disable RTTI generationNew feature
    SLIDESCPP-2572Fix RegressionTests_v16_5.SLIDESJAVA_35418 text (Linux)Bug
    SLIDESCPP-2616Fix using fonts from streams in LinuxBug
    WORDSCPP-1026Add porter attribute CppInlineAttributeNew feature
    WORDSCPP-1028Use "using namespace NNN;" expressions in header filesNew feature
    WORDSCPP-1024Add support for general extension methodsNew feature
    SLIDESCPP-2609Fix RegressionTests_v20_9.SLIDESNET_39715 testBug
    WORDSCPP-1030Add porter attribute CppDisableAutoReorderingAttributeNew feature
    WORDSCPP-1031Add porter attribute to change class/struct/enum order in header filesNew feature
    PDFCPP-1453Environment::get_WorkingSet implementationNew feature
    WORDSCPP-1033Add porter attributes to change members order within a classNew feature
    EMAILCPP-256HttpClientHandler Timeout error not detectedBug
    CSPORTCPP-3853Fix defaulting SmartPtr mode on container resizeBug
    SLIDESCPP-2637Incorrect text cropping on the EMF imageBug

    Public API and Backward Incompatible Changes

    1. When instantiating ported classes using non-public constructors, member function MakeObject with corresponding parameters should be used instead of System::MakeObject().
    2. A stub for System::Security::Cryptography::RandomNumberGenerator::Create() was added.
    3. Environment::get_WorkingSet() method was implemented, and its signature was brought in line with .Net version.