I propose the following goal for Sage 9.3.

Modularize sagelib so that individual parts of it can be built and run with 
a much smaller set of libraries.

In particular, create a package "sage_objects" that makes Sage objects, the 
element/parent framework, categories, the coercion system and the related 
metaclasses available. This package would, for example, not provide or know 
about integers, polynomials, or matrices (thus avoiding all the 
dependencies on the various libraries implementing these). Ideally it would 
only have a build dependency on Cython and no runtime dependencies. 

(Doctesting sage_objects would still need more of Sage, but some it could 
also be done by mocking instead of with the real classes.)

a) I think these facilities could see a wider use in the mathematical 
Python community, and in this way we could hope to benefit from a larger 
developer base. For example, I would hope that sage_objects could be ported 
for use with PyPy instead of CPython.

b) Building and deploying a user package would be easier if it could depend 
on a small package such as "sage_objects" only instead of the whole 
multigigabyteness of Sage.


I would hope that this can be done without changing the overall structure 
of the source tree, using the mechanism of native namespace packages 
introduced in Python 3.3 (see https://trac.sagemath.org/ticket/28925).


-- 
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sage-devel/d0f9f658-c863-45da-96d9-30dea7909af1%40googlegroups.com.

Reply via email to