14905
Comment: 9.6.beta5
|
20104
Move plotting section earlier
|
Deletions are marked like this. | Additions are marked like this. |
Line 61: | Line 61: |
== Plotting and graphics == * Added the ability to choose the hyperbolic model for hyperbolic plots. [[https://trac.sagemath.org/ticket/22081|#22081]] |
|
Line 135: | Line 140: |
* ''BinaryQF.solve_integer()'' now also works for quadratic forms of square discriminant. [[https://trac.sagemath.org/ticket/33026|#33026]] * Quaternion fractional ideals (including orders) now support the usual operations (e.g., ''a*I'', ''I*a'', ''I+J''). [[https://trac.sagemath.org/ticket/32264|#32264]] * ''AdditiveAbelianGroupWrapper'' now exposes ''.discrete_log()'' for (multi-dimensional) logarithms in finite abelian groups. [[https://trac.sagemath.org/ticket/32384|#32384]] |
* `BinaryQF.solve_integer()` now also works for quadratic forms of square discriminant. [[https://trac.sagemath.org/ticket/33026|#33026]] * `Quaternion fractional ideals` (including orders) now support the usual operations (e.g., `a*I`, `I*a`, `I+J`). [[https://trac.sagemath.org/ticket/32264|#32264]] * `AdditiveAbelianGroupWrapper` now exposes `.discrete_log()` for (multi-dimensional) logarithms in finite abelian groups. [[https://trac.sagemath.org/ticket/32384|#32384]] * Graded submodules of graded modules now know they are graded (with respect to the ambient grading); similarly for filtered submodules. [[https://trac.sagemath.org/ticket/33321|#33321]] * Polynomials now evaluate faster on monomial inputs. [[https://trac.sagemath.org/ticket/33165|#33165]] * Implement specialized code for summing terms and monomials in `CombinatorialFreeModule`. [[https://trac.sagemath.org/ticket/33267|#33267]] * Improvements and fixes to `skew_by()` in symmetric functions. [[https://trac.sagemath.org/ticket/33313|#33313]] * Attempt to invert elements generically in a finite dimensional algebra. [[https://trac.sagemath.org/ticket/33250|#33250]] * Tensor products of finite dimensional modules know they are finite dimensional (Sage does not currently have any structure for infinite tensor products, which can have some subtleties). [[https://trac.sagemath.org/ticket/30252|#30252]] * Improved coercions and conversions with Laurent polynomials and their fraction field. [[https://trac.sagemath.org/ticket/31320|#31320]] [[https://trac.sagemath.org/ticket/33477|#33477]] |
Line 147: | Line 159: |
== Coding theory == Optimizations to `SBox`. [[https://trac.sagemath.org/ticket/25633|#25633]] |
|
Line 245: | Line 261: |
=== Sources === |
|
Line 249: | Line 267: |
(On platforms marked with the superscript ⁺, installing optional packages is not supported unless you upgrade the toolchain (gcc, binutils).) * '''Linux 64-bit''' (x86_64) * ubuntu-{[[https://launchpad.net/ubuntu/trusty|trusty]]⁺,[[https://launchpad.net/ubuntu/xenial|xenial]],[[https://launchpad.net/ubuntu/bionic|bionic]],[[https://launchpad.net/ubuntu/focal|focal]],[[https://launchpad.net/ubuntu/hirsute|hirsute]],[[https://launchpad.net/ubuntu/impish|impish]],[[https://launchpad.net/ubuntu/jammy|jammy]]} * debian-{[[https://wiki.debian.org/DebianStretch|stretch]], [[https://wiki.debian.org/DebianBuster|buster]],[[https://wiki.debian.org/DebianBullseye|bullseye]],[[https://wiki.debian.org/DebianBookworm|bookworm]],[[https://wiki.debian.org/DebianUnstable|sid]]} * linuxmint-{[[https://www.linuxmint.com/edition.php?id=158|17]]⁺,[[https://www.linuxmint.com/edition.php?id=217|18]],[[https://linuxmint.com/rel_tara_cinnamon.php|19]],[[https://linuxmint.com/rel_tricia_cinnamon.php|19.3]],[[https://www.linuxmint.com/rel_ulyssa_cinnamon_whatsnew.php|20.1]],[[https://linuxmint.com/rel_uma_cinnamon.php|20.2]],[[https://linuxmint.com/rel_una_cinnamon.php|20.3]]} * fedora-{[[https://docs.fedoraproject.org/en-US/fedora/f26/release-notes/|26]],[[https://docs.fedoraproject.org/en-US/fedora/f27/release-notes/|27]],[[https://docs.fedoraproject.org/en-US/fedora/f28/release-notes/|28]],[[https://docs.fedoraproject.org/en-US/fedora/f29/release-notes/|29]],[[https://docs.fedoraproject.org/en-US/fedora/f30/release-notes/|30]],[[https://docs.fedoraproject.org/en-US/fedora/f31/release-notes/|31]],[[https://docs.fedoraproject.org/en-US/fedora/f32/release-notes/|32]],[[https://docs.fedoraproject.org/en-US/fedora/f33/release-notes/|33]],[[https://docs.fedoraproject.org/en-US/fedora/f34/release-notes/|34]],[[https://docs.fedoraproject.org/en-US/fedora/f35/release-notes/|35]],[[https://fedoraproject.org/wiki/Releases/36/ChangeSet|36]]} * centos-{7⁺,[[https://www.centos.org/centos-stream/|stream-8]],[[https://www.centos.org/centos-stream/|stream-9]]} * gentoo * archlinux * opensuse-{15,[[https://doc.opensuse.org/release-notes/x86_64/openSUSE/Leap/15.3/|15.3]],[[https://get.opensuse.org/tumbleweed/|tumbleweed]]} * slackware-14.2 * '''Linux 32-bit''' (i386/i686) * ubuntu-bionic * [[https://github.com/pypa/manylinux#manylinux_2_24-debian-9-based|manylinux-2_24]] * debian-buster * centos-7⁺ (but docbuild is broken, [[https://trac.sagemath.org/ticket/32768|#32768]]) * '''macOS (Intel)''' (x86_64) - with [[https://brew.sh/|Homebrew]] or without * macOS 10.15 (Catalina) * macOS 11.x (Big Sur) * macOS 12.x (Monterey) [[https://trac.sagemath.org/ticket/32855|#32855]] * '''macOS (Apple Silicon, M1)''' [[https://trac.sagemath.org/ticket/30592|#30592]] * Building Sage 9.5 from source on Apple Silicon (M1) requires the use of [[https://brew.sh/|Homebrew]] (recommended) or conda-forge, which package versions of `gfortran` 11 with necessary changes for this platform that are not in a released upstream version of GCC. (The `gfortran` package that comes with Sage is not suitable for the M1.) * 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 is installed in `/opt/homebrew`, not `/usr/local`. * Be sure to follow the [[https://github.com/sagemath/sage/blob/develop/README.md|README]] and the instructions that the `./configure` command issues regarding the installation of system packages from Homebrew or conda. * '''Cygwin''' (x86_64) === Help === See [[https://github.com/sagemath/sage/blob/9.4/README.md|README.md]] in the source distribution for installation instructions. |
Sage 9.6 Release Tour
Current development cycle (2022)
Contents
Linear Algebra
The new classes Matrix_numpy_integer_dense and Vector_numpy_integer_dense implement matrices and vectors with 64-bit integer entries backed by numpy arrays. #32465.
As a first application, several methods of GenericGraph that return matrices, such as adjacency_matrix, now accept keyword arguments that can select the matrix implementation. #33377, #33387, #33388, #33389
sage: graphs.PathGraph(5).adjacency_matrix(sparse=False, implementation='numpy') [0 1 0 0 0] [1 0 1 0 0] [0 1 0 1 0] [0 0 1 0 1] [0 0 0 1 0] sage: type(_) <class 'sage.matrix.matrix_numpy_integer_dense.Matrix_numpy_integer_dense'>
Symbolics
ImageSet
Sage 9.6 defines a new class ImageSet. #32121
sage: ImageSet(sin, RealSet.open(0, pi/4)) Image of (0, 1/4*pi) by The map sin from (0, 1/4*pi) sage: _.an_element() 1/2*sqrt(-sqrt(2) + 2) sage: sos(x,y) = x^2 + y^2; sos (x, y) |--> x^2 + y^2 sage: ImageSet(sos, ZZ^2) Image of Ambient free module of rank 2 over the principal ideal domain Integer Ring by The map (x, y) |--> x^2 + y^2 from Vector space of dimension 2 over Symbolic Ring sage: _.an_element() 1 sage: ImageSet(sos, Set([(3, 4), (3, -4)])) Image of {...(3, -4)...} by The map (x, y) |--> x^2 + y^2 from Vector space of dimension 2 over Symbolic Ring sage: _.an_element() 25
The new class mirrors and translates to SymPy's ImageSet:
sage: from sage.sets.image_set import ImageSet sage: S = ImageSet(sin, RealSet.open(0, pi/4)); S Image of (0, 1/4*pi) by The map sin from (0, 1/4*pi) sage: S._sympy_() ImageSet(Lambda(x, sin(x)), Interval.open(0, pi/4))
Most methods of ImageSet are actually provided by its base class, the new class ImageSubobject. For all morphisms in the Sets category, there is now a default method image, which constructs an instance of either ImageSubobject or ImageSet.
Plotting and graphics
Added the ability to choose the hyperbolic model for hyperbolic plots. #22081
Polyhedral geometry
Equivariant Ehrhart theory
Manifolds
The structure parameter of the Manifold constructor has new, more convenient defaulting behavior. #33001
When parameters such as diff_degree or metric_name are given, the implied structure is selected:
sage: M = Manifold(3, 'M', diff_degree=0); M 3-dimensional topological manifold M sage: M = Manifold(3, 'M', diff_degree=2); M 3-dimensional differentiable manifold M sage: M = Manifold(3, 'M', metric_name='g'); M 3-dimensional Riemannian manifold M
Symplectic manifolds
Symplectic structures have been added to Sage (#30362).
Projective spaces
Real projective spaces have been added to the manifold catalog (#33221).
Algebra
Finitely presented modules over graded algebras
Sage 9.6 allows the construction of finitely presented modules over graded algebras, even algebras which are infinite and/or noncommutative like the mod p Steenrod algebra. Some homological algebra is implemented in general, and more tools are implemented specifically for modules over the Steenrod algebra (#32505, #30680).
sage: from sage.modules.fp_graded.module import FPModule sage: E.<x,y> = ExteriorAlgebra(QQ) # M has one generator g in degree 0 and two relations, x*g and y*g. # That is, M is QQ as a trivial E-module. sage: M = FPModule(E, [0], [[x], [y]]) # Free resolution: sage: M.resolution(3) [Module morphism: From: Free graded left module on 1 generator over The exterior algebra of rank 2 over Rational Field To: Finitely presented left module on 1 generator and 2 relations over The exterior algebra of rank 2 over Rational Field Defn: g[0] |--> g[0], Module morphism: From: Free graded left module on 2 generators over The exterior algebra of rank 2 over Rational Field To: Free graded left module on 1 generator over The exterior algebra of rank 2 over Rational Field Defn: g[1, 0] |--> x*g[0] g[1, 1] |--> y*g[0], Module morphism: From: Free graded left module on 3 generators over The exterior algebra of rank 2 over Rational Field To: Free graded left module on 2 generators over The exterior algebra of rank 2 over Rational Field Defn: g[2, 0] |--> x*g[1, 0] g[2, 1] |--> y*g[1, 0] + x*g[1, 1] g[2, 2] |--> y*g[1, 1], Module morphism: From: Free graded left module on 4 generators over The exterior algebra of rank 2 over Rational Field To: Free graded left module on 3 generators over The exterior algebra of rank 2 over Rational Field Defn: g[3, 0] |--> x*g[2, 0] g[3, 1] |--> y*g[2, 0] + x*g[2, 1] g[3, 2] |--> y*g[2, 1] + x*g[2, 2] g[3, 3] |--> y*g[2, 2]]
There is a new thematic tutorial providing many details and examples.
Miscellaneous improvements
Ideal membership over quotient rings can now be decided (by reducing to ideal membership in the parent ring). #33237
Iterating over (some) infinite modules (including ℤ^n) now enumerates the entire module, in a "natural" order. #33287
BinaryQF.solve_integer() now also works for quadratic forms of square discriminant. #33026
Quaternion fractional ideals (including orders) now support the usual operations (e.g., a*I, I*a, I+J). #32264
AdditiveAbelianGroupWrapper now exposes .discrete_log() for (multi-dimensional) logarithms in finite abelian groups. #32384
Graded submodules of graded modules now know they are graded (with respect to the ambient grading); similarly for filtered submodules. #33321
Polynomials now evaluate faster on monomial inputs. #33165
Implement specialized code for summing terms and monomials in CombinatorialFreeModule. #33267
Improvements and fixes to skew_by() in symmetric functions. #33313
Attempt to invert elements generically in a finite dimensional algebra. #33250
Tensor products of finite dimensional modules know they are finite dimensional (Sage does not currently have any structure for infinite tensor products, which can have some subtleties). #30252
Improved coercions and conversions with Laurent polynomials and their fraction field. #31320 #33477
Number theory
Elliptic curves
Elliptic-curve DLP and Weil pairings over finite fields are now much faster (thanks to PARI). #33121
Scalar multiplication on elliptic curves over finite fields is now significantly faster (thanks to PARI). #33147
Computing the Weierstraß ℘ function of an elliptic curve is now significantly faster (thanks to PARI). #33223
Coding theory
Optimizations to SBox. #25633
Package upgrades
For a list of all packages and their versions, see
Python 3.10
Sage 9.6 continues to support system Python 3.7.x to 3.10.x. If no suitable version of Python is installed in the system, Sage will install its own copy of Python. Sage now ships Python 3.10.2 for this purpose. #30767
FLINT 2.8.x and arb 2.22.x
FLINT from 2.7.1 to 2.8.4, arb to 2.22.1 #32211, #33189
The FLINT 2.8 series brings major new algorithms and general speedups. https://github.com/wbhart/flint2/blob/flint-2.8/NEWS#L1262 Note that Sage accepts system installations of FLINT >= 2.6.x. Users on older distributions who want to benefit from the speed ups in FLINT 2.8.x may want to use ./configure --without-system-flint.
Meta-ticket #31408 tracks the effort to make use of new features added in recent FLINT releases in the Sage library.
lrcalc 2.1
lrcalc, Anders Buch's Littlewood-Richardson Calculator, has been upgraded to the major new version 2.1 changelog. #31355
SymPy 1.10
SymPy has been upgraded to version 1.10 (release notes). #33398
polymake 4.6
polymake, a comprehensive system for computations in polyhedral geometry, tropical geometry, etc., has been upgraded to version 4.6 (release notes). #33251
igraph 0.9.x
The igraph library and its Python interface (now also just called igraph) have been upgraded to versions 0.9.5/0.9.8. #32510
JupyterLab 3.3
JupyterLab, the latest web-based interactive development environment for notebooks, code, and data, is slated to replace the now-classic Jupyter notebook interface. The version of JupyterLab in the Sage distribution has been upgraded to the major new version 3.3. #32069
After ./sage -i jupyterlab_widgets, you can run it using ./sage -n jupyterlab.
Also two new interface variants are provided: ./sage -n nbclassic and ./sage -n retrolab.
New developer tools
Pre-built Docker containers on ghcr.io
Our portability CI on GitHub Actions builds Docker images for all tested Linux platforms (and system package configurations) and makes them available on GitHub Packages (ghcr.io). #39033
Since 9.6.beta1, the image version corresponding to the latest development release receives the additional Docker tag dev, see for example the Docker image for ubuntu-impish-standard. Thus, for example, the following command will work:
$ docker run -it ghcr.io/sagemath/sage/sage-docker-ubuntu-impish-standard-with-targets-optional:dev bash
Images whose names end with the suffix -with-targets-optional are the results of full builds and a run of make ptest. They also contain a copy of the source tree and the full logs of the build and test.
Smaller images corresponding to earlier build stages are also available:
-with-system-packages provides a system installation with system packages installed, no source tree,
-configured contains a partial source tree and has completed bootstrap and the configure,
-with-targets-pre contains the full source tree and a full installation of all non-Python packages,
-with-targets contains the full source tree and a full installation of Sage, including the HTML documentation, but make ptest has not been run yet.
Gitpod
Gitpod is a service that provides a development environment in the cloud based on VS Code. It is free to use for up to 50 hours per month. Sage now includes a configuration for Gitpod; see the new section Setting up your workspace in the Sage Developer's Guide. #33103
To launch Gitpod on a branch of a Trac ticket, you can use the new Gitpod badge in the ticket box.
New status badges on Trac tickets
We have now:
1. Linter that checks that the code of the current branch adheres to the style guidelines. In order to see details when it fails, you can click on it and then select the most recent workflow run.
2. Build & test that builds sage for the current branch (incrementally on top of the system packages of the develop branch) and runs the test. Details are again available by clicking on the badge.
3. Build documentation workflow that builds the HTML documentation for the current branch. If you click on it, you get the HTML output of the successful run. The idea is to use this to easily inspect changes to the documentation without the need to locally rebuild the docs yourself. If the doc build fails, you can go to the Actions tab of sagemath/sagetrac-mirror repo and choose the particular branch to see what went wrong.
The idea is that these three status badges complement the existing patchbots (and maybe even replace them in the future). In particular, they are supposed to always be green.
Sage patchbot on GitHub Actions
The Sage patchbot can now be run on GitHub Actions, on top of any of the Linux platforms for which we have prebuilt Docker images.#33253
Availability of Sage 9.6 and installation help
The first development release of the 9.6 series, 9.6.beta0, was tagged on 2022-02-06. The current development release is 9.6.beta5, tagged on 2022-03-12.
The SageMath installation guide now provides a decision tree that guides users and developers to a type of installation suitable for their system and their needs.
Sources
The Sage source code is available in the sage git repository.
SageMath 9.6 supports all platforms that were supported by Sage 9.5 and adds support for building on distributions that use the (unreleased) GCC 12 series (fedora-36). #33187
(On platforms marked with the superscript ⁺, installing optional packages is not supported unless you upgrade the toolchain (gcc, binutils).)
Linux 64-bit (x86_64)
Linux 32-bit (i386/i686)
- ubuntu-bionic
- debian-buster
centos-7⁺ (but docbuild is broken, #32768)
macOS (Intel) (x86_64) - with Homebrew or without
- macOS 10.15 (Catalina)
- macOS 11.x (Big Sur)
macOS 12.x (Monterey) #32855
macOS (Apple Silicon, M1) #30592
Building Sage 9.5 from source on Apple Silicon (M1) requires the use of Homebrew (recommended) or conda-forge, which package versions of gfortran 11 with necessary changes for this platform that are not in a released upstream version of GCC. (The gfortran package that comes with Sage is not suitable for the M1.)
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 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.
Cygwin (x86_64)
Help
See README.md in the source distribution for installation instructions.
See sage-devel for development discussions and sage-release for announcements of beta versions and release candidates.