[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Axiom-developer] FW: Pyrex and SAGE

From: Bill Page
Subject: [Axiom-developer] FW: Pyrex and SAGE
Date: Tue, 7 Nov 2006 11:01:18 -0500

Axiom Developers,

Although the attached email is from another list and is specifically
about Sage and Python, I decided to forward it here to the Axiom
Developer list because I think it is an excellent example of the
*right way* for open source projects to collaborate and co-operate.
I hope that we can achive this in the Axiom project.

Greg Ewing is the developer of an open source tool that compiles a
subset of Python to C++ for reasons of efficiency. Pyex for Sage
plays a similar role as Aldor for Axiom.

Bill Page.

-----Original Message-----
From: address@hidden [mailto:address@hidden
  On Behalf Of William Stein
Sent: November 7, 2006 5:00 AM
To: address@hidden
Cc: address@hidden
Subject: [sage-devel] Pyrex and SAGE

Hi Greg,

Pyrex is *awesome*.  It's existence is one of the main reasons that
I choose Python as the main interpreter language for SAGE

I have lofty goals for SAGE, and Pyrex plays a key roll
in them.  E.g., we have used Pyrex a *huge* amount already
in SAGE:

sha:~/d/sage/sage was$ cat */*.pyx */*/*.pyx */*.pxd */*/*.pxd |wc -l

Also, I've written code to inline Pyrex in Python scripts (like
scipy's weave, but for Pyrex), and make it easy to use Pyrex 
from an interactive GUI (put %pyrex at the beginning of a block
in the SAGE notebook).

However, there are numerous specific goals for SAGE that absolutely
require me to modify Pyrex.  For example, it's crucial for SAGE
that it be easy to view the source code of functions from the
interactive prompt, like IPython does with Python code (via
Python's inspect module).  I very recently added support to the
SAGE version of Pyrex so it can embed file and line number
information in docstrings, so now source code of Pyrex functions
is easily viewable from Ipython (this isn't released yet).  Also,
Martin Albrecht and I made numerous changes to properly support
cimporting of modules defined in other directories (this works
very nicely now).

All these changes (and others) were easier than I thought they
would be, because you did an excellent job writing Pyrex in the
first place.   A potential problem is that the SAGE project is
creating a variant of Pyrex that is significantly different from
yours.  In particular, our version could (in theory -- hopefully
not in practice!) contain new bugs, misfeatures, and other things
you would not be proud to be attributed to you.   So what would
*you* prefer I do?:

    (1) Continue to distribute the SAGE-modified Pyrex as "pyrex",
        and make it very clear that the SAGE version has numerous
        modifications from your version, and that questions should
        be directed to the sage-forum instead of the pyrex forum.

    (2) Distribute the SAGE-modified version, but give it a different
        name, e.g., "SageX", so nobody will confuse it with Pyrex.
        If we do this, it will be made *extremely* clear in README's,
        documentation, etc., that "SageX" is a based very heavily on
        Pyrex by you. Hopefully this could be viewed not as a fork,
        but as an adaptation of Pyrex for use in the SAGE project.

    (3) Make a concerted effort to convince you to include in the
        next official release of Pyrex many of the modifications
        that we've made for SAGE.

In all cases, SAGE is a very strongly open source project, and all
of the SAGE modifications to Pyrex will always be made freely
available. So whatever you prefer it won't stop people interested
in using Pyrex from potentially benefiting from any SAGE work on

Best regards,

   William Stein
   Associate Professor of Mathematics
   University of Washington

To post to this group, send email to address@hidden
To unsubscribe from this group, send email to
For more options, visit this group at
URLs: and

reply via email to

[Prev in Thread] Current Thread [Next in Thread]