[IronPython] IronPython 0.9.2 released

Martin Maly Martin.Maly at microsoft.com
Thu Sep 22 21:04:22 CEST 2005


We have just released IronPython 0.9.2. In addition to focusing on the
CPython regression test suite
and fixing bugs, we also spent time prepairing IronPython for PDC 2005
conference where Jim spent the
whole of the last week. There were many changes in IronPython codebase,
mostly inspired by getting
the regression tests running and adding CPython 2.4 features.

IronPython 0.9.2 can now run: test_math, test_unary, test_binop,
test_fnmatch, test_macpath, 
test_ntpath, test_operations, test_rfc822, test_urlparse, test_contains,
test_call and test_operator without any changes to the tests.

Two tests required modifications:
test_enumerate - disabled one line in the tuple reuse test
                 that relies on reference counting
test_long - part of the test requires closures and few testcases are
            for bugs. However, we run most of the tests successfully.

Thanks to all of you who reported bugs and provided feedback that
influenced this release:
Anthony Tarlano, Nicholas Jacobson, Erin Renshaw, Vargaz, Pelikhan, Mike
Sdahlbac, Jan Kotas and Mike Hostetler.

The larger items in this release are:
- implementation of PEP 289: Generator Expressions
- implementation of PEP 318: Decorators for Functions and Methods
- integer arithmetics fixes that got test_long to work
- operator built-in module

The full list of bugs fixed can be found below.

You can download the new IronPython release from:


Thanks and keep in touch,
The IronPython team

List of bugs fixed in IronPython 0.9.2
* Dictionary not supporting initializing with the name=value pairs
* generator expressions not implemented
* decorators don't work
* exec "import sys" throws NullReferenceException
* Cannot call eval function with **kwargs
* Unary operators ~ - + don't work well on strings and complex numbers
* Cannot convert object implementing __float__ to float using float()
* Cannot convert long to long
* Wrong exception when formatting string with an empty tuple
* New style class cannot implement own binary operators
* enumerate doesn't have __doc__ string
* Wrong exception when enumerator is missing next() method
* MoveNext from an IronPython list's enumerator returns error
* ReflectOptimizer:GenerateSingleMethod makes calls to abstract methods
using OpCodes.Call
* No message if deleted var d/n exist
* StreamReader in Parser.fromFile should be disposed
* test_long:   x << n >> n != x for some integers
* Python file may throw if not linked to FileStream
* test_long.py - oct returned 00L but expected 0L for 0
* test_long.py - Conversion long ==> bool is incorrect
* test_long.py - hex returned 0xaaaaaaaaaaaaaaaaL but expected
0xAAAAAAAAAAAAAAAAL for 12297829382473034410
* long("-01L") fails
* test_long.py hex(-1L) returns 0xFFFFFFFFFFFFFFFF rather than -0x1
* sys.version_info missing
* problem with int and slice (int(" 7 ") fails)
* None in 'abc' doesn't raise TypeError
* isinstance is not implemented for old class instances
* Ops.InPlaceAdd doesn't try to call Add if InPlaceAdd is not supported
on the type
* Add imp module
* Add "update" method on the dictionary
* implement operator built-in module
* shift by negative number doesn't report error
* list or tuple multiplied by zero throws exception
* __doc__ not defined on bound old instance methods
* __name__ and __module__ missing on OldClass
* abs(None) fails with the wrong error
* implement operator.attrgetter and operator.itemgetter
* NotEqual doesn't call __ne__
* Complex is not comparable data type
* operator.*slice methods don't check for integer types
* operator.itemgetter throws wrong exception on missing key
* Int64 power produces wrong result when overflows to big integers
* Right shift does not behave like division for negative numbers (Int32,
Int64, integer)
* Power to the negative integer throws exception instead of producing
Float point results
* PowerMod throws ArgumentOutOfRange exception instead of TypeError on
exponent < 0
* Optimizer emits duplicate methods for operator (__add__, __radd__)
* id() method doesn't produce unique numbers
* nt is missing remove()

More information about the Ironpython-users mailing list