Jython: Python for the Java Platform

Jython 2.5.4rc1 Release Notes

Bugs Fixed

  • [ 1936 ] JBoss 7, vfs protocol in use for jarFileName in PySystemState.
  • [ 1972 ] jython 2.5.3 sys.stdin.readline() hangs when jython launched as subprocess on Mac OS X.
  • [ 1962 ] Interactive console in Jython 2.5.3 needs CRTL-D to execute command.
  • [ 1676 ] NPE in defaultdict
  • [ 1481 ] jython throws java.lang.IllegalArgumentException instead of ValueError.
  • [ 1716 ] xrange slicing raises NPE.

Jython 2.7b1 Release Notes

New Features

  • bytearray complete
  • a buffer API
  • memoryview
  • bz2 module

Bugs Fixed

  • [ 1716 ] xrange slicing raises NPE.
  • [ 1968 ] Fixes for test_csv.py.
  • [ 1989 ] condition.notify_all() is missing.
  • [ 1994 ] threading.Event doesn't have is_set method fixed.
  • [ 1327 ] ThreadState needs API cleanup work
  • [ 1309 ] Server sockets do not support client options and propagate them to 'accept'ed client sockets.
  • [ 1951 ] Bytecode Interpreter stack optimization for larger arguments
  • [ 1894 ] bytearray does not support '+' or .join()
  • [ 1921 ] compiler module broken in Jython 2.7
  • [ 1920 ] Backport CO_FUTURE_PRINT_FUNCTION to Lib/compiler/pycodegen.py
  • [ 1914 ] Float formatting broken in many non-English locales in Jython 2.7
  • [ 1909 ] attrgetter does not parse dotted attributes
  • [ 1924 ] Implement operator.methodcaller
  • [ 1934 ] Break itertools.compress into a separate class
  • [ 1933 ] Break itertools.cycle into a separate class
  • [ 1932 ] Make check for iterability in chain() arguments lazy
  • [ 1931 ] Check that there are exactly 2 filter args
  • [ 1913 ] Support short -W options
  • [ 1897 ] 2.7.0ax only has partial ssl support
  • array_class in jarray module returns the "Array of a type" class

Jython 2.5.3rc1 Release Notes

Bugs Fixed - (Summary of all since 2.5.2)

  • [ 1952 ] __import__(): Handling of non-dict globals argument incompatible with CPython
  • [ 1754 ] modjy does not provide appropriate wsgi.input file-like object
  • [ 1908 ] Patch for 'Unmapped exception: java.net.NoRouteToHostException'
  • [ 1871 ] Relative import in module gets imported to top level (regression)
  • [ 1854 ] set().pop() race condition
  • [ 1730 ] functools.partial incorrectly makes __doc__ property readonly
  • [ 1537 ] expat: org.python.apache.xerces.parsers.SAXParser
  • [ 1268 ] SAX parsers wants to load external DTDs, causing an exception
  • [ 1805 ] threading.Thread always gets name "Thread" instead of a discriminating one
  • [ 1866 ] Parser does not have mismatch token error messages caught by BaseRecognizer
  • [ 1837 ] gderived.py and template Ant target fail on Windows
  • [ 1536 ] NPE in org.python.jsr223.PyScriptEngine:187
  • [ 1640 ] cStringIO does not complain on getvalue after close
  • [ 1721 ] NPE when using JSR 223 (TestCase+Patch)
  • [ 1749 ] function descriptor doesn't work in interactive console
  • [ 1816 ] Jython Interactive Console makes system beep noise too much
  • [ 1829 ] test_socket.py failing on Ubuntu (Oneiric)
  • [ 1844 ] bad host returned by getsockname
  • [ 1727 ] Error in Jython 2.5.2 with os.stat and varargs
  • [ 1735 ] return type of os.read is unicode, not str
  • [ 1755 ] os.utime('/tmp/nonexistent-file', None) fails to raise OSError
  • [ 1768 ] sax.parse doesn't handle attributes with name 'id' correctly
  • [ 1803 ] _tcpsocket doesn't have 'family' attribute
  • [ 1804 ] _tcpsocket doesn't have 'type' and 'proto' attributes
  • [ 1809 ] socket.getaddrinfo sometimes returns an object that crashes in __str__
  • [ 1811 ] Recursive import bug w/ SQLAlchemy 0.7.3
  • [ 1819 ] Incorrect handling of Java object toString methods returning null
  • [ 1824 ] os.link() can silently fail
  • [ 1825 ] EnvironmentError.filename is str even if original name is unicode
  • [ 1828 ] Problems inheriting from long
  • [ 1833 ] Trouble passing Python objects through a Java class back to Python

Jython 2.5.2 Release Notes

The following features have been added and bugs have been repaired for 2.5.2. For a look at the complete roadmap for Jython along with links for the PEPs and other information, please look at the roadmap:

New Features

  • The socket module now includes ipv6 support
  • The socket module now also includes Internationalized Domain Names (RFC 3490) support on Java 6
  • Performance improvements around method invocation. 2.5.2 runs the richards benchmark 3x faster and the pystone benchmark 20% faster than 2.5.1
  • The posix/nt module was rewritten in Java and the performance of its often performance-critical stat function has significantly improved
  • Improved OSError errno messages on Windows
  • Slightly improved startup time (ongoing Issue #1380)
  • Better readline module emulation (required for IPython support)
  • Python functions can be directly passed to Java methods that take a single method interface (such as Callable or Runnable)
  • Add google indexer (by Yin Wang and Steve Yegge)

Bugs Fixed

2.5.2-rc4

  • [ 1667 ] thread.local subclasses with constructor params fail
  • [ 1698 ] warnings module fails under JSR-223
  • [ 1697 ] Wrong error message when http connection can not be established
  • [ 1210 ] Lib/socket.py doesn't allow IPv6 sockets and fails with an AssertionError
  • [ 1700 ] "virtualenv is not compatible" to 2.5.2rc3
  • [ 1701 ] Files are not flushed properly when opened from the EDT (partial fix)

2.5.2-rc3

  • [ 1674 ] PDB crashes under the JSR-223 scripting engine
  • [ 1680 ] jython -c option is not parsed right
  • [ 1681 ] JSR-223, Jython 2.5.2 and implementing Java Interfaces from Python
  • [ 1675 ] Jython exits prematurely when executing a file, thus killing Swing windows
  • [ 1682 ] exit code of 0 on unhandled exception
  • [ 1668 ] strptime('','') works on cpython but not on jython
  • [ 1693 ] Unicode sys.path elements cause UnicodeErrors on import

2.5.2-rc2

  • [ 1665 ] cPickle calls __import__ with illegal parameters
  • [ 1628 ] getpass.getpass echoes input
  • Fix logic to detect that a console is interactive (related to #1133)

2.5.2-rc1

  • [ 1133 ] Support ipython and other completers with readline emulation
  • [ 1642 ] JSR223 PyScriptEngine#getInterface returns a NPE when called with zero args
  • [ 1662 ] time.strptime does not use Java date format strings properly
  • [ 1543 ] PyArray fails to clean up pre-allocated space
  • [ 1661 ] Error at on exit in TCC/LE
  • [ 1639 ] JBoss 5, vfszip protocol in use for jarFileName in PySystemState
  • [ 1660 ] threading module memory leak
  • [ 1452 ] pydoc help() function fails because sys.executable is None in stand-alone Jython
  • [ 1568 ] sys.stdout.encoding returns wrong value in Windows with Jython 2.5.1 (fixed on Java 6 only)
  • [ 1647 ] zxJDBC does not handle NVARCHAR
  • SocketServer module now supports ephemeral server ports (by using port 0); see discussion for #1660

2.5.2-b2

  • [ 1327 ] Classloaders cannot GC, which exhausts permgen (partial bug fix)
  • [ 1604 ] PyBuiltinCallable.Info should be serializable
  • [ 1397 ] Bugs in PyList and PyJavaType.ListIndexDelegate slice setting
  • [ 1503 ] Java constructors should take keyword arguments
  • [ 1648,1495,1516 ] Incomplete implementation of pep328 for relative imports
  • [ 1611 ] Jython bytecode violated JLS, causing NPE on Sun's JVM when using -Xcomp option
  • [ 1643 ] Tools subdirectory still exists in trunk
  • [ 1455 ] Classes loaded dynamically from sys.path do not have their package defined
  • [ 1555 ] Jython does not publish MIME types via JSR 223 (ScriptEngine.getFactory().getMimeTypes() is empty).
  • [ 1632 ] cPickle.Unpickler does not allow assignment of find_global
  • [ 1395 ] PyList.indexOf() and PyTuple.indexOf() do not function properly
  • [ 1373 ] Jython ClassLoader getResource does not work
  • [ 1506 ] Jython applies PEP263 pattern for determining source-code encoding on noncomments
  • [ 1630 ] threading.Thread lacks __tojava__ method
  • [ 1558 ] PyFunction to single method interface wrapping does not andle java.lang.Object methods
  • [ 1622 ] array type prevents __radd__ fallback

2.5.2-b1

  • [ 1614 ] minidom chunks the character input on multi-line values
  • [ 1615 ] Can't invoke Java method that takes a variable number of arguments with zero arguments
  • [ 1605 ] float preference over PyComplex as arg to __call__ breaks logic
  • [ 1586 ] weakref reference count leak when kwargs are used
  • [ 1601 ] Can't serialize PyCode object
  • [ 1551 ] Java objects cannot be copied by the copy module
  • [ 1375 ] XML SAX: attrs.get((None, 'attr')) gives NPE
  • [ 1488 ] sax JyInputSourceWrapper does not support unicode strings
  • [ 1510 ] minidom is not parsing comment information correctly
  • [ 1549 ] Wrapping an InputStream with a PyFile wrongly carries out line-ending translation.
  • [ 1583 ] xml.dom.Node.data returns bytestrings of decoded unicode
  • [ 1515 ] modjy sometimes adds None to the sys.path
  • [ 1507 ] modjy crashes if any query string parameters are not set with '='
  • [ 1473 ] modjy servlet doesn't import site-packages by default
  • [ 1474 ] modjy servlet doesn't call atexit handlers
  • [ 1225 ] socket.getservbyname/port() not yet supported
  • [ 1532 ] Cannot use docstring when defining class
  • [ 1530 ] BoolOp in multiple assign causes VerifyError
  • [ 1478 ] defaultdict & weakref.WeakKeyDictionary [TypeError: first argument must be callable]
  • [ 1487 ] Import of module with latin-1 chars fails on utf-8 file encoding
  • [ 1449 ] Ellipsis comparison different from Python 2.5 to Jython 2.5
  • [ 1493 ] tarfile.extractall() throws "AttributeError: 'module' object has no attribute 'chown'" when called by root
  • [ 1470 ] os.mkdir Errno difference from cpython
  • [ 1496 ] fix os.listdir errno for non-existing dirs
  • [ 1499 ] PostgreSQL datahandler should return Decimals instead of floats for NUMERIC/DECIMAL columns
  • [ 1477 ] os.setpgrp and posix.setpgrp fail with TypeError
  • [ 1396 ] Assigning os module funcs as class attributes incompatible with CPython
  • [ 1504 ] Inheriting twice from the same Java interface causes MRO problems
  • [ 1511 ] PySet doesn't support Java serialization
  • [ 1426 ] JSR 223 Bindings changes not taking effect and leaking between threads; unnecessary synchronization
  • [ 1548 ] Parentheses in CLASSPATH cause errors in jython.bat
  • [ 1576 ] files opened in 'a+' mode not readable
  • [ 1563 ] unicode() for Java objects working differently in 2.2 and 2.5
  • [ 1566 ] os.popen(cmd).read() returns rn as newline on Windows with Jython 2.5
  • [ 1517 ] TypeError: get_referrers
  • [ 1502 ] string-escape codec incorrect
  • [ 1534 ] new style object __dict__[name] ignored
  • [ 1479 ] xml parser file lock
  • [ 1582 ] com.ziclix.python.sql.PyConnection leaks memory
  • [ 1520 ] os.listdir doesn't return unicode when requested
  • [ 1483 ] optparse std module dies on non-ASCII unicode data
  • [ 1390 ] ihooks fails due to unimplemented methods in imp module
  • [ 1456 ] sys.trace/profile attributes cause: AttributeError: write-only attr: trace in PyAMF
  • [ 1385 ] generator.throw uncaught on new generator doesn't stop the generator
  • [ 1596 ] SynchronizedCallable does not report that it is callable [suggested fix]
  • [ 1557 ] jython.bat doesn't work in 4nt
  • [ 1567 ] [Windows] Wildcard Parameter * gets expanded to filename
  • [ 1594 ] Glob patterns like .txt processed incorrectly on startup
  • [ 1356 ] [Windows] test_subprocess test_communicate_pipe_buf fails
  • [ 1595 ] [patch] CachedJarsPackageManager cannot write cache for packages in jar over 64k
  • [ 1522 ] repeated execution of external python scripts causing PermGen out of memory exception
  • Fix runtime issues during exitfuncs triggered via SystemRestart (such as during Django or Pylons development mode reloading)
  • Fix pickling of collections.defaultdict objects
  • Fix the cmath module to accept objects implementing the __float__ method
  • Add google indexer (by Yin Wang and Steve Yegge)

Jython 2.5.1 Release Notes

The following features have been added and bugs have been repaired for 2.5.1. For a look at the complete roadmap for Jython along with links for the PEPs and other information, please look at the roadmap:

New Features

  • zxJDBC supports the with-statement: connections are committed or rollbacked; cursors are closed
  • Upgraded to ANTLR 3.1.3
  • [ 1859477 ] Dynamically loaded ServletFilters like PyServlet
  • Built in JSR 223 scripting engine, with LiveTribe JSR 223 implementation for JDK 5
  • Jython "-J-classpath cp_args_here" now works as expected for unix shell.

Bugs Fixed

  • [ 1466 ] wrong handling of append only files
  • [ 1079 ] fixed regression on issue: twisted.python.threadable module: missing attribute '_RLock'
  • [ 1461 ] assert statement should lookup AssertionError using getglobal
  • [ 1425 ] distutils/util.py assumes too much posix
  • [ 1457 ] Cannot write an array in a file opened in r+b mode.
  • [ 1382 ] __cmp__ on certain types raises ArrayStoreException
  • [ 1443 ] Can't update() hashlib.sha1() with array.array('c')
  • [ 1444 ] Can't zlib.compress() with array.array('c')
  • [ 1458 ] Builtin codecs aren't available without standard lib
  • [ 645615 ] cannot import through symbolic links
  • [ 1366 ] parsing of lamda expression fails
  • [ 1365 ] continuation lines fail in interactive interpreter
  • [ 1377 ] Event names shadowed by a field name on Java types leads to a NPE
  • [ 1381 ] Redundant declarations of interface implementation hides overriden methods
  • [ 1189 ] MD5 hash is incorrectly calculated when string contains non-latin chars and using python md5 lib
  • [ 1802339 ] Problem printing unicode when stdout intercepted
  • [ 1145 ] Jython 2.5 compatibility problem with JSR 223
  • [ 1400 ] Evaluating expression via JSR 223 ScriptEngine returns null instead of True/False
  • [ 1413 ] Array data type (PostgreSQL) is not supported (NPE)
  • [ 1434 ] Cannot get return code from a process started with os.popen with Jython 2.5 (worked in 2.2)
  • [ 1391 ] socket.getaddrinfo() breaks ftplib FTP client
  • [ 1409 ] JSR-233 engine version numbers backwards
  • [ 1408 ] JSR-223 engine doesn't implement I/O redirection
  • [ 1393 ] TypeError: _new_impl(): expected 1 args; got 0
  • [ 1415 ] ast Node creation fails with no arg constructors
  • [ 1405 ] Executing __run__.py from .jar throws exception(SystemExit: 0) in main when sys.exit(0) is called
  • [ 1439 ] Can't write() array.array
  • [ 1139 ] crashes on isinstance
  • [ 1430 ] Oracle JDBC Connection close
  • [ 1406 ] Parsing a simple PEP 342 coroutine crashes Jython 2.5
  • [ 1407 ] ClassCastException in plain Python coroutine
  • [ 1424 ] Relative imports do not work in some cases

Jython 2.5.0 Release Notes

The following features have been added for 2.5.0. For a look at the complete roadmap for 2.5 along with links for the PEPs and other information, please look at the roadmap:

  • yield is always a keyword
  • int() will now return a long instead of raising OverflowError if a number is too large
  • list.insert() changed to be consistent with negative slice indexing
  • list.index() takes optional start, stop arguments.
  • Dictionaries gained a pop() method and .fromkeys() class method.
  • dict() constructor takes keyword arguments.
  • Many type objects are now callable.
  • PEP 279: enumerate() built-in added.
  • PEP 218: A Standard Set Datatype
  • PEP 273: Importing Modules from Zip Archives
  • PEP 278: Universal Newline Support
  • PEP 282: logging package
  • PEP 285: A Boolean Type
  • PEP 293: Codec Error Handling Callbacks
  • PEP 302: New Import Hooks
  • PEP 307: Pickle Enhancements
  • PEP 324: subprocess module
  • optparse module
  • ExposeAnnotations
  • Move antlr parser in /trunk/sandbox/ast to trunk
  • Hookup asm compiler to antlr, solidify and add 2.5 features
  • PEP 289: Generator expressions
  • PEP 263: Defining Python Source Code Encodings
  • PEP 318: Function/method decorators
  • PEP 308: Conditional expressions
  • PEP 343: 'with' statement
  • PEP 342: Coroutines via generators
  • PEP 341: Unified try/except/finally
  • PEP 352: Exceptions as new-style classes
  • UpgradeTo25CPythonLib
  • PEP 292: Simpler String Substitutions
  • PEP 327: decimal type
  • UpgradeTo25CPythonLib
  • Ongoing parser fixes (universal newlines, line numbering, newline handling, interactive interpreter bugs)
  • PEP 237: Unifying int/long
  • PEP 357: Allowing Any Object to be Used for Slicing
  • PEP 309: Partial Function Application
  • PEP 305: csv module
  • PEP 338: Executing modules as scripts
  • unicodedata module
  • PEP 328: Multi-line and absolute/relative imports
  • elementtree module -> jython-elementtree
  • New Java integration (based on new style classes)
  • cjkcodecs
  • bz2 module
  • ReplaceJythonc