Sage 10.9.beta1 released

120 views
Skip to first unread message

Volker Braun

unread,
Dec 29, 2025, 4:43:41 AM12/29/25
to sage-release
As always, you can get the latest beta version from the "develop" git branch. Alternatively, the self-contained source tarball is at http://www.sagemath.org/download-latest.html


4015f9189b6 (tag: 10.9.beta1, github/develop) Updated SageMath version to 10.9.beta1
97ceea842a3 gh-41342: Fix a test failure with numpy 2.4
4ac58246a3c gh-41335: fix: support ideals over finite fields where p > 2^29
3ce19ea86ad gh-41333: Fix conftest.py being deleted by configure script
3d89a6312e9 gh-41329: Fix Deprecation Warning in conftest
7e8aa72df24 gh-41328: Fix integer overflow in is_small_power() for large int values
28523387ddf gh-41325: check that #41267 is really fixed
6946329a6bd gh-41322: purge old pythons from docs and metadata, update conda instructions
0fd9782d805 gh-41319: using https more in combinat headers
16d696077d2 gh-41314: Make several parts of the code base const-correct
5ace339eaab gh-41311: Make ode functionality tested, add const-correctness
1a379971f47 gh-41308: create a monoid of lattice polytopes
926e3f2d455 gh-41304: [docs] p-adic: Update docs to change printing-mode=digits to digits-unicode
844ba6a62fa gh-41286: bump m4ri to the latest version (20251207), drop upstreamed patch
52c656b1051 gh-41281: Update uv.lock for Python 3.14 compatibility
5cf037d5c3e gh-41188: Refactor degree sequence functions
0fe2572c1ed gh-41138: fix is_free method for new version Singular
9341c678202 gh-41107: Implement `isdisjoint` for finite sets
0c2fd7bd0f6 gh-41106: ⬆️  Bump actions/download-artifact from 4 to 6
d341a84abba gh-41075: Try to fix binomial CI failure, take 2
174227bccb8 gh-40520: Use accelerate for Conda on macos
0495984ace9 gh-40470: Fix issue 40469: homology with generators=True for chain complexes with differentials whose entries contain numbers other than 0, 1 should give the correct answer.
f0711cc2b2b gh-40108: Allow passing elements to OperationTable not closed under operation
4ec34ffab2e (tag: 10.9.beta0) Updated SageMath version to 10.9.beta0

Emmanuel Charpentier

unread,
Dec 29, 2025, 2:01:41 PM12/29/25
to sage-release

In Debian testing running on Ryzen 9 + 64 GB RAM, building 10.9.beta1 from a fresh clone of the git repository, with /configure --enable-dot2tex --enable-mtools --enable-fricas --enable-giac --with-system-fricas=no --with-system-giac=no, ptestlong gives 6 permanent failures :

--------------------------------------------------------------------- src/bin/sage -t --long --warn-long 30.0 --random-seed=103198921344494641633707050883315226248 src/sage/graphs/generic_graph.py # SystemExit in doctesting framework src/bin/sage -t --long --warn-long 30.0 --random-seed=103198921344494641633707050883315226248 src/sage/graphs/graph_latex.py # SystemExit in doctesting framework src/bin/sage -t --long --warn-long 30.0 --random-seed=103198921344494641633707050883315226248 src/sage/misc/latex_standalone.py # SystemExit in doctesting framework src/bin/sage -t --long --warn-long 30.0 --random-seed=103198921344494641633707050883315226248 src/sage/rings/real_mpfr.pyx # 1 doctest failed src/bin/sage -t --long --warn-long 30.0 --random-seed=103198921344494641633707050883315226248 src/sage/rings/polynomial/multi_polynomial_ideal.py # 2 doctests failed src/bin/sage -t --long --warn-long 30.0 --random-seed=103198921344494641633707050883315226248 src/sage/rings/polynomial/msolve.py # 14 doctests failed ----------------------------------------------------------------------

The first three are attrubutable to a (new) failure of dot2tex, which, in these three cases, end up with :

3.13/site-packages/dot2tex/dot2tex.py", line 784, in convert sys.exit(1) ~~~~~~~~^^^ SystemExit: 1

The other three have been already reported several times. It is noteworthy that the multi_polynomial_ideal.py, which failed to recognize the mathematical identity of two string expressions of the same solution was supposed to be fixed ; it is not, but I get different failures :

File "src/sage/rings/polynomial/multi_polynomial_ideal.py", line 2618, in sage.rings.polynomial.multi_polynomial_ideal.?.variety Failed example: sorted(I.variety(algorithm='msolve', # optional - msolve, needs sage.rings.finite_rings proof=False), key=lambda d: str(sorted(d.items())) Exception raised: Traceback (most recent call last): File "/usr/local/sage-10.9.beta1/src/sage/doctest/forker.py", line 734, in _run self.compile_and_execute(example, compiler, test.globs) ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/sage-10.9.beta1/src/sage/doctest/forker.py", line 1156, in compile_and_execute compiled = compiler(example) File "/usr/local/sage-10.9.beta1/src/sage/doctest/forker.py", line 700, in compiler code = compile(example.source, filename, "single", compileflags, 1) File "<doctest sage.rings.polynomial.multi_polynomial_ideal.?.variety[32]>", line 1 sorted(I.variety(algorithm='msolve', # optional - msolve, needs sage.rings.finite_rings ^ SyntaxError: '(' was never closed ********************************************************************** File "src/sage/rings/polynomial/multi_polynomial_ideal.py", line 2631, in sage.rings.polynomial.multi_polynomial_ideal.?.variety Failed example: I.variety(algorithm='msolve', proof=False) # optional - msolve Expected: Traceback (most recent call last): ... NotImplementedError: characteristic 3 too small Got: <BLANKLINE> Traceback (most recent call last): File "/usr/local/sage-10.9.beta1/src/sage/rings/polynomial/msolve.py", line 249, in variety data = sage_eval(msolve_out[:-2]) File "/usr/local/sage-10.9.beta1/src/sage/misc/sage_eval.py", line 187, in sage_eval return eval(source, sage.all.__dict__, locals) File "<string>", line 0 <BLANKLINE> SyntaxError: invalid syntax <BLANKLINE> During handling of the above exception, another exception occurred: <BLANKLINE> Traceback (most recent call last): File "/usr/local/sage-10.9.beta1/src/sage/doctest/forker.py", line 734, in _run self.compile_and_execute(example, compiler, test.globs) ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/sage-10.9.beta1/src/sage/doctest/forker.py", line 1158, in compile_and_execute exec(compiled, globs) ~~~~^^^^^^^^^^^^^^^^^ File "<doctest sage.rings.polynomial.multi_polynomial_ideal.?.variety[35]>", line 1, in <module> I.variety(algorithm='msolve', proof=False) # optional - msolve ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/sage-10.9.beta1/src/sage/rings/polynomial/multi_polynomial_ideal.py", line 304, in __call__ return self.f(self._instance, *args, **kwds) ~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/sage-10.9.beta1/src/sage/rings/polynomial/multi_polynomial_ideal.py", line 2652, in variety return msolve.variety(self, ring, proof=proof) ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/sage-10.9.beta1/src/sage/rings/polynomial/msolve.py", line 251, in variety raise NotImplementedError(f"unsupported msolve output format: {data}") ^^^^ UnboundLocalError: cannot access local variable 'data' where it is not associated with a value ********************************************************************** 1 item had failures: 2 of 37 in sage.rings.polynomial.multi_polynomial_ideal.?.variety [975 tests, 2 failures, 3.24s wall] ---------------------------------------------------------------------- src/bin/sage -t --long --warn-long 30.0 --random-seed=103198921344494641633707050883315226248 src/sage/rings/polynomial/multi_polynomial_ideal.py # 2 doctests failed ----------------------------------------------------------------------

Furthermore :

sage: integrate(cos(x), x) sin(x) sage: integrate(cos(x), x, algorithm="maxima") sin(x) sage: integrate(cos(x), x, algorithm="sympy") sin(x) sage: integrate(cos(x), x, algorithm="fricas") sin(x) sage: integrate(cos(x), x, algorithm="giac") integrate(cos(x), x)

The latter is intriguing…

HTH,

Emmanuel Charpentier

unread,
Dec 30, 2025, 3:50:42 AM12/30/25
to sage-release

Le lundi 29 décembre 2025 à 20:01:41 UTC+1, Emmanuel Charpentier a écrit :

[ Snip… ]

sage: integrate(cos(x), x, algorithm="fricas") sin(x) sage: integrate(cos(x), x, algorithm="giac") integrate(cos(x), x)

The latter is intriguing…

Even more intriguing : trying to reproduce gives yet another error :

sage: integrate(cos(x), algorithm="giac") --------------------------------------------------------------------------- ModuleNotFoundError Traceback (most recent call last) File /usr/local/sage-10.9.beta1/src/sage/symbolic/integration/external.py:251, in libgiac_integrator(expression, v, a, b) 250 try: --> 251 from sage.libs.giac import libgiac 252 except ImportError: 253 # If libgiac is not available, return a symbolic answer 254 # (without actually integrating anything). This is essentially 255 # the failure case of any integration: see below for what we 256 # do if libgiac is *available* but unable to do much. File /usr/local/sage-10.9.beta1/src/sage/libs/giac/__init__.py:2 1 # sagemath_giac split its __init__.py into these two ----> 2 from sagemath_giac.gb import * 3 from sagemath_giac.context import * ModuleNotFoundError: No module named 'sagemath_giac' During handling of the above exception, another exception occurred: TypeError Traceback (most recent call last) File sage/symbolic/function.pyx:537, in sage.symbolic.function.Function.__call__() File sage/structure/parent.pyx:1189, in sage.structure.parent.Parent.coerce() File sage/structure/parent.pyx:1219, in sage.structure.parent.Parent.coerce() TypeError: no canonical coercion from <class 'NoneType'> to Symbolic Ring During handling of the above exception, another exception occurred: TypeError Traceback (most recent call last) Cell In[1], line 1 ----> 1 integrate(cos(x), algorithm="giac") File /usr/local/sage-10.9.beta1/src/sage/misc/functional.py:789, in integral(x, *args, **kwds) 650 """ 651 Return an indefinite or definite integral of an object ``x``. 652 (...) 786 0 787 """ 788 if hasattr(x, 'integral'): --> 789 return x.integral(*args, **kwds) 790 else: 791 from sage.symbolic.ring import SR File sage/symbolic/expression.pyx:13184, in sage.symbolic.expression.Expression.integral() File /usr/local/sage-10.9.beta1/src/sage/symbolic/integration/integral.py:1067, in integrate(expression, v, a, b, algorithm, hold) 1065 if not integrator: 1066 raise ValueError("Unknown algorithm: %s" % algorithm) -> 1067 return integrator(expression, v, a, b) 1068 if a is None: 1069 return indefinite_integral(expression, v, hold=hold) File /usr/local/sage-10.9.beta1/src/sage/symbolic/integration/external.py:257, in libgiac_integrator(expression, v, a, b) 251 from sage.libs.giac import libgiac 252 except ImportError: 253 # If libgiac is not available, return a symbolic answer 254 # (without actually integrating anything). This is essentially 255 # the failure case of any integration: see below for what we 256 # do if libgiac is *available* but unable to do much. --> 257 return expression.integrate(v, a, b, hold=True) 259 from sage.libs.giac.giac import Pygen 260 # We call Pygen on first argument because otherwise some 261 # expressions involving derivatives result in doctest failures in 262 # sage/interfaces/sympy.py File sage/symbolic/expression.pyx:13184, in sage.symbolic.expression.Expression.integral() File /usr/local/sage-10.9.beta1/src/sage/symbolic/integration/integral.py:1069, in integrate(expression, v, a, b, algorithm, hold) 1067 return integrator(expression, v, a, b) 1068 if a is None: -> 1069 return indefinite_integral(expression, v, hold=hold) 1070 else: 1071 return definite_integral(expression, v, a, b, hold=hold) File sage/symbolic/function.pyx:1061, in sage.symbolic.function.BuiltinFunction.__call__() File sage/symbolic/function.pyx:550, in sage.symbolic.function.Function.__call__() TypeError: cannot coerce arguments: no canonical coercion from <class 'NoneType'> to Symbolic Ring

But :

sage: cos(x)._giac_().integrate(x._giac_())._sage_() sin(x)

The problem seems to be in the Sage-Giac interface, not in giac… The key hint seems to be

ModuleNotFoundError: No module named 'sagemath_giac'

HTH,


Emmanuel Charpentier

unread,
Dec 30, 2025, 7:48:18 AM12/30/25
to sage-release
Hah !

The problem was that, **in addition to** `--enable-giac`, I had to have `--enable-sagemath_giac` in my configuration. This seems to be new, and had escaped my attention.

Sorry for the noise...

Emmanuel Charpentier

unread,
Dec 30, 2025, 12:51:33 PM12/30/25
to sage-r...@googlegroups.com

Yet another snag :

After time ./configure --enable-dot2tex --enable-mtools --enable-fricas --enable-giac --enable-sagemath_giac --enable-msolve --with-system-giac=no --with-system-fricas=no, make fails :

Error building Sage.

The following package(s) may have failed to build (not necessarily
during this run of 'make all-start'):

* package:         primecountpy-0.1.1
  last build time: 30 déc. 18:15
  log file:        /usr/local/sage-10.9.beta1/logs/pkgs/primecountpy-0.1.1.log

This last log points to something that looks like a C++ overloading problem to my C++-ignorant eyes...

Enclosed : a tarball of the config and the relevant logs.

Logs-19.9.beta1.tar.gz

Dima Pasechnik

unread,
Dec 30, 2025, 2:11:42 PM12/30/25
to sage-r...@googlegroups.com


On December 30, 2025 11:51:17 AM CST, Emmanuel Charpentier <emanuel.c...@gmail.com> wrote:
>Yet another snag :
>
>After `time ./configure --enable-dot2tex --enable-mtools --enable-fricas --enable-giac --enable-sagemath_giac --enable-msolve --with-system-giac=no --with-system-fricas=no`, `make` fails :
>
>```
>Error building Sage.
>
>The following package(s) may have failed to build (not necessarily
>during this run of 'make all-start'):
>
>* package: primecountpy-0.1.1
> last build time: 30 déc. 18:15
> log file: /usr/local/sage-10.9.beta1/logs/pkgs/primecountpy-0.1.1.log
>```
>
>This last log points to something that looks like a C++ overloading problem to my C++-ignorant eyes...

fixed in

<https://github.com/sagemath/sage/pull/41341>

Emmanuel Charpentier

unread,
Dec 31, 2025, 4:49:50 AM12/31/25
to sage-release
Thanks a lot !

Is there a branch that I can pull/merge into my tree ? Or should I pull your two commits ?

Emmanuel Charpentier

unread,
Dec 31, 2025, 8:30:33 AM12/31/25
to sage-release
Never mind : I found it. And it allows successful compilation.

Now testing (again...).

Thanks again !

[ Snip... ]

John H Palmieri

unread,
Jan 5, 2026, 5:59:17 PM (13 days ago) Jan 5
to sage-release
On OS X, ./configure exits with a nonzero status and the message

   sed: 1: "config.status": command c expects \ followed by text

Perhaps caused by #41333? At least I don't see this with 10.9.beta0, but I do with 10.9.beta0 + 41333.

Dima Pasechnik

unread,
Jan 5, 2026, 6:02:25 PM (13 days ago) Jan 5
to sage-r...@googlegroups.com
hmm, yes, could be the macOS sed incompatibility.
> --
> You received this message because you are subscribed to the Google Groups "sage-release" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to sage-release...@googlegroups.com.
> To view this discussion visit https://groups.google.com/d/msgid/sage-release/1b920eaf-0dee-4e34-98e8-315920c3b279n%40googlegroups.com.

John H Palmieri

unread,
Jan 5, 2026, 6:06:20 PM (13 days ago) Jan 5
to sage-release
Yes, the new usage of sed is not posix-compliant, and in particular not compliant with the BSD version of sed on OS X.

Dima Pasechnik

unread,
Jan 5, 2026, 11:02:42 PM (13 days ago) Jan 5
to sage-r...@googlegroups.com

Dima Pasechnik

unread,
Jan 6, 2026, 12:03:38 PM (12 days ago) Jan 6
to sage-r...@googlegroups.com
On Mon, Jan 5, 2026 at 10:02 PM Dima Pasechnik <dim...@gmail.com> wrote:
>
> should be fixed by https://github.com/sagemath/sage/pull/41399
>
> On Mon, Jan 5, 2026 at 5:06 PM John H Palmieri <jhpalm...@gmail.com> wrote:
> >
> > Yes, the new usage of sed is not posix-compliant, and in particular not compliant with the BSD version of sed on OS X.


well, it just needed to be "sed -i'' -E" instead of "sed -i"
Took me many tries to figure it out - '-E' means "extended regexp",
and it's what GNU set takes by default,
but macOS sed does not, it needs '-E' to be given. And yes, the usual
'-i' shenanigans.

Dima
Reply all
Reply to author
Forward
0 new messages