cython.git
17 years agocomments, builtin objects
Robert Bradshaw [Thu, 26 Apr 2007 05:04:07 +0000 (22:04 -0700)]
comments, builtin objects

17 years agoAdded for i from ... ['by' step] syntax.
Robert Bradshaw [Thu, 26 Apr 2007 03:42:45 +0000 (20:42 -0700)]
Added for i from ... ['by' step] syntax.

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

17 years agoAdded a bint c type, which is a c int that coerces to and from python objects via...
Robert Bradshaw [Thu, 26 Apr 2007 02:54:15 +0000 (19:54 -0700)]
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.

17 years agoCache __builtin__ name lookups so they are performed on module load rather than at...
Robert Bradshaw [Sat, 14 Apr 2007 11:13:05 +0000 (04:13 -0700)]
Cache __builtin__ name lookups so they are performed on module load rather than at every use.

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.

17 years agoInline keyword for cdef functions, variable assignment on declaration (+optimization)
Robert Bradshaw [Tue, 27 Feb 2007 11:46:35 +0000 (03:46 -0800)]
Inline keyword for cdef functions, variable assignment on declaration (+optimization)

"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.

17 years agodisable builtin functions that conflict with type names
Robert Bradshaw [Sat, 24 Feb 2007 12:44:11 +0000 (04:44 -0800)]
disable builtin functions that conflict with type names
add dummy py_index for cdef arrays so subexprs valid

17 years agoFix sizeof for dotted (cimported) types
Robert Bradshaw [Sat, 24 Feb 2007 11:23:45 +0000 (03:23 -0800)]
Fix sizeof for dotted (cimported) types

17 years agomodify sizeof() operator to return size of extension type struct
Robert Bradshaw [Fri, 23 Feb 2007 21:46:02 +0000 (13:46 -0800)]
modify sizeof() operator to return size of extension type struct

17 years agoFigured out how to use the Python/C API for some builtin functions (such as len)...
Robert Bradshaw [Fri, 23 Feb 2007 08:18:05 +0000 (00:18 -0800)]
Figured out how to use the Python/C API for some builtin functions (such as len) to avoid python calling conventions.

17 years agoConditional expressions
Robert Bradshaw [Fri, 23 Feb 2007 04:52:31 +0000 (20:52 -0800)]
Conditional expressions

Changes in grammar required change for this, see http://www.python.org/dev/peps/pep-0308/
Most noteably for list comprehensions (dissambiguate the if)

17 years agofast cdef type indexing into lists/tuples via runtime type checking
Robert Bradshaw [Thu, 22 Feb 2007 21:17:25 +0000 (13:17 -0800)]
fast cdef type indexing into lists/tuples via runtime type checking

- 5 times as fast for L[i], list/tuple L, cdef integer type i, 0 <= i < len(L)
- no change for L[a], python object a
- 1-1.5% slowdown for L[i], i negative or out of range

17 years agoDisable a**b for cdef int's. (Return result was a double.)
Robert Bradshaw [Wed, 21 Feb 2007 06:17:26 +0000 (22:17 -0800)]
Disable a**b for cdef int's. (Return result was a double.)

17 years agoDe-allocate function temp variables _after_ computing return value, in case an except...
Robert Bradshaw [Sat, 27 Jan 2007 07:06:06 +0000 (23:06 -0800)]
De-allocate function temp variables _after_ computing return value, in case an exception is thrown, caught, and said temp variables still need to be accessed.

17 years agofix temp allocation order, remove straggling comment output
Robert Bradshaw [Wed, 17 Jan 2007 04:24:21 +0000 (20:24 -0800)]
fix temp allocation order, remove straggling comment output

17 years agoFloorDiv operation
Robert Bradshaw [Tue, 16 Jan 2007 02:21:26 +0000 (18:21 -0800)]
FloorDiv operation

17 years agoImplemented inplace arithmetic
Robert Bradshaw [Tue, 16 Jan 2007 01:39:47 +0000 (17:39 -0800)]
Implemented inplace arithmetic

17 years agoGet rid of this sort of error: "Cannot assign type 'gsl_complex' to 'gsl_complex'"
William Stein [Thu, 11 Jan 2007 06:25:21 +0000 (22:25 -0800)]
Get rid of this sort of error: "Cannot assign type 'gsl_complex' to 'gsl_complex'"

The solution in this patch is somewhat hackish, but should be OK.

17 years agoList comprehension
Robert Bradshaw [Wed, 10 Jan 2007 09:06:30 +0000 (01:06 -0800)]
List comprehension

18 years agoPeter Johnson (peter@tortall.net) weakref patch
William Stein [Mon, 18 Dec 2006 02:59:29 +0000 (18:59 -0800)]
Peter Johnson (peter@tortall.net) weakref patch

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.

18 years agoApply Nick Alexander's patch so that Sagex that embeds positions in module, cdef...
William Stein [Mon, 18 Dec 2006 02:05:12 +0000 (18:05 -0800)]
Apply Nick Alexander's patch so that Sagex that embeds positions in module, cdef class, and def class docstrings.

18 years agoEric Huss's readonly variable patch:
William Stein [Thu, 30 Nov 2006 19:57:57 +0000 (11:57 -0800)]
Eric Huss's readonly variable patch:

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.

18 years agoModified usage banner.
William Stein [Sat, 25 Nov 2006 09:26:53 +0000 (01:26 -0800)]
Modified usage banner.

18 years agoHad to also put the type code in for the signed case.
William Stein [Fri, 3 Nov 2006 23:41:38 +0000 (15:41 -0800)]
Had to also put the type code in for the signed case.

18 years agoMade some error output more verbose.
William Stein [Fri, 3 Nov 2006 23:34:50 +0000 (15:34 -0800)]
Made some error output more verbose.

18 years agoAdded support for automatic conversion of input types to Py_ssize_t.
William Stein [Fri, 3 Nov 2006 23:34:39 +0000 (15:34 -0800)]
Added support for automatic conversion of input types to Py_ssize_t.

18 years agoMade annoted C files easier to read.
William Stein [Fri, 3 Nov 2006 17:33:27 +0000 (09:33 -0800)]
Made annoted C files easier to read.

18 years agoFix one warning was too high a level
William Stein [Fri, 3 Nov 2006 04:29:29 +0000 (20:29 -0800)]
Fix one warning was too high a level

18 years agoMade the output generated by Pyrex much more verbose with better context information.
William Stein [Thu, 2 Nov 2006 15:46:17 +0000 (07:46 -0800)]
Made the output generated by Pyrex much more verbose with better context information.

For example:

  /* "/Volumes/HOME/s/devel/sage-1/sage/matrix/matrix_generic_sparse.pyx":581
    x = set(v.keys()).intersection(set(w.keys()))
    a = 0
    for k in x:             # <<<<<<<<<<<<<<
        a = a + v[k]*w[k]
    return a
 */
  __pyx_3 = PyObject_GetIter(__pyx_v_x); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 581; goto __pyx_L1;}
  for (;;) {

18 years agoChanged that error to a warning.
William Stein [Sun, 29 Oct 2006 01:21:12 +0000 (18:21 -0700)]
Changed that error to a warning.

18 years agoFixed an error in a call to the error function.
William Stein [Sun, 29 Oct 2006 01:19:51 +0000 (18:19 -0700)]
Fixed an error in a call to the error function.

18 years agoFix a Py_ssize_t build problem.
William Stein [Fri, 27 Oct 2006 11:22:40 +0000 (06:22 -0500)]
Fix a Py_ssize_t build problem.

18 years agoAdd a new option "-e" or "--embed-positions" to Pyrex.
William Stein [Wed, 25 Oct 2006 07:05:47 +0000 (02:05 -0500)]
Add a new option "-e" or "--embed-positions" to Pyrex.

  -p, --embed-positions          If specified, the positions in Pyrex files of each
                                 function definition is embedded in its docstring.

This is very useful to support interactive viewing of *Pyrex* source
code in, e.g, IPython.

18 years agoChange so that warning for multiple declarations are printed by default.
William Stein [Wed, 25 Oct 2006 06:21:53 +0000 (01:21 -0500)]
Change so that warning for multiple declarations are printed by default.

18 years agoDelete spurious print statement (that was used for debugging).
William Stein [Mon, 23 Oct 2006 03:51:53 +0000 (22:51 -0500)]
Delete spurious print statement (that was used for debugging).

18 years agoAdd correct setting of tp_name to the full module name in Nodes.py.
William Stein [Sun, 22 Oct 2006 04:56:20 +0000 (21:56 -0700)]
Add correct setting of tp_name to the full module name in Nodes.py.

  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).

18 years agoPrint out the usage message if pyrexc is called with no options and no input source...
William Stein [Sun, 22 Oct 2006 04:54:06 +0000 (21:54 -0700)]
Print out the usage message if pyrexc is called with no options and no input source files.

18 years agoDon't list experimental macosx only options. Never needed in context of SAGE.
William Stein [Sun, 22 Oct 2006 03:56:56 +0000 (20:56 -0700)]
Don't list experimental macosx only options.  Never needed in context of SAGE.

18 years agoAdd to help that multiple include directories are allowed.
William Stein [Sun, 22 Oct 2006 03:55:47 +0000 (20:55 -0700)]
Add to help that multiple include directories are allowed.

18 years agoAdded nice error messages with context information.
William Stein [Sun, 22 Oct 2006 02:47:08 +0000 (19:47 -0700)]
Added nice error messages with context information.

Finally, you can see the line itself where the error occured,
instead of just the line number!!

18 years agoPrint "warning: " before warnings, so they look different than errors.
William Stein [Sun, 22 Oct 2006 02:35:04 +0000 (19:35 -0700)]
Print "warning: " before warnings, so they look different than errors.

18 years agoAdded a "Warning" class, and changed it so redeclaring or re-importing is a warning...
William Stein [Sun, 22 Oct 2006 01:53:34 +0000 (18:53 -0700)]
Added a "Warning" class, and changed it so redeclaring or re-importing is a warning rather than an error.

    Because Pyrex has no #ifndef macro, it is impossibly painful to use
    pxi files for declarations in a large project.  SAGE is a large project.
    Also, in Python it is not an error to import a module twice.  Thus
    more in line with Python's behavior, multiple declarations of the same
    symbol is no longer an error.

18 years agoVersion of Pyrex distributed with SAGE on October 19, 2006
William Stein [Fri, 20 Oct 2006 04:30:50 +0000 (21:30 -0700)]
Version of Pyrex distributed with SAGE on October 19, 2006

18 years agoOfficial Pyrex version 0.9.4.1
William Stein [Fri, 20 Oct 2006 04:28:18 +0000 (21:28 -0700)]
Official Pyrex version 0.9.4.1