-
-
Notifications
You must be signed in to change notification settings - Fork 537
Sage 10.0 Release Tour
Current development cycle (2023)
The built HTML documentation of the current development version is now available with a stable URL.
Here are short cuts to: Reference Manual • Developer's Guide • Installation Guide
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
var('x,y,z')
implicit_plot3d((sqrt(x*x+y*y)-3)^2 + z*z - 1, (x,-4,4), (y,-4,4), (z,-1,1))
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])
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 first beta of the Sage 10.0 development cycle, 10.0.beta0, was released on 2023-02-12. The current beta is 10.0.beta8, released on 2023-04-06.
The Sage source code is available in the sage git repository.