10.0
SageMath version 10.0 (released May 20, 2023)
Release Notes
- adds support for GCC 13; major package upgrades
- new optimization solvers via CVXpy, major new features in combinatorics and algebra
What's Changed
- Fix deployment of docs to netlify by @tobiasdiez in #34984
- Fix W391 linter issues by @tobiasdiez in #35109
tox.ini
(fedora-33): Do not setIGNORE_MISSING_SYSTEM_PACKAGES=no
by @mkoeppe in #35126- Mark unstable tests in
klyachko.py
due to #32773 by @tornaria in #35058 - ci-linux: Remove unmaintained local-conda runs by @mkoeppe in #35125
- Fix Cygwin CI after #32841 by @mkoeppe in #35052
- Add default devcontainer using conda by @tobiasdiez in #35072
- Improve camera positioning for threejs by @kwankyu in #34960
- Show explicit formulas in documentation of
WeierstrassIsomorphism
by @yyyyx4 in #34967 - Compute matrix kernels modulo composites by @yyyyx4 in #34968
- Cross-link matrix methods
image
andcolumn_space
by @Sandstorm831 in #34972 SignedPermutation
should allow iterables as input by @Sandstorm831 in #34974- Add
.torsion_basis()
method toEllipticCurve_finite_field
by @yyyyx4 in #34982 - Add construction of strongly regular digraph by @MatteoCati in #34986
- Trac role to GitHub by @roed314 in #35015
- Add doctest for #20847 by @mezzarobba in #34963
- Add
.twists()
toEllipticCurve_finite_field
by @yyyyx4 in #34981 - Add new skew Hadamard matrices by @MatteoCati in #34985
- Fix doctests to support numpy 1.24 by @tornaria in #34994
- Fix bug due to UB in conversion from python
int
toZZ
(python 3.11, 32 bit, gcc12) by @tornaria in #34997 - Enable dependabot for github action updates by @tobiasdiez in #34999
- Add doctest for #20846 by @mezzarobba in #35001
- Add doctest for #16031 by @mezzarobba in #35003
- Speed up some methods for quasimodular forms ring elements by @DavidAyotte in #35004
- Fix some "cannot" by @fchapoton in #35007
- Add doctest for #13569 by @mezzarobba in #35010
sage.{categories,matrix,structure}
: Replace imports fromsage.*.all
for namespace packages by @mkoeppe in #35012- Add
limit=
argument toInteger.prime_divisors()
by @yyyyx4 in #35019 - Use NTL's
MinPolyMod()
for more rings by @yyyyx4 in #34966 qqbar.clear_denominators
: crude but fast alternative algorithm by @mezzarobba in #34961- Support for tachyon >= 0.99.2 by @tornaria in #34995
- Implement check for Lorentzian polynomials #28252 by @fchapoton in #35021
- Remove upstream urls from
checksums.ini
that point to trac by @roed314 in #35023 - Fix usage of
verbose
with positional argument by @alexjbest in #35024 - Implement
__getitem__
and alias weight methods for quasimodular forms by @DavidAyotte in #35025 - gitignore another (temporary) autoconf file by @alexjbest in #35027
sage.schemes
: Replace imports fromsage.*.all
for namespace packages by @mkoeppe in #35033- Make
_multiple_x_*()
methods work for all nβ 0 by @yyyyx4 in #35035 - Document argument
is_open
inManifoldSubset.complement
anddifference
by @egourgoulhon in #35040 - Add Hadamard matrices up to order 1000 by @MatteoCati in #35059
- A bijectionist's toolkit by @mantepse in #35060
- Add notes about recent changes on
KnotInfo
by @soehms in #35063 - Removing some unused imports by @fchapoton in #35064
- Upgrade eclib to 20221012 by @alexjbest in #35067
- Conform to doc requirements so that the docs look more beautiful by @alexjbest in #35069
- Document sage installation method with pip by @zovelsanj in #35070
- Combinatorial polyhedron: move list of pairs to dedicated class by @kliem in #35073
- Add ABCs
CommutativePolynomial
,MPolynomial_libsingular
,InfinitePolynomial
; deprecateis_Polynomial
,is_MPolynomial
by @mkoeppe in #35076 - Remove 'docker' from the names of the Docker images published on ghcr.io by @mkoeppe in #35079
- Add
is_supergreedy()
to linear extensions by @Sandstorm831 in #34970 - Deprecate constructing number-field fractional ideals via orders'
.ideal()
method by @yyyyx4 in #34979 is_prime
for ideals uses factorization, can be VERY slow by @yyyyx4 in #34980- Integer-valued polynomial ring by @fchapoton in #34988
- Drinfeld modules by @kryzar in #35026
- Fix the method
monomials_of_degree
by @DavidAyotte in #35043 - Convert result of multivariate polynomial evaluation into correct parent by @mezzarobba in #35045
sage.{coding,groups}
: Replace imports from sage.*.all for namespace packages by @mkoeppe in #35099- Remove direct use of
setup.py sdist
, add targetsmake SPKG-sdist
by @mkoeppe in #35104 sage.{functions,interfaces,symbolic}
: Replace imports fromsage.*.all
for namespace packages by @mkoeppe in #35105sage.{arith,crypto,databases,dynamics,lfunctions,quadratic_forms}
: Replace imports fromsage.*.all
for namespace packages by @mkoeppe in #35106sage.{finance,interacts,libs,numerical,stats,tests}
: Replace imports fromsage.*.all
for namespace packages by @mkoeppe in #35107- Deprecate
is_FiniteField
etc., makesage.rings.finite_rings
a namespace package by @mkoeppe in #35119 - Fix use of
sig_on()
/sig_off()
inCBF.integral()
by @mezzarobba in #35044 - Implementing q-commuting Laurent polynomials. by @tscrim in #35054
- Upgrade scipy to 1.10.1 by @mkoeppe in #35082
build/pkgs/pcre
: Remove by @mkoeppe in #35083- Upgrade polymake to 4.9 by @mkoeppe in #35085
- Move
single_valued
method of MZV to auxiliary F ring by @fchapoton in #35086 - Use enum for face iterator status by @kliem in #35087
sage.{algebras,combinat,matroids}
: Replace imports from sage.*.all for namespace packages by @mkoeppe in #35090- Fix and activate W391 in
pyx
files by @fchapoton in #35091 - Update GAP to 4.12.2 by @dimpase in #35093
- To determine
GAP_SO
,sage.env
looks forlibgap.so
but it should look forlibgap.so*
by @dimpase in #35094 - Simplicial set group by @miguelmarco in #35097
sage.{topology,homology}
: Replace imports fromsage.*.all
for namespace packages by @mkoeppe in #35098- New ABC
sage.structure.element.NumberFieldElement
,deprecate is_NumberFieldElement
by @mkoeppe in #35100 scip_backend
: Remove use of deprecatedsage.ext.memory_allocator
by @mkoeppe in #35101- Fix all pycodestyle E303 warnings in all folders
c*
by @fchapoton in #35151 - Update msolve to 0.4.9 by @dimpase in #35159
- Fix a slow doctest in
matrix_integer_dense_hnf.py
by @tornaria in #35162 - Fix the documentation for the so matrix Lie algebra by @tscrim in #35163
- Compute the matrix of an isogeny on a given n-torsion subgroup by @yyyyx4 in #35164
- Activate W293 and E714 in
pyx
files by @fchapoton in #35165 - Fix bug in
is_eulerian
by @dcoudert in #35170 - Speedup of Poset characteristic polynomial by @trevorkarn in #35173
- Cleaning and enhancement to
PolyDict
by @videlec in #35174 - Matplotlib 3.7.0 support by @kiwifb in #35177
- Docs: use double backquotes for a command by @minaminao in #35180
- Bump codecov/codecov-action from 2 to 3 by @dependabot in #35183
- Bump actions/github-script from 3.1.0 to 6.4.0 by @dependabot in #35184
- Bump actions/cache from 2 to 3 by @dependabot in #35185
- Various improvements to Weyl character rings by @tscrim in #35186
- Add typing to tangent vectors by @tobiasdiez in #35189
- Symbolics: add derivative operator by @spaghettisalat in #35193
- Workaround for an ecl race in maxima init by @tornaria in #35195
- Fix bug with
Set
equality/inequality by @jhpalmieri in #35197 - sagemath-standard: Add dependencies
typing_extensions
,importlib_resources
,importlib_metadata
by @mkoeppe in #35203 - Remove directories leftover from improper shutdown so
sage-cleaner
won't kill random processes by @tornaria in #35204 - Remove deprecated slicing semantics of polynomials by @fchapoton in #35205
- Fixing some E502 (unnecessary backslash) in
pyx
files by @fchapoton in #35206 - Make automatic codecov report less noisy by @kwankyu in #35056
- Use the Docker images published on ghcr.io without 'docker' in the name by @mkoeppe in #35080
- Meta-PR: Replace imports from
sage.*.all
for namespace packages by @mkoeppe in #35110 - Partly fix conda ci and update python versions tested by @tobiasdiez in #35111
- Added check for invalid range in
contour_plot
and derivatives by @jnash10 in #35113 libgap
: Remove some GC hazards by @collares in #35114- Make the key polynomials know their degree by @tscrim in #35115
- Fix pep8 E303 in
modular/
andalgebras/
by @fchapoton in #35117 sage.env.sage_include_directories
: Don't usedistutils
andSAGE_LIB
by @mkoeppe in #35118- Add optional package cvxpy, update cylp, add CVXPY MIP backend by @mkoeppe in #35120
- Fixing most of pycodestyle E271 by @fchapoton in #35123
- Fix a very slow doctest in
sage/data_structures/stream.py
by @tornaria in #35127 - Fix French notation for
Tableau
plots by @thecaligarmo in #35128 - Add parameter 'induced' to
connected_subgraphs_iterator
by @dcoudert in #35131 - Fix pep8 E303 in various folders (plot, quadratic forms, etc) by @fchapoton in #35132
sage.geometry.integral_points
: Use generic impl if nomatrix_integer_dense
by @mkoeppe in #35135sage.{geometry,rings}
: More# optional
tags in doctests by @mkoeppe in #35136- Allow skew tableaux to be hashed by @tscrim in #35138
- Update normaliz to 3.10.0, update e_antic, pynormaliz by @mkoeppe in #35140
- Revise the PR template by @kwankyu in #35141
- Fix broken link in README by @wermos in #35142
- Equal hashes for non-isomorphic bipartite graphs with edge labels by @dcoudert in #35146
sage.matrix.operation_table
: Modularization and code style fixes by @mkoeppe in #35153- Update the logo at README.md by @prirai in #35155
- Fix index out of range exception (#35031) by @sheerluck in #35156
- Move
filterwarnings
calls fromsage.all
tosage.all__sagemath_repl
by @mkoeppe in #35160 - Add tests for solved issue about fraction fields by @videlec in #35220
- Systematically avoid checking of input by @mantepse in #35233
- Make
Expression.simplify
optionally use sympy by @mathcals in #35236 sage.features
: Addsage.libs.singular
, features for standard Python packages by @mkoeppe in #35237- Fix pep8 E303 in all folders starting with [defghi] by @fchapoton in #35244
- Using
change_ring
inquadratic_forms
by @fchapoton in #35248 - Catch some more precise exceptions in
combinat/
by @fchapoton in #35249 - Fix doctests for nauty 2.8.6 output changes by @tornaria in #35250
- More standard shape for error messages in
combinat
by @fchapoton in #35252 - Deprecate
is_Algebra
,is_CommutativeAlgebra
by @mkoeppe in #35253 - Fix docstring of
src/sage/rings/lazy_series.py
by @DavidAyotte in #35254 - Shorter doctests in finite monoids by @fchapoton in #35257
- Support calling PARI's
qfbcornacchia()
fromBinaryQF
by @yyyyx4 in #35262 sage.topology
: Move imports fromsage.graphs
,sage.homology
into methods by @mkoeppe in #35263- Improve approximate order on
__getitem__
calls by @mantepse in #35265 sage.graphs
: Add# optional
doctest tags for modularization by @mkoeppe in #35266sage.manifolds
,sage.tensor
: Add# optional
doctest tags for modularization by @mkoeppe in #35267- Construct
AdditiveAbelianGroupWrapper
from (not necessarily independent) generating set by @yyyyx4 in #35270 - Drinfeld modules: Make some imports lazy by @mkoeppe in #35275
sage.rings.polynomial.polynomial_ring[_constructor]
: Handle missing implementation modules by @mkoeppe in #35277- Use the Docker images published on ghcr.io without 'docker' in the name (step 3) by @mkoeppe in #35278
sage.categories
: Modularization fixes for imports by @mkoeppe in #35279- Support
all=
keyword argument inAlgebraicClosureFiniteFieldElement.sqrt()
by @yyyyx4 in #35280 - Modularization fixes for imports of number fields by @mkoeppe in #35283
- primesieve/count update, add gentoo packages info for them by @dimpase in #35284
- Add missing colon in
finite_drinfeld_module.py
by @DavidAyotte in #35287 - pplpy*: update upstream info and deps by @dimpase in #35289
- Update pplpy to 0.8.7 - to make gcc 12.2.1 happy by @dimpase in #35290
- Do not evaluate unnecessarily by @mantepse in #35291
- Arity check for shift and added some warnings by @tscrim in #35293
- Avoid a square root computation in
EllipticCurve_field.quadratic_twist
by @remyoudompheng in #35294 pyscipopt
: Update to 4.3.0, use tarball without generated.c
files, run Cython instead by @dimpase in #35303- HTML documentation: Add copy buttons to code blocks by @mkoeppe in #35304
- Use
StringIO
to format polynomials by @remyoudompheng in #35307 - Fix radius and diameter for digraphs with non-comparable vertices by @dcoudert in #35310
- Implement Specht modules for diagrams by @tscrim in #35036
- Implement symmetry classes of plane partitions by @tscrim in #35037
- Introduce extension of scalars coercion of CombinatorialFreeModules by @mkoeppe in #35102
- Improve CM testing for elliptic curves over number fields by @JohnCremona in #35166
- Document, lint, and fix placement of magic comments in multiline doctests by @mkoeppe in #35181
- Refactor
subs()
of multivariate polynomials for readability and efficiency by @kwankyu in #35210 - Add skew Hadamard matrices up to order 1000 by @MatteoCati in #35211
- Some improvements for braids computations by @enriqueartal in #35214
- Fix description of inputs of primes. by @Eloitor in #35215
- Reduce exponents of
AbelianGroup
elements modulo the respective orders by @pjbruin in #35218 - Reference Manual: fix definition of inverse Laplace transform by @MatanZ in #35222
- Fixing some
:class:
,:meth:
roles by @fchapoton in #35224 - Large partial pep8 cleanup in
cluster_seed
by @fchapoton in #35228 sage.rings.polynomial.laurent_polynomial_ring_base
: Split out from.laurent_polynomial_ring
by @mkoeppe in #35229sage.rings.function_field
: Modularization fixes by @mkoeppe in #35230- ABC for
BooleanPolynomialRing
by @mkoeppe in #35240 - Ignore deprecation warnings triggered by pythran 0.12.1 by @tornaria in #35438
build/pkgs/openblas/spkg-configure.m4
: Reject version 0.3.22 by @mkoeppe in #35377- Use Singular
maMapPoly
to avoid quadratic complexity in polynomial evaluation by @remyoudompheng in #35381 - Add missing backticks to correct formatting by @karan0handa in #35382
make dist
: Update git remotes by @mkoeppe in #35384src/tox.ini
: Add cython-lint by @mkoeppe in #35385- Typo: 'minumum' for 'minimum' by @yukibl in #35390
- Adding a
save
method to classStandalone
/TikzPicture
for compatibility with sagetex by @seblabbe in #35394 - Accept plain Python types in
block_matrix()
by @mezzarobba in #35405 - Fix pep8 E303 in folders starting with
m
by @fchapoton in #35409 - Activate codecov reports even if other checks are failing by @tobiasdiez in #35412
- Fixing some pep8 E303 (folders before
l*
and aftert*
) by @fchapoton in #35413 argon2_cffi
: Add missing dependency by @mkoeppe in #35416- Fix the broken linters by @fchapoton in #35418
WordMorphism
: remove keyword deprecated in #26307 by @fchapoton in #35421- Fix doctests with ipython 8.12 by @tornaria in #35423
- Fixing most of pycodestyle E271 in
pyx
files by @fchapoton in #35312 - Make
data_structures/bitset_base.pxd
use explicit integer division by @alexhutman in #35313 sage.schemes
: Reformat doctests, add# optional
annotations by @mkoeppe in #35314- Use PARI implementation of Frobenius morphism by @remyoudompheng in #35316
- Fixing some E502 outside of
schemes
andcombinat
by @fchapoton in #35317 - Many more namespace packages by @mkoeppe in #35322
- Fix
squarefree_decomposition
failure overGF(2)
by @remyoudompheng in #35323 - Add monotile to polygon examples by @mo271 in #35331
- Improvements to
squarefree_decomposition()
for finite fields. by @tscrim in #35334 - Make FLINT
polynomial factor()
interruptible by @remyoudompheng in #35335 - Fix test output to pass with ipywidgets 8.0.5 by @antonio-rojas in #35336
- Fix warning with ipython 8.11 (was #35235) by @tornaria in #35337
- Allow
completion()
to return a lazy series for infinite precision by @tscrim in #35345 - Correctly list develop packages in conda dev environment by @tobiasdiez in #35349
- Fix version specifiers of python packages for conda by @tobiasdiez in #35350
- Add minimum version of conda gap package by @tobiasdiez in #35351
- Add instructions on how to update existing conda environment by @tobiasdiez in #35352
- Replace
\mbox
by\text
inmanifolds
by @tobiasdiez in #35353 - Partial fix for E221 (to be continued) by @fchapoton in #35355
- Fix documentation deployment by @tobiasdiez in #35356
- Lighter construction of finite field elements from lists by @remyoudompheng in #35358
- Many more namespace packages βΒ follow up by @mkoeppe in #35366
- Add output documentation on
monte_carlo_integral
by @davidlowryduda in #35367 - Replace more
.all
imports by @mkoeppe in #35372 SmallPermutationGroups
by @dwbump in #35225- Docfix: decimal --> binary by @hemmecke in #35487
- Partial cython linting in
algebras/
by @fchapoton in #35392 - Some cython-linting inside
categories/
by @fchapoton in #35408 - Conversion of
complex_root_of
to algebraic by @videlec in #35414 - Add "flint" factorization algorithm and replace qsieve implementation by @orlitzky in #35419
- Slight generalisation of MZV auxiliary F-algebra by @fchapoton in #35420
- Removed redundant imports from
matrix_modn_dense_float.pyx
by @aadya940 in #35426 - Fix doctests in oeis by @dcoudert in #35439
- Fix construction functor for p-adic relaxed types by @tornaria in #35441
- Make
Qp.integer_ring()
faster by @tornaria in #35442 - Don't call
sylvester_matrix
with zero polynomials by @tornaria in #35449 - Replace remaining uses of
is_SymbolicEquation
,is_SymbolicVariable
by @mkoeppe in #35450 - Add modules to modules/index.rst by @karan0handa in #35451
- Fix all pycodestyle E303 warnings in
rings/
by @fchapoton in #35452 - Partial cython-linting in
graphs/
by @fchapoton in #35453 - Fix pycodestyle E502 in
coding
andcrypto
folders by @fchapoton in #35454 - Faster
get_unsafe
for NTLGF(p)
polynomials by @remyoudompheng in #35455 - Faster computation of cached Frobenius powers by @remyoudompheng in #35456
- Remove old deprecated properties in
set_partition
+ pep8 cleanup by @fchapoton in #35458 - pep8 and code details in
weyl_characters.py
by @fchapoton in #35459 - Refactor poset examples for better code coverage by @fchapoton in #35466
- Update GitHub transition notices in the developer manual by @kwankyu in #35482
- Add
.conductor()
and.order_of_conductor()
methods for orders in quadratic fields by @yyyyx4 in #35271 - Fix E502 in
schemes
andcombinat
by @fchapoton in #35318 - Correct NTL calls when computing modular powers of
GF(2)
polynomials by @remyoudompheng in #35325 - Do not require a multiplicative generator for finite field
nth_root
by @remyoudompheng in #35346 - Fix and activate pep E271 in python files by @fchapoton in #35359
- Faster Kohel isogenies without bivariate polynomials by @remyoudompheng in #35370
- Fix for
sage -package create --pypi --source wheel
by @mkoeppe in #35379 - Cython-linting a few
pyx
files by @fchapoton in #35397 - Add
lazy_string
inmatrix2.pyx
by @xcaruso in #35039 - Iterator over the minimal distance k dominating sets by @dcoudert in #35462
- Add iterator over minimum distance k dominating sets by @dcoudert in #35463
- Fix conda workflow by @tobiasdiez in #35465
- Implement the Feichtner-Yuzvinsky rings for lattices by @tscrim in #35472
- scipy: Patch out test requiring internet access by @mkoeppe in #35476
- Remove unused code from GAP interface by @fingolfin in #35478
- Fix test output for ipywidgets 8.0.5, part deux by @collares in #35499
build/pkgs/sphinx_{copybutton,basic_ng}
: Add conda info by @mkoeppe in #35504- Add check for pycodestyle E502 in python files by @fchapoton in #35506
- Aix pycodestyle E303 in
schemes
by @fchapoton in #35507 - Some cython-linting in
matrix/
folder by @fchapoton in #35509 - Make
BooleanPolynomial.variables()
way faster by @tornaria in #35510 - Fix
Graph.add_clique()
for one vertex by @tornaria in #35511 - Improve
PolynomialSequence.connection_graph()
implementation by @tornaria in #35512 - Silence initialization of giac by @tornaria in #35513
- Don't force ecl lisp with
maxima -l ecl
on command line. by @tornaria in #35514 - Bug in integer valued polys by @fchapoton in #35515
- Improve
PolynomialSequence.connected_components()
by @dcoudert in #35518 sage.combinat.sf
: re-enable a doctest by @mkoeppe in #35521- Cython-lint and some doc cleanup for
expression.pyx
by @fchapoton in #35525 - Fix pycodestyle E271 and E502 in
pyx
files by @fchapoton in #35526 - Some minor details in
interfaces
by @fchapoton in #35530 - Fix bug in
graph.maximum_average_degree
by @dcoudert in #35533 - Some cython-lint fixes in
matroids/
by @fchapoton in #35534 - Some fixes for cython-lint in various places by @fchapoton in #35542
- Cleaning set partition by @fchapoton in #35543
sage.quadratic_forms
: Modularization fixes for imports by @mkoeppe in #35305sage.groups.matrix_gps
: Modularization fixes for imports by @mkoeppe in #35306- Fix minimal kernel basis corner cases by @vneiger in #35375
sage.rings.finite_rings.residue_field
: Modularization fixes by @mkoeppe in #35389- Documentation improvements for rounding methods by @marizee in #35431
- Fix slow doctests or mark
# long time
by @tornaria in #35443 - Add method
is_simple
to permutations by @fchapoton in #35446 sage.quadratic_forms
: Fix use ofstaticmethod
for Python < 3.10 by @mkoeppe in #35558givaro
,zeromq
: Add patches for GCC 13 support by @mkoeppe in #35415- Fix the linter once more by @fchapoton in #35552
- Remove some circular imports in
sage.rings
,sage.symbolic
by @mkoeppe in #35594 - Accept system openblas 0.3.23 and newer (needed for archlinux) by @remyoudompheng in #35524
- Update eclib to version 20230424 by @JohnCremona in #35555
zeromq
: Add system package info for Arch Linux, Gentoo by @mkoeppe in #35625- Update openssl to 3.0.8 by Thierry Monteil in #35571
- Remark that WSL needs a lot of RAM by @dimpase in #35637
build/pkgs/python3/spkg-configure.m4
: Add depcheck for zlib by @mkoeppe in #35638- Update developer guide for workflows on github by @kwankyu in #35460
New Contributors
(this was automatically generated by GitHub -- it does not know about contributors before the transition to GitHub)
- @Sandstorm831 made their first contribution in #34972
- @zovelsanj made their first contribution in #35070
- @minaminao made their first contribution in #35180
- @jnash10 made their first contribution in #35113
- @wermos made their first contribution in #35142
- @prirai made their first contribution in #35155
- @mathcals made their first contribution in #35236
- @Eloitor made their first contribution in #35215
- @MatanZ made their first contribution in #35222
- @karan0handa made their first contribution in #35382
- @yukibl made their first contribution in #35390
- @alexhutman made their first contribution in #35313
- @aadya940 made their first contribution in #35426
- @marizee made their first contribution in #35431
Full Changelog: 9.8...10.0