- trial now has an --exitfirst flag which stops the test run after
the first error or failure.
- twisted.internet.ssl.CertificateOptions now supports chain
certificates.
- twisted.internet.endpoints now provides ProcessEndpoint, a child
process endpoint.
- Factory now has a forProtocol classmethod that constructs an
instance and sets its protocol attribute.
- twisted.internet.endpoints.connectProtocol allows connecting to a
client endpoint using only a protocol instance, rather than
requiring a factory.
- twisted.trial.unittest.SynchronousTestCase.assertNoResult no longer
swallows the result, if the assertion succeeds.
- twisted.python.constants.FlagConstant implements __iter__ so that
it can be iterated upon to find the flags that went into a flag
set, and implements __nonzero__ to test as false when empty.
- assertIs and assertIsNot have now been added to
twisted.trial.unittest.TestCase.
- twisted.trial.unittest.TestCase.failureResultOf now takes an
optional expected failure type argument.
- The POSIX implementation of
twisted.internet.interfaces.IReactorProcess now does not change the
parent process UID or GID in order to run child processes with a
different UID or GID.
Features
--------
- The interface argument to IReactorTCP.listenTCP may now be an IPv6
address literal, allowing the creation of IPv6 TCP servers.
- twisted.python.constants.Names now provides a way to define
collections of named constants, similar to the "enum type" feature
of C or Java.
- twisted.python.constants.Values now provides a way to define
collections of named constants with arbitrary values.
Bugfixes
--------
- Fixed an obscure case where connectionLost wasn't called on the
protocol when using half-close.
- UDP ports handle socket errors better on Windows.
- When idle, the gtk2 and glib2 reactors no longer wake up 10 times a
second.
- Prevent a rare situation involving TLS transports, where a producer
may be erroneously left unpaused.
- twisted.internet.iocpreactor.iocpsupport now has fewer 64-bit
compile warnings.
- The GTK2 reactor is now more responsive on Windows.
- TLS transports now correctly handle producer registration after the
connection has been lost.
- twisted.protocols.htb.Bucket now empties properly with a non-zero
drip rate.
- IReactorSSL and ITCPTransport.startTLS now synchronously propagate
errors from the getContext method of context factories, instead of
being capturing them and logging them as unhandled.
Improved Documentation
----------------------
- The multicast documentation has been expanded.
- twisted.internet.defer.Deferred now documents more return values.
- Show a better starting page at
http://twistedmatrix.com/documents/current
Deprecations and Removals
-------------------------
- Remove the deprecated module twisted.enterprise.reflector.
- Removed the deprecated module twisted.enterprise.row.
- Remove the deprecated module twisted.enterprise.sqlreflector.
- Removed the deprecated module twisted.enterprise.util, as well as
twisted.enterprise.adbapi.safe.
- Python 2.4 is no longer supported on any platform.
- Removed printTraceback and noOperation from twisted.spread.pb,
deprecated since Twisted 8.2.
* Add linux inotify support, allowing monitoring of file system
events.
* Deferreds now support cancellation.
* Added new "endpoint" interfaces in twisted.internet.interfaces,
which abstractly describe stream transport endpoints which can be
listened on or connected to. Implementations for TCP and SSL
clients and servers are present in twisted.internet.endpoints.
Notably, client endpoints' connect() methods return cancellable
Deferreds, so code written to use them can bypass the awkward
"ClientFactory.clientConnectionFailed" and
"Connector.stopConnecting" methods, and handle errbacks from or
cancel the returned deferred, respectively.
* twisted.protocols.amp.Integer's documentation now clarifies that
integers of arbitrary size are supported and that the wire format
is a base-10 representation.
* twisted.protocols.amp now includes support for transferring
timestamps (amp.DateTime) and decimal values (amp.Decimal).
* twisted.protocol.ftp.IWriteFile now has a close() method, which can
return a Deferred. Previously a STOR command would finish
immediately upon the receipt of the last byte of the uploaded file.
With close(), the backend can delay the finish until it has
performed some other slow action (like storing the data to a
virtual filesystem).
* FilePath now calls os.stat() only when new status information is
required, rather than immediately when anything changes. For some
applications this may result in fewer stat() calls. Additionally,
FilePath has a new method, 'changed', which applications may use to
indicate that the FilePath may have been changed on disk and
therefore the next status information request must fetch a new
stat result. This is useful if external systems, such as C
libraries, may have changed files that Twisted applications are
referencing via a FilePath.
* Documentation improvements are now summarized in the NEWS file.
* twisted.internet.task.deferLater now returns a cancellable
Deferred.
* The connect methods of twisted.internet.protocol.ClientCreator now
return cancellable Deferreds.
* twisted.spread.pb now has documentation covering some of its
limitations.
* twisted.spread.jelly now supports jellying and unjellying classes
defined with slots if they also implement __getstate__ and
__setstate__.
* twisted.protocols.amp.ListOf arguments can now be specified as
optional.
* Bugfixes
pkgsrc changes:
- Move more definitions to Makefile.common, drop some that had default values.
- Depend on py-OpenSSL and py-ZopeInterface.
- Add do-test target.
- Remove patch-aa and install all bin/ script with plain names, not with
${PYVERSSUFFIX} appended. setup.py is now much, much simpler, and rewriting
the patch would be difficult. It doesn't matter anyway, as I tried really
hard to install py-OpenSSL for both python24 and python25 and it just
doesn't work.
developer is officially maintaining the package.
The rationale for changing this from "tech-pkg" to "pkgsrc-users" is
that it implies that any user can try to maintain the package (by
submitting patches to the mailing list). Since the folks most likely
to care about the package are the folks that want to use it or are
already using it, this would leverage the energy of users who aren't
developers.