Ticket numbers in this file can be looked up by visiting http://twistedmatrix.com/trac/ticket/ Twisted Core 12.1.0 (2012-06-02) ================================ Features -------- - The kqueue reactor has been revived. (#1918) - twisted.python.filepath now provides IFilePath, an interface for file path objects. (#2176) - New gtk3 and gobject-introspection reactors have been added. (#4558) - gtk and glib reactors now run I/O and scheduled events with lower priority, to ensure the UI stays responsive. (#5067) - IReactorTCP.connectTCP() can now accept IPv6 address literals (although not hostnames) in order to support connecting to IPv6 hosts. (#5085) - twisted.internet.interfaces.IReactorSocket, a new interface, is now supported by some reactors to listen on sockets set up by external software (eg systemd or launchd). (#5248) - twisted.internet.endpoints.clientFromString now also supports strings in the form of tcp:example.com:80 and ssl:example.com:4321 (#5358) - twisted.python.constants.Flags now provides a way to define collections of flags for bitvector-type uses. (#5384) - The epoll(7)-based reactor is now the default reactor on Linux. (#5478) - twisted.python.runtime.platform.isLinux can be used to check if Twisted is running on Linux. (#5491) - twisted.internet.endpoints.serverFromString now recognizes a "systemd" endpoint type, for listening on a server port inherited from systemd. (#5575) - Connections created using twisted.internet.interfaces.IReactorUNIX now support sending and receiving file descriptors between different processes. (#5615) - twisted.internet.endpoints.clientFromString now supports UNIX client endpoint strings with the path argument specified like "unix:/foo/bar" in addition to the old style, "unix:path=/foo/bar". (#5640) - twisted.protocols.amp.Descriptor is a new AMP argument type which supports passing file descriptors as AMP command arguments over UNIX connections. (#5650) Bugfixes -------- - twisted.internet.abstract.FileDescriptor implements twisted.internet.interfaces.IPushProducer instead of twisted.internet.interfaces.IProducer. twisted.internet.iocpreactor.abstract.FileHandle implements twisted.internet.interfaces.IPushProducer instead of twisted.internet.interfaces.IProducer. (#4386) - The epoll reactor now supports reading/writing to regular files on stdin/stdout. (#4429) - Calling .cancel() on any Twisted-provided client endpoint (TCP4ClientEndpoint, UNIXClientEndpoint, SSL4ClientEndpoint) now works as documented, rather than logging an AlreadyCalledError. (#4710) - A leak of OVERLAPPED structures in some IOCP error cases has been fixed. (#5372) - twisted.internet._pollingfile._PollableWritePipe now checks for outgoing unicode data in write() and writeSequence() instead of checkWork(). (#5412) Improved Documentation ---------------------- - "Working from Twisted's Subversion repository" links to UQDS and Combinator are now updated. (#5545) - Added tkinterdemo.py, an example of Tkinter integration. (#5631) Deprecations and Removals ------------------------- - The 'unsigned' flag to twisted.scripts.tap2rpm.MyOptions is now deprecated. (#4086) - Removed the unreachable _fileUrandom method from twisted.python.randbytes.RandomFactory. (#4530) - twisted.persisted.journal is removed, deprecated since Twisted 11.0. (#4805) - Support for pyOpenSSL 0.9 and older is now deprecated. pyOpenSSL 0.10 or newer will soon be required in order to use Twisted's SSL features. (#4974) - backwardsCompatImplements and fixClassImplements are removed from twisted.python.components, deprecated in 2006. (#5034) - twisted.python.reflect.macro was removed, deprecated since Twisted 8.2. (#5035) - twisted.python.text.docstringLStrip, deprecated since Twisted 10.2.0, has been removed (#5036) - Removed the deprecated dispatch and dispatchWithCallback methods from twisted.python.threadpool.ThreadPool (deprecated since 8.0) (#5037) - twisted.scripts.tapconvert is now deprecated. (#5038) - twisted.python.reflect's Settable, AccessorType, PropertyAccessor, Accessor, OriginalAccessor and Summer are now deprecated. (#5451) - twisted.python.threadpool.ThreadSafeList (deprecated in 10.1) is removed. (#5473) - twisted.application.app.initialLog, deprecated since Twisted 8.2.0, has been removed. (#5480) - twisted.spread.refpath was deleted, deprecated since Twisted 9.0. (#5482) - twisted.python.otp, deprecated since 9.0, is removed. (#5493) - Removed `dsu`, `moduleMovedForSplit`, and `dict` from twisted.python.util (deprecated since 10.2) (#5516) Other ----- - #2723, #3114, #3398, #4388, #4489, #5055, #5116, #5242, #5380, #5392, #5447, #5457, #5484, #5489, #5492, #5494, #5512, #5523, #5558, #5572, #5583, #5593, #5620, #5621, #5623, #5625, #5637, #5652, #5653, #5656, #5657, #5660, #5673 Twisted Conch 12.1.0 (2012-06-02) ================================= Features -------- - twisted.conch.tap now supports cred plugins (#4753) Bugfixes -------- - twisted.conch.client.knownhosts now handles errors encountered parsing hashed entries in a known hosts file. (#5616) Improved Documentation ---------------------- - Conch examples window.tac and telnet_echo.tac now have better explanations. (#5590) Other ----- - #5580 Twisted Lore 12.1.0 (2012-06-02) ================================ Bugfixes -------- - twisted.plugins.twisted_lore's MathProcessor plugin is now associated with the correct implementation module. (#5326) Twisted Mail 12.1.0 (2012-06-02) ================================ Bugfixes -------- - twistd mail --auth, broken in 11.0, now correctly connects authentication to the portal being used (#5219) Other ----- - #5686 Twisted Names 12.1.0 (2012-06-02) ================================= Features -------- - "twistd dns" secondary server functionality and twisted.names.secondary now support retrieving zone information from a master running on a non-standard DNS port. (#5468) Bugfixes -------- - twisted.names.dns.DNSProtocol instances no longer throw an exception when disconnecting. (#5471) - twisted.names.tap.makeService (thus also "twistd dns") now makes a DNS server which gives precedence to the hosts file from its configuration over the remote DNS servers from its configuration. (#5524) - twisted.name.cache.CacheResolver now makes sure TTLs on returned results are never negative. (#5579) - twisted.names.cache.CacheResolver entries added via the initializer are now timed out correctly. (#5638) Improved Documentation ---------------------- - The examples now contain instructions on how to run them and descriptions in the examples index. (#5588) Deprecations and Removals ------------------------- - The deprecated twisted.names.dns.Record_mx.exchange attribute was removed. (#4549) Twisted News 12.1.0 (2012-06-02) ================================ Bugfixes -------- - twisted.news.nntp.NNTPServer now has additional test coverage and less redundant implementation code. (#5537) Deprecations and Removals ------------------------- - The ability to pass a string article to NNTPServer._gotBody and NNTPServer._gotArticle in t.news.nntp has been deprecated for years and is now removed. (#4548) Twisted Pair 12.1.0 (2012-06-02) ================================ No significant changes have been made for this release. Twisted Runner 12.1.0 (2012-06-02) ================================== Deprecations and Removals ------------------------- - ProcessMonitor.active, consistencyDelay, and consistency in twisted.runner.procmon were deprecated since 10.1 have been removed. (#5517) Twisted Web 12.1.0 (2012-06-02) =============================== Features -------- - twisted.web.client.Agent and ProxyAgent now support persistent connections. (#3420) - Added twisted.web.template.renderElement, a function which renders an Element to a response. (#5395) - twisted.web.client.HTTPConnectionPool now ensures that failed queries on persistent connections are retried, when possible. (#5479) - twisted.web.template.XMLFile now supports FilePath objects. (#5509) - twisted.web.template.renderElement takes a doctype keyword argument, which will be written as the first line of the response, defaulting to the HTML5 doctype. (#5560) Bugfixes -------- - twisted.web.util.formatFailure now quotes all data in its output to avoid it being mistakenly interpreted as markup. (#4896) - twisted.web.distrib now lets distributed servers set the response message. (#5525) Deprecations and Removals ------------------------- - PHP3Script and PHPScript were removed from twisted.web.twcgi, deprecated since 10.1. Use twcgi.FilteredScript instead. (#5456) - twisted.web.template.XMLFile's support for file objects and filenames is now deprecated. Use the new support for FilePath objects. (#5509) - twisted.web.server.date_time_string and twisted.web.server.string_date_time are now deprecated in favor of twisted.web.http.datetimeToString and twisted.web. http.stringToDatetime (#5535) Other ----- - #4966, #5460, #5490, #5591, #5602, #5609, #5612 Twisted Words 12.1.0 (2012-06-02) ================================= Bugfixes -------- - twisted.words.protocols.irc.DccChatFactory.buildProtocol now returns the protocol object that it creates (#3179) - twisted.words.im no longer offers an empty threat of a rewrite on import. (#5598) Other ----- - #5555, #5595 Twisted Core 12.0.0 (2012-02-10) ================================ Features -------- - The interface argument to IReactorTCP.listenTCP may now be an IPv6 address literal, allowing the creation of IPv6 TCP servers. (#5084) - twisted.python.constants.Names now provides a way to define collections of named constants, similar to the "enum type" feature of C or Java. (#5382) - twisted.python.constants.Values now provides a way to define collections of named constants with arbitrary values. (#5383) Bugfixes -------- - Fixed an obscure case where connectionLost wasn't called on the protocol when using half-close. (#3037) - UDP ports handle socket errors better on Windows. (#3396) - When idle, the gtk2 and glib2 reactors no longer wake up 10 times a second. (#4376) - Prevent a rare situation involving TLS transports, where a producer may be erroneously left unpaused. (#5347) - twisted.internet.iocpreactor.iocpsupport now has fewer 64-bit compile warnings. (#5373) - The GTK2 reactor is now more responsive on Windows. (#5396) - TLS transports now correctly handle producer registration after the connection has been lost. (#5439) - twisted.protocols.htb.Bucket now empties properly with a non-zero drip rate. (#5448) - 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. (#5449) Improved Documentation ---------------------- - The multicast documentation has been expanded. (#4262) - twisted.internet.defer.Deferred now documents more return values. (#5399) - Show a better starting page at http://twistedmatrix.com/documents/current (#5429) Deprecations and Removals ------------------------- - Remove the deprecated module twisted.enterprise.reflector. (#4108) - Removed the deprecated module twisted.enterprise.row. (#4109) - Remove the deprecated module twisted.enterprise.sqlreflector. (#4110) - Removed the deprecated module twisted.enterprise.util, as well as twisted.enterprise.adbapi.safe. (#4111) - Python 2.4 is no longer supported on any platform. (#5060) - Removed printTraceback and noOperation from twisted.spread.pb, deprecated since Twisted 8.2. (#5370) Other ----- - #1712, #2725, #5284, #5325, #5331, #5362, #5364, #5371, #5407, #5427, #5430, #5431, #5440, #5441 Twisted Conch 12.0.0 (2012-02-10) ================================= Features -------- - use Python shadow module for authentication if it's available (#3242) Bugfixes -------- - twisted.conch.ssh.transport.messages no longer ends with with old message IDs on platforms with differing dict() orderings (#5352) Other ----- - #5225 Twisted Lore 12.0.0 (2012-02-10) ================================ No significant changes have been made for this release. Twisted Mail 12.0.0 (2012-02-10) ================================ No significant changes have been made for this release. Twisted Names 12.0.0 (2012-02-10) ================================= Bugfixes -------- - twisted.names.dns.Message now sets the `auth` flag on RRHeader instances it creates to reflect the authority of the message itself. (#5421) Twisted News 12.0.0 (2012-02-10) ================================ No significant changes have been made for this release. Twisted Pair 12.0.0 (2012-02-10) ================================ No significant changes have been made for this release. Twisted Runner 12.0.0 (2012-02-10) ================================== No significant changes have been made for this release. Twisted Web 12.0.0 (2012-02-10) =============================== Features -------- - twisted.web.util.redirectTo now raises TypeError if the URL passed to it is a unicode string instead of a byte string. (#5236) - The new class twisted.web.template.CharRef provides support for inserting numeric character references in output generated by twisted.web.template. (#5408) Improved Documentation ---------------------- - The Twisted Web howto now has a section on proxies and reverse proxies. (#399) - The web client howto now covers ContentDecoderAgent and links to an example of its use. (#5415) Other ----- - #5404, #5438 Twisted Words 12.0.0 (2012-02-10) ================================= Improved Documentation ---------------------- - twisted.words.im.basechat now has improved API documentation. (#2458) Other ----- - #5401 Twisted Core 11.1.0 (2011-11-15) ================================ Features -------- - TCP and TLS transports now support abortConnection() which, unlike loseConnection(), always closes the connection immediately. (#78) - Failures received over PB when tracebacks are disabled now display the wrapped exception value when they are printed. (#581) - twistd now has a --logger option, allowing the use of custom log observers. (#638) - The default reactor is now poll(2) on platforms that support it. (#2234) - twisted.internet.defer.inlineCallbacks(f) now raises TypeError when f returns something other than a generator or uses returnValue as a non-generator. (#2501) - twisted.python.usage.Options now supports performing Zsh tab- completion on demand. Tab-completion for Twisted commands is supported out-of-the-box on any recent zsh release. Third-party commands may take advantage of zsh completion by copying the provided stub file. (#3078) - twisted.protocols.portforward now uses flow control between its client and server connections to avoid having to buffer an unbounded amount of data when one connection is slower than the other. (#3350) - On Windows, the select, IOCP, and Gtk2 reactors now implement IReactorWin32Events (most notably adding support for serial ports to these reactors). (#4862) - twisted.python.failure.Failure no longer captures the state of locals and globals of all stack frames by default, because it is expensive to do and rarely used. You can pass captureVars=True to Failure's constructor if you want to capture this data. (#5011) - twisted.web.client now supports automatic content-decoding via twisted.web.client.ContentDecoderAgent, gzip being supported for now. (#5053) - Protocols may now implement ILoggingContext to customize their logging prefix. twisted.protocols.policies.ProtocolWrapper and the endpoints wrapper now take advantage of this feature to ensure the application protocol is still reflected in logs. (#5062) - AMP's raw message-parsing performance was increased by approximately 12%. (#5075) - Twisted is now installable on PyPy, because some incompatible C extensions are no longer built. (#5158) - twisted.internet.defer.gatherResults now accepts a consumeErrors parameter, with the same meaning as the corresponding argument for DeferredList. (#5159) - Added RMD (remove directory) support to the FTP client. (#5259) - Server factories may now implement ILoggingContext to customize the name that is logged when the reactor uses one to start listening on a port. (#5292) - The implementations of ITransport.writeSequence will now raise TypeError if passed unicode strings. (#3896) - iocp reactor now operates correctly on 64 bit Python runtimes. (#4669) - twistd ftp now supports the cred plugin. (#4752) - twisted.python.filepath.FilePath now has an API to retrieve the permissions of the underlying file, and two methods to determine whether it is a block device or a socket. (#4813) - twisted.trial.unittest.TestCase is now compatible with Python 2.7's assertDictEqual method. (#5291) Bugfixes -------- - The IOCP reactor now does not try to erroneously pause non- streaming producers. (#745) - Unicode print statements no longer blow up when using Twisted's logging system. (#1990) - Process transports on Windows now support the `writeToChild` method (but only for stdin). (#2838) - Zsh tab-completion of Twisted commands no longer relies on statically generated files, but instead generates results on-the- fly - ensuring accurate tab-completion for the version of Twisted actually in use. (#3078) - LogPublishers don't use the global log publisher for reporting broken observers anymore. (#3307) - trial and twistd now add the current directory to sys.path even when running as root or on Windows. mktap, tapconvert, and pyhtmlizer no longer add the current directory to sys.path. (#3526) - twisted.internet.win32eventreactor now stops immediately if reactor.stop() is called from an IWriteDescriptor.doWrite implementation instead of delaying shutdown for an arbitrary period of time. (#3824) - twisted.python.log now handles RuntimeErrors more gracefully, and always restores log observers after an exception is raised. (#4379) - twisted.spread now supports updating new-style RemoteCache instances. (#4447) - twisted.spread.pb.CopiedFailure will no longer be thrown into a generator as a (deprecated) string exception but as a twisted.spread.pb.RemoteException. (#4520) - trial now gracefully handles the presence of objects in sys.modules which respond to attributes being set on them by modifying sys.modules. (#4748) - twisted.python.deprecate.deprecatedModuleAttribute no longer spuriously warns twice when used to deprecate a module within a package. This should make it easier to write unit tests for deprecated modules. (#4806) - When pyOpenSSL 0.10 or newer is available, SSL support now uses Twisted for all I/O and only relies on OpenSSL for cryptography, avoiding a number of tricky, potentially broken edge cases. (#4854) - IStreamClientEndpointStringParser.parseStreamClient now correctly describes how it will be called by clientFromString (#4956) - twisted.internet.defer.Deferreds are 10 times faster at handling exceptions raised from callbacks, except when setDebugging(True) has been called. (#5011) - twisted.python.filepath.FilePath.copyTo now raises OSError(ENOENT) if the source path being copied does not exist. (#5017) - twisted.python.modules now supports iterating over namespace packages without yielding duplicates. (#5030) - reactor.spawnProcess now uses the resource module to guess the maximum possible open file descriptor when /dev/fd exists but gives incorrect results. (#5052) - The memory BIO TLS/SSL implementation now supports producers correctly. (#5063) - twisted.spread.pb.Broker no longer creates an uncollectable reference cycle when the logout callback holds a reference to the client mind object. (#5079) - twisted.protocols.tls, and SSL/TLS support in general, now do clean TLS close alerts when disconnecting. (#5118) - twisted.persisted.styles no longer uses the deprecated allYourBase function (#5193) - Stream client endpoints now start (doStart) and stop (doStop) the factory passed to the connect method, instead of a different implementation-detail factory. (#5278) - SSL ports now consistently report themselves as SSL rather than TCP when logging their close message. (#5292) - Serial ports now deliver connectionLost to the protocol when closed. (#3690) - win32eventreactor now behaves better in certain rare cases in which it previously would have failed to deliver connection lost notification to a protocol. (#5233) Improved Documentation ---------------------- - Test driven development with Twisted and Trial is now documented in a how-to. (#2443) - A new howto-style document covering twisted.protocols.amp has been added. (#3476) - Added sample implementation of a Twisted push producer/consumer system. (#3835) - The "Deferred in Depth" tutorial now includes accurate output for the deferred_ex2.py example. (#3941) - The server howto now covers the Factory.buildProtocol method. (#4761) - The testing standard and the trial tutorial now recommend the `assertEqual` form of assertions rather than the `assertEquals` to coincide with the standard library unittest's preference. (#4989) - twisted.python.filepath.FilePath's methods now have more complete API documentation (docstrings). (#5027) - The Clients howto now uses buildProtocol more explicitly, hopefully making it easier to understand where Protocol instances come from. (#5044) Deprecations and Removals ------------------------- - twisted.internet.interfaces.IFinishableConsumer is now deprecated. (#2661) - twisted.python.zshcomp is now deprecated in favor of the tab- completion system in twisted.python.usage (#3078) - The unzip and unzipIter functions in twisted.python.zipstream are now deprecated. (#3666) - Options.optStrings, deprecated for 7 years, has been removed. Use Options.optParameters instead. (#4552) - Removed the deprecated twisted.python.dispatch module. (#5023) - Removed the twisted.runner.procutils module that was deprecated in Twisted 2.3. (#5049) - Removed twisted.trial.runner.DocTestSuite, deprecated in Twisted 8.0. (#5111) - twisted.scripts.tkunzip is now deprecated. (#5140) - Deprecated option --password-file in twistd ftp (#4752) - mktap, deprecated since Twisted 8.0, has been removed. (#5293) Other ----- - #1946, #2562, #2674, #3074, #3077, #3776, #4227, #4539, #4587, #4619, #4624, #4629, #4683, #4690, #4702, #4778, #4944, #4945, #4949, #4952, #4957, #4979, #4980, #4987, #4990, #4994, #4995, #4997, #5003, #5008, #5009, #5012, #5019, #5042, #5046, #5051, #5065, #5083, #5088, #5089, #5090, #5101, #5108, #5109, #5112, #5114, #5125, #5128, #5131, #5136, #5139, #5144, #5146, #5147, #5156, #5160, #5165, #5191, #5205, #5215, #5217, #5218, #5223, #5243, #5244, #5250, #5254, #5261, #5266, #5273, #5299, #5301, #5302, #5304, #5308, #5311, #5321, #5322, #5327, #5328, #5332, #5336 Twisted Conch 11.1.0 (2011-11-15) ================================= Features -------- - twisted.conch.ssh.filetransfer.FileTransferClient now handles short status messages, not strictly allowed by the RFC, but sent by some SSH implementations. (#3009) - twisted.conch.manhole now supports CTRL-A and CTRL-E to trigger HOME and END functions respectively. (#5252) Bugfixes -------- - When run from an unpacked source tarball or a VCS checkout, the bin/conch/ scripts will now use the version of Twisted they are part of. (#3526) - twisted.conch.insults.window.ScrolledArea now passes no extra arguments to object.__init__ (which works on more versions of Python). (#4197) - twisted.conch.telnet.ITelnetProtocol now has the correct signature for its unhandledSubnegotiation() method. (#4751) - twisted.conch.ssh.userauth.SSHUserAuthClient now more closely follows the RFC 4251 definition of boolean values when negotiating for key-based authentication, allowing better interoperability with other SSH implementations. (#5241) - twisted.conch.recvline.RecvLine now ignores certain function keys in its keystrokeReceived method instead of raising an exception. (#5246) Deprecations and Removals ------------------------- - The --user option to `twistd manhole' has been removed as it was dead code with no functionality associated with it. (#5283) Other ----- - #5107, #5256, #5349 Twisted Lore 11.1.0 (2011-11-15) ================================ Bugfixes -------- - When run from an unpacked source tarball or a VCS checkout, bin/lore/lore will now use the version of Twisted it is part of. (#3526) Deprecations and Removals ------------------------- - Removed compareMarkPos and comparePosition from lore.tree, deprecated in Twisted 9.0. (#5127) Twisted Mail 11.1.0 (2011-11-15) ================================ Features -------- - twisted.mail.smtp.LOGINCredentials now generates challenges with ":" instead of "\0" for interoperability with Microsoft Outlook. (#4692) Bugfixes -------- - When run from an unpacked source tarball or a VCS checkout, bin/mail/mailmail will now use the version of Twisted it is part of. (#3526) Other ----- - #4796, #5006 Twisted Names 11.1.0 (2011-11-15) ================================= Features -------- - twisted.names.dns.Message now parses records of unknown type into instances of a new `UnknownType` class. (#4603) Bugfixes -------- - twisted.names.dns.Name now detects loops in names it is decoding and raises an exception. Previously it would follow the loop forever, allowing a remote denial of service attack against any twisted.names client or server. (#5064) - twisted.names.hosts.Resolver now supports IPv6 addresses; its lookupAddress method now filters them out and its lookupIPV6Address method is now implemented. (#5098) Twisted News 11.1.0 (2011-11-15) ================================ No significant changes have been made for this release. Twisted Pair 11.1.0 (2011-11-15) ================================ No significant changes have been made for this release. Twisted Runner 11.1.0 (2011-11-15) ================================== No significant changes have been made for this release. Twisted Web 11.1.0 (2011-11-15) =============================== Features -------- - twisted.web.client.ProxyAgent is a new HTTP/1.1 web client which adds proxy support. (#1774) - twisted.web.client.Agent now takes optional connectTimeout and bindAddress arguments which are forwarded to the subsequent connectTCP/connectSSL call. (#3450) - The new class twisted.web.client.FileBodyProducer makes it easy to upload data in HTTP requests made using the Agent client APIs. (#4017) - twisted.web.xmlrpc.XMLRPC now allows its lookupProcedure method to be overridden to change how XML-RPC procedures are dispatched. (#4836) - A new HTTP cookie-aware Twisted Web Agent wrapper is included in twisted.web.client.CookieAgent (#4922) - New class twisted.web.template.TagLoader provides an ITemplateLoader implementation which loads already-created twisted.web.iweb.IRenderable providers. (#5040) - The new class twisted.web.client.RedirectAgent adds redirect support to the HTTP 1.1 client stack. (#5157) - twisted.web.template now supports HTML tags from the HTML5 standard, including and