Skip to content

Sage 10.2 Release Tour

Kwankyu Lee edited this page Dec 3, 2023 · 90 revisions

Sage 10.2 was released on Dec 3, 2023.

Here is an overview of some of the main changes in this version.

Algebraic topology

  • Mod 2 homology and cohomology of a simplicial complex or simplicial set as a module over the mod 2 Steenrod algebra: for any element a of the Steenrod algebra and any (co)homology class x, compute a*x and x*a. #36310

Elliptic curves

  • Isogeny-finding (including the computation of duals) now uses the quasilinear-time BMSS algorithm. #36285
  • Computing traces of arbitrary endomorphisms is now supported (at least over finite fields and number fields). #35546

Documentation

Live doc

Live doc has arrived. Every doc page gets a "Make live" button that activates code examples. The button is half hidden at the middle of the right edge. It becomes "Ready" when the Sage kernel is fully loaded. You may experiment with the examples while modifying code in place. Code is run by the Sage kernel built from the Sage Binder repo. You may find the kernel loading too slow. Sorry but that's what we get for free. Come back after having a cup of coffee.

To have it on your system, rebuild Sage (doc) with export SAGE_LIVE_DOC=yes && make -j4. For zero latency in loading the kernel, rebuild Sage with

export SAGE_LIVE_DOC=yes && export SAGE_JUPYTER_SERVER=http://localhost:8889 && make -j4

and, before browsing documentation, run a local Jupyter server by

./sage --notebook=jupyterlab \
  --ServerApp.token='secret' \
  --ServerApp.allow_origin='null' \
  --ServerApp.disable_check_xsrf=true \
  --ServerApp.port=8889 \
  --ServerApp.open_browser=false 

For more details, see #36144.

Doc preview in all languages

Sage docs in non-English languages are available in the doc preview.

Docs in JupyterLab and Jupyter Notebook

The Help menu now contains links to online Sage documentation. Previously the links were to local files, which did not work well with JupyterLab.

Package upgrades and configuration changes

Python / Cython

Support for using system Python 3.8.x has been removed; Sage now accepts system Python 3.9.x–3.11.x. This has enabled major upgrades of SciPy, NumPy, and other packages that follow the NEP 29 schedule for Python version support. #35404

Cython has been upgraded from the classic 0.29.x series to the 3.0.x series, which has been in the making since 2020 (changelog 3.0.2). Sage developers may find the Cython 3 migration guide valuable. #35084, #36109, #36110, #36416

NumPy / SciPy / Matplotlib

NumPy has been upgraded from 1.23.5 to 1.26.1 (release notes 1.24, 1.25, 1.26). #34816, #36509

SciPy has been upgraded from 1.10.1 to 1.11.3 (release notes 1.11). #36112, #36412

Matplotlib has been upgraded to 3.8.0. #36320

Bordeaux / Kaiserslautern / Paris

FLINT and arb have been upgraded to 2.9.0 and 2.23.0. #34102, #34106

Singular has been upgraded to 4.3.2p8. #35934, #36395

PARI has been upgraded to 2.15.4. #35302

The optional package msolve has been upgraded to 0.5.0. #36103

Other upgrades

nauty has been upgraded to 2.8.6 (changelog). Sage developers can now assume that all features of nauty 2.8 are available. #36541, #36707

Pillow has been upgraded to 10.1.0. #36320, #36731

MathJax, providing the math typesetting in the HTML documentation, can now be taken from the system. #36098

gc and libatomic_ops have been upgraded to 8.2.4 and 7.8.0, respectively. #35743 #35399

tox has been upgraded from 3.x to 4.11.1 (FAQ on new features of tox 4, upgrading notes, changelog). #34840

The optional package normaliz has been upgraded to 3.10.1. #36050

System package information for Alpine Linux has been added. #35285

For a list of all packages and their versions, see

New developer tools, modularization, deprecations

Open blocker PRs are applied automatically in CI workflows

Occasionally, a development release may not pass tightened linter requirements, or other breakage may occur that reduces the value of our CI workflows. Developers in the Triage role can now mark a PR as a hotfix for the CI by using the "p: blocker / 1" label. The hotfix PR will then be applied to all CI workflows, until it has been merged into the next beta or closed otherwise. #36338

Obviously, caution and restraint are necessary when using the label. Only narrowly focused fixes are suitable to avoid surprises and merge conflicts, and the "[p: blocker / 1]" label should only be set after the PR passes tests. When adding or removing the label, developers should post a comment that explains the reason.

./configure --enable-system-site-packages (experimental)

Using this new, experimental switch, you allow Sage to see your system site packages, i.e., the Python packages in the system Python installation on top of which the Sage venv is created. #29665, #36256, #36276, #36316, #36332, #36382

The switch allows ./configure to detect any Python packages that it can see and that meet the version constraints declared in the files SAGE_ROOT/build/pkgs/*/install-requires.txt.

In the current implementation, it does not detect "user" site packages yet. The feature is experimental because it turns on a huge number of system packages, and the only way to be sure that our version constraints are accurate is to have people actually try them. In particular, distribution package maintainers (conda, nix, arch, etc.) may want give it a try because it serves as an early warning system for version incompatibilities.

Modularization

Portions of the documentation can now be conditionalized using Sphinx tags .. ONLY:: feature_FEATURE, corresponding to dynamically detectable features. #36495

The build and check phases of modularized distribution packages like sagemath_categories have been separated. After a package has been built, for example using make SAGE_WHEELS=yes sagemath_categories, the tests can be run using make sagemath_categories-check. #36452

Major progress has been made in tagging doctests with # needs FEATURE directives, which enable separate testing of the modularized distribution packages and give better attribution to upstream libraries.

See Meta-ticket #29705 for the list of modularization PRs merged in the 10.2 series.

Deprecations

The packages sage.docs, sage.finance, sage.media, and several modules in sage.homology, sage.rings, sage.structure, and sage.symbolics have been removed after deprecation periods expired. #36300, #36303, #36304, #36305, #36306, #36307

The functions is_CallableSymbolicExpression, is_CallableSymbolicExpressionRing, is_Expression, is_SymbolicExpressionRing, as well as the method Expression.__len__ have been removed after deprecation periods expired. #36304

The backslash operator has been deprecated. #36394

Availability of Sage 10.2 and installation help

Sources

The source code is available in the Sage GitHub repository.

Support for building with GCC older than version 8.4 has been removed. #35810

Sage builds successfully on the following platforms:

  • Linux 64-bit (x86_64)
  • Linux 32-bit (i386/i686)
    • ubuntu-bionic-gcc_8
    • debian-bullseye
  • macOS (Intel) (x86_64) - with Homebrew or without
    • macOS 11.x (Big Sur)
    • macOS 12.x (Monterey)
    • macOS 13.x (Ventura)
    • macOS 14.x (Sonoma)
  • macOS (Apple Silicon, M1/M2) - with Homebrew or without
    • Make sure that /usr/local does not contain an old copy of homebrew (or other software) for x86_64 that you may have copied from an old machine. Homebrew for the M1/M2 is installed in /opt/homebrew, not /usr/local.
    • Be sure to follow the README and the instructions that the ./configure command issues regarding the installation of system packages from Homebrew or conda.

You can also build Sage on top of conda-forge on Linux and macOS.

Sage 10.x does not support Cygwin; use Windows Subsystem for Linux instead. Because of unresolved problems with standard packages GIAC (#34269), ECL (#34127), Maxima (#30796), and the rebasing facility (#34223), Sage 10.x does not support Cygwin. Users on Windows 10 and 11 can migrate to using WSL as described in our installation guide. A convenient way to use such an installation of Sage is via VS Code's WSL remote. #34301, #30484

Known problems and workarounds

On newer systems that ship Perl >= 5.38, the optional package polymake does not build. Workaround: Install a suitable older version of Perl, for example using perlbrew, as recommended by the polymake project. #36023

On ubuntu-mantic, the Maxima package may fail to build when system ECL is in use. Workaround: Use ./configure --without-system-ecl #36672

The optional packages cylp, pari_jupyter, pyscipopt, p_group_cohomology, sage_numerical_backend_*, surface_dynamics, symengine_py have not been updated yet to work with Cython 3. This will be done early in the next release cycle; any help is very welcome.

Help

See README.md in the source distribution for installation instructions.

Visit sage-support for installation help.

More details