1. 07 Jul, 2007 2 commits
  2. 09 May, 2007 1 commit
  3. 04 May, 2007 2 commits
  4. 26 Apr, 2007 3 commits
    • Robert Bradshaw's avatar
      comments, builtin objects · a19500d3
      Robert Bradshaw authored
      a19500d3
    • Robert Bradshaw's avatar
      Added for i from ... ['by' step] syntax. · 33b0863c
      Robert Bradshaw authored
      E.g.
      
      for i from 0 <= i < 10 by 2:
          print i
      
      0
      2
      4
      6
      8
      
      Old for-from loops remain exactly the same (using the ++ or --). If step is specified, the increment operator will be += step or -= step, depending on the orientation of the inequalities (as before).
      
      NOTE: 'by' is now a keyword
      33b0863c
    • Robert Bradshaw's avatar
      Added a bint c type, which is a c int that coerces to and from python objects... · eb232ced
      Robert Bradshaw authored
      Added a bint c type, which is a c int that coerces to and from python objects via the boolean routines.
      
      The purpose of this type is to free the coder from having to use
      bool() when retrieving and returning semantically "boolean" values
      (e.g. the result of a compare).
      
      The bint type is a subclass of the int type, and the only difference
      is that it uses PyBool_FromLong and PyObject_IsTrue rather than
      PyInt_FromLong and PyInt_AsLong. Arithmatic on bints will return ints.
      
      Where it makes sense, several builtin functions have been re-declared
      to return bints, as well as comparisons and the boolean operations
      or, and, and not.
      eb232ced
  5. 14 Apr, 2007 1 commit
    • Robert Bradshaw's avatar
      Cache __builtin__ name lookups so they are performed on module load rather than at every use. · 6fd9a195
      Robert Bradshaw authored
      The code "__Pyx_GetName(__pyx_b, __pyx_n_[string])" is performed in several
      thousand places throughout the sage library, and can be quite expensive
      (a dictionary lookup, possibly raising an error, etc.) This is redundant
      as the result will always be the same. I perform the lookup once
      (on loading the module), then have a pointer to the result for all subsequent use.
      
      The most common examples are bool/str/int (both as function calls and
      in isinstance), True/False, and raisign errors.
      
      A side feature is that on loading a module with an illegal __builtin__ name,
      it will complain at load time rather than at run time.
      6fd9a195
  6. 27 Feb, 2007 1 commit
    • Robert Bradshaw's avatar
      Inline keyword for cdef functions, variable assignment on declaration (+optimization) · a72407b4
      Robert Bradshaw authored
      "cdef inline foo()" now valid, and will place inline in the resulting c code
      
      "cdef o = expr" and "cdef type x = expr" now valid.
      This may not seem like a huge change, but it ended up requiring
      quite a bit of work. The variables are still all declared at the
      top, but the assignment takes place at the specified line in the
      code.
      
      If an assignment is made at declaration, the variable is initalized to
      0 rather than None (also skipping an INCREF) and Py_XDECREF is used on
      exiting the function (in case an error occured before the actual value
      was calculated). Hence these variables MUST NOT be used before they are
      defined or it will probably segfault.
      a72407b4
  7. 24 Feb, 2007 2 commits
  8. 23 Feb, 2007 3 commits
  9. 22 Feb, 2007 1 commit
  10. 21 Feb, 2007 1 commit
  11. 27 Jan, 2007 1 commit
  12. 17 Jan, 2007 1 commit
  13. 16 Jan, 2007 2 commits
  14. 11 Jan, 2007 1 commit
  15. 10 Jan, 2007 1 commit
  16. 18 Dec, 2006 2 commits
    • William Stein's avatar
      Peter Johnson (peter@tortall.net) weakref patch · 061558c7
      William Stein authored
      I recently ran into this problem myself (as the current code causes
      Python to crash), so I whipped up a quick patch that fixes it for me.
      I think it follows all of the weakref guidelines now.
      
      The patch is against the LXML svn pyrex
      (http://codespeak.net/svn/lxml/pyrex/).  Is there a different SVN I
      should be pointing to?  It patches functions generate_new_function,
      generate_dealloc_function, generate_traverse_function, and
      generate_clear_function.
      
      The patch just compares the entry.name against "__weakref__"; this
      could probably be centralized in the Entry object if so desired.
      061558c7
    • William Stein's avatar
      Apply Nick Alexander's patch so that Sagex that embeds positions in module,... · 6f8e8da4
      William Stein authored
      Apply Nick Alexander's patch so that Sagex that embeds positions in module, cdef class, and def class docstrings.
      6f8e8da4
  17. 30 Nov, 2006 1 commit
    • William Stein's avatar
      Eric Huss's readonly variable patch: · f4961542
      William Stein authored
      There's a minor bug, if you try to cdef a readonly variable at the module
      scope, the compiler raises an UnboundLocalError exception.  The attached
      patch seems to clear up the problem and gets the compiler to report the
      correct error.
      f4961542
  18. 25 Nov, 2006 1 commit
  19. 03 Nov, 2006 5 commits
  20. 02 Nov, 2006 1 commit
  21. 29 Oct, 2006 2 commits
  22. 27 Oct, 2006 1 commit
  23. 25 Oct, 2006 2 commits
  24. 23 Oct, 2006 1 commit
  25. 22 Oct, 2006 1 commit
    • William Stein's avatar
      Add correct setting of tp_name to the full module name in Nodes.py. · ae424da0
      William Stein authored
        This required a number of changes to a few files.  Basically, the
        full module name is determined in Main.py. It is then passed around
        a bit until it is used when generating tp_name.
      
        This change was needed because otherwise pickling of extension classes
        with full module names like sage.rings.integer.Integer would fail
        (since Python would look for integer.Integer instead).  NOTE: This is
        pickling of the extension class itself, not of instances (which could
        also fail, because the class doesn't pickle).
      ae424da0