An underlying philosophy in the development of Sage is that it should provide unified library-level access to the some of the best GPL’d C/C++ libraries. Currently Sage provides some access to MWRANK, NTL, PARI, and Hanke, each of which are included with Sage.

The interfaces are implemented via shared libraries and data is
moved between systems purely in memory. In particular, there is no
interprocess interpreter parsing (e.g., `expect`),
since everything is linked together and run as a single process.
This is much more robust and efficient than using
`expect`.

Each of these interfaces is used by other parts of Sage. For example, mwrank is used by the elliptic curves module to compute ranks of elliptic curves, and PARI is used for computation of class groups. It is thus probably not necessary for a casual user of Sage to be aware of the modules described in this chapter.

- libGAP shared library Interface to GAP
- libGAP element wrapper
- FLINT fmpz_poly class wrapper
- fpLLL library
- The Elliptic Curve Method for Integer Factorization (ECM)
- Rubinstein’s lcalc library
- An interface to Anders Buch’s Littlewood-Richardson Calculator
`lrcalc` - Victor Shoup’s NTL C++ Library
- Cremona’s mwrank C++ library
- Cython interface to Cremona’s
`eclib`library (also known as`mwrank`) - Sage interface to Cremona’s eclib library (also known as mwrank)
- PARI C-library interface
- Sage class for PARI’s GEN type
- Cython wrapper for the Parma Polyhedra Library (PPL)
- Interface to the
`pselect()`system call - libSingular: Functions
- libSingular: Options