Skip to content

Releases: passagemath/passagemath

passagemath-10.6.40

05 Dec 22:44
a1d8863

Choose a tag to compare

MSYS2 packages for Windows on x86_64 and ARM

The downstream effort to package passagemath for MSYS2 has reached an important milestone. All packages for which passagemath provides Windows wheels are now available as MSYS2 packages, too.

After installing MSYS2, use pacman to install some of the available packages, for example:

$ pacman -S mingw-w64-ucrt-x86_64-python-passagemath-{cmr,repl}

Then start the Sage REPL:

$ sage
...
sage: from passagemath_cmr import *

First binary wheels for Windows on ARM

passagemath-flint updates

FLINT has been upgraded to version 3.4.0; blog post, release notes.

passagemath-planarity updates

The Edge Addition Planarity Suite has been upgraded to version 4.0.1.0; release notes.

New package for linear inequality systems

The new package certlin by @MarcusAichmayr computes certificates for the solvability or insolvability of systems of linear inequalities.

What's Changed

Full Changelog: passagemath-10.6.39...passagemath-10.6.40

passagemath-10.6.39

27 Nov 23:59

Choose a tag to compare

Simplified installation in Python 3.14

Binary wheels are now available for all dependency packages.

New package for calculations in the curve complex

The new package curver by @MarkCBell enables calculations in the curve complex. It implements the Bell–Webb algorithm to determine the Nielsen–Thurston type of a mapping class.

Next release series: passagemath-10.8.x

The next release series, passagemath-10.8.x, will merge the compatible changes from upstream SageMath 10.8, expected by late December 2025, and support Python 3.11–3.14.

The current series, passagemath-10.6.x, will be supported until October 2026.

What's Changed

  • build/pkgs/realalg: New by @mkoeppe in #1823
  • build/pkgs/curver: New by @mkoeppe in #1827
  • .github/workflows/ci-downstream-mingw.yml: New by @mkoeppe in #1829
  • ci-wheels.yml: Tighten glob pattern for constraints by @mkoeppe in #1830
  • README.md, ci-wheels.yml: No more wheelhouse for Python 3.14 by @mkoeppe in #1807
  • build/pkgs/cibuildwheel, dist-wheels-windows.yml: Update to 3.3.0 by @mkoeppe in #1826
  • README.md: Next series is 10.8.x, not 10.7.x by @mkoeppe in #1831
  • build/pkgs/4ti2: Update to 1.6.14 by @mkoeppe in #1834
  • CONTRIBUTING.md: Expand and clarify by @mkoeppe in #1835
  • .github/workflows/ci-downstream-mingw.yml: Run tox by @mkoeppe in #1832
  • src/sage/doctest [Windows]: Do not use multiprocessing.set_start_method('fork') by @mkoeppe in #1836
  • build/pkgs/gmpy2: Update to 2.2.2 by @mkoeppe in #1837
  • Revert "build/pkgs/4ti2: Update to 1.6.14" by @mkoeppe in #1839
  • build/pkgs/mpfr: Update to 4.2.2 by @mkoeppe in #1838
  • tox.ini, .devcontainer: Add ubuntu-resolute by @mkoeppe in #1840

Full Changelog: passagemath-10.6.38...passagemath-10.6.39

passagemath-10.6.38

23 Nov 19:42

Choose a tag to compare

passagemath-linbox updates

The passagemath-linbox wheels are now more portable.

passagemath-ntl updates

NTL was updated to version 11.6.0; release notes.

New package for sign vectors, oriented matroids, chirotopes

The new package sign_vectors by @MarcusAichmayr provides operations for sign vectors, oriented matroids, and chirotopes.

What's Changed

  • m4/sage_spkg_collect.m4: Make the column for package names wider by @mkoeppe in #1818
  • build/pkgs/sign_vectors: New by @mkoeppe in #1817
  • build/pkgs/{givaro,linbox} [SAGE_FAT_BINARY]: Update configure options by @mkoeppe in #1820
  • build/pkgs/ntl: Update to 11.6.0 by @mkoeppe in #1782
  • sage_setup.autogen: Do not generate an __init__.py file by @mkoeppe in #1816
  • build/pkgs/fflas_ffpack [SAGE_FAT_BINARY]: Update configure flags by @mkoeppe in #1822

Full Changelog: passagemath-10.6.37...passagemath-10.6.38

passagemath-10.6.37

19 Nov 05:47

Choose a tag to compare

New top-level import names for the modularized pip-installable packages

The top-level bindings of each of the modularized pip-installable packages of the Sage library can now be accessed using the same import name as the distribution name. This is, in particular, convenient when using the marimo notebook, as marimo will infer what package needs to be installed from PyPI based on the import name.

For example, for passagemath-modules, you can use

from passagemath_modules import *

This is equivalent to from sage.all__sagemath_modules import *. Likewise, for the passagemath-standard distribution, you can now use

from passagemath_standard import *

instead of from sage.all import *.

All of the above is intended for interactive use only. Libraries should instead import specific bindings from the sage namespace.

Downstream packages for MSYS2 / mingw-w64 available

A downstream packaging effort for Windows (MSYS2 / mingw-w64) has begun, see msys2/MINGW-packages#24738. See the MSYS2 package search for the passagemath packages already available.

What's Changed

  • build/pkgs/cysignals: Update to 1.12.6 + Python 3.10 compatibility by @mkoeppe in #1806
  • README.md, ci-wheels.yml: Update wheelhouse packages needed for Python 3.14 by @mkoeppe in #1808
  • src/sage/combinat/designs/incidence_structures.py: Add # needs by @mkoeppe in #1812
  • Add toplevel packages passagemath_* by @mkoeppe in #1811
  • src/sage/combinat/matrices/hadamard_matrix.py: Replace use of eval by @mkoeppe in #1814

Full Changelog: passagemath-10.6.36...passagemath-10.6.37

passagemath-10.6.36

15 Nov 07:51

Choose a tag to compare

passagemath-graphs updates

Graphs and hypergraphs now have a method is_unimodular(), using Seymour's decomposition from passagemath-cmr.

sage: W6 = graphs.WheelGraph(7); W6
Wheel graph: Graph on 7 vertices
sage: W6.is_unimodular()
True
sage: W6.is_unimodular(certificate=True)
(True, CographicNode (6×7))

sage: C5 = graphs.CycleGraph(5); C5
Cycle graph: Graph on 5 vertices
sage: C5.is_unimodular(certificate=True)
(False,
 (ThreeConnectedIrregularNode (5×5),
  ((frozenset({3, 4}), frozenset({2, 3}), frozenset({1, 2}), frozenset({0, 4}), frozenset({0, 1})),
   (4, 3, 2, 1, 0))))

passagemath-macaulay2 updates

Macaulay2 was updated to version 1.25.11; release notes.

What's Changed

  • ci-linux.yml: Disambiguate log artifact names for 'optional', 'experimental' jobs by @mkoeppe in #1801
  • sage.features: Add planarity feature by @mkoeppe in #1804
  • src/sage/combinat/designs/incidence_structures.py (incidence_matrix): Optionally create a free module morphism by @mkoeppe in #1802
  • src/sage/combinat/designs/incidence_structures.py (is_unimodular): New by @mkoeppe in #1800
  • build/pkgs/macaulay2: Update to 1.25.11 by @mkoeppe in #1803
  • src/sage/graphs/graph.py (is_unimodular): New by @mkoeppe in #1799
  • is_totally_unimodular: Map back submatrix certificate using row_keys, column_keys by @mkoeppe in #1805

Full Changelog: passagemath-10.6.35...passagemath-10.6.36

passagemath-10.6.35

13 Nov 01:13
6d72119

Choose a tag to compare

passagemath-modules updates

The matrix() constructor, when supplied with keyword arguments row_keys=... and/or column_keys=..., creates morphisms of free modules instead of plain matrices. The constructor now handles more cases, such as specifying the matrix entries using a callable.

sage: M = matrix(entries=lambda i, j: i + j, row_keys=[1, 2, 3], column_keys=[10, 20, 30]); M
Generic morphism:
  From: Free module generated by {10, 20, 30} over Integer Ring
  To:   Free module generated by {1, 2, 3} over Integer Ring
sage: M._unicode_art_matrix()
  10 20 30 
111 21 31212 22 32313 23 33sage: W6 = graphs.WheelGraph(7); W6
Wheel graph: Graph on 7 vertices
sage: max_cliques = [frozenset(Q) for Q in W6.cliques_maximal()]; max_cliques
[frozenset({0, 1, 2}),
 frozenset({0, 1, 6}),
 frozenset({0, 2, 3}),
 frozenset({0, 3, 4}),
 frozenset({0, 4, 5}),
 frozenset({0, 5, 6})]
sage: W6_clique_vertex_incidence_matrix = matrix(entries=lambda clique, vertex: 1 if vertex in clique else 0,
                                                 row_keys=max_cliques, column_keys=W6.vertices())
sage: W6_clique_vertex_incidence_matrix
Generic morphism:
  From: Free module generated by {1, 2, 3, 4, 5, 6, 0} over Integer Ring
  To:   Free module generated by {frozenset({0, 1, 2}), frozenset({0, 1, 6}), frozenset({0, 2, 3}), 
                                  frozenset({0, 3, 4}), frozenset({0, 4, 5}), frozenset({0, 5, 6})} 
        over Integer Ring
sage: W6_clique_vertex_incidence_matrix._unicode_art_matrix()
                     1 2 3 4 5 6 0 
frozenset({0, 1, 2})⎛1 1 0 0 0 0 1frozenset({0, 1, 6})⎜1 0 0 0 0 1 1frozenset({0, 2, 3})⎜0 1 1 0 0 0 1frozenset({0, 3, 4})⎜0 0 1 1 0 0 1frozenset({0, 4, 5})⎜0 0 0 1 1 0 1frozenset({0, 5, 6})⎝0 0 0 0 1 1 1

New package for two-stage euclidean real quadratic fields

The new package twostage by @mmasdeu provides algorithms for proving that class-number-one real quadratic fields are 2-stage euclidean and to find continued fraction expansions in them.

What's Changed

  • Improved handling of matrix(row_keys=..., column_keys=...) by @mkoeppe in #1789
  • src/sage/matroids/matroid.pyx: Add # needs by @mkoeppe in #1790
  • sage.matrix: Modularization fix; add # needs by @mkoeppe in #1791
  • Fix placement of # needs in multi-line doctests by @mkoeppe in #1792
  • build/pkgs/arrow: Fix dependencies; tzdata: Update to 2025.2 by @mkoeppe in #1793
  • build/pkgs/cbc: Use std=c++14 by @mkoeppe in #1796
  • .github/workflows/dist.yml (wheels): Run strip only after make was run by @mkoeppe in #1794
  • build/pkgs/twostage: New by @mkoeppe in #1797
  • Improved handling of matrix(row_keys=..., column_keys=...) for callables by @mkoeppe in #1798

Full Changelog: passagemath-10.6.34...passagemath-10.6.35

passagemath-10.6.34

10 Nov 06:57

Choose a tag to compare

Support for reactive marimo notebooks

The command for launching notebooks (sage -n) now supports reactive marimo notebooks (sage -n marimo) after installing marimo in the virtual environment.

When passagemath is installed in the traditional mode as Sage-the-distribution, you can now use the command sage -i marimo to install marimo.

The updated README now also includes a section on running passagemath in the molab.marimo.io cloud.

Screenshot 2025-11-09 at 11 18 54 PM

What's Changed

Full Changelog: passagemath-10.6.33...passagemath-10.6.34

passagemath-10.6.33

06 Nov 18:51
8282f8b

Choose a tag to compare

This release adds support for IPython 9.7.

What's Changed

  • dist.yml (wheels) [macos]: Our delocate no longer needs joblib by @mkoeppe in #1772
  • Add float function from upstream by @cxzhong in #1765
  • sage.algebras.fusion_rings: Add # needs by @mkoeppe in #1774
  • src/sage/algebras/letterplace: Add # needs by @mkoeppe in #1775
  • Fix the is_free incorrect output for new version Singular by @cxzhong in #1768
  • sage.matrix, sage.modules: Add # needs by @mkoeppe in #1777
  • src/sage/all__sagemath_symbolics.py: Import from sagemath-singular by @mkoeppe in #1778
  • src/sage/crypto/mq/rijndael_gf.py: Add # needs by @mkoeppe in #1780
  • src/sage/repl/display/formatter.py: Remove import of unicode_to_str by @mkoeppe in #1781
  • Update some doctest output for Singular 4.4.1p4 by @mkoeppe in #1779

Full Changelog: passagemath-10.6.32...passagemath-10.6.33

passagemath-10.6.32

04 Nov 03:43
f8eaddf

Choose a tag to compare

Initial support for free-threaded Python 3.14

Wheels are now made available also for free-threaded Python 3.14 (cp314-cp314t). Because not all upstream packages have published wheels for this version yet, the wheelhouse procedure needs to be used.

What's Changed

New Contributors

Full Changelog: passagemath-10.6.31...passagemath-10.6.32

passagemath-10.5.49

31 Oct 23:07

Choose a tag to compare

This is the final release of the passagemath-10.5.x series.

What's Changed

  • [passagemath-10.5.x] Merge pull request #1312 from passagemath/tox-docker--fix-failed-tag-push-2 by @github-actions[bot] in #1313
  • [passagemath-10.5.x] Merge pull request #1314 from passagemath/configure--disable-gcc-version-check by @github-actions[bot] in #1315
  • [passagemath-10.5.x] Merge pull request #1335 from passagemath/ecm-use-feature by @github-actions[bot] in #1336
  • [passagemath-10.5.x] Merge pull request #1343 from passagemath/libsemigroups-patch-fix by @github-actions[bot] in #1344
  • build/pkgs/python3: Update to 3.12.12 by @mkoeppe in #1742
  • [passagemath-10.5.x] Merge pull request #1637 from passagemath/macaulay2--ld-classic by @github-actions[bot] in #1745
  • [passagemath-10.5.x] Merge pull request #1658 from passagemath/singular-no-rpath by @github-actions[bot] in #1746
  • [passagemath-10.5.x] Merge pull request #1664 from passagemath/singular-no-rpath-2 by @github-actions[bot] in #1747
  • [passagemath-10.5.x] Merge pull request #1690 from passagemath/normaliz-3.11.0 by @github-actions[bot] in #1748
  • [passagemath-10.5.x] Merge pull request #1685 from passagemath/libxml2-opensuse by @github-actions[bot] in #1749
  • [passagemath-10.5.x] Merge pull request #1727 from passagemath/tachyon--use-pkgconf-for-libpng by @github-actions[bot] in #1750
  • [passagemath-10.5.x] Merge pull request #1706 from passagemath/scip-9.2.4 by @github-actions[bot] in #1753
  • [passagemath-10.5.x] Merge pull request #1616 from passagemath/gsl--build-aux by @github-actions[bot] in #1752
  • [passagemath-10.5.x] Merge pull request #1726 from passagemath/ntl--build-aux by @github-actions[bot] in #1751
  • [passagemath-10.5.x] Merge pull request #1640 from passagemath/macaulay2-no-quadmath by @github-actions[bot] in #1744
  • [passagemath-10.5.x] Merge pull request #1579 from passagemath/eol-10.5.x by @github-actions[bot] in #1743

Full Changelog: passagemath-10.5.48...passagemath-10.5.49