CodePorting.Native Cs2Cpp 20.11
Major Features
- Number formatting was improved significantly and put in line with .Net behavior.
- A new CppOverrideAccessModifiers attribute was supported making it possible to change access modifiers for types and entities in ported code.
- GetSharedMembers() method generation can now be disabled by using a new generate_get_shared_members option.
- 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.
- In-type RTTI macros generation can now be disabled in porter by using a new generate_rtti_info option.
- A new CppInline attribute was added to make it possible moving entities implementations into headers.
- 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.
- 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.
- 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
- Many issues were fixed within System::Xml subsystem.
- Redirects are now supported by HttpWebRequest implementation.
- Creating a font with a new style now works properly on Linux.
- Decimal::PrintTo() now always uses dot as a floating point delimiter.
- Some components of object creation controlling system were moved to a different point in code.
- Anti aliasing was fixed for some fonts rendering on Linux.
- Loading fonts from byte arrays was fixed on Linux.
- 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.
- The sorting order of the items returned by FontFamily::get_Families now matches such in .Net.
- A bug was fixed in List class causing resetting contained pointers modes to default on underlying vector resize.
- 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
Key | Summary | Category |
---|---|---|
WORDSCPP-1016 | Fix formatting issues | Bug |
CSPORTCPP-3641 | Porting tests for the System.XML namespace | Task |
WORDSCPP-1021 | Support HttpWebRequest.AllowAutoRedirect property | New feature |
SLIDESCPP-2599 | Fix creating a font with a new style (Linux) | Bug |
SLIDESCPP-2586 | Porter: Implement mechanism that allows public classes be inherited from internal interfaces | New feature |
WORDSCPP-1009 | Port Console.Write() and Console.WriteLine() calls using standart C++ stream-based I/O | Mew feature |
CSPORTCPP-1049 | Move constructor self references and leakage detection to MakeObject() level | Enhancement |
WORDSCPP-1023 | Disable GetSharedMembers() generation | New feature |
CSPORTCPP-1387 | Fix all constructors being effectively public | Bug |
WORDSCPP-1025 | Disable RTTI generation | New feature |
SLIDESCPP-2572 | Fix RegressionTests_v16_5.SLIDESJAVA_35418 text (Linux) | Bug |
SLIDESCPP-2616 | Fix using fonts from streams in Linux | Bug |
WORDSCPP-1026 | Add porter attribute CppInlineAttribute | New feature |
WORDSCPP-1028 | Use "using namespace NNN;" expressions in header files | New feature |
WORDSCPP-1024 | Add support for general extension methods | New feature |
SLIDESCPP-2609 | Fix RegressionTests_v20_9.SLIDESNET_39715 test | Bug |
WORDSCPP-1030 | Add porter attribute CppDisableAutoReorderingAttribute | New feature |
WORDSCPP-1031 | Add porter attribute to change class/struct/enum order in header files | New feature |
PDFCPP-1453 | Environment::get_WorkingSet implementation | New feature |
WORDSCPP-1033 | Add porter attributes to change members order within a class | New feature |
EMAILCPP-256 | HttpClientHandler Timeout error not detected | Bug |
CSPORTCPP-3853 | Fix defaulting SmartPtr mode on container resize | Bug |
SLIDESCPP-2637 | Incorrect text cropping on the EMF image | Bug |
Public API and Backward Incompatible Changes
- When instantiating ported classes using non-public constructors, member function MakeObject with corresponding parameters should be used instead of System::MakeObject().
- A stub for System::Security::Cryptography::RandomNumberGenerator::Create() was added.
- Environment::get_WorkingSet() method was implemented, and its signature was brought in line with .Net version.