Skip to content

10.4

Latest
Compare
Choose a tag to compare
@github-actions github-actions released this 20 Jul 00:28
· 2575 commits to develop since this release

Release Notes

  • adds support for GCC 14; major package upgrades

Sage 10.4 Release Tour

What's Changed

  • Translate "A Tour of Sage" into Greek by @gmou3 in #37198
  • ntl 11.5.1 by @mkoeppe in #37251
  • sage.groups.generic: Fix incorrect identity testing by @grhkm21 in #37257
  • PDF docbuild: Reduce verbosity by @mkoeppe in #37264
  • Directly convert PermutationGroup element into sized Permutation by @RuchitJagodara in #37288
  • README.md: Move all mentions of release tarballs to the installation guide by @mkoeppe in #37309
  • Reference manual: Show package list by category (math/front-end/other) by @mkoeppe in #37315
  • sage --package create: Attempt to bring SPKG.rst title to a common style by @mkoeppe in #37322
  • Fixed the doc sets/recursively_enumerated_set.py by @janmenjayap in #37331
  • some details in modules (ruff and pep) by @fchapoton in #37335
  • Add simple methods to convert to and from bytes for ZZ and finite fields by @GiacomoPope in #37343
  • implemented function for acyclic orientations by @saatvikraoIITGN in #37345
  • sage.schemes.generic: fix docs by @grhkm21 in #37346
  • sage/stats/distributions: Implement non-spherical Gaussian sampling over lattices by @grhkm21 in #36581
  • Doctest hide option: Better detection of hidden packages by @soehms in #36741
  • Implement Specht modules in the tabloid basis by @tscrim in #36748
  • spkg-configure.m4 for most external Python pkgs by @dimpase in #36777
  • Implementation of the quantum oscillator algebra by @tscrim in #36907
  • CI: Upload test stats as artifacts, improve output of "List Docker images" by @mkoeppe in #36970
  • add helper method to concatenate vectors by @yyyyx4 in #36971
  • allowing external ECM to be called gmp-ecm or ecm by @dimpase in #37011
  • Implement the center of a universal enveloping algebra in the PBW basis by @tscrim in #37013
  • CODE_OF_CONDUCT.md: Do not send people to sage-flame by @mkoeppe in #37054
  • HTML documentation: Show preparsed doctests using inline tabs by @mkoeppe in #37083
  • Quaternion Algebra Fractional Ideal improvements - equivalence and reduced bases by @jtcc2 in #37100
  • Fix random polynomial bias by @grhkm21 in #37118
  • Rerun configure less often by @mkoeppe in #37127
  • Improve Windows installation instructions by @mkoeppe in #37184
  • implement the depth of a quasimodular form by @DavidAyotte in #35517
  • Implement call method for elements in CDGA's by @miguelmarco in #36329
  • Implement basis_of_weight for rings of quasimodular forms by @DavidAyotte in #35029
  • Ensure the degree() method of Polynomial_generic_dense_inexact returns an Integer by @GiacomoPope in #37622
  • Default SAGE_ECMBIN to "ecm". by @tornaria in #37701
  • Workaround for multiprocessing shared memory limits by @tornaria in #37702
  • use Parent for the Pari pseudo-ring by @fchapoton in #37465
  • Add # long time to topology by @gmou3 in #37483
  • Developer Guide: Improve section on patching third-party packages by @mkoeppe in #37485
  • src/doc/en/developer/review.rst: Update section 'Release Process' by @mkoeppe in #37487
  • Fix failing docstring in random testing for quaternion_algebra.py by @GiacomoPope in #37489
  • Include random_element() method to LaurentPolynomialRing by @GiacomoPope in #37490
  • build/pkgs/gnumake_tokenpool: Update to 0.0.7 by @mkoeppe in #37498
  • use sparse polynomials for generating functions by @mantepse in #37499
  • Code of conduct changes by @jhpalmieri in #37501
  • Developer guide: Recommend raw strings for all docstrings by @mkoeppe in #37508
  • Replace broken links to sphinx material on pocoo.org by @mkoeppe in #37509
  • Remove comment about python2 longs by @Eloitor in #37520
  • fix debian.txt for qhull by @dimpase in #37521
  • Add mypy.ini by @mkoeppe in #37522
  • Improve genus method of function fields and curves by @kwankyu in #37538
  • Update the year in README.md by @kwankyu in #37540
  • Edit docstrings attached to free resolutions by @kwankyu in #37542
  • various list-comprehension in combinat (ruff PERF) by @fchapoton in #37545
  • Faster chromatic symmetric function computation by @hdehr in #37549
  • minor details + non-recursive algo in integer_valued_polynomials by @fchapoton in #37551
  • convert Puiseux ring to Parent framework by @fchapoton in #37552
  • A minor change in the documentation of __hash__ function of FreeModuleElement class by @RuchitJagodara in #37553
  • Implemented the (local) Hilbert symbol for global function fields by @S17A05 in #37554
  • use Parent in Symbolic Ring by @fchapoton in #37555
  • refresh sha_tate.py by @fchapoton in #37556
  • Modified quaternion algebra documentation by @S17A05 in #37557
  • enrich the test_karatsuba failure message with explicit elements by @fchapoton in #37561
  • use Parent in infinity by @fchapoton in #37564
  • Improve documentation for degree() method of singular multivariate polynomials by @GiacomoPope in #37567
  • Improve method _ford fulkerson chronicle in src/sage/combinat/posets/posets.py by @dcoudert in #37571
  • Doctester: Abbreviate tracebacks in warnings by @mkoeppe in #37573
  • Intersphinx for cvxopt, cvxpy, cypari2, cysignals, flint, fpylll, gmpy2, ipywidgets, matplotlib, mpmath, networkx, numpy, rpy2, scipy, sympy by @mkoeppe in #37575
  • Update package dependencies for Fedora and Arch distros by @tobiasdiez in #37579
  • Add links to sources in documentation by @kwankyu in #37589
  • Do not canonicalize generators when building a permutation group from a libGAP group by @tscrim in #37590
  • ruff PERF fixes in algebras/ by @fchapoton in #37591
  • Simplify computation of all points for curves over finite fields by @GiacomoPope in #37595
  • fix performance regression in elliptic-curve point constructor by @yyyyx4 in #37596
  • Sphinx extlinks for ecl, gap, giac, maxima, meson, ppl, qepcad, scip, singular, soplex by @mkoeppe in #37598
  • extend the definition of q-binomial coefficients to (k > 0, n < 0) by @fchapoton in #37599
  • some details in lrcalc by @fchapoton in #37600
  • graphs.triangulations(3) cannot return a triangle by @dcoudert in #37602
  • Remove duplicated functions from genus two hyperelliptic curves by @GiacomoPope in #37604
  • Ensure returned degree of multivariate polynomial is type Integer for MPolynomialRing_libsingular class by @GiacomoPope in #37605
  • src/sage/matrix: Doctest cosmetics by @mkoeppe in #37607
  • src/sage/modules: Doctest cosmetics by @mkoeppe in #37608
  • src/sage/schemes: Doctest cosmetics by @mkoeppe in #37609
  • src/sage/combinat: Doctest cosmetics by @mkoeppe in #37610
  • Ensure degree and total degree return Integer type for MPolynomial_polydict class by @GiacomoPope in #37611
  • Fix hyperelliptic curve dynamic class construction to allow proper method inheritance by @GiacomoPope in #37613
  • Updated README.md, added space after -p option by @explorest in #37617
  • Implement the Potts representation of the partition algebra by @tscrim in #37619
  • src/sage/rings: Doctest cosmetics by @mkoeppe in #37623
  • test gap3 with gap3, not gap (gap4) by @dimpase in #37624
  • use the polynomial ring also for non-commutative baserings as _internal_poly_ring by @mantepse in #37628
  • Implement a bool for posets by @tscrim in #37629
  • Enhance documentation of Drinfeld module Potemine j-invariants by @kryzar in #37630
  • Fix compilation with -std=c++17 by @Feyorsh in #37646
  • Faster scalar multiplication for python types by @GiacomoPope in #37369
  • fix bad Frac(sparse polynomial ring over finite field) by @mezzarobba in #37377
  • build/pkgs/pyscipopt: Update to 4.4.0, add Cython 3 patch by @mkoeppe in #37392
  • Tensor, exterior, and symmetric product of semigroup representations by @tscrim in #37393
  • Developer Guide: Document practices for data files by @mkoeppe in #37399
  • minor ruff fixes in quadratic forms (C4, UP, PERF) by @fchapoton in #37400
  • Developer Guide: Improvements to explanation of version files by @mkoeppe in #37401
  • Use "Issue #" for github issue links by @kwankyu in #37403
  • add a polytope method to hypergeometric motives by @fchapoton in #37404
  • remove most references to Arb as an independent library by @mezzarobba in #37406
  • src/doc/en/installation/source.rst: Add section on upgrading using worktrees by @mkoeppe in #37411
  • Add as_subscheme() method for rational points by @kwankyu in #37412
  • Remove long/int relic by @nbruin in #37420
  • Make sage -b equivalent to make sagelib-no-deps regarding parallelism by @mkoeppe in #37421
  • sage.parallel.ncpus: Use os.sched_getaffinity or os.cpu_count by @mkoeppe in #37422
  • Fix docstring for polyhedron constructor by @marco-perin in #37423
  • Edit hypellfrob.pyx by @kwankyu in #37424
  • setup.py: Remove lazy_import_cache use by @mkoeppe in #37432
  • src/sage/misc/lazy_import.pyx: Deprecate star imports by @mkoeppe in #37433
  • small cleanup in monoids by @fchapoton in #37435
  • a few details in cython files in symbolic by @fchapoton in #37439
  • Strengthen inequality in rigorous_line_integral by @DisneyHogg in #37440
  • Remove mention of SPKG.txt by @mkoeppe in #37444
  • formal deprecation of old group class by @fchapoton in #37449
  • Add config for ruff (#36503, unbundled) by @mkoeppe in #37452
  • formal deprecation of old CommutativeAlgebra class by @fchapoton in #37464
  • remove almost all calls to is_Ring by @fchapoton in #37466
  • some list comprehensions in rings (ruff PERF401) by @fchapoton in #37468
  • various details in permutation.py (pep8 and ruff PERF) by @fchapoton in #37469
  • build/pkgs/pari_jupyter: Update to 1.4.3 (includes Cython 3 fix) by @mkoeppe in #37478
  • make SPKG-check for normal and script packages by @mkoeppe in #37022
  • Move some code from Brandt modules to quaternion algebras by @pjbruin in #37090
  • Fix three polynomial SIGABRT bugs #37169 and #37317 by @grhkm21 in #37172
  • Fix changes.html in doc preview by @kwankyu in #37689
  • Add approximate_closest_vector to IntegerLattice, using Babai's nearest plane algorithm by @TheBlupper in #37699
  • Implement an is_nilpotent() method for matrices by @tscrim in #37703
  • Implement an iterator for absolute number fields by @tscrim in #37707
  • src/tox.ini (rst): Add missing Sphinx roles by @mkoeppe in #37712
  • pkgs/sagemath-repl/pyproject.toml.m4: Declare extra 'sphinx' by @mkoeppe in #37720
  • Renamed "ring" argument of matrix contructor to "base_ring" by @SandwichGouda in #37721
  • Fix typo/phrasing in README.md by @faisalfakhro in #37725
  • Reimplementing the Witt (Sym Func) change of basis, caches, and omega involution by @tscrim in #37736
  • Added rank check to doctest in .gauss_on_polys by @S17A05 in #37753
  • src/sage/graphs/graph_decompositions/tdlib.pyx: Use -std=c++11 by @mkoeppe in #37755
  • Fix tolerance for scipy 1.13 by @tornaria in #37763
  • ECM-related tests fail after an incremental build by @vbraun in #37764
  • remove zombie code by @mantepse in #37497
  • Sphinx ext links for Sage source files by @mkoeppe in #37546
  • trying a change in unique_representation by @fchapoton in #37563
  • Border matrix by @mkoeppe in #37606
  • The Glaisher-Franklin bijections on integer partitions by @mantepse in #37634
  • Update jupyter-sphinx to version 0.5.3 and pin thebe to version 0.8.2 by @kwankyu in #37637
  • use strings as label in modular-decomposition trees by @fchapoton in #37638
  • add Legendre transform and suspension for lazy symmetric functions by @fchapoton in #37639
  • Modified .is_reduced() of binary_qf.py to avoid square root computation by @S17A05 in #37640
  • use parent in asymptotic ring by @fchapoton in #37651
  • fix typos and no "Algebra" in the doc by @fchapoton in #37652
  • Removed caching of determinant in LLL for the NTL:LLL-algorithm by @S17A05 in #37655
  • fix ruff codes UP012 and UP023 by @fchapoton in #37659
  • Fix e302 libs pyx by @fchapoton in #37660
  • some cross-references btw doc of RR, RBF, ... by @mezzarobba in #37661
  • sage/rings/{complex,real}*: Untitlecase titles, add refs to libraries by @mkoeppe in #37663
  • Fix noexcept clauses (#37560) by @tornaria in #37667
  • Wrong results in is_isotopic method of the Link class for certain chiral link by @soehms in #37668
  • pkgs/sagemath-standard: Support gpep517 by @mkoeppe in #37671
  • src/sage/modular/quasimodform/ring.py: Fix pycodestyle warning by @mkoeppe in #37672
  • upgrade msolve to 0.6.5 by @dimpase in #37673
  • some pep8 and ruff cleanups in modules/ by @fchapoton in #37674
  • some simplifications in moment-angle complex by @fchapoton in #37677
  • simplifications in symmetric_ideal.py by @fchapoton in #37679
  • a few more uses of "in Fields()" by @fchapoton in #37680
  • some shortcuts using bool by @fchapoton in #37683
  • typo by @DennisYurichev in #37688
  • Rename install-requires.txt to version_requirements.txt by @mkoeppe in #36999
  • build/pkgs/*/distros/pyodide.txt: New, corresponding to pyodide 0.25.0 by @mkoeppe in #37120
  • build/pkgs/python_flint: New by @mkoeppe in #37224
  • Scipy 1.12 by @mkoeppe in #37266
  • Cleaning in pautomorphicform.py by @Eloitor in #37332
  • Add class FlatsMatroid by @gmou3 in #37340
  • Add iterators, Whitney numbers, characteristic polynomial, etc by @gmou3 in #37361
  • Make installation of "wheel" packages less noisy by @mkoeppe in #37391
  • Remove mention of patchbot, remove 'make buildbot-python3' by @mkoeppe in #37425
  • add simple function to count irreducible polynomials over 𝔽q by @yyyyx4 in #36390
  • Update system package info for slackware by @mkoeppe in #36965
  • Removed BUG method and include a docstring for matrix_of_frobenius() by @GiacomoPope in #37615
  • Corrections in .normalize_basis_at_p and .maximal_order() of quaternion_algebra.py by @S17A05 in #37644
  • sage.doctest: Remove most uses of SAGE_SRC in doctests by @mkoeppe in #37648
  • cypari2 2.1.5, memory_allocator 0.1.4 by @mkoeppe in #37665
  • Make matroid copy and deepcopy simply return self by @gmou3 in #37670
  • Implement the normalizer of a finite dimensional Lie algebra by @tscrim in #37682
  • provide a construction functor using a single functor for families by @mantepse in #37687
  • Implement the Jordan decomposition of a matrix and is_semisimple() test by @tscrim in #37710
  • Implement faithful representations of nilpotent Lie algebras by @tscrim in #37724
  • Disable most documentation notifications on GitHub by @saraedum in #37740
  • clean suffix tries by @fchapoton in #37746
  • src/sage/modules/with_basis/representation.py: pycodestyle fix by @mkoeppe in #37769
  • some C4 fixes in combinat folder by @fchapoton in #37771
  • add links to standard errors in toric folder by @fchapoton in #37772
  • Precompute orders of twists of EllipticCurve by @grhkm21 in #37110
  • Implement EllipticCurve_with_order by @grhkm21 in #37119
  • Miscellaneous system package updates by @orlitzky in #37247
  • Support optional debugpy by @orlitzky in #37291
  • CI: Update Linux platforms / runners, remove ubuntu-trusty, opensuse-{15.3,15.4} by @mkoeppe in #37351
  • combinat/free module tensor construction by @mantepse in #37451
  • Add Temperley-Lieb algebras to the category of cellular algebras by @tscrim in #37462
  • ⬆️ Bump myrotvorets/set-commit-status-action from 2.0.0 to 2.0.1 by @dependabot in #37475
  • Improving the documentation of Discrete Dynamical Systems by fixing typos and eliminating repeated sentences by @Dhrumil07 in #37506
  • pkgs/sagemath-standard: Move metadata from setup.cfg to pyproject.toml by @mkoeppe in #36951
  • Add # sage_setup: distribution directives to all files, remove remaining # coding: utf-8 by @mkoeppe in #36964
  • Bell polynomials univariate variable fix, complete and ordinary variants by @Nolord in #37733
  • dft for symmetric group algebra when p|n! by @jacksonwalters in #37757
  • Allow construction of classical Lie algebras over finite fields by @tscrim in #37773
  • Make univariate Laurent polynomials over a field pass the TestSuite by @tscrim in #37778
  • SetPartition return empty iterator instead of erroring out in degenerate cases by @Nolord in #37781
  • various changes about is_field and is_ring by @fchapoton in #37783
  • Speed up symmetric group simple_module_rank() by @tscrim in #37784
  • Add is_graphic/regular by @gmou3 in #37788
  • various ruff fixes in groups (PERF, etc) by @fchapoton in #37789
  • Improve docstrings in groups by @gmou3 in #37790
  • Revert PR with disputed dependencies by @roed314 in #37796
  • Bind to FLINT/NTL API for polynomial modular exponentiation (new version) by @GiacomoPope in #37441
  • ⬆️ Bump actions/cache from 3 to 4 by @dependabot in #37474
  • sagemath-{objects,categories} pyproject.toml: Add 'external' section according to draft PEP 725 by @mkoeppe in #37486
  • build/pkgs: Update scip to 9, scip_sdp to 4.4, soplex to 7, papilo to 2.2, pyscipopt to 5, onetbb to 2021.11 by @mkoeppe in #37494
  • GH Actions: Build macOS arm64 wheels by @mkoeppe in #37503
  • src/doc/*/tutorial/programming.rst: Update 'standalone script' by @mkoeppe in #37510
  • FiniteRankFreeModule.isomorphism_with_fixed_basis: Make it an actual isomorphism by @mkoeppe in #37512
  • Define the zero polynomial to have degree -Infinity for LaurentPolynomialRing by @GiacomoPope in #37513
  • MatrixSpace: Support constructing Hom(CombinatorialFreeModule) by @mkoeppe in #37514
  • build/pkgs/{gdb,gmp,libgd,python3,symmetrica}: Reduce xz to order-only dep by @mkoeppe in #37582
  • Allow .maximal_order() of quaternion_algebra.py to extend a given order by @S17A05 in #37675
  • pep8 and ruff fixes in the plot folder by @fchapoton in #37676
  • fix ascii_art of empty chain complex by @dimpase in #37684
  • sage.modular: Docstring/doctest cosmetics by @mkoeppe in #37714
  • MatrixMorphism_abstract: Move endomorphism invariants to category by @mkoeppe in #37731
  • be more specific when raising "not a constant polynomial" by @mantepse in #37747
  • modules with basis/map coefficients by @mantepse in #37766
  • Add matroid relabel by @gmou3 in #37775
  • sage-logger: Suppress "No such file or directory" messages by @mkoeppe in #37785
  • m4/pyproject_toml_metadata.m4: Allow Python 3.12 by @mkoeppe in #36869
  • Make sage-conf optional by @tobiasdiez in #37138
  • Added automatic size labeler by @amanmoon in #37262
  • sagemath-standard: include sage_setup in sdist by @tornaria in #37287
  • build/pkgs/python_build: Make it a standard wheel package by @mkoeppe in #37300
  • Attach Jacobians to function fields and curves by @kwankyu in #35467
  • Change SetSystem representation by @gmou3 in #37904
  • Fix overflow in hypergeometric trace by @kedlaya in #37911
  • Replace doctests from jacobian_khuri_makdisi.py taking too long time by @kwankyu in #37915
  • src/sage/features/sagemath.py: Add feature SAGE_SRC by @mkoeppe in #37650
  • Quaternion Ideal Pushforwards and Pullbacks by @jtcc2 in #37681
  • matrix, Graph.incidence_matrix, LinearMatroid.representation: Support constructing Hom(CombinatorialFreeModule) elements by @mkoeppe in #37692
  • Remove CombinatorialClass by @mkoeppe in #37722
  • CI Build&Test: Show segfaults using GitHub annotations by @mkoeppe in #37738
  • CI Build&Test: Fix "test modularized distributions" after #37022 by @mkoeppe in #37750
  • remove a stray leftover in in sa2si_ZZmod() by @dimpase in #37792
  • add links to standard errors in various places by @fchapoton in #37793
  • fix the category of quasi-modular form rings by @fchapoton in #37797
  • some ruff C4 fixes in combinat by @fchapoton in #37798
  • little details in quadratic_forms (pep8, ruff, etc) by @fchapoton in #37799
  • some cython-lint suggestions fixed in real rings by @fchapoton in #37800
  • Add the downward monotonic cone to the cone catalogue by @orlitzky in #37802
  • Added some documentation in the developer's guide regarding deprecation by @SandwichGouda in #37807
  • Removed non-working and utterly old @rename_keyword in farey_symbol.pyx by @SandwichGouda in #37808
  • build/pkgs/gambit: Remove by @mkoeppe in #37810
  • Fix bug in TensorField.apply_map by @egourgoulhon in #37822
  • Fix LaTeX output of FreeModuleTensor.display_comp by @egourgoulhon in #37823
  • FiniteRankFreeModuleMorphism.display: Show matrix decorated with basis element names by @mkoeppe in #37825
  • FreeModuleAutomorphism: Add more invariants by @mkoeppe in #37826
  • sage.tensor: Tiny doc fixes by @mkoeppe in #37827
  • src/sage/manifolds/differentiable: Docstring/doctest edits by @mkoeppe in #37829
  • build/pkgs/{python3,setuptools}: Update fedora distro info by @mkoeppe in #37833
  • Optimize DisjointSet by @gmou3 in #37835
  • fricas/do not get inputform twice by @mantepse in #37836
  • .ci/write-dockerfile.sh: Move here from build/bin/ by @mkoeppe in #37841
  • Fix issue 37587 regarding the Link class plot method by @soehms in #37851
  • Work around inconsistent iteration in multi_polynomial_sequence.py by @S17A05 in #37853
  • sage.misc.package: Remove deprecated code by @mkoeppe in #37855
  • sage.misc.dist: Remove; deprecated in #30207 (2022) by @mkoeppe in #37856
  • sage.misc.misc: Remove deprecated code by @mkoeppe in #37868
  • sage.ext: Remove deprecated code by @mkoeppe in #37870
  • sage.{topology,homology}: Remove deprecated chomp interface by @mkoeppe in #37872
  • eclib: fix doctests after 20240408 update by @tornaria in #37882
  • gap: don't use deprecated LaTeX() and LaTeXObj() by @tornaria in #37883
  • pip 24, setuptools 69.5.1, hatchling 1.22.5, hatch_fancy_pypi_readme 24.1.0, platformdirs 4.2.0, packaging 24.0, trove_classifiers 2024.4.10, wheel 0.43.0 by @mkoeppe in #37277
  • make sagelib work with singular>=4.3.2.p15 (future 4.4) by @antonio-rojas in #37492
  • Implement the hypercenter and upper central series for finite dimensional Lie algebras by @tscrim in #37693
  • sage.{calculus,functions,numerical,symbolic}: Docstring/doctest cosmetics, # needs by @mkoeppe in #37715
  • CI build, doc-build: Run containers explicitly, separate jobs for pyright, build, modularized tests, long tests by @mkoeppe in #36498
  • Retrieve more information of fundamental groups of plane curves by @enriqueartal in #36768
  • Make pyproject.toml the source for build dependencies by @tobiasdiez in #36982
  • update FriCAS to 1.3.10, allow building with sbcl by @dimpase in #37041
  • deprecated functions is_Cone, is_Polyhedron, is_LatticePolytope by @vamshipy in #37057
  • GH Actions: Build platform-independent wheels of sagemath-environment, sage-setup, sage-sws2rst for PyPI by @mkoeppe in #37099
  • Use pypa/build instead of pip wheel by @mkoeppe in #35618
  • Cythonize GraphicMatroid by @gmou3 in #37839
  • Maximal angles between convex cones by @orlitzky in #37854
  • Implement the ladder idempotents of the symmetric group algebra by @tscrim in #37859
  • sage.misc.sageinspect: Remove deprecated loadable_module_extension by @mkoeppe in #37867
  • sage.geometry.polyhedron: Remove deprecated code by @mkoeppe in #37869
  • Run sage doc server for jupyterlab by @kwankyu in #37878
  • Implement hypergeometric Euler factors for tame primes by @kedlaya in #37881
  • sagemath-standard: some fixes in build dependencies by @tornaria in #37894
  • Deprecate is_FreeAlgebra, is_QuaternionAlgebra, is_SymmetricFunctionAlgebra by @mkoeppe in #37896
  • Deprecate is_Monoid, is_FreeMonoid, is_FreeAbelianMonoid by @mkoeppe in #37897
  • Deprecate is_AbelianGroup, is_DualAbelianGroup, is_MatrixGroup by @mkoeppe in #37898
  • build/pkgs/python3: Update to 3.11.8, remove Cygwin patches, remove pointless rpaths on macOS by @mkoeppe in #37914
  • structure/coerce actions by @mantepse in #37916
  • Fix slow substitution in piecewise symbolic function by @kwankyu in #37925
  • .gitignore: Ignore requirements-editable.txt files by @mkoeppe in #37929
  • fix the linter by @fchapoton in #37932
  • Updates to linbox-1.7.0, givaro-4.2.0, fflas-ffpack-2.5.0 by @vbraun in #37938
  • Fix incompatible pointer type assignment error in implicit_surface by @vbraun in #37939
  • Support morphisms in Matroid constructor by @gmou3 in #37940
  • Revert cif fast inversion 84ab655 by @videlec in #37941
  • Graph constructors: Remove gratuitous nondeterminism by @mkoeppe in #37942
  • ⬆️ Bump easimon/maximize-build-space from 8 to 10 by @dependabot in #37944
  • various ruff suggestions fixed in schemes by @fchapoton in #37947
  • some ruff fixes in misc folder by @fchapoton in #37948
  • Adapt length check in sage.databases.conway in preparation for database update by @S17A05 in #37949
  • CI: Handle the "p: CI Fix" label by @mkoeppe in #37950
  • Fix trivial typo by @rrueger in #37953
  • direct implementations of some cliques related methods in sage/graphs/graph.py by @dcoudert in #37954
  • Graph.{[weighted_]adjacency_matrix,kirchhoff_matrix}: Support constructing End(CombinatorialFreeModule) elements by @mkoeppe in #37955
  • faster implementation of method sage.graphs.generators.families.BalancedTree by @dcoudert in #37956
  • various ruff fixes in combinat by @fchapoton in #37958
  • some polishing for pbori (ruff and pep8 mostly) by @fchapoton in #37965
  • Modify tests in ell_point.py to be more generic for Conway database update by @S17A05 in #37967
  • Fix sign error in the Kerr metric of the manifold catalog by @egourgoulhon in #37970
  • sage --package, sage-get-system-packages: Support PURLs pkg:pypi/DISTRO-NAME, obtain dependencies of wheels from PyPI by @mkoeppe in #37500
  • build/pkgs/{gcc,gfortran}/spkg-configure.m4: Allow 14.x by @mkoeppe in #37537
  • build/pkgs/singular: Update to 4.4.0 by @mkoeppe in #37570
  • build/pkgs/cython: Update to 3.0.10 by @mkoeppe in #37584
  • sage.sets: Doctest cosmetics by @mkoeppe in #37713
  • sage.{misc,structure}: Doctest cosmetics by @mkoeppe in #37716
  • Refactor ring categories by @fchapoton in #37719
  • Follow up #36741: improve code structure by @soehms in #37737
  • dist.yml: Download optional/experimental tarballs for GitHub Release assets by @mkoeppe in #37762
  • modernize coercion for Hecke algebras by @fchapoton in #37787
  • Bump up actions by @gmou3 in #37818
  • Fix FAQ on DOIs. Put "universal" DOI to CITATION.cff* by @dimpase in #37828
  • FreeModuleHomset: Create subclass FreeModuleEndset, add element methods for invariants det, charpoly, fcp, etc. by @mkoeppe in #37831
  • Fix segfault for Weil polynomials by @kedlaya in #37861
  • gc: update to 8.2.6 by @ivmai in #37249
  • coefficients for QuasiModularFormsElement by @seewoo5 in #36269
  • Deprecate is_Category, is_Endset, is_Homset, is_Parent, is_RingHomset, is_SimplicialComplexHomset by @mkoeppe in #37922
  • Makefile, .ci/write-dockerfile.sh: Update for src/pyproject.toml after #36982 by @mkoeppe in #37926
  • Work on CircuitsMatroid by @gmou3 in #37930
  • declare the last arg to GAP_CallFunc3Args volatile by @dimpase in #37951
  • Adding add_bigoh methods to lazy power/Laurent series and coercions to the finite precision implementations by @tscrim in #37952
  • configure: Fix "command not found" error after #36776 by @mkoeppe in #37959
  • Fix comparison for divisors of curves (and FormalSum commutativity) by @vincentmacri in #37972
  • Remove legacy direct installation of sagelib (configure --disable-editable --disable-wheels) by @mkoeppe in #37973
  • Fix order computation for linear groups GL(n, R) and SL(n, R) by @S17A05 in #37980
  • Ruff details in algebras and categories by @fchapoton in #37984
  • .github/workflows/docker_hub.yml: Do not fail when there are no credentials by @mkoeppe in #37986
  • sage.calculus.expr: Split out from sage.calculus.all by @mkoeppe in #37993
  • some care for empty lines in pyx files (pep8 codes E30) by @fchapoton in #37994
  • Remove interactive confirmation for installing experimental packages by @mkoeppe in #37995
  • Fix Help menu breakdown in external jupyterlab case by @kwankyu in #38005
  • gcc, gfortran: Update to 13.2.0; remove debian-buster-gcc_spkg from CI by @mkoeppe in #38008
  • DualMatroid: Add is_valid and relabel methods by @gmou3 in #38013
  • Arch Linux: Remove libgiac and rename texlive-collection-luatex by @gmou3 in #38016
  • move Frobenius and derivations to category of Commutative Rings by @fchapoton in #38018
  • Workaround for passing givaro library to linker on OSX by @vbraun in #38020
  • build/pkgs/flint/spkg-configure.m4: Reject broken FLINT package on homebrew by @mkoeppe in #38021
  • sage.schemes: Deprecate is_... functions by @mkoeppe in #38022
  • tox.ini (local-homebrew): Fix homebrew auto-update breakage by @mkoeppe in #38023
  • fflas_ffpack, linbox: Switch to release tarballs with working libtool by @mkoeppe in #38025
  • Work on FlatsMatroid by @gmou3 in #38027
  • Relative to absolute imports, del lazy_import in .all files by @mkoeppe in #38030
  • Remove remaining # coding: utf-8 lines in src/sage by @mkoeppe in #38031
  • Avoid conflict with macro minor by @mkoeppe in #38033
  • cython-lint for schemes by @fchapoton in #38036
  • cython-lint in quivers/ by @fchapoton in #38038
  • Installation Guide: Remove some distracting wikipedia links by @mkoeppe in #38041
  • assign names to constructed Hadamard matrices by @dimpase in #38042
  • simplify handling of dead oeis sequences by @fchapoton in #38045
  • Fix wrong urls in changes.html by @kwankyu in #38046
  • Fix broken docker/Dockerfile by @soehms in #38049
  • using pathlib.Path to handle attached files by @fchapoton in #37690
  • sage-bootstrap: update cryptographic hashes by @faisalfakhro in #37726
  • sage-logger: Replace use of /usr/bin/time by bash keyword time by @mkoeppe in #37840
  • sage.numerical.interactive_simplex_method: Remove dependency on SR by @mkoeppe in #37864
  • sage.libs.pynac: Remove, deprecated in #32386 (2021) by @mkoeppe in #37873
  • Remove pointless rpaths on macOS; make sage-env polite when run on systems with no toolchain by @culler in #37886
  • sage.modular.hecke: Deprecate is_Hecke... functions by @mkoeppe in #37895
  • Deprecate is_FGP_Module, is_FilteredVectorSpace, is_FreeQuadraticModule, is_FreeModule, is_FreeModuleHomspace, is_MatrixSpace, is_Module, is_VectorSpace, is_VectorSpaceHomspace by @mkoeppe in #37924
  • build/pkgs/flint 3.1.3 by @mkoeppe in #37203
  • make EllipticCurvePoint_field inherit from EllipticCurvePoint by @pjbruin in #37415
  • tox.ini: Add environments ruff, ruff-minimal; GH Actions: run ruff-minimal by @mkoeppe in #37453
  • Improve FLINT autogen README by @grhkm21 in #37458
  • GH Actions: Fix build of macOS x86_64 wheels, build wheels for sagemath-{bliss,coxeter3,mcqd,tdlib} for PyPI by @mkoeppe in #36525
  • Remove deprecated global imports by @mkoeppe in #38099
  • Update conway_polynomials, database_cubic_hecke, database_knotinfo, matroid_database by @mkoeppe in #38110
  • Make "[source]" link to develop branch on github by @kwankyu in #38121
  • LPDictionary: Make it safe to copy dictionaries by @mkoeppe in #37866
  • Filter "RuntimeWarning: networkx backend defined more than once for networkx" by @mkoeppe in #37912
  • Upgrades and configure fixes for macOS arm64 by @mkoeppe in #37919
  • libatomic_ops: Update to 7.8.2 by @ivmai in #37931
  • CI Build&Test: Replace use of sage -t --new by @mkoeppe in #37988
  • Fix broken pytest integration (including CI failure in src/conftest_test.py) by @mkoeppe in #37999
  • build/pkgs/ecl: Update to 24.5.10 by @mkoeppe in #38009
  • Do not create spkg-*.log, spkg-*.time files by @mkoeppe in #38026
  • Fix interaction of # 32-bit / # 64-bit tag with block-scoped doctest tags by @mkoeppe in #38029
  • sage.combinat.finite_state_machine: Deprecate is_... functions by @mkoeppe in #38032
  • sage.modular: Deprecate is_... functions by @mkoeppe in #38035
  • configure.ac: Check symlinks in the source tree by @mkoeppe in #38039
  • new iterators over the partitions of an integer by @dcoudert in #38054
  • SetSystem: Minor change to accommodate set input by @gmou3 in #38056
  • sage.ext.fast_callable: Docstring cosmetics by @mkoeppe in #38059
  • sage.rings: Modularization fixes for singular by @mkoeppe in #38060
  • sage.rings: Modularization fixes (imports) by @mkoeppe in #38061
  • sage.graphs: Doctest cosmetics by @mkoeppe in #38065
  • sage.geometry: Modularization fixes (imports), # needs by @mkoeppe in #38066
  • .ci/write-dockerfile.sh: Quoting fix for unminimize by @mkoeppe in #38067
  • Correct developer guide's function template by @gmou3 in #38068
  • docstrings: Change single dash to double dash after input variables by @gmou3 in #38069
  • Add skew Hadamard matrix of order 1588 by @MatteoCati in #38070
  • sage.categories: Update # needs, use block tags by @mkoeppe in #38071
  • sage.combinat: Modularization fixes (imports), update # needs by @mkoeppe in #38074
  • remove inheritance from Algebra in FreeAlgebras by @fchapoton in #38078
  • fix pep8 E302 in algebras and categories (scripted) by @fchapoton in #38079
  • fixing superfluous empty lines in libs folder by @fchapoton in #38080
  • Fix sage.symbolic feature after libs/pynac removal by @antonio-rojas in #38081
  • CI fix: broken livedoc by @kwankyu in #38082
  • all*.py files: Use 'del lazy_import', 'del install_doc' by @mkoeppe in #38086
  • Still add rpath to our own libstdc++, in case we built our own toolchain by @vbraun in #38087
  • CI Build&Test: Split test-long into multiple jobs, repair Coverage.py upload by @mkoeppe in #38090
  • Fix doctest when the optional benzene is installed by @vbraun in #38091
  • doc: Update help() outputs by @gmou3 in #38092
  • add doc on egf_to_ogf and inverse by @fchapoton in #38093
  • src/sage/algebras/steenrod/all.py: Use lazy_import, remove deprecated global import by @mkoeppe in #38095
  • Remove nitpick_patch_config function by @kwankyu in #38100
  • sage.coding: Update # needs by @mkoeppe in #38104
  • Fixing the index set of a rank 1 Cartan matrix by @tscrim in #38105
  • GH Actions: Fix upload of macOS wheels to PyPI by @mkoeppe in #38111
  • Implement all G(r,p,m) complex reflection groups by @tscrim in #37848
  • Replace special handling of optional extensions (bliss, coxeter3, ....) by @mkoeppe in #37857
  • Implement Drinfeld modular forms by @DavidAyotte in #36538
  • some care for blank lines (pep E30) in groups/ and numerical/ by @fchapoton in #38132
  • some care for blank lines in coding and modules by @fchapoton in #38133
  • some care for blank lines in matrix/ by @fchapoton in #38134
  • Fix building fflas, linbox on 32-bit by disabling SSE, AVX by @vbraun in #38136
  • some care for blank lines in pyx in rings by @fchapoton in #38137
  • sage.monoids: Modularization fixes, # needs by @mkoeppe in #38143
  • CI: Fix handling of deletions/renames; Build&Test: Uninstall/build changed packages; Linux Incremental: Update platforms by @mkoeppe in #38144
  • docstrings: INPUT formatting by @gmou3 in #38145
  • src/sage/categories/hecke_modules.py: Fix # needs by @mkoeppe in #38146
  • build/pkgs/scip 9.0.1, soplex 7.0.1, papilo 2.2.1, onetbb 2021.12.0 by @mkoeppe in #38147
  • Fix test failure on 32-bit where a different element is picked by @vbraun in #38148
  • many pep8 fixes in misc by @fchapoton in #38149
  • Improve performance of computing columns of matrices over GF(2) by @GiacomoPope in #38152
  • just a few details in permutation.py by @fchapoton in #38156
  • build/pkgs/openssl: Update to 3.2.2 by @mkoeppe in #38157
  • Add parameter sort_neighbors to method init_short_digraph by @dcoudert in #37662
  • update (py)cryptominisat to version 5.11.21, remove no longer needed cryptominisat spkg by @dimpase in #37669
  • Implement the solvable and nil radicals of a finite dimensional Lie algebra by @tscrim in #37697
  • Implementing the faithful representation of a generic Lie algebra in positive characteristic by @tscrim in #37779
  • igraph: Update to 0.10.12, fix spkg-check; python_igraph: Update to 0.11.5, remove spkg-install workarounds by @mkoeppe in #37819
  • Reverted changes from #36986 by @amanmoon in #37850
  • Construct the composition series of Garsia-Procesi modules by @tscrim in #37871
  • ⬆️ Bump dev-hanz-ops/install-gh-cli-action from 0.1.0 to 0.2.0 by @dependabot in #37945
  • Add a method to enumerate cographs by @dcoudert in #37977
  • sage.libs.giac: Compile with std=c++11 by @mkoeppe in #38034
  • work on letterplace algebras by @fchapoton in #38053
  • matroids: Declare function input and return types by @gmou3 in #38057
  • Deprecate is_Element, ... by @mkoeppe in #38077
  • Add # sage_setup: distribution directives for the files of existing distributions sagemath-{categories,...,tdlib} by @mkoeppe in #38088
  • Deprecate is_Map, is_...Morphism by @mkoeppe in #38103
  • Fixed bug in size labeler by @amanmoon in #38114
  • Add small examples of common docstring styles by @kwankyu in #38117
  • Fix hashing for Weyl algebra elements by @darijgr in #38119
  • sage.doctest.control: In doctests, use Python floats for stats by @mkoeppe in #38122
  • Deprecate is_NumberFieldOrder, is_AbsoluteNumberField, is_RelativeNumberField, is_NumberFieldIdeal, is_NumberFieldFractionalIdeal, is_NumberFieldFractionalIdeal_rel by @mkoeppe in #38124
  • Deprecate is_MutablePoset by @mkoeppe in #38125
  • Deprecate is_Fan, is_NefPartition, is_PointCollection, is_ToricLattice, is_ToricLatticeElement, is_ToricLatticeQuotient by @mkoeppe in #38126
  • Add links to the PR in doc preview by @kwankyu in #38127
  • code polishing using list comprehension by @fchapoton in #38131
  • Fix monomial_coefficients for submodules of free modules from sage.modules by @mkoeppe in #37526
  • Use equality '==' instead of 'is' for strings comparison by @cyrilbouvier in #38196
  • Column and row stabilizers for skew tableaux by @darijgr in #38197
  • build/pkgs/sagemath_{categories,environment,objects,repl}: Change to optional by @mkoeppe in #38200
  • Lint: Install tox from ubuntu, as done in CI Build&Test etc. by @mkoeppe in #38206
  • bump prompt_toolkit/version_requirements.txt, more spkg-configures by @dimpase in #38212
  • Fix regex to remove spurious diffs in doc preview by @kwankyu in #38213
  • test that #38159 is fixed by @dimpase in #38214
  • Fix typo "sage.ring" in docstrings by @jeriedel24 in #38215
  • fix trivial typos in graphs/traversals.pyx by @mantepse in #38225
  • Activate/fix rpy2 tests by @mkoeppe in #35396
  • Specht modules for Ariki-Koike algebras by @tscrim in #36980
  • sage.plot.animate: Use FFmpeg.absolute_filename; sage.features: Remove deprecated methods by @mkoeppe in #37312
  • Refactor bootstrap, bootstrap-conda, m4/sage_spkg_collect.m4, sage-spkg-info through sage --package properties, sage-get-system-packages by @mkoeppe in #37430
  • Drop custom GLPK patch and error handling by @orlitzky in #37801
  • Implement the Schur functors applied to semigroup representations by @tscrim in #37830
  • build/pkgs/python3: Update to 3.12.4; declare support of Python 3.12.x stable by @mkoeppe in #37834
  • find integral solutions to matrix equations over PIDs by @yyyyx4 in #38019
  • Steinhaus-Johnson-Trotter algorithm for permutations by @JosePisco in #38064
  • Implemented a generator for Möbius ladder graph by @janmenjayap in #38084
  • sage.combinat, sage.games: Use more lazy_import in all.py files by @mkoeppe in #38096
  • Refactor CachedRepresentation through new class WithPicklingByInitArgs by @mkoeppe in #38097
  • Various Python package upgrades by @mkoeppe in #38101
  • Implement the intrinsic arrangement of a Specht module by @tscrim in #38102
  • Deprecate is_AlgebraicNumber, is_AlgebraicReal, is_ComplexDoubleElement, is_ComplexIntervalFieldElement, is_ComplexNumber, is_FractionField, is_FractionFieldElement, is_Integer, is_IntegerMod, is_IntegerRing, is_Rational, is_RationalField, is_RealDoubleElement, is_RealIntervalField, is_RealIntervalFieldElement, is_RealNumber by @mkoeppe in #38128
  • Fix live doc build by saving runner space by @kwankyu in #38129
  • e_antic 2.0.2, normaliz 3.10.3, pynormaliz 2.20, polymake 4.12 by @mkoeppe in #38140
  • build/pkgs/sympy: Update to 1.12.1, change to wheel package by @mkoeppe in #38141
  • Remove imports pyx by @fchapoton in #38153
  • details in partition.py (code and pep8) by @fchapoton in #38160
  • build/pkgs/tdlib: Update to 0.9.3 by @mkoeppe in #38163
  • simplify some calls to join by @fchapoton in #38165
  • New methods for sparse graphs backend to enumerate neighbors in linear time by @cyrilbouvier in #38167
  • some care about the documentation of graph generators by @dcoudert in #38168
  • sage.categories: Update # needs, modularization fixes (imports) by @mkoeppe in #38170
  • fix some details in the documentation of digraph generators by @dcoudert in #38171
  • fix and activate E305 in pyx files by @fchapoton in #38176
  • some care for blanklines in pyx in stats by @fchapoton in #38177
  • some care for blank lines in pyx in padics by @fchapoton in #38178
  • tox.ini, .github/workflows, .devcontainer: Remove centos-stream-8 (EOL) by @mkoeppe in #38179
  • sage.interfaces: More lazy_import by @mkoeppe in #38180
  • sage.plot, sage.repl: Modularization fixes (imports), # needs by @mkoeppe in #38181
  • Deprecate is_FreeAlgebraQuotientElement, ... by @mkoeppe in #38184
  • Improve DiGraph neighbor iterators by @cyrilbouvier in #38189
  • sage.algebras...sage.topology: Doctest cosmetics, # needs, import fixes by @mkoeppe in #38193
  • Improve complexity comments for graphs by @cyrilbouvier in #38198
  • Fix infinite loop bug in doctest from #36581 by @grhkm21 in #38209
  • sage.rings: Modularization fixes (imports), # needs by @mkoeppe in #38210
  • Update conda-lock files, rename macOS conda-lock files to match CI Conda, remove unexplained duplicate lock files by @mkoeppe in #37998
  • Reject system gap 4.13 by @mkoeppe in #38222
  • build/pkgs/pynormaliz: Fix tarball name, version_requirements.txt by @mkoeppe in #38260
  • Replace uses of setup.py bdist_wheel and direct uses of python3 -m build by @mkoeppe in #38201
  • Fix doc deployment to netlify for releases by @kwankyu in #38220
  • Fix broken anchors in CHANGES.html of doc preview by @kwankyu in #38274
  • Fix sagelib install with configure --disable-editable by @mkoeppe in #38304
  • fixin' the ruff linter by @fchapoton in #38309
  • Use magick command instead of the deprecated convert if available by @antonio-rojas in #38135
  • build/pkgs/setuptools_scm: Upgrade to 8.1.0, fix dependency typing_extensions, change some packages to wheel by @mkoeppe in #38226
  • Add version selector to doc by @kwankyu in #38285
  • Add announcement banner also for PRs over stable release by @kwankyu in #38332
  • Filter out R warnings by @antonio-rojas in #38294
  • build/pkgs/sage_numerical_backends_coin, sage_numerical_backends_cplex, sage_numerical_backends_gurobi: Update to 10.4 (includes fix for Cython 3) by @mkoeppe in #38319
  • Fix a bug that breaks CHANGES.html again by @kwankyu in #38353
  • CI: Create doc directory regardless of develop or PR by @kwankyu in #38378

New Contributors

Full Changelog: 10.3...10.4