I'm proud to finally release the first new major version of Python.NET in 7 years.
This is the culmination of over 2 years of work from many contributors to modernise the code base and support modern .NET and Python versions.
Highlights Support for Python 3.9 and 3.10 Support for .NET 6 Codec system to control conversions between .NET and Python objectsSingle assembly for all Python versions and operation systems (and thus also just a single wheel) Significantly simplified the build system, only requires a modern .NET SDK to build the Python package The new package is available from PyPI and Nuget, respectively. Updated documentation is available here:
https://pythonnet.github.io/pythonnet/
In particular, there is an updated Getting Started section that documents using .NET 6 (coreclr) from Python:
https://pythonnet.github.io/pythonnet/python.html#getting-started
While we tried to keep this release as backwards-compatible as possible, there are still some breaking changes. The changelog is available here:
https://github.com/pythonnet/pythonnet/blob/master/CHANGELOG.md#300---2022-09-29
What's Changed Increase ob's ref count in tp_repr to avoid accidental free by@DanBarzilian inIncrease ob's ref count in tp_repr to avoid accidental free #1160 fixed crash due to a decref of a borrowed reference in params array handling by@lostmsu infixed crash due to a decref of a borrowed reference in params array handling #1163 Drop Python 2 support by@filmor inDrop Python 2 support #1158 remove remoting block for .NET standard by@koubaa inremove remoting block for .NET standard #1170 Pybuffer by@koubaa inPybuffer #1195 Fix appveyor would only test the PyPI package by@amos402 inFix appveyor would only test the PyPI package #1200 Remove unnecessaryCheckExceptionOccurred
calls by@amos402 inRemove unnecessaryCheckExceptionOccurred
calls #1175 Provide more info about failuers to load CLR assemblies by@lostmsu inProvide more info about failuers to load CLR assemblies #1076 Add syntax highlighting to Python code examples in README.rst [docs] by@SFM61319 inAdd syntax highlighting to Python code examples in README.rst [docs] #1208 Remove non-existent PInvoke functions by@amos402 inRemove non-existent PInvoke functions #1205 Bad params object[] precedence (master) by@lostmsu inBad params object[] precedence (master) #1224 drop 3.4 and 3.5 by@koubaa indrop 3.4 and 3.5 #1227 really remove old versions by@koubaa inreally remove old versions #1230 Added a test for finalization on shutdown by@lostmsu inAdded a test for finalization on shutdown #1206 fix compiler warning by@koubaa infix compiler warning #1226 Ensure only implementers of IEnumerable or IEnumerator are considered Iterable by@danabr inEnsure only implementers of IEnumerable or IEnumerator are considered Iterable #1241 Select correct method to invoke when keyword arguments are used by@danabr inSelect correct method to invoke when keyword arguments are used #1242 Wrap returned objects in interface if method return type is interface by@danabr inWrap returned objects in interface if method return type is interface #1240 Non-delegate types should not be callable by@alxnull inNon-delegate types should not be callable #1247 Make indexers work for interface objects by@danabr inMake indexers work for interface objects #1246 Make it possible to use inherited indexers by@danabr inMake it possible to use inherited indexers #1248 Add soft shutdown by@amos402 inAdd soft shutdown #958 Fixed dllLocal not being initialized. by@benoithudson inFixed dllLocal not being initialized. #1252 Return interface objects when iterating over interface collections by@danabr inReturn interface objects when iterating over interface collections #1257 Makelen
work forICollection<>
interface objects by@danabr inMakelen
work forICollection<>
interface objects #1253 Enable Source Link and symbol package generation during build by@lostmsu inEnable Source Link and symbol package generation during build #1259 Fixed polyfill for TypeBuilder.CreateType by@lostmsu inFixed polyfill for TypeBuilder.CreateType #1261 fix wrongly cased Microsoft.CSHARP.Targets by@vivainio infix wrongly cased Microsoft.CSHARP.Targets #1271 Intern string by@amos402 inIntern string #1254 Use .NET Core 3.1 LTS for tests (instead of 2.0) by@lostmsu inUse .NET Core 3.1 LTS for tests (instead of 2.0) #1279 Python 3.9 by@filmor inPython 3.9 #1264 Remove deprecated implicit assembly loading by@lostmsu inRemove deprecated implicit assembly loading #1277 Ensure methods of Object are also available on interface objects by@danabr inEnsure methods of Object are also available on interface objects #1284 Fix kwarg func resolution by@jmlidbetter inFix kwarg func resolution #1136 Allow creating new .NET arrays from Python using Array[T](dim1, dim2,…) syntax by@lostmsu inAllow creating new .NET arrays from Python using Array[T](dim1, dim2,…) syntax #1291 Detect the size of wchar_t (aka Runtime.UCS) at runtime using PyUnicode_GetMax by@lostmsu inDetect the size of wchar_t (aka Runtime.UCS) at runtime using PyUnicode_GetMax #1298 TypeOffset class no longer depends on target Python version by@lostmsu inTypeOffset class no longer depends on target Python version #1292 [Out] parameters no longer added to return tuple by@lostmsu in[Out] parameters no longer added to return tuple #1308 Added github actions workflow to replace travis by@lostmsu inAdded github actions workflow to replace travis #1307 Convert projects to SDK style by@filmor inConvert projects to SDK style #1209 Test other Operating Systems than Linux via Github Actions by@filmor inTest other Operating Systems than Linux via Github Actions #1310 Ensure that param-array matching works correctly by@filmor inEnsure that param-array matching works correctly #1304 Remove API warnings as these will be stabilised for 3.0 by@filmor inRemove API warnings as these will be stabilised for 3.0 #1315 Replace custom platform handling by RuntimeInformation by@filmor inReplace custom platform handling by RuntimeInformation #1314 Fixed CollectBasicObject test by@lostmsu inFixed CollectBasicObject test #1313 Implement inplace building and develop by@filmor inImplement inplace building and develop #1317 Drop the long-deprecated CLR.* alias by@filmor inDrop the long-deprecated CLR.* alias #1319 Fix or disable warnings in Python.Runtime by@filmor inFix or disable warnings in Python.Runtime #1318 Fixed segfault in ClassDerived.tp_dealloc by@lostmsu inFixed segfault in ClassDerived.tp_dealloc #1330 Fixed crash in finalizer of CLR types defined in Python, that survive engine shutdown by@lostmsu inFixed crash in finalizer of CLR types defined in Python, that survive engine shutdown #1260 Test for non-ASCII encoded method name by@filmor inTest for non-ASCII encoded method name #1329 Fix illegal delegate usage by@BadSingleton inFix illegal delegate usage #1328 PyIter: do not force dispose previous object upon moving to the next one by@lostmsu inPyIter: do not force dispose previous object upon moving to the next one #1331 Incorrectly using a non-generic type with type parameters now produces a helpful Python error instead of throwing NullReferenceException by@tminka inIncorrectly using a non-generic type with type parameters now produces a helpful Python error instead of throwing NullReferenceException #1326 Call PyErr_NormalizeException for exceptions by@slide inCall PyErr_NormalizeException for exceptions #1265 TestPythonEngineProperties.SetPythonPath avoids corrupting the module search path for later tests by@tminka inTestPythonEngineProperties.SetPythonPath avoids corrupting the module search path for later tests #1336 ABI.Initialize gives a helpful message when the TypeOffset interop class is not configured correctly by@tminka inABI.Initialize gives a helpful message when the TypeOffset interop class is not configured correctly #1340 Better error messages from PyObject.AsManagedObject and DelegateManager.TrueDispatch by@tminka inBetter error messages from PyObject.AsManagedObject and DelegateManager.TrueDispatch #1344 Python tests can now be debugged by running them as embedded tests within NUnit by@tminka inPython tests can now be debugged by running them as embedded tests within NUnit #1341 Operator overloads support by@christabella inOperator overloads support #1324 Domain reload test cases fixes by@BadSingleton inDomain reload test cases fixes #1287 Add more more tests for in, out and ref parameters by@BadSingleton inAdd more more tests for in, out and ref parameters #1349 Support comparison operators by@christabella inSupport comparison operators #1347 Disable implicit conversion from PyFloat to .NET integer types by@lostmsu inDisable implicit conversion from PyFloat to .NET integer types #1343 Add GetPythonThreadID and Interrupt methods in PythonEngine by@gpetrou inAdd GetPythonThreadID and Interrupt methods in PythonEngine #1337 Disable implicit conversion from PyFloat to uint64 by@tminka inDisable implicit conversion from PyFloat to uint64 #1362 Disable implicit conversion from float to array index by@tminka inDisable implicit conversion from float to array index #1363 Better error messages for method argument mismatch and others by@tminka inBetter error messages for method argument mismatch and others #1361 Support ByRef arguments in event handlers by@tminka inSupport ByRef arguments in event handlers #1364 Build single Python.Runtime.dll for all platforms by@lostmsu inBuild single Python.Runtime.dll for all platforms #1365 Fix exception string by@filmor inFix exception string #1360 ParameterInfo.Name needs to be checked for null before usage by@filmor inParameterInfo.Name needs to be checked for null before usage #1375 Monthly NuGet release previews by@lostmsu inMonthly NuGet release previews #1381 Sign Runtime DLL with a strong name by@gpetrou inSign Runtime DLL with a strong name #1382 New loading based on clr_loader by@filmor inNew loading based on clr_loader #1373 Simplify PyScope by delegating ownership to PyObject instance by@lostmsu inSimplify PyScope by delegating ownership to PyObject instance #1367 implement list codec by@koubaa inimplement list codec #1084 Ensure interned strings can not be referenced after InternString.Shutdown by@lostmsu inEnsure interned strings can not be referenced after InternString.Shutdown #1394 Made InterruptTest more robust by@lostmsu inMade InterruptTest more robust #1393 Adjust static libpython detection by@filmor inAdjust static libpython detection #1396 Remove Utf8Marshaler, set PyScope base class to PyObject, added PyModule by@lostmsu inRemove Utf8Marshaler, set PyScope base class to PyObject, added PyModule #1391 ImportHook cleanup + PyObject.Length exception by@lostmsu inImportHook cleanup + PyObject.Length exception #1400 Suggest to set Runtime.PythonDLL when embedding in .NET by@lostmsu inSuggest to set Runtime.PythonDLL when embedding in .NET #1411 Allow GIL state debugging; require GILState to be properly disposed by@lostmsu inAllow GIL state debugging; require GILState to be properly disposed #1397 Try libdl.so.2 on Linux before libdl.so by@lostmsu inTry libdl.so.2 on Linux before libdl.so #1425 PyType class, wrapper for Python types by@lostmsu inPyType class, wrapper for Python types #1395 Reworked Enum marshaling by@lostmsu inReworked Enum marshaling #1392 Prevent stack overflow when an encoder is registered from Python by@lostmsu inPrevent stack overflow when an encoder is registered from Python #1429 Do not callfind_libpython
duringimport clr
as Python.Runtime can find it on its own by@lostmsu inDo not callfind_libpython
duringimport clr
as Python.Runtime can find it on its own #1440 Fixed__cause__
on overload bind failure and array conversion by@lostmsu inFixed__cause__
on overload bind failure and array conversion #1442 Replace magic offsets with proper offset calculation by@lostmsu inReplace magic offsets with proper offset calculation #1441 Detect Py_TRACE_REFS at runtime and calculate object offsets accordingly by@lostmsu inDetect Py_TRACE_REFS at runtime and calculate object offsets accordingly #1426 Re-enable the domain reload tests by@BadSingleton inRe-enable the domain reload tests #1404 Dispose all temporary objects in PyCheck_Iter_PyObject_IsIterable_ThreadingLock_Test by@lostmsu inDispose all temporary objects in PyCheck_Iter_PyObject_IsIterable_ThreadingLock_Test #1456 Use PyType instances instead of raw pointers by@lostmsu inUse PyType instances instead of raw pointers #1431 Refactoring of tp_dealloc by@lostmsu inRefactoring of tp_dealloc #1459 Refactoring of tp_clear by@lostmsu inRefactoring of tp_clear #1460 Handle ProcessExit event by@lostmsu inHandle ProcessExit event #1458 Improve Python <-> .NET exception integration by@lostmsu inImprove Python <-> .NET exception integration #1134 Add a failing test for Unicode conversion by@pkese inAdd a failing test for Unicode conversion #1467 Modernize import hook by@BadSingleton inModernize import hook #1369 Fixed crash in ToArray when sequence explicitly denieslen by@lostmsu inFixed crash in ToArray when sequence explicitly denies __len__ #1484 Prevent crash during debugging when attempting to inspect PyObject by@lostmsu inPrevent crash during debugging when attempting to inspect PyObject #1483 Fixed double call toPyType_Ready
in CLR MetaType'stp_new
by@lostmsu inFixed double call toPyType_Ready
in CLR MetaType'stp_new
#1486 Create PyIter from existing PyObject by@lostmsu inCreate PyIter from existing PyObject #1482 [WIP] Add ability to create module from C# by@slide in[WIP] Add ability to create module from C# #1447 Fixed custom decoders not working for DateTime and Decimal by@lostmsu inFixed custom decoders not working for DateTime and Decimal #1497 Allow substituting base types for CLR types (as seen from Python) by@lostmsu inAllow substituting base types for CLR types (as seen from Python) #1487 Property descriptor made visible on the reflected class by@lostmsu inProperty descriptor made visible on the reflected class #1512 Validate, that custom Python base types can be inherited from by@lostmsu inValidate, that custom Python base types can be inherited from #1510 Names of .NET types changed to better support generic types by@lostmsu inNames of .NET types changed to better support generic types #1509 Dynamic arithmetic ops raise correct Python exception on failure by@lostmsu inDynamic arithmetic ops raise correct Python exception on failure #1508 Py.Import
andPyModule.Import
returnPyObject
instead ofPyModule
by@lostmsu inPy.Import
andPyModule.Import
returnPyObject
instead ofPyModule
#1530 RemoveneedsResolution
hack by@lostmsu inRemoveneedsResolution
hack #1531 Implements buffer interface for .NET arrays of primitive types by@lostmsu inImplements buffer interface for .NET arrays of primitive types #1511 Call tp_clear of base unmanaged type by@lostmsu inCall tp_clear of base unmanaged type #1541 Allow decoders affectPyObject.As<object>()
by@lostmsu inAllow decoders affectPyObject.As<object>()
#1546 Added workaround for warning inthreading
module afterTestInterrupt
by@lostmsu inAdded workaround for warning inthreading
module afterTestInterrupt
#1560 ClassManager
illegally decrefedClassObject
's refcount on shutdown by@lostmsu inClassManager
illegally decrefedClassObject
's refcount on shutdown #1563 Ensure tests, that need runningPythonEngine
have similarSetUp
andTearDown
by@lostmsu inEnsure tests, that need runningPythonEngine
have similarSetUp
andTearDown
#1564 Allow decoding instanceless exceptions by@lostmsu inAllow decoding instanceless exceptions #1544 Do not cleantpHandle
inClassBase.tp_clear
- it might be used intp_dealloc
by@lostmsu inDo not cleantpHandle
inClassBase.tp_clear
- it might be used intp_dealloc
#1566 Mixins for standard collections that implementcollections.abc
interfaces by@lostmsu inMixins for standard collections that implementcollections.abc
interfaces #1543 Allow Python to overwrite .NET methods by@lostmsu inAllow Python to overwrite .NET methods #1545 SimplifyDispatcher
by@lostmsu inSimplifyDispatcher
#1559 Simplify assemblyResolveHandler
, and use official assembly name parsing by@lostmsu inSimplify assemblyResolveHandler
, and use official assembly name parsing #1570 Disable implicit conversions that might lose information by@lostmsu inDisable implicit conversions that might lose information #1568 Minor fixup for no autoconversions PR by@lostmsu inMinor fixup for no autoconversions PR #1574 FixedFileLoadException
when tryingclr.AddReference('/full/path.dll')
by@lostmsu inFixedFileLoadException
when tryingclr.AddReference('/full/path.dll')
#1573 RaiseBadPythonDllException
instead of confusingTypeLoadException
whenPythonDLL
was not configured properly by@lostmsu inRaiseBadPythonDllException
instead of confusingTypeLoadException
whenPythonDLL
was not configured properly #1577 Cleaning up public API by@lostmsu inCleaning up public API #1557 PyScope
/PyModule
API cleanup by@lostmsu inPyScope
/PyModule
API cleanup #1569 name andsignature for .NET methods by@lostmsu in__name__ and __signature__ for .NET methods #1133 When reflecting nested types, ensure their correspondingPyType
is allocated by@lostmsu inWhen reflecting nested types, ensure their correspondingPyType
is allocated #1579 SaferGetAttr(name, default)
by@lostmsu inSaferGetAttr(name, default)
#1578 ExposePyType.Get
by@lostmsu inExposePyType.Get
#1581 Allow user-created instances ofPySequence
andPyIterable
by@lostmsu inAllow user-created instances ofPySequence
andPyIterable
#1580 Changed signature ofIPyObjectDecoder.CanDecode
by@lostmsu inChanged signature ofIPyObjectDecoder.CanDecode
#1583 Disabledfloat
andbool
implicit conversions by@lostmsu inDisabledfloat
andbool
implicit conversions #1584 Remove a deprecated attribute in PropertyObject by@BadSingleton inRemove a deprecated attribute in PropertyObject #1595 Python 3.10 by@filmor inPython 3.10 #1591 Make .NET objects that have__call__
method callable from Python by@lostmsu inMake .NET objects that have__call__
method callable from Python #1589 Fixed recursive dependency in clr module initialization by@lostmsu inFixed recursive dependency in clr module initialization #1602 Include README.md into NuGet package by@lostmsu inInclude README.md into NuGet package #1599 Remove unusedPythonMethodAttribute
by@lostmsu inRemove unusedPythonMethodAttribute
#1609 Track Runtime run number by@lostmsu inTrack Runtime run number #1074 Use .NET 6.0 LTS and C# 10 by@lostmsu inUse .NET 6.0 LTS and C# 10 #1620 Update NonCopyableAnalyzer to latest version with our changes upstreamed by@lostmsu inUpdate NonCopyableAnalyzer to latest version with our changes upstreamed #1624 Use new references by@lostmsu inUse new references #1603 Fixed all warnings except explicit ones by@lostmsu inFixed all warnings except explicit ones #1635 Match generic and private methods upon runtime reload by@lostmsu inMatch generic and private methods upon runtime reload #1637 Require newest available clr-loader by@filmor inRequire newest available clr-loader #1643 Fix the PyGILState_STATE type by@filmor inFix the PyGILState_STATE type #1645 Fix warning regarding undefinedmodule on GC Offset Base by@filmor inFix warning regarding undefined __module__ on GC Offset Base #1646 RemovedShutdownMode
. Now always behaves like originalReload
by@lostmsu inRemovedShutdownMode
. Now always behaves like originalReload
#1638 When process is exiting, there's no need to save live .NET objects by@lostmsu inWhen process is exiting, there's no need to save live .NET objects #1648 MovedPy
class into its own file by@lostmsu inMovedPy
class into its own file #1649 Added a regression test for calling base method from nested class by@lostmsu inAdded a regression test for calling base method from nested class #1652 Fixed accessing partially overriden properties from Python by@lostmsu inFixed accessing partially overriden properties from Python #1650 Reworked the way .NET objects are constructed from Python by@lostmsu inReworked the way .NET objects are constructed from Python #1651 Improved support for generic method overloading by@lostmsu inImproved support for generic method overloading #1657 Use Delegates to access Py_NoSiteFlag by@lostmsu inUse Delegates to access Py_NoSiteFlag #1659 Provide__int__
instance method on enum types to supportint(Enum.Member)
by@lostmsu inProvide__int__
instance method on enum types to supportint(Enum.Member)
#1661 CleanupPyBuffer
a bit by@lostmsu inCleanupPyBuffer
a bit #1662 Support for byref parameters when overriding .NET methods from Python by@lostmsu inSupport for byref parameters when overriding .NET methods from Python #1663 Performance tests with baseline from Pypi by@filmor inPerformance tests with baseline from Pypi #1667 Move code to subdirectories and rename or split up by@filmor inMove code to subdirectories and rename or split up #1665 Added ARM64 CI action by@lostmsu inAdded ARM64 CI action #1669 Only run CI on pushes to master and on all pull requests by@filmor inOnly run CI on pushes to master and on all pull requests #1670 Temporary fix method binder for out parameters by@eirannejad inTemporary fix method binder for out parameters #1672 Added todo note to ensure CLA is signed by@eirannejad inAdded todo note to ensure CLA is signed #1674 Add tests for exception leaking. by@BadSingleton inAdd tests for exception leaking. #1679 We can drop the import hack as we are now using the newer import mechanics by@filmor inWe can drop the import hack as we are now using the newer import mechanics #1686 Update CHANGELOG.md by@nobbi1991 inUpdate CHANGELOG.md #1690 Allow dynamicPyObject
conversion toIEnumerable
by@lostmsu inAllow dynamicPyObject
conversion toIEnumerable
#1697 add GitHub URL for PyPi by@andriyor inadd GitHub URL for PyPi #1708 Make methods ofPyObject
inherited from its base .NET classes GIL-safe by@lostmsu inMake methods ofPyObject
inherited from its base .NET classes GIL-safe #1711 Support forBigInteger
(C#) <->PyInt
by@lostmsu inSupport forBigInteger
(C#) <->PyInt
#1710 On shutdown from Python release all slot holders by@lostmsu inOn shutdown from Python release all slot holders #1712 Clear weakref list when reflected object is destroyed by@lostmsu inClear weakref list when reflected object is destroyed #1758 Clear weak reference list when an extension type is destroyed by@lostmsu inClear weak reference list when an extension type is destroyed #1761 Fix layout ofNativeTypeSpec
on 32 bit platforms by@lostmsu inFix layout ofNativeTypeSpec
on 32 bit platforms #1765 Implement IConvertible on PyObject by@filmor inImplement IConvertible on PyObject #1762 Ensure that codec tests are run by@filmor inEnsure that codec tests are run #1763 Fix decimal default parameters by@filmor inFix decimal default parameters #1773 Work around potential Mono bug, that hangs the runtime when new threads start by@lostmsu inWork around potential Mono bug, that hangs the runtime when new threads start #1779 Miscellaneous fixes and cleanups by@filmor inMiscellaneous fixes and cleanups #1760 Fix enum codec by@filmor inFix enum codec #1621 Disallow runtime shutdown when the Python error indicator is set by@lostmsu inDisallow runtime shutdown when the Python error indicator is set #1780 Multiple fixes related to Dictionary.Keys bug by@lostmsu inMultiple fixes related to Dictionary.Keys bug #1786 Drop Python 3.6 support by@filmor inDrop Python 3.6 support #1795 Move to modern setuptools with pyproject.toml by@filmor inMove to modern setuptools with pyproject.toml #1793 Min
/MaxSupportedVersion
andIsSupportedVersion
onPythonEngine
by@filmor inMin
/MaxSupportedVersion
andIsSupportedVersion
onPythonEngine
#1799 Min
/MaxSupportedVersion
andIsSupportedVersion
onPythonEngine
by@lostmsu inMin
/MaxSupportedVersion
andIsSupportedVersion
onPythonEngine
#1798 Add explicit tests for vararg call by@filmor inAdd explicit tests for vararg call #1805 Fix demo scripts by@filmor inFix demo scripts #1802 fixed ForbidPythonThreadsAttribute being ignored in certain scenarios by@filmor infixed ForbidPythonThreadsAttribute being ignored in certain scenarios #1815 Add test for enum int conversion by@filmor inAdd test for enum int conversion #1811 Implement configuring clr from environment by@filmor inImplement configuring clr from environment #1817 Take GIL when checking if error occurred on shutdown by@filmor inTake GIL when checking if error occurred on shutdown #1836 Fix (U)IntPtr construction by@filmor inFix (U)IntPtr construction #1861 Fix string construction by@filmor inFix string construction #1862 Fix docstring for directly constructed types by@filmor inFix docstring for directly constructed types #1865 Fixed a leak inNewReference.Move
by@lostmsu inFixed a leak inNewReference.Move
#1873 Add XML docs to NuGet by@lostmsu inAdd XML docs to NuGet #1878 Mention the need forInitialize
andBeginAllowThreads
in the README by@lostmsu inMention the need forInitialize
andBeginAllowThreads
in the README #1897 Disabled implicit seq to array conversion by@lostmsu inDisabled implicit seq to array conversion #1902 Explicit float and int conversion for builtin types by@filmor inExplicit float and int conversion for builtin types #1904 Fill nb_index slot for integer types by@filmor inFill nb_index slot for integer types #1907 Fixed use of the process handle after Process instance is garbage collected by@lostmsu inFixed use of the process handle after Process instance is garbage collected #1940 Fixed new line character at the end of informational version by@lostmsu inFixed new line character at the end of informational version #1941 Enabled test for NoStackOverflowOnSystemType by@lostmsu inEnabled test for NoStackOverflowOnSystemType #1943 Config-less CoreCLR and improved runtime load message by@filmor inConfig-less CoreCLR and improved runtime load message #1942 Implicit float conversion in function calls by@filmor inImplicit float conversion in function calls #1908 Documentation by@filmor inDocumentation #1863 New Contributors Full Changelog :v2.5.2...v3.0.0
This discussion was created from the releaseRelease 3.0.0 .