Version 0.68.0 (30 September 2026)¶
This is a major Numba release. Numba now supports Python 3.15. This
release also expands Windows ARM64 conda packages and wheels from
Python 3.12 through 3.14. Linux x86_64 and aarch64 wheels are
now tagged to be compatible with GLIBC >= 2.27.
Please find a summary of all noteworthy items below.
Highlights¶
Improvements¶
Added support for using IntEnum as NumPy array’s index.¶
IntEnum members can now be used directly as array indices, for
example a[MyEnum.FOO], without an explicit cast to an integer.
(PR-#9230)
Enable tuple types in np.sum function.¶
The np.sum function now supports tuple types for the axis argument,
allowing users to specify multiple axes along which to perform the operation
at runtime.
Preserve array layout when slicing with a None step¶
Previously, a slice with an explicit None step was typed as a three-member slice,
so x[a:b:None] inferred an "A" layout where x[a:b] inferred "C".
Enable using ILP64 BLAS and LAPACK.¶
Users can opt in to using ILP64 (64-bit integer) LAPACK ABI. To opt in, define
the NUMBA_LAPACK_ILP64=1 environment variable at numba build time, and
make sure that SciPy available at run time exports the ILP64 cython_lapack ABI
(this currently requires SciPy >= 1.18, built from source).
NumPy Support¶
Added kind argument to ndarray.sort¶
ndarray.sort now accepts the kind argument in nopython mode and
supports "mergesort" in addition to the default "quicksort", matching
the kind support already available in ndarray.argsort. Both methods
also accept "stable" as an alias for "mergesort" and reject any other
kind at compile time. The default value keeps the existing behaviour.
Add support for np.nanargmax and np.nanargmin.¶
The np.nanargmax and np.nanargmin functions are now supported in
nopython mode. NaN values are skipped when locating the argument of the
maximum/minimum, the axis argument is supported, and NumPy is matched by
raising ValueError with the same messages for empty and all-NaN input.
Integer input behaves like np.argmax/np.argmin as NaN is not
representable in integer dtypes.
Bug Fixes¶
Add missing config.DISABLE_PERFORMANCE_WARNINGS checks¶
A bug where some Numba functions raise a NumbaPerformanceWarning
despite setting config.DISABLE_PERFORMANCE_WARNINGS (or the
NUMBA_DISABLE_PERFORMANCE_WARNINGS environment variable) has been
fixed.
(PR-#9794)
Fix complex multiplication and division NaN recovery for Python 3.14+¶
Complex number multiplication and division now match CPython 3.14+ behaviour
when infinities produce nan+nanj under IEEE 754 arithmetic. The NaN
recovery logic from CPython’s _Py_c_prod() and _Py_c_quot() is
applied for * and / on complex types when running on Python 3.14 and
later.
Make .nbi cache index files reproducible¶
Source freshness stamps in the on-disk cache (.nbi files) now use a
content hash of the source instead of the file’s modification time. The
modification time varies across hosts and filesystems (and its precision
differs between filesystems), which made cache index files
non-reproducible. Using a content hash makes the stamps deterministic and
filesystem-agnostic. As a result, InTreeCacheLocatorFsAgnostic is now
deprecated in favour of InTreeCacheLocator.
Fix false NumbaPerformanceWarning when indexing with newaxis¶
Indexing a contiguous array with np.newaxis (for example
x[:, None]) was incorrectly treated as breaking contiguity, since the
slice preceding the newaxis was no longer considered the innermost
index. This caused a spurious NumbaPerformanceWarning to be raised
from np.dot(), np.vdot(), and @ when one of their operands had
been reshaped with newaxis, even though the array was still
contiguous (#10086).
Fix np.clip writing past the end of a caller-provided out array¶
np.clip did not check the shape of an explicit out argument, so an
out that did not match the shape of the result was written past its end
and a wrong array was returned with no error. The shape is now validated and
a mismatch raises ValueError, matching NumPy.
Fix AssertionError when unifying mismatched first-class function types¶
A tuple holding two first-class functions with the same argument count but
different signatures raised a bare AssertionError with no message, from
typeof while typing the argument, so no Numba error context was attached
either. unified_function_type now returns None for that case, as its
documentation already describes, which lets BaseTuple.from_types fall back
to a heterogeneous tuple and the call report the actual mismatch.
Fix first-class function return-type mismatch¶
Passing a jit-compiled function as a first-class function
(numba.types.FunctionType) argument whose declared return type does
not use the same LLVM value type as the compiled function’s return type
now raises an error instead of silently producing a corrupted return
value (no cast is inserted at the call).
Coalesce runs of list appends in the list_to_tuple peephole¶
The peephole that rewrites the BUILD_LIST/LIST_APPEND/
LIST_TO_TUPLE bytecode sequence emitted a separate one-element
build_tuple and binary addition for every appended item. The resulting
chain of tuple concatenations makes both the Numba IR and the LLVM IR
lowered from it quadratic in the number of items. CPython uses this
bytecode for every call with more than 30 arguments, so wide calls were
disproportionately expensive to compile. Consecutive appends are now
collected into a single build_tuple.
Fix math.ldexp and np.ldexp with negative exponents on PowerPC64LE¶
The exponent argument of the numba_ldexp and numba_ldexpf helpers is a
C int, and ABIs such as PowerPC64LE ELFv2 require the caller to sign-extend
it into the full argument register. The declaration Numba emitted used a bare
i32 parameter, which carries no signedness, so LLVM did not sign-extend it
and a negative exponent reached the callee as a large positive one. Both
lowerings, for math.ldexp and for the np.ldexp ufunc, now mark the
exponent parameter signext.
Changes¶
Relax NumPy sin/cos test comparisons on Linux x86_64 with NumPy < 1.25¶
Follow-up to PR #10572, which added a 4-ULP allowance for NumPy < 1.25
sin/cos on Linux x86_64. Apply that allowance in the remaining tests
that were missed, and skip tests where the NumPy < 1.25 error cannot be
matched by relative ULP comparison.
Documentation Changes¶
Document container types in reference manual¶
Updated the documentation for Numba types to reference ListType, DictType, and SetType.
Pull-Requests:
PR #8779: Refactored Numpy documentation to follow numpy user reference (betterqualityassuranceuser esc kc611)
PR #9230: allow using IntEnumMember as array index (Da Li dlee992 gmarkall swap357)
PR #9794: Add missing config.DISABLE_PERFORMANCE_WARNINGS checks (maxkapur swap357)
PR #10528: Fix: Python 3.14 complex nan recovery (benjeffery swap357)
PR #10542: cleanup: remove dead code from np/math/numbers (swap357)
PR #10607: Update dependency macos to v26 (betterqualityassuranceuser renovate[bot])
PR #10659: Make .nbi files reproducible (guilhermeleobas)
PR #10661: Add tuple axis support for array sum (betterqualityassuranceuser kc611 kc611 sklam)
PR #10684: Fix false NumbaPerformanceWarning when indexing with newaxis (zain-asif-dev)
PR #10703: Add mergesort option for array.sort() (eyupcanakman)
PR #10721: Shift legacy NumPy distributions to NumPy module (kc611)
PR #10732: Python 3.15 (betterqualityassuranceuser swap357)
PR #10733: Update actions/stale action to v11 (betterqualityassuranceuser renovate[bot])
PR #10739: np.ufunc type stubs (threading functions and PyUFunc_*) (jorenham)
PR #10742: Update pypa/gh-action-pypi-publish digest to dc37677 (betterqualityassuranceuser renovate[bot])
PR #10751: numba.core.types stubs missing re-exports (jorenham)
PR #10752: numba.np.types type stubs (NPTimedelta, NPDatetime) (jorenham)
PR #10756: Update dependency pyrefly to v1.2.0 (betterqualityassuranceuser renovate[bot])
PR #10759: CI: expand win-arm64 py-version matrix to cover python 3.11-3.14 (betterqualityassuranceuser esc swap357)
PR #10761: Fix np.clip writing past the end of a caller-provided out= array (nicoseijas)
PR #10763: Fix #10758. Refuse to unify mismatched first-class function types (nelson2005)
PR #10764: Fix: first-class function return type mismatch (swap357)
PR #10775: docs: add container types documentation (#3349) (betterqualityassuranceuser coderay3000 esc)
PR #10781: Type None step slices as being 2 parameter (ricardoV94)
PR #10782: Coalesce runs of list appends in the list_to_tuple peephole (velochy)
PR #10784: ENH: enable ILP64 linear algebra (Claude Sonnet 5 ev-br Evgeni Burovski Guilherme Leobas)
PR #10789: FIX: Use signext on numba_ldexp’s exponent (MementoRC)
PR #10791: Complete dead code sweep for numba/np/math/numbers.py (esc)
PR #10793: ci: drop python 3.11 from the win-arm64 matrix (swap357)
PR #10800: Fix re-export of types. (hunterhogan)
PR #10804: CI: upgrade manylinux image to manylinux_2_28 for numba builds (swap357)
PR #10805: update win-arm64 versions (betterqualityassuranceuser esc swap357)
PR #10808: ENH: add support for np.nanargmax and np.nanargmin (juanmicl)
PR #10809: CI: use –pre for llvmlite installs on wheel builder workflows (swap357)
PR #10818: ILP64 follow-ups: AOT compile + small cleanups (ArvidJB ev-br stuartarchibald)
PR #10822: relax CUDASIM test fp16 intrinsic comparison tolerance. (swap357)
PR #10825: update version support table for 0.68.0rc1 (swap357)
PR #10867: Cherry pick win-arm64 CI fix to release0.68 (swap357)
PR #10869: Cherry-pick Azure CI fix on release0.68 (swap357)
PR #10877: Update version support table with release date (swap357)
Authors: