Skip to content

Sage 10.5 Release Tour

Kwankyu Lee edited this page Nov 20, 2024 · 26 revisions

These are the work-in-progress release notes for the upcoming 10.5 release (2024). Contributions are welcome!

For the current stable version, see the Sage 10.4 Release Tour.

Matroids

The validity check method, is_valid, now accepts the boolean argument certificate. When certificate is set to True, the method is_valid returns a tuple of a boolean and a dictionary. The dictionary provides some more information in case the matroid is not valid. #38711

sage: C = [[1, 2, 3], [3, 4, 5]]
sage: M = Matroid(circuits=C)
sage: M.is_valid(certificate=True)
(False,
 {'circuit 1': frozenset({3, 4, 5}),
  'circuit 2': frozenset({1, 2, 3}),
  'element': 3,
  'error': 'elimination axiom failed'})

Combinatorial species

The new ring PolynomialSpecies supports computations with polynomial combinatorial species. Unlike previous implementations, as in Maple, MuPad, Axiom, and Sage itself, it regards a species as a formal sum of group actions of symmetric groups. The species must be polynomial, that is, only finitely many symmetric groups may occur. This restriction will be removed with #38544

The ring allows computations with virtual weighted multisort species. All the major operations, such as sum, product, composition and Hadamard product are provided. One can define a species by providing the underlying permutation group or by specifying a group action of (a Young subgroup of) the symmetric group. In particular, it is now possible to compute the atomic expansion of any given species.

For example:

sage: P.<X> = PolynomialSpecies(R)
sage: E = sum(P(SymmetricGroup(n)) for n in range(5))
sage: E1 = sum(P(SymmetricGroup(n)) for n in range(1,5))
sage: E(q*E1).truncate(5)
1 + q*X + (q^2+q)*E_2 + (q^3+q)*E_3 + q^2*X*E_2 + (q^4+q)*E_4 + q^2*X*E_3 + q^2*P_4 + q^3*E_2^2

Graph theory

Several improvements have been made like the initialization of a backend and a significant speed up of method gomory_hu_tree. #38664 #38791

New methods have been added to check whether an input list of vertices (or edges) forms a vertex (or edge) cut of the graph, and to orient a graph according to an input function. #38418 #38435 #38778

sage: G = graphs.PathGraph(10)
sage: D = G.orient(lambda e:e if (e[0] + e[1]) % 3 == 0 else (e[1], e[0], e[2]))
sage: D.edges(labels=False)
[(1, 0), (1, 2), (3, 2), (4, 3), (4, 5), (6, 5), (7, 6), (7, 8), (9, 8)]

A uniform generator of random proper interval graphs has been added. #38354

sage: G = graphs.RandomProperIntervalGraph(50)
sage: G.is_interval()
True
sage: G.clique_number()
11
sage: G.treewidth()
10

Package upgrades

gcc 13.3.0 #38442

sympy 1.13.2 #36641

suitesparse 7.8.0 #37204

ecm 7.0.6 #38344, #38345

fpylll 0.6.1 #38231

libffi 3.4.6 #38308

tachyon 0.99.5 #36969 #38531

libpng 1.6.37 #38522

sphinx 7.4.7 #38549

cypari2 2.2.0 #38183

pytest, pytest_mock, pytest_xdist are now standard wheel packages. #37301

Optional packages

mathics #37395

jmol and jupyter_jmol have been demoted from standard to optional. #38504 #38532

Development tools

Deprecation Policy for classes updated. #38273

Reviewing Code for PRs affecting user interface added. #38503

The doctest precision tag # abs tol now compares complex numbers. #38433

Doc previews for PRs show TESTS as well as EXAMPLES so that developers may double-check newly added TESTS. However, as before, TESTS are not included in the doc of a release. #38449

image

Modularization

Binary wheels are now built also for musllinux platforms and the aarch64 architecture. #38272

Source distributions of the modularized distribution packages are now also made available on GitHub Releases. #38519

The new files SAGE_ROOT/constraints_pkgs.txt and SAGE_ROOT/pkgs/sagemath-standard/constraints_pkgs.txt assist with building the modularized distribution packages directly from the repository. See the included comments for instructions. 37434

See also https://github.com/sagemath/sage/issues/29705

Deprecations

Global imports:

  • GroupExp_Class, GroupExpElement, GroupSemidirectProductElement #38238

is_... functions:

  • is_Ideal, is_LaurentSeries, is_MPolynomialIdeal, is_MPolynomialRing, is_MPowerSeries, is_PolynomialQuotientRing, is_PolynomialRing, is_PolynomialSequence, is_PowerSeries, is_QuotientRing #38266
  • is_ChowCycle, is_CohomologyClass, is_Divisor, is_ToricDivisor #38277
  • is_Infinite #38278
  • is_SymmetricFunction #38279
  • is_AlphabeticStringMonoidElement, is_BinaryStringMonoidElement, is_HexadecimalStringMonoidElement, is_OctalStringMonoidElement, is_Radix64StringMonoidElement, is_StringMonoidElement #38280
  • is_Ring #38288
  • is_FunctionFieldElement, is_FunctionFieldElement #38289
  • is_LaurentSeriesRing, is_MPowerSeriesRing, is_PowerSeriesRing #38290
  • is_SchemeMorphism, is_SchemeTopologicalPoint #38296

Availability and installation help

Sage 10.5 has not been released yet. The first development version, 10.5.beta0, was tagged on 2024-07-24. The current development version is 10.5.beta5, tagged on 2024-09-22.

Sources

The source code is available in the Sage GitHub repository.

Sage builds successfully on the following platforms:

  • Linux 64-bit (x86_64)
  • Linux 32-bit (i386/i686)
    • debian-bullseye
  • macOS (Intel) (x86_64) - with Homebrew or without
    • macOS 12.x (Monterey)
    • macOS 13.x (Ventura)
    • macOS 14.x (Sonoma)
  • macOS (Apple Silicon, M1/M2/M3) - 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/M3 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.

Configuration changes

configure now checks that the build directory is on a normal writable file system. https://github.com/sagemath/sage/pull/38256

Help

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

Visit sage-support for installation help.

More details

Clone this wiki locally