1. 03 Aug, 2007 1 commit
  2. 01 Aug, 2007 1 commit
  3. 30 Jul, 2007 1 commit
  4. 29 Jul, 2007 2 commits
  5. 28 Jul, 2007 6 commits
  6. 11 Jul, 2007 1 commit
  7. 10 Jul, 2007 4 commits
  8. 07 Jul, 2007 3 commits
  9. 07 Jun, 2007 5 commits
  10. 01 Jun, 2007 1 commit
    • Robert Bradshaw's avatar
      type narrowing for cdef methods · cbd2a528
      Robert Bradshaw authored
      Now if you inherit cdef methods from another class, you may re-declare the
      arguments and return variables to be sub-types of the original declared type.
      This will be especially convenient for the SAGE arithmetic architecture.
      Type-checking is performed if necessary.
      cbd2a528
  11. 09 May, 2007 1 commit
  12. 04 May, 2007 2 commits
  13. 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
  14. 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
  15. 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
  16. 24 Feb, 2007 2 commits
  17. 23 Feb, 2007 3 commits
  18. 22 Feb, 2007 1 commit
  19. 21 Feb, 2007 1 commit