Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-numba for openSUSE:Factory checked in at 2026-04-25 21:37:58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-numba (Old) and /work/SRC/openSUSE:Factory/.python-numba.new.11940 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-numba" Sat Apr 25 21:37:58 2026 rev:59 rq:1349199 version:0.65.1 Changes: -------- --- /work/SRC/openSUSE:Factory/python-numba/python-numba.changes 2026-04-07 16:51:57.188103644 +0200 +++ /work/SRC/openSUSE:Factory/.python-numba.new.11940/python-numba.changes 2026-04-25 21:42:30.442374443 +0200 @@ -1,0 +2,11 @@ +Sat Apr 25 08:30:44 UTC 2026 - Dirk Müller <[email protected]> + +- update to 0.65.1: + * Python 3.14.4 changed interpreter internals Numba relied on for + ``sys.monitoring`` + The feature is disabled from 3.14.4 onward; + ``NUMBA_ENABLE_SYS_MONITORING`` has no + effect and a ``UserWarning`` will be emitted if this variable is + set to a non-zero value. + +------------------------------------------------------------------- Old: ---- numba-0.65.0.tar.gz New: ---- numba-0.65.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-numba.spec ++++++ --- /var/tmp/diff_new_pack.ok5F48/_old 2026-04-25 21:42:31.150403356 +0200 +++ /var/tmp/diff_new_pack.ok5F48/_new 2026-04-25 21:42:31.154403520 +0200 @@ -54,7 +54,7 @@ %endif %endif Name: python-numba%{?psuffix} -Version: 0.65.0 +Version: 0.65.1 Release: 0 Summary: NumPy-aware optimizing compiler for Python using LLVM License: BSD-2-Clause ++++++ numba-0.65.0.tar.gz -> numba-0.65.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/numba-0.65.0/PKG-INFO new/numba-0.65.1/PKG-INFO --- old/numba-0.65.0/PKG-INFO 2026-04-01 02:29:09.891693800 +0200 +++ new/numba-0.65.1/PKG-INFO 2026-04-24 00:28:43.700457000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.4 Name: numba -Version: 0.65.0 +Version: 0.65.1 Summary: compiling Python code using LLVM Home-page: https://numba.pydata.org License: BSD diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/numba-0.65.0/docs/source/developer/sys_monitoring.rst new/numba-0.65.1/docs/source/developer/sys_monitoring.rst --- old/numba-0.65.0/docs/source/developer/sys_monitoring.rst 2026-04-01 02:27:58.000000000 +0200 +++ new/numba-0.65.1/docs/source/developer/sys_monitoring.rst 2026-04-24 00:27:50.000000000 +0200 @@ -7,6 +7,11 @@ versions of Python may behave differently. It is however hoped that most of the concepts herein will remain relevant. +.. note:: From Python 3.14.4 onward the dispatcher behaviour described below is + disabled (`#10538 <https://github.com/numba/numba/issues/10538>`_). + ``NUMBA_ENABLE_SYS_MONITORING`` has no effect on those versions and a + ``UserWarning`` is emitted if this variable is set to a non-zero value. + Python 3.12 introduced a new monitoring system under ``sys.monitoring``. This system lets users monitor a selection of events that may be interesting for e.g. performance profiling or debugging purposes. Event monitoring is set "per tool", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/numba-0.65.0/docs/source/reference/envvars.rst new/numba-0.65.1/docs/source/reference/envvars.rst --- old/numba-0.65.0/docs/source/reference/envvars.rst 2026-04-01 02:27:58.000000000 +0200 +++ new/numba-0.65.1/docs/source/reference/envvars.rst 2026-04-24 00:27:50.000000000 +0200 @@ -181,6 +181,12 @@ Only available for Python 3.12 and above. Otherwise, it has no effect. + It also has no effect on Python 3.14.4 and newer: dispatcher support for + ``sys.monitoring`` is disabled, see this issue for more details + (`#10538 <https://github.com/numba/numba/issues/10538>`_). A + ``UserWarning`` is emitted if this variable is set to a + non-zero value. + .. envvar:: NUMBA_ENABLE_PROFILING Enables JIT events of LLVM in order to support profiling of jitted functions. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/numba-0.65.0/docs/source/release/0.65.1-notes.rst new/numba-0.65.1/docs/source/release/0.65.1-notes.rst --- old/numba-0.65.0/docs/source/release/0.65.1-notes.rst 1970-01-01 01:00:00.000000000 +0100 +++ new/numba-0.65.1/docs/source/release/0.65.1-notes.rst 2026-04-24 00:27:50.000000000 +0200 @@ -0,0 +1,27 @@ +Version 0.65.1 (23 April 2026) +============================== + +This is a patch release of Numba that disables JIT ``sys.monitoring`` integration +on Python 3.14.4 and later (`#10538 <https://github.com/numba/numba/issues/10538>`_). + +Changes +~~~~~~~ + +Disable JIT ``sys.monitoring`` on Python 3.14.4 and later +--------------------------------------------------------- + +Python 3.14.4 changed interpreter internals Numba relied on for +``sys.monitoring`` (`#10538 <https://github.com/numba/numba/issues/10538>`_). +The feature is disabled from 3.14.4 onward; ``NUMBA_ENABLE_SYS_MONITORING`` has no +effect and a ``UserWarning`` will be emitted if this variable is set to a non-zero value. + +(`PR-#10547 <https://github.com/numba/numba/pull/10547>`_) + +Pull-Requests: + +* PR `#10547 <https://github.com/numba/numba/pull/10547>`_: Disable `NUMBA_ENABLE_SYS_MONITORING` on python 3.14.4+ (`swap357 <https://github.com/swap357>`_) +* PR `#10562 <https://github.com/numba/numba/pull/10562>`_: Cherry pick and changelog update for 0.65.1 (`swap357 <https://github.com/swap357>`_) + +Authors: + +* `swap357 <https://github.com/swap357>`_ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/numba-0.65.0/docs/source/user/installing.rst new/numba-0.65.1/docs/source/user/installing.rst --- old/numba-0.65.0/docs/source/user/installing.rst 2026-04-01 02:27:58.000000000 +0200 +++ new/numba-0.65.1/docs/source/user/installing.rst 2026-04-24 00:27:50.000000000 +0200 @@ -245,6 +245,9 @@ +----------++--------------+---------------------------+---------------------------------------------+------------------------------+-------------------+-----------------------------+ | Numba | Release date | Python | NumPy | llvmlite | LLVM | TBB | +===========+==============+===========================+=============================================+==============================+===================+=============================+ +| 0.65.1 | 2026-04-23 | 3.10.x <= version < 3.15 | 1.22 <= version < 1.27 ; | 0.47.x | 20.x | 2021.6 <= version | +| | | | 2.0 <= version < 2.5 ; | | | | ++-----------+--------------+---------------------------+---------------------------------------------+------------------------------+-------------------+-----------------------------+ | 0.65.0 | 2026-03-31 | 3.10.x <= version < 3.15 | 1.22 <= version < 1.27 ; | 0.47.x | 20.x | 2021.6 <= version | | | | | 2.0 <= version < 2.5 ; | | | | +-----------+--------------+---------------------------+---------------------------------------------+------------------------------+-------------------+-----------------------------+ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/numba-0.65.0/numba/_dispatcher.cpp new/numba-0.65.1/numba/_dispatcher.cpp --- old/numba-0.65.0/numba/_dispatcher.cpp 2026-04-01 02:27:58.000000000 +0200 +++ new/numba-0.65.1/numba/_dispatcher.cpp 2026-04-24 00:27:50.000000000 +0200 @@ -812,6 +812,43 @@ return MOST_SIG_BIT[bits]; } +/* + * On Python 3.14.4+, skip JIT sys.monitoring (#10538). + * https://github.com/numba/numba/issues/10538 + */ +static int +jit_sysmon_supported(void) +{ + // support_flag states: -1 unknown, 0 unsupported (warn once), 1 supported + static int support_flag = -1; + unsigned long v; + int major, minor, micro; + + if (support_flag != -1) { + return support_flag; + } + + v = Py_Version; + major = (int)((v >> 24) & 0xFF); + minor = (int)((v >> 16) & 0xFF); + micro = (int)((v >> 8) & 0xFF); + + // Exclude anything beyond 3.14.3. + support_flag = !(major == 3 && (minor > 14 || (minor == 14 && micro > 3))); + + if (!support_flag) { + PyErr_WarnEx(PyExc_UserWarning, + "Numba: JIT sys.monitoring integration is disabled on " + "Python 3.14.4+ (https://github.com/numba/numba/" + "issues/10538). " + "Unset NUMBA_ENABLE_SYS_MONITORING to suppress this warning.", + 1 + ); + } + + return support_flag; +} + static int invoke_monitoring(PyThreadState * tstate, int event, Dispatcher *self, PyObject* retval) { @@ -903,6 +940,10 @@ // https://github.com/python/cpython/blob/0ab2384c5f56625e99bb35417cadddfe24d347e1/Python/instrumentation.c#L1010-L1026 // https://github.com/python/cpython/blob/0ab2384c5f56625e99bb35417cadddfe24d347e1/Python/instrumentation.c#L839-L861 + if (!jit_sysmon_supported()) { + return 0; + } + // TODO: check this, call_instrumentation_vector has this at the top. if (tstate->tracing){ return 0; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/numba-0.65.0/numba/_version.py new/numba-0.65.1/numba/_version.py --- old/numba-0.65.0/numba/_version.py 2026-04-01 02:29:09.892780500 +0200 +++ new/numba-0.65.1/numba/_version.py 2026-04-24 00:28:43.700998300 +0200 @@ -8,11 +8,11 @@ version_json = ''' { - "date": "2026-03-31T12:27:00-0700", + "date": "2026-04-23T07:41:24-0700", "dirty": false, "error": null, - "full-revisionid": "6ebcd9ef0a0372b6c124a6917c39498ffc923868", - "version": "0.65.0" + "full-revisionid": "9e3087a69e5b7cca224cf932970d627e60920763", + "version": "0.65.1" } ''' # END VERSION_JSON diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/numba-0.65.0/numba/tests/support.py new/numba-0.65.1/numba/tests/support.py --- old/numba-0.65.0/numba/tests/support.py 2026-04-01 02:27:58.000000000 +0200 +++ new/numba-0.65.1/numba/tests/support.py 2026-04-24 00:27:50.000000000 +0200 @@ -143,6 +143,11 @@ "free-threading is enabled.")) +skip_if_sysmon_unsupported = unittest.skipIf( + sys.version_info[:3] >= (3, 14, 4), + "JIT sys.monitoring is not supported on Python 3.14.4+") + + def expected_failure_py311(fn): if utils.PYVERSION == (3, 11): return unittest.expectedFailure(fn) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/numba-0.65.0/numba/tests/test_profiler.py new/numba-0.65.1/numba/tests/test_profiler.py --- old/numba-0.65.0/numba/tests/test_profiler.py 2026-04-01 02:27:58.000000000 +0200 +++ new/numba-0.65.1/numba/tests/test_profiler.py 2026-04-24 00:27:50.000000000 +0200 @@ -7,7 +7,7 @@ import numpy as np from numba import jit, types -from numba.tests.support import needs_blas +from numba.tests.support import needs_blas, skip_if_sysmon_unsupported import unittest @@ -86,10 +86,12 @@ if caller is not cfunc: check_stats_for_key(stats, caller.__code__, n_calls) + @skip_if_sysmon_unsupported def test_profiler(self): dot, _ = generate_standard_dot_case() self.check_profiler_dot(dot, dot) + @skip_if_sysmon_unsupported def test_profiler_for_raising_function(self): raising_dot, call_raising_dot = generate_raising_dot_case() self.check_profiler_dot(call_raising_dot, raising_dot) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/numba-0.65.0/numba/tests/test_sys_monitoring.py new/numba-0.65.1/numba/tests/test_sys_monitoring.py --- old/numba-0.65.0/numba/tests/test_sys_monitoring.py 2026-04-01 02:27:58.000000000 +0200 +++ new/numba-0.65.1/numba/tests/test_sys_monitoring.py 2026-04-24 00:27:50.000000000 +0200 @@ -4,9 +4,10 @@ import threading import traceback import unittest +import warnings from collections import Counter from unittest.mock import Mock, call -from numba.tests.support import TestCase +from numba.tests.support import TestCase, skip_if_sysmon_unsupported from numba import jit, objmode from numba.core.utils import PYVERSION from numba.core.serialize import _numba_unpickle @@ -178,6 +179,7 @@ sys.monitoring.free_tool_id(_tool_id) return callbacks + @skip_if_sysmon_unsupported def test_start_event(self): # test event PY_START cb = self.run_with_events(self.call_foo, (self.arg,), (PY_START,)) @@ -185,6 +187,7 @@ self.assertEqual(len(cb), 1) self.check_py_start_calls(cb) + @skip_if_sysmon_unsupported def test_return_event(self): # test event PY_RETURN cb = self.run_with_events(self.call_foo, (self.arg,), (PY_RETURN,)) @@ -192,6 +195,7 @@ self.assertEqual(len(cb), 1) self.check_py_return_calls(cb) + @skip_if_sysmon_unsupported def test_call_event_chain(self): # test event PY_START and PY_RETURN monitored at the same time cb = self.run_with_events(self.call_foo, (self.arg,), @@ -313,6 +317,7 @@ sys.monitoring.set_events(tool_id, NO_EVENTS) sys.monitoring.free_tool_id(tool_id) + @skip_if_sysmon_unsupported def test_disable_from_callback(self): # Event callbacks can disable a _local_ event at a specific location to # prevent it triggering in the future by returning @@ -349,6 +354,7 @@ sys.monitoring.set_events(tool_id, NO_EVENTS) sys.monitoring.free_tool_id(tool_id) + @skip_if_sysmon_unsupported def test_mutation_from_objmode(self): try: # Check that it's possible to enable an event (mutate the event @@ -391,6 +397,7 @@ sys.monitoring.register_callback(tool_id, event, None) sys.monitoring.free_tool_id(tool_id) + @skip_if_sysmon_unsupported def test_multiple_tool_id(self): # Check that multiple tools will work across different combinations of # events that Numba dispatcher supports, namely: @@ -456,6 +463,7 @@ self.check_py_start_calls(opt_tool) self.check_py_return_calls(opt_tool) + @skip_if_sysmon_unsupported def test_raising_under_monitoring(self): # Check that Numba can raise an exception whilst monitoring is running # and that 1. `RAISE` is issued 2. `PY_UNWIND` is issued, 3. that @@ -523,6 +531,7 @@ self.assertIn(msg, str(store_raised)) + @skip_if_sysmon_unsupported def test_stop_iteration_under_monitoring(self): # Check that Numba can raise an StopIteration exception whilst # monitoring is running and that: @@ -605,6 +614,7 @@ self.assertIn(msg, str(store_raised)) + @skip_if_sysmon_unsupported def test_raising_callback_unwinds_from_jit_on_success_path(self): # An event callback can legitimately raise an exception, this test # makes sure Numba's dispatcher handles it ok on the "successful path", @@ -632,6 +642,7 @@ callback.assert_called_once() self.assertIn(msg, str(store_raised)) + @skip_if_sysmon_unsupported def test_raising_callback_unwinds_from_jit_on_raising_path(self): # An event callback can legitimately raise an exception, this test # makes sure Numba's dispatcher handles it ok on the @@ -691,6 +702,7 @@ # check the stored exception is the expected exception self.assertIs(store_raised, callback.side_effect) + @skip_if_sysmon_unsupported def test_raising_callback_unwinds_from_jit_on_unwind_path(self): # An event callback can legitimately raise an exception, this test # makes sure Numba's dispatcher handles it ok on the @@ -739,6 +751,7 @@ # check the stored_raise self.assertIs(store_raised, callback.side_effect) + @skip_if_sysmon_unsupported def test_monitoring_multiple_threads(self): # Two threads, different tools and events registered on each thread. # Each test creates a global event capturing. The threads use barriers @@ -841,6 +854,31 @@ self.assertTrue(foo._enable_sysmon) + @unittest.skipUnless( + sys.version_info[:3] >= (3, 14, 4), + "needs Python 3.14.4+", + ) + @TestCase.run_test_in_subprocess( + envvars={"NUMBA_ENABLE_SYS_MONITORING": '1'}) + def test_userwarning_when_jit_sysmon_unavailable(self): + # C dispatcher warns once when hooks are off on 3.14.4+ (#10538). + from numba import jit + + with warnings.catch_warnings(record=True) as w: + warnings.simplefilter("always", UserWarning) + + @jit(nopython=True) + def foo(x): + return x + 1 + + self.assertTrue(foo._enable_sysmon) + self.assertEqual(foo(1), 2) + self.assertEqual(foo(2), 3) + + self.assertEqual(len(w), 1) + msg = str(w[0].message) + self.assertIn("sys.monitoring", msg) + if __name__ == '__main__': unittest.main() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/numba-0.65.0/numba.egg-info/PKG-INFO new/numba-0.65.1/numba.egg-info/PKG-INFO --- old/numba-0.65.0/numba.egg-info/PKG-INFO 2026-04-01 02:29:09.000000000 +0200 +++ new/numba-0.65.1/numba.egg-info/PKG-INFO 2026-04-24 00:28:43.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.4 Name: numba -Version: 0.65.0 +Version: 0.65.1 Summary: compiling Python code using LLVM Home-page: https://numba.pydata.org License: BSD diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/numba-0.65.0/numba.egg-info/SOURCES.txt new/numba-0.65.1/numba.egg-info/SOURCES.txt --- old/numba-0.65.0/numba.egg-info/SOURCES.txt 2026-04-01 02:29:09.000000000 +0200 +++ new/numba-0.65.1/numba.egg-info/SOURCES.txt 2026-04-24 00:28:43.000000000 +0200 @@ -118,6 +118,7 @@ docs/source/release/0.63.1-notes.rst docs/source/release/0.64.0-notes.rst docs/source/release/0.65.0-notes.rst +docs/source/release/0.65.1-notes.rst docs/source/user/5minguide.rst docs/source/user/cfunc.rst docs/source/user/cli.rst
