-
-
Notifications
You must be signed in to change notification settings - Fork 496
Sage 10.0 Release Tour
Sage 10.0 was released on May 20, 2023.
Here is an overview of some of the main changes in this version.
The built HTML documentation of the current development version is now available with a stable URL.
Here are shortcuts to: Reference Manual • Developer Guide • Installation Guide, which are embedded permanently in the wiki home.
The developer guide has been updated with the new workflow on GitHub.
Code blocks in the HTML documentation now have a copy button in the top right corner, thanks to executablebooks/sphinx-copybutton. It is configured so that it strips away prompts, comments, and output from doctests, making it more convenient to try out an example. #35304
Now the camera is positioned such that the line from the camera to the center of the bounding sphere of the 3D graphics objects makes an angle of 60 degrees with x-axis and an angle of 30 degrees with z-axis and the field of view of the camera looking at the center has an angle of 45 degrees. Thus 3D graphics does not get out of the bounding box while you rotate it, anymore! #34822
For an example, try to rotate this
sage: var('x,y,z')
sage: implicit_plot3d((sqrt(x*x+y*y)-3)^2 + z*z - 1, (x,-4,4), (y,-4,4), (z,-1,1))
There is an interactive version of the release tour at https://cocalc.com/wstein/support/sage-10.0
CVXPY is an open source Python-embedded modeling language for disciplined convex optimization and extensions. It is under active development and includes well-maintained interfaces to a wide range of solver backends. CVXPY also supports differentiable programming.
It is now available in Sage as the optional package cvxpy
. There is a new backend (middle-end?) for the MixedIntegerLinearProgram
class, activated using the keyword solver="CVXPY"
. #34251
To have CVXPY use a specific solver backend, you can use the following keywords:
-
solver="CVXPY/CBC"
, to use COIN-OR CBC (this requires installation of the additional optional packagecylp
), -
solver="CVXPY/ECOS"
, to use ECOS, -
solver="CVXPY/OSQP"
, to use OSQP, -
solver="CVXPY/SciPy/HiGHS"
, to use HiGHS, -
solver="CVXPY/SCS"
, to use SCS, - similarly, to use any other solver supported by CVXPY; see the CVXPY installation guide.
When cylp
is installed, the MixedIntegerLinearProgram
backend "CVXPY/CBC"
becomes the default, replacing "GLPK"
(unless Gurobi or CPLEX are available via the optional packages sage_numerical_backends_gurobi
, sage_numerical_backends_cplex
, which take precedence).
This is a replacement for the similar functionality of the CBC backend provided by the optional package sage_numerical_backend_coin
, which is going to be removed soon.
This toolbox allows to list all possible bijections
sage: N = 4
sage: A = [dyck_word for n in range(1, N) for dyck_word in DyckWords(n)]
sage: B = [binary_tree for n in range(1, N) for binary_tree in BinaryTrees(n)]
sage: concat_path = lambda D1, D2: DyckWord(list(D1) + list(D2))
sage: concat_tree = lambda B1, B2: concat_path(B1.to_dyck_word(),
....: B2.to_dyck_word()).to_binary_tree()
sage: bij = Bijectionist(A, B)
sage: bij.set_intertwining_relations((2, concat_path, concat_tree))
sage: for D in sorted(bij.minimal_subdistributions_iterator(), key=lambda x: (len(x[0][0]), x)):
....: ascii_art(D)
( [ /\ ], [ o ] )
( [ o ] )
( [ \ ] )
( [ /\/\ ], [ o ] )
( [ o ] )
( [ /\ ] [ / ] )
( [ / \ ], [ o ] )
( [ o ] )
( [ \ ] )
( [ o ] )
( [ \ ] )
( [ /\/\/\ ], [ o ] )
( [ o ] )
( [ \ ] )
( [ o ] )
( [ /\ ] [ / ] )
( [ /\/ \ ], [ o ] )
( [ o ] )
( [ /\ ] [ / \ ] )
( [ / \/\ ], [ o o ] )
( [ o, o ] )
( [ / / ] )
( [ /\ ] [ o o ] )
( [ /\/\ / \ ] [ \ / ] )
( [ / \, / \ ], [ o o ] )
This package is particularly useful as a partner of FindStat:
sage: findmap(list(bij.minimal_subdistributions_iterator()))
0: Mp00034 (quality [100])
1: Mp00061oMp00023 (quality [100])
2: Mp00018oMp00140 (quality [100])
There are a number of symmetries that can be imposed on plane partitions. Sage can now handle various combinations of the most common symmetries. #35037
sage: [PlanePartitions([2*n,2*n,2*n], symmetry='TSSCPP').cardinality() for n in range(1,8)]
[1, 2, 7, 42, 429, 7436, 218348]
sage: [AlternatingSignMatrices(n).cardinality() for n in range(1,8)]
[1, 2, 7, 42, 429, 7436, 218348]
One construction of irreducble representations for the symmetric group
sage: S = Partition([3,2,1]).specht_module(QQ)
sage: S.frobenius_image()
1/45*p[1, 1, 1, 1, 1, 1] - 1/9*p[3, 1, 1, 1] - 1/9*p[3, 3] + 1/5*p[5, 1]
sage: s = SymmetricFunctions(QQ).s()
sage: s(S.frobenius_image())
s[3, 2, 1]
sage: from sage.combinat.diagram import Diagram
sage: D = Diagram([(0,0), (1,1), (2,2), (2,3)])
sage: SM = D.specht_module(QQ)
sage: s = SymmetricFunctions(QQ).s()
sage: s(SM.frobenius_image())
s[2, 1, 1] + s[2, 2] + 2*s[3, 1] + s[4]
- Skew tableaux are now hashable. #35138
- Key polynomials now are a properly implemented graded ring. #35115
- Kernels of matrices modulo composite integers can now be computed using
.left_kernel_matrix()
and.right_kernel_matrix()
. #34862
-
$q$ -commuting Laurent polynomials are defined analogously to the$q$ -commuting polynomials and play an important role is quantum cluster algebras. #35054 - The integer valued polynomials are the set of polynomials
$p$ such that$p(n) \in \mathbb{Z}$ for all$n \in \mathbb{Z}$ . #34988
- Lazy series will update their approximate order as appropriate when getting coefficients. #35265
- The Weyl character ring (and corresponding fusion ring) know they are commutative with faster multiplication for
style='coroots'
. #35186
- Elliptic curves over finite fields now have a
.twists()
method to enumerate all twists. #34782 - Elliptic curves over finite fields now have a
.torsion_basis()
method to compute bases of$n$ ‑torsion subgroups. #34718 - Isogenies now support a
.matrix_on_subgroup()
method. #35164
-
AdditiveAbelianGroupWrapper
now has a staticfrom_generators()
method to construct a group from not necessarily independent elements. #35270
- Drinfeld
$\mathbb{F}_q[T]$ -modules are now implemented, see the documentation for all the new features. #35026
GAP has been upgraded to 4.12.2. #35093
SciPy has been upgraded from 1.9.x to 1.10.1 (Release notes 1.10). #35082
polymake has been upgraded to 4.9 (Release notes 4.8, 4.9). #35085
msolve has been upgraded to 0.4.9. #35159
Normaliz has been upgraded to 3.10.0. #35140
For a list of all packages and their versions, see
The new command sage --tox -e cython-lint -- FILES...
checks Cython source files for common mistakes and style violations. #35385
A linter rule (sage --tox -e relint -- FILES...
) now enforces that Sage library code should not use imports from sage.PAC.KAGE.all
modules when sage.PAC.KAGE
is an implicit namespace package.
A new tool for developers is available that assists with updating imports in the source code: sage --fiximports
edits Python sources in a single file, directory, or in the whole source tree, replacing sage.PAC.KAGE.all
imports by imports from the specific source module. #34945
Many more packages have been changed from ordinary packages to implicit namespace packages, and the corresponding imports from .all
modules have been replaced accordingly.
#35110
#35012
#35033
#35090
#35098
#35099
#35105
#35106
#35107
#35119
#35322
#35366
#35372
The functions is_Algebra
, is_CommutativeAlgebra
, is_FiniteField
, as well as is_Polynomial
, is_MPolynomial
, is_NumberFieldElement
have been deprecated; new abstract base classes are available for equivalent isinstance
tests. #35076 #35100 #35253 #35240
Several new Feature
s have been defined: Some indicate the presence of some standard packages in the Sage distribution, which may be missing in modularized deployments. Others indicate the presence of portions of the Sage library. They can be used for conditionalizing doctests via # optional
directives. #35136 #35237 #35266 #35267 #35314
Sage 10.0 continues to support Python versions 3.8–3.11. Developers who need newer features for typing annotations can now use the backport package typing_extensions
in the Sage library. #35203
The Sage 10.0 source code is available in the Sage GitHub repository.
Sage builds successfully on the following platforms:
-
Linux 64-bit (x86_64)
- ubuntu-{trusty-toolchain-gcc_9,xenial-toolchain-gcc_9, bionic-gcc_8-python3.8, focal, jammy, kinetic, lunar}
- debian-{buster, bullseye, bookworm, sid}
- linuxmint-{19, 19.3, 20.1, 20.2, 21, 21.1}
- fedora-{29, 30, 31, 32, 33, 34, 35, 36, 37, 38}
- centos-{7-devtoolset-gcc_11, stream-8-python3.9, stream-9-python3.9}
- archlinux
- gentoo
- opensuse-{15.3, 15.4, tumbleweed}
- conda-forge
-
Linux 32-bit (i386/i686)
- ubuntu-bionic-gcc_8
- debian-buster
-
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.0 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.0 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
- On fedora-38-minimal, archlinux-minimal, opensuse-tumbleweed-minimal, building openblas fails (when not provided by the system). Fixed by #35371.
- On GCC 13 platforms (e.g., fedora-38), the optional package 4ti2 fails to build. Fixed by #35570.
- The easiest way to install Sage 10.0 on Linux is through a distribution that provides it, see repology.org: sagemath. As of 2023-05-24, packages for Arch Linux, Gentoo, and nixpkgs (unstable) are already available.
See README.md in the source distribution for installation instructions.
Visit sage-support for installation help.
Readme | Version | Citation | Authors | Contributing | Code of Conduct | Copyright ©️ 2023 Sage Developer Community