PythonNet v3.0.0 Release Notes

Release Date: 2022-09-29 // over 3 years ago
  • What's Changed

    • 🆓 Increase ob's ref count in tp_repr to avoid accidental free by @DanBarzilian in #1160
    • 🛠 fixed crash due to a decref of a borrowed reference in params array handling by @lostmsu in #1163
    • ⬇️ Drop Python 2 support by @filmor in #1158
    • ✂ remove remoting block for .NET standard by @koubaa in #1170
    • Pybuffer by @koubaa in #1195
    • 🛠 Fix appveyor would only test the PyPI package by @amos402 in #1200
    • ✂ Remove unnecessary CheckExceptionOccurred calls by @amos402 in #1175
    • Provide more info about failuers to load CLR assemblies by @lostmsu in #1076
    • ➕ Add syntax highlighting to Python code examples in README.rst [docs] by @SFM61319 in #1208
    • ✂ Remove non-existent PInvoke functions by @amos402 in #1205
    • Bad params object[] precedence (master) by @lostmsu in #1224
    • ⬇️ drop 3.4 and 3.5 by @koubaa in #1227
    • 🚚 really remove old versions by @koubaa in #1230
    • ➕ Added a test for finalization on shutdown by @lostmsu in #1206
    • 🛠 fix compiler warning by @koubaa in #1226
    • Ensure only implementers of IEnumerable or IEnumerator are considered Iterable by @danabr in #1241
    • Select correct method to invoke when keyword arguments are used by @danabr in #1242
    • Wrap returned objects in interface if method return type is interface by @danabr in #1240
    • Non-delegate types should not be callable by @alxnull in #1247
    • 👉 Make indexers work for interface objects by @danabr in #1246
    • 👉 Make it possible to use inherited indexers by @danabr in #1248
    • ➕ Add soft shutdown by @amos402 in #958
    • 🛠 Fixed dllLocal not being initialized. by @benoithudson in #1252
    • Return interface objects when iterating over interface collections by @danabr in #1257
    • 👉 Make len work for ICollection<> interface objects by @danabr in #1253
    • 🏗 Enable Source Link and symbol package generation during build by @lostmsu in #1259
    • 🛠 Fixed polyfill for TypeBuilder.CreateType by @lostmsu in #1261
    • 🛠 fix wrongly cased Microsoft.CSHARP.Targets by @vivainio in #1271
    • Intern string by @amos402 in #1254
    • ✅ Use .NET Core 3.1 LTS for tests (instead of 2.0) by @lostmsu in #1279
    • Python 3.9 by @filmor in #1264
    • ✂ Remove deprecated implicit assembly loading by @lostmsu in #1277
    • Ensure methods of Object are also available on interface objects by @danabr in #1284
    • 🛠 Fix kwarg func resolution by @jmlidbetter in #1136
    • 👍 Allow creating new .NET arrays from Python using Array[T](dim1, dim2,…) syntax by @lostmsu in #1291
    • Detect the size of wchar_t (aka Runtime.UCS) at runtime using PyUnicode_GetMax by @lostmsu in #1298
    • TypeOffset class no longer depends on target Python version by @lostmsu in #1292
    • [Out] parameters no longer added to return tuple by @lostmsu in #1308
    • ➕ Added github actions workflow to replace travis by @lostmsu in #1307
    • 💅 Convert projects to SDK style by @filmor in #1209
    • 🐧 Test other Operating Systems than Linux via Github Actions by @filmor in #1310
    • Ensure that param-array matching works correctly by @filmor in #1304
    • ✂ Remove API warnings as these will be stabilised for 3.0 by @filmor in #1315
    • Replace custom platform handling by RuntimeInformation by @filmor in #1314
    • 🛠 Fixed CollectBasicObject test by @lostmsu in #1313
    • 🏗 Implement inplace building and develop by @filmor in #1317
    • ⬇️ Drop the long-deprecated CLR.* alias by @filmor in #1319
    • 🛠 Fix or disable warnings in Python.Runtime by @filmor in #1318
    • 🛠 Fixed segfault in ClassDerived.tp_dealloc by @lostmsu in #1330
    • 🛠 Fixed crash in finalizer of CLR types defined in Python, that survive engine shutdown by @lostmsu in #1260
    • ✅ Test for non-ASCII encoded method name by @filmor in #1329
    • 🛠 Fix illegal delegate usage by @BadSingleton in #1328
    • PyIter: do not force dispose previous object upon moving to the next one by @lostmsu in #1331
    • Incorrectly using a non-generic type with type parameters now produces a helpful Python error instead of throwing NullReferenceException by @tminka in #1326
    • Call PyErr_NormalizeException for exceptions by @slide in #1265
    • ✅ TestPythonEngineProperties.SetPythonPath avoids corrupting the module search path for later tests by @tminka in #1336
    • 🔧 ABI.Initialize gives a helpful message when the TypeOffset interop class is not configured correctly by @tminka in #1340
    • 👍 Better error messages from PyObject.AsManagedObject and DelegateManager.TrueDispatch by @tminka in #1344
    • ✅ Python tests can now be debugged by running them as embedded tests within NUnit by @tminka in #1341
    • 👍 Operator overloads support by @christabella in #1324
    • ✅ Domain reload test cases fixes by @BadSingleton in #1287
    • ➕ Add more more tests for in, out and ref parameters by @BadSingleton in #1349
    • 👌 Support comparison operators by @christabella in #1347
    • Disable implicit conversion from PyFloat to .NET integer types by @lostmsu in #1343
    • ➕ Add GetPythonThreadID and Interrupt methods in PythonEngine by @gpetrou in #1337
    • Disable implicit conversion from PyFloat to uint64 by @tminka in #1362
    • Disable implicit conversion from float to array index by @tminka in #1363
    • 👍 Better error messages for method argument mismatch and others by @tminka in #1361
    • 👌 Support ByRef arguments in event handlers by @tminka in #1364
    • 🏗 Build single Python.Runtime.dll for all platforms by @lostmsu in #1365
    • 🛠 Fix exception string by @filmor in #1360
    • ParameterInfo.Name needs to be checked for null before usage by @filmor in #1375
    • 🚀 Monthly NuGet release previews by @lostmsu in #1381
    • Sign Runtime DLL with a strong name by @gpetrou in #1382
    • 🆕 New loading based on clr_loader by @filmor in #1373
    • Simplify PyScope by delegating ownership to PyObject instance by @lostmsu in #1367
    • implement list codec by @koubaa in #1084
    • Ensure interned strings can not be referenced after InternString.Shutdown by @lostmsu in #1394
    • ✅ Made InterruptTest more robust by @lostmsu in #1393
    • Adjust static libpython detection by @filmor in #1396
    • ✂ Remove Utf8Marshaler, set PyScope base class to PyObject, added PyModule by @lostmsu in #1391
    • 👻 ImportHook cleanup + PyObject.Length exception by @lostmsu in #1400
    • Suggest to set Runtime.PythonDLL when embedding in .NET by @lostmsu in #1411
    • 👍 Allow GIL state debugging; require GILState to be properly disposed by @lostmsu in #1397
    • 🐧 Try libdl.so.2 on Linux before libdl.so by @lostmsu in #1425
    • PyType class, wrapper for Python types by @lostmsu in https:/...