-
-
Notifications
You must be signed in to change notification settings - Fork 507
Sage 10.1 Release Tour
Current development cycle (2023)
The Sage implementation of the PALP normal form algorithm for lattice polytopes under affine unimodular transformations (LatticePolytope.normal_form(algorithm='palp_native'
) has been made much faster. #35997
mpmath has been upgraded to 1.3.0. #35929
NetworkX has been upgraded from 2.8.x to 3.1 (release notes 3.0, 3.1). #35671
The optional package igraph and its Python bindings have been upgraded to 0.10.4 (release notes 0.10.3, 0.10.4). #35671
The optional package SymEngine and its Python bindings have been upgraded to 0.10.x. #35713
The optional package barvinok has been upgraded to 0.41.7. #35839
OpenBLAS has been upgraded to 0.3.23. #35371
For a list of all packages and their versions, see
Doctests can now be conditionalized on the presence of optional packages or other features using block-scoped doctest tags. This fills the gap between doctest tags on individual doctest lines and file-scoped doctest tags. #35749 Examples in src/sage/numerical/backends/cvxpy_backend.pyx
:
- A file-scoped doctest tag
# sage.doctest: optional - cvxpy r""" CVXPY Backend ...
- Tags in individual doctest lines
sage: p = MixedIntegerLinearProgram(solver="CVXPY/GLPK"); p.solve() # optional - cvxopt 0.0 sage: p = MixedIntegerLinearProgram(solver="CVXPY/GLPK_MI"); p.solve() # optional - cvxopt 0.0 sage: p = MixedIntegerLinearProgram(solver="CVXPY/CVXOPT"); p.solve() # optional - cvxopt 0.0 sage: p = MixedIntegerLinearProgram(solver="CVXPY/GLOP"); p.solve() # optional - ortools 0.0 sage: p = MixedIntegerLinearProgram(solver="CVXPY/PDLP"); p.solve() # optional - ortools 0.0 sage: p = MixedIntegerLinearProgram(solver="CVXPY/CBC"); p.solve() # optional - cylp 0.0
- Using block-scoped tags, the above could be written
sage: # optional - cvxopt sage: p = MixedIntegerLinearProgram(solver="CVXPY/GLPK"); p.solve() 0.0 sage: p = MixedIntegerLinearProgram(solver="CVXPY/GLPK_MI"); p.solve() 0.0 sage: p = MixedIntegerLinearProgram(solver="CVXPY/CVXOPT"); p.solve() 0.0 sage: # optional - ortools sage: p = MixedIntegerLinearProgram(solver="CVXPY/GLOP"); p.solve() 0.0 sage: p = MixedIntegerLinearProgram(solver="CVXPY/PDLP"); p.solve() 0.0 sage: # optional - cylp sage: p = MixedIntegerLinearProgram(solver="CVXPY/CBC"); p.solve() 0.0
Doctest tags for standard packages and features, enabling the separate testing of the distribution packages of the modularized Sage library, are now marked # needs
instead of # optional
. #35749 Examples in src/sage/combinat/cluster_algebra_quiver/cluster_seed.py
:
- A file-scoped doctest tag
# sage.doctest: needs sage.graphs sage.modules r""" ClusterSeed ...
- Tags in individual doctest lines
sage: S = ClusterSeed(['A',5]) sage: S.plot() # needs sage.plot sage.symbolic Graphics object consisting of 15 graphics primitives sage: S.plot(circular=True) # needs sage.plot sage.symbolic Graphics object consisting of 15 graphics primitives sage: S.plot(circular=True, mark=1) # needs sage.plot sage.symbolic Graphics object consisting of 15 graphics primitives
- Using block-scoped tags, the above could be written
sage: # needs sage.plot sage.symbolic sage: S = ClusterSeed(['A',5]) sage: S.plot() Graphics object consisting of 15 graphics primitives sage: S.plot(circular=True) Graphics object consisting of 15 graphics primitives sage: S.plot(circular=True, mark=1) Graphics object consisting of 15 graphics primitives
Sage provides a development tool that assists with updating doctests, sage -fixdoctests
. It has now been documented and expanded to assist with modularization tasks. #35749
When a file uses a file-level # sage.doctest: optional/needs FEATURE
directive, the
doctest fixer automatically removes the redundant # optional/needs FEATURE
tags from all sage:
lines. Likewise, when a block-scoped doctest tag
sage: # optional/needs FEATURE
is used, then the doctest fixer removes
redundant tags from all doctests in this scope. For example:
# sage.doctest: optional - sirocco sage.rings.number_field
r"""
...
EXAMPLES::
sage: # needs sage.modules sage.rings.number_field
sage: Q5 = QuadraticField(5)
sage: V = Q5^42 # optional - sage.modules
sage: T = transmogrify(V) # optional - bliss sirocco
is automatically transformed to:
# sage.doctest: optional - sirocco, needs sage.rings.number_field
r"""
...
EXAMPLES::
sage: # needs sage.modules
sage: Q5 = QuadraticField(5)
sage: V = Q5^42
sage: T = transmogrify(V) # optional - bliss
The doctest fixer also aligns the # optional/needs FEATURE
tags on
individual doctests at a fixed set of tab stops.
The doctester may issue style warnings when # optional/needs
tags are
repeated on a whole block of doctests, suggesting to use a block-scoped tag
instead. The doctest fixer makes these changes automatically.
These distribution packages ship Cython modules with compile-time dependencies on optional packages. #35661, #36003
- https://pypi.org/project/sagemath-tdlib/
- https://pypi.org/project/sagemath-meataxe/
- https://pypi.org/project/sagemath-coxeter3/
- https://pypi.org/project/sagemath-bliss/
- https://pypi.org/project/sagemath-mcqd/
- https://pypi.org/project/sagemath-sirocco/
Downstream packagers are encouraged to create corresponding packages for their distributions.
The downstream package information should as usual be placed in the distros/
directories.
The bootstrap
script now accepts names of SPKGs to bootstrap; this can save time compared to running the full bootstrapping process. #35950
The functions is_SymbolicVariable
, is_SymbolicEquation
have been deprecated. #35505
Sage 10.1 has not been released yet. The first beta, 10.1.beta0, was released on 2023-05-22. The current beta is 10.1.beta9, released 2023-08-05
The source code is available in the Sage GitHub repository.
Sage builds successfully on the following platforms:
-
Linux 64-bit (x86_64), see CI Linux
- ubuntu-{trusty-toolchain-gcc_9, xenial-toolchain-gcc_9, bionic-gcc_8-python3.8, focal, jammy, kinetic, lunar, mantic}
- debian-{buster, bullseye, bookworm, sid}
- linuxmint-{19, 19.3, 20.1, 20.2, 21, 21.1, 21.2}
- fedora-{29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39}
- centos-{7-devtoolset-gcc_11, stream-8-python3.9, stream-9-python3.9}
- archlinux
- gentoo
- opensuse-{15.3, 15.4, 15.5, tumbleweed}
- conda-forge
-
Linux 32-bit (i386/i686)
- ubuntu-bionic-gcc_8
- debian-buster
- debian-bullseye
-
macOS (Intel) (x86_64) - with Homebrew or without
- macOS 11.x (Big Sur)
- macOS 12.x (Monterey)
- macOS 13.x (Ventura)
-
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.
- Make sure that
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
See README.md in the source distribution for installation instructions.
Visit sage-support for installation help.