Merge reactormixins-4987
[twisted.git] / NEWS
blob7db13eb5f127d06f077d71ab84eddaa0d61896e7
1 Ticket numbers in this file can be looked up by visiting
2 http://twistedmatrix.com/trac/ticket/<number>
4 Twisted Core 10.2.0 (2010-11-29)
5 ================================
7 Features
8 --------
9  - twisted.internet.cfreactor has been significantly improved.  It now
10    runs, and passes, the test suite.  Many, many bugs in it have been
11    fixed, including several segfaults, as it now uses PyObjC and
12    longer requires C code in Twisted. (#1833)
13  - twisted.protocols.ftp.FTPRealm now accepts a parameter to override
14    "/home" as the container for user directories.  The new
15    BaseFTPRealm class in the same module also allows easy
16    implementation of custom user directory schemes. (#2179)
17  - twisted.python.filepath.FilePath and twisted.python.zippath.ZipPath
18    now have a descendant method to simplify code which calls the child
19    method repeatedly. (#3169)
20  - twisted.python.failure._Frame objects now support fake f_locals
21    attribute. (#4045)
22  - twisted.internet.endpoints now has 'serverFromString' and
23    'clientFromString' APIs for constructing endpoints from descriptive
24    strings. (#4473)
25  - The default trial reporter now combines reporting of tests with the
26    same result to shorten its summary output. (#4487)
27  - The new class twisted.protocols.ftp.SystemFTPRealm implements an
28    FTP realm which uses system accounts to select home directories.
29    (#4494)
30  - twisted.internet.reactor.spawnProcess now wastes less time trying
31    to close non-existent file descriptors on POSIX platforms. (#4522)
32  - twisted.internet.win32eventreactor now declares that it implements
33    a new twisted.internet.interfaces.IReactorWin32Events interface.
34    (#4523)
35  - twisted.application.service.IProcess now documents its attributes
36    using zope.interface.Attribute. (#4534)
37  - twisted.application.app.ReactorSelectionMixin now saves the value
38    of the --reactor option in the "reactor" key of the options object.
39    (#4563)
40  - twisted.internet.endpoints.serverFromString and clientFromString,
41    and therefore also twisted.application.strports.service, now
42    support plugins, so third parties may implement their own endpoint
43    types. (#4695)
45 Bugfixes
46 --------
47  - twisted.internet.defer.Deferred now handles chains iteratively
48    instead of recursively, preventing RuntimeError due to excessive
49    recursion when handling long Deferred chains. (#411)
50  - twisted.internet.cfreactor now works with trial. (#2556)
51  - twisted.enterprise.adbapi.ConnectionPool.close may now be called
52    even if the connection pool has not yet been started.  This will
53    prevent the pool from ever starting. (#2680)
54  - twisted.protocols.basic.NetstringReceiver raises
55    NetstringParseErrors for  invalid netstrings now. It handles empty
56    netstrings ("0:,") correctly, and  the performance for receiving
57    netstrings has been improved. (#4378)
58  - reactor.listenUDP now returns an object which declares that it
59    implements IListeningPort. (#4462)
60  - twisted.python.randbytes no longer uses PyCrypto as a secure random
61    number source (since it is not one). (#4468)
62  - twisted.internet.main.installReactor now blocks installation of
63    another reactor when using python -O (#4476)
64  - twisted.python.deprecate.deprecatedModuleAttribute now emits only
65    one warning when used to deprecate a package attribute which is a
66    module. (#4492)
67  - The "brief" mode of twisted.python.failure.Failure.getTraceback now
68    handles exceptions raised by the underlying exception's __str__
69    method. (#4501)
70  - twisted.words.xish.domish now correctly parses XML with namespaces
71    which include whitespace. (#4503)
72  - twisted.names.authority.FileAuthority now generates correct
73    negative caching hints, marks its referral NS RRs as non-
74    authoritative, and correctly generates referrals for ALL_RECORDS
75    requests. (#4513)
76  - twisted.internet.test.reactormixins.ReactorBuilder's attribute
77    `requiredInterface` (which should an interface) is now
78    `requiredInterfaces` (a list of interfaces) as originally described
79    per the documentation. (#4527)
80  - twisted.python.zippath.ZipPath.__repr__ now correctly formats paths
81    with ".." in them (by including it). (#4535)
82  - twisted.names.hosts.searchFileFor has been fixed against
83    refcounting dependency. (#4540)
84  - The POSIX process transports now declare that they implement
85    IProcessTransport. (#4585)
86  - Twisted can now be built with the LLVM clang compiler, with
87    'CC=clang python setup.py build'.  C code that caused errors with
88    this compiler has been removed. (#4652)
89  - trial now puts coverage data in the path specified by --temp-
90    directory, even if that option comes after --coverage on the
91    command line. (#4657)
92  - The unregisterProducer method of connection-oriented transports
93    will now cause the connection to be closed if there was a prior
94    call to loseConnection. (#4719)
95  - Fixed an issue where the new StreamServerEndpointService didn't log
96    listen errors.  (This was a bug not present in any previous
97    releases, as this class is new.) (#4731)
99 Improved Documentation
100 ----------------------
101  - The trial man page now documents the meaning of the final line of
102    output of the default reporter. (#1384)
103  - The API documentation for twisted.internet.defer.DeferredList now
104    goes into more depth about the effects each of the __init__ flags
105    that class accepts. (#3595)
106  - There is now narrative documentation for the endpoints APIs, in the
107    'endpoints' core howto, as well as modifications to the 'writing
108    clients' and 'writing servers' core howto documents to indicate
109    that endpoints are now the preferred style of listening and
110    connecting. (#4478)
111  - trial's man page now documents the --disablegc option in more
112    detail. (#4511)
113  - trial's coverage output format is now documented in the trial man
114    page. (#4512)
115  - Broken links and spelling errors in the finger tutorial are now
116    fixed. (#4516)
117  - twisted.internet.threads.blockingCallFromThread's docstring is now
118    explicit about Deferred support. (#4517)
119  - twisted.python.zippath.ZipPath.child now documents its handling of
120    ".." (which is not special, making it different from
121    FilePath.child). (#4535)
122  - The API docs for twisted.internet.defer.Deferred now cover several
123    more of its (less interesting) attributes. (#4538)
124  - LineReceiver, NetstringReceiver, and IntNStringReceiver from
125    twisted.protocols.basic now have improved API documentation for
126    read callbacks and write methods. (#4542)
127  - Tidied up the Twisted Conch documentation for easier conversion.
128    (#4566)
129  - Use correct Twisted version for when cancellation was introduced in
130    the Deferred docstring. (#4614)
131  - The logging howto is now more clear about how the standard library
132    logging module and twisted.python.log can be integrated. (#4642)
133  - The finger tutorial still had references to .tap files. This
134    reference has now been removed. The documentation clarifies
135    "finger.tap" is a module and not a filename. (#4679)
136  - The finger tutorial had a broken link to the
137    twisted.application.service.Service class, which is now fixed.
138    Additionally, a minor typo ('verison') was fixed.  (#4681)
139  - twisted.protocols.policies.TimeoutMixin now has clearer API
140    documentation. (#4684)
142 Deprecations and Removals
143 -------------------------
144  - twisted.internet.defer.Deferred.setTimeout has been removed, after
145    being deprecated since Twisted 2.0. (#1702)
146  - twisted.internet.interfaces.IReactorTime.cancelCallLater
147    (deprecated since  2007) and
148    twisted.internet.interfaces.base.ReactorBase.cancelCallLater
149    (deprecated since 2002) have been removed. (#4076)
150  - Removed twisted.cred.util.py, which has been deprecated since
151    Twisted 8.3. (#4107)
152  - twisted.python.text.docstringLStrip was deprecated. (#4328)
153  - The module attributes `LENGTH`, `DATA`, `COMMA`, and `NUMBER` of
154    twisted.protocols.basic (previously used by `NetstringReceiver`)
155    are now deprecated. (#4541)
156  - twisted.protocols.basic.SafeNetstringReceiver, deprecated since
157    2001 (before Twisted 2.0), was removed. (#4546)
158  - twisted.python.threadable.whenThreaded, deprecated since Twisted
159    2.2.0, has been removed. (#4550)
160  - twisted.python.timeoutqueue, deprecated since Twisted 8.0, has been
161    removed. (#4551)
162  - iocpreactor transports can no longer be pickled. (#4617)
164 Other
165 -----
166  - #4300, #4475, #4477, #4504, #4556, #4562, #4564, #4569, #4608,
167    #4616, #4617, #4626, #4630, #4650, #4705
170 Twisted Conch 10.2.0 (2010-11-29)
171 =================================
173 Bugfixes
174 --------
175  - twisted.conch.ssh.factory.SSHFactory no longer disables coredumps.
176    (#2715)
177  - The Deferred returned by twisted.conch.telnet.TelnetTransport.will
178    now fires with an OptionRefused failure if the peer responds with a
179    refusal for the option negotiation. (#4231)
180  - SSHServerTransport and SSHClientTransport in
181    twisted.conch.ssh.transport no longer use PyCrypto to generate
182    random numbers for DH KEX.  They also now generate values from the
183    full valid range, rather than only half of it. (#4469)
184  - twisted.conch.ssh.connection.SSHConnection now errbacks leftover
185    request deferreds on connection shutdown. (#4483)
187 Other
188 -----
189  - #4677
192 Twisted Lore 10.2.0 (2010-11-29)
193 ================================
195 No significant changes have been made for this release.
197 Other
198 -----
199  - #4571
202 Twisted Mail 10.2.0 (2010-11-29)
203 ================================
205 Improved Documentation
206 ----------------------
207  - The email server example now demonstrates how to set up
208    authentication and authorization using twisted.cred. (#4609)
210 Deprecations and Removals
211 -------------------------
212  - twisted.mail.smtp.sendEmail, deprecated since mid 2003 (before
213    Twisted 2.0), has been removed. (#4529)
215 Other
216 -----
217  - #4038, #4572
220 Twisted Names 10.2.0 (2010-11-29)
221 =================================
223 Features
224 --------
225  - twisted.names.server can now serve SPF resource records using
226    twisted.names.dns.Record_SPF.  twisted.names.client can query for
227    them using lookupSenderPolicy.   (#3928)
229 Bugfixes
230 --------
231  - twisted.names.common.extractRecords doesn't try to close the
232    transport anymore in case of recursion, as it's done by the
233    Resolver itself now. (#3998)
235 Improved Documentation
236 ----------------------
237  - Tidied up the Twisted Names documentation for easier conversion.
238    (#4573)
241 Twisted News 10.2.0 (2010-11-29)
242 ================================
244 Bugfixes
245 --------
246  - twisted.news.database.PickleStorage now invokes the email APIs
247    correctly, allowing it to actually send moderation emails. (#4528)
250 Twisted Pair 10.2.0 (2010-11-29)
251 ================================
253 No significant changes have been made for this release.
256 Twisted Runner 10.2.0 (2010-11-29)
257 ==================================
259 No significant changes have been made for this release.
262 Twisted Web 10.2.0 (2010-11-29)
263 ===============================
265 Features
266 --------
267  - twisted.web.xmlrpc.XMLRPC.xmlrpc_* methods can now be decorated
268    using withRequest to cause them to be passed the HTTP request
269    object. (#3073)
271 Bugfixes
272 --------
273  - twisted.web.xmlrpc.QueryProtocol.handleResponse now disconnects
274    from the server, meaning that Twisted XML-RPC clients disconnect
275    from the server as soon as they receive a response, rather than
276    relying on the server to disconnect. (#2518)
277  - twisted.web.twcgi now generates responses containing all
278    occurrences of duplicate headers produced by CGI scripts, not just
279    the last value. (#4742)
281 Deprecations and Removals
282 -------------------------
283  - twisted.web.trp, which has been deprecated since Twisted 9.0, was
284    removed. (#4299)
286 Other
287 -----
288  - #4576, #4577, #4709, #4723
291 Twisted Words 10.2.0 (2010-11-29)
292 =================================
294 Features
295 --------
296  - twisted.words.protocols.irc.IRCClient.msg now enforces a maximum
297    length for messages, splitting up messages that are too long.
298    (#4416)
300 Bugfixes
301 --------
302  - twisted.words.protocols.irc.IRCClient no longer invokes privmsg()
303    in the default noticed() implementation. (#4419)
304  - twisted.words.im.ircsupport.IRCProto now sends the correct name in
305    the USER command. (#4641)
307 Deprecations and Removals
308 -------------------------
309  - Remove twisted.words.im.proxyui and twisted.words.im.tap. (#1823)
312 Twisted Core 10.1.0 (2010-06-27)
313 ================================
315 Features
316 --------
317  - Add linux inotify support, allowing monitoring of file system
318    events. (#972)
319  - Deferreds now support cancellation. (#990)
320  - Added new "endpoint" interfaces in twisted.internet.interfaces,
321    which abstractly describe stream transport endpoints which can be
322    listened on or connected to.  Implementations for TCP and SSL
323    clients and servers are present in twisted.internet.endpoints.
324    Notably, client endpoints' connect() methods return cancellable
325    Deferreds, so code written to use them can bypass the awkward
326    "ClientFactory.clientConnectionFailed" and
327    "Connector.stopConnecting" methods, and handle errbacks from or
328    cancel the returned deferred, respectively. (#1442)
329  - twisted.protocols.amp.Integer's documentation now clarifies that
330    integers of arbitrary size are supported and that the wire format
331    is a base-10 representation. (#2650)
332  - twisted.protocols.amp now includes support for transferring
333    timestamps (amp.DateTime) and decimal values (amp.Decimal). (#2651)
334  - twisted.protocol.ftp.IWriteFile now has a close() method, which can
335    return a Deferred. Previously a STOR command would finish
336    immediately upon the receipt of the last byte of the uploaded file.
337    With close(), the backend can delay the finish until it has
338    performed some other slow action (like storing the data to a
339    virtual filesystem). (#3462)
340  - FilePath now calls os.stat() only when new status information is
341    required, rather than immediately when anything changes.  For some
342    applications this may result in fewer stat() calls.  Additionally,
343    FilePath has a new method, 'changed', which applications may use to
344    indicate that the FilePath may have been changed on disk and
345    therefore the next status information request must  fetch a new
346    stat result.  This is useful if external systems, such as C
347    libraries, may have changed files that Twisted applications are
348    referencing via a FilePath. (#4130)
349  - Documentation improvements are now summarized in the NEWS file.
350    (#4224)
351  - twisted.internet.task.deferLater now returns a cancellable
352    Deferred. (#4318)
353  - The connect methods of twisted.internet.protocol.ClientCreator now
354    return cancellable Deferreds. (#4329)
355  - twisted.spread.pb now has documentation covering some of its
356    limitations. (#4402)
357  - twisted.spread.jelly now supports jellying and unjellying classes
358    defined with slots if they also implement __getstate__ and
359    __setstate__. (#4430)
360  - twisted.protocols.amp.ListOf arguments can now be specified as
361    optional. (#4474)
363 Bugfixes
364 --------
365  - On POSIX platforms, reactors now support child processes in a way
366    which doesn't cause other syscalls to sometimes fail with EINTR (if
367    running on Python 2.6 or if Twisted's extension modules have been
368    built). (#733)
369  - Substrings are escaped before being passed to a regular expression
370    for searching to ensure that they don't get interpreted as part of
371    the expression. (#1893)
372  - twisted.internet.stdio now supports stdout being redirected to a
373    normal file (except when using epollreactor). (#2259)
374  -  (#2367)
375  - The tap2rpm script now works with modern versions of RPM. (#3292)
376  - twisted.python.modules.walkModules will now handle packages
377    explicitly precluded from importing by a None placed in
378    sys.modules. (#3419)
379  - ConnectedDatagramPort now uses stopListening when a connection
380    fails instead of the deprecated loseConnection. (#3425)
381  - twisted.python.filepath.FilePath.setContent is now safe for
382    multiple processes to use concurrently. (#3694)
383  - The mode argument to the methods of
384    twisted.internet.interfaces.IReactorUNIX is no longer deprecated.
385    (#4078)
386  - Do not include blacklisted projects when generating NEWS. (#4190)
387  - When generating NEWS for a project that had no significant changes,
388    include a section for that project and say that there were no
389    interesting changes. (#4191)
390  - Redundant 'b' mode is no longer passed to calls to FilePath.open
391    and FilePath.open itself now corrects the mode when multiple 'b'
392    characters are present, ensuring only one instance of 'b' is
393    provided, as a workaround for http://bugs.python.org/issue7686.
394    (#4207)
395  - HTML tags inside <pre> tags in the code snippets are now escaped.
396    (#4336)
397  - twisted.protocols.amp.CommandLocator now allows subclasses to
398    override responders inherited from base classes. (#4343)
399  - Fix a bunch of small but important defects in the INSTALL, README
400    and so forth. (#4346)
401  - The poll, epoll, glib2, and gtk2 reactors now all support half-
402    close in the twisted.internet.stdio.StandardIO transport. (#4352)
403  - twisted.application.internet no longer generates an extra and
404    invalid entry in its __all__ list for the nonexistent
405    MulticastClient. (#4373)
406  - Choosing a reactor documentation now says that only the select-
407    based reactor is a truly cross-platform reactor. (#4384)
408  - twisted.python.filepath.FilePath now no longer leaves files open,
409    to be closed by the garbage collector, when an exception is raised
410    in the implementation of setContent, getContent, or copyTo. (#4400)
411  - twisted.test.proto_helpers.StringTransport's getHost and getPeer
412    methods now return IPv4Address instances by default. (#4401)
413  - twisted.protocols.amp.BinaryBoxProtocol will no longer deliver an
414    empty string to a switched-to protocol's dataReceived method when
415    the BinaryBoxProtocol's buffer happened to be empty at the time of
416    the protocol switch. (#4405)
417  - IReactorUNIX.listenUNIX implementations now support abstract
418    namespace sockets on Linux. (#4421)
419  - Files opened with FilePath.create() (and therefore also files
420    opened via FilePath.open() on a path with alwaysCreate=True) will
421    now be opened in binary mode as advertised, so that they will
422    behave portably across platforms. (#4453)
423  - The subunit reporter now correctly reports import errors as errors,
424    rather than by crashing with an unrelated error. (#4496)
426 Improved Documentation
427 ----------------------
428  - The finger tutorial example which introduces services now avoids
429    double-starting the loop to re-read its users file. (#4420)
430  - twisted.internet.defer.Deferred.callback's docstring now mentions
431    the implicit chaining feature. (#4439)
432  - doc/core/howto/listing/pb/chatclient.py can now actually send a
433    group message. (#4459)
435 Deprecations and Removals
436 -------------------------
437  - twisted.internet.interfaces.IReactorArbitrary,
438    twisted.application.internet.GenericServer, and
439    twisted.application.internet.GenericClient are now deprecated.
440    (#367)
441  - twisted.internet.gtkreactor is now deprecated. (#2833)
442  - twisted.trial.util.findObject has been deprecated. (#3108)
443  - twisted.python.threadpool.ThreadSafeList is deprecated and Jython
444    platform detection in Twisted core removed (#3725)
445  - twisted.internet.interfaces.IUDPConnectedTransport has been removed
446    (deprecated since Twisted 9.0). (#4077)
447  - Removed twisted.application.app.runWithProfiler, which has been
448    deprecated since Twisted 8.0. (#4090)
449  - Removed twisted.application.app.runWithHotshot, which has been
450    deprecated since Twisted 8.0. (#4091)
451  - Removed twisted.application.app.ApplicationRunner.startLogging,
452    which has been deprecated (doesn't say since when), as well as
453    support for the legacy
454    twisted.application.app.ApplicationRunner.getLogObserver method.
455    (#4092)
456  - twisted.application.app.reportProfile has been removed. (#4093)
457  - twisted.application.app.getLogFile has been removed. (#4094)
458  - Removed twisted.cred.util.py, which has been deprecated since
459    Twisted 8.3. (#4107)
460  - twisted.python.util.dsu is now deprecated. (#4339)
461  - In twisted.trial.util: FailureError, DirtyReactorWarning,
462    DirtyReactorError, and PendingTimedCallsError, which have all been
463    deprecated since Twisted 8.0, have been removed. (#4505)
465 Other
466 -----
467  - #1363, #1742, #3170, #3359, #3431, #3738, #4088, #4206, #4221,
468    #4239, #4257, #4272, #4274, #4287, #4291, #4293, #4309, #4316,
469    #4319, #4324, #4332, #4335, #4348, #4358, #4394, #4399, #4409,
470    #4418, #4443, #4449, #4479, #4485, #4486, #4497
473 Twisted Conch 10.1.0 (2010-06-27)
474 =================================
476 Features
477 --------
478  - twisted.conch.ssh.transport.SSHTransportBase now allows supported
479    ssh protocol versions to be overriden. (#4428)
481 Bugfixes
482 --------
483  - SSHSessionProcessProtocol now doesn't close the session when stdin
484    is closed, but instead when both stdout and stderr are. (#4350)
485  - The 'cftp' command-line tool will no longer encounter an
486    intermittent error, crashing at startup with a ZeroDivisionError
487    while trying to report progress. (#4463)
488  - twisted.conch.ssh.connection.SSHConnection now replies to requests
489    to open an unknown channel with a OPEN_UNKNOWN_CHANNEL_TYPE message
490    instead of closing the connection. (#4490)
492 Deprecations and Removals
493 -------------------------
494  - twisted.conch.insults.client was deprecated. (#4095)
495  - twisted.conch.insults.colors has been deprecated.  Please use
496    twisted.conch.insults.helper instead. (#4096)
497  - Removed twisted.conch.ssh.asn1, which has been deprecated since
498    Twisted 9.0. (#4097)
499  - Removed twisted.conch.ssh.common.Entropy, as Entropy.get_bytes has
500    been  deprecated since 2007 and Entropy.get_bytes was the only
501    attribute of Entropy. (#4098)
502  - Removed twisted.conch.ssh.keys.getPublicKeyString, which has been
503    deprecated since 2007.  Also updated the conch examples
504    sshsimpleserver.py and sshsimpleclient.py to reflect this removal.
505    (#4099)
506  - Removed twisted.conch.ssh.keys.makePublicKeyString, which has been
507    deprecated since 2007. (#4100)
508  - Removed twisted.conch.ssh.keys.getPublicKeyObject, which has been
509    deprecated since 2007. (#4101)
510  - Removed twisted.conch.ssh.keys.getPrivateKeyObject, which has been
511    deprecated since 2007.  Also updated the conch examples to reflect
512    this removal. (#4102)
513  - Removed twisted.conch.ssh.keys.makePrivateKeyString, which has been
514    deprecated since 2007. (#4103)
515  - Removed twisted.conch.ssh.keys.makePublicKeyBlob, which has been
516    deprecated since 2007. (#4104)
517  - Removed twisted.conch.ssh.keys.signData,
518    twisted.conch.ssh.keys.verifySignature, and
519    twisted.conch.ssh.keys.printKey, which have been deprecated since
520    2007.   (#4105)
522 Other
523 -----
524  - #3849, #4408, #4454
527 Twisted Lore 10.1.0 (2010-06-27)
528 ================================
530 No significant changes have been made for this release.
533 Twisted Mail 10.1.0 (2010-06-27)
534 ================================
536 Bugfixes
537 --------
538  - twisted.mail.imap4.IMAP4Server no longer fails on search queries
539    that contain wildcards. (#2278)
540  - A case which would cause twisted.mail.imap4.IMAP4Server to loop
541    indefinitely when handling a search command has been fixed. (#4385)
543 Other
544 -----
545  - #4069, #4271, #4467
548 Twisted Names 10.1.0 (2010-06-27)
549 =================================
551 Features
552 --------
553  - twisted.names.dns.Message now uses a specially constructed
554    dictionary for looking up record types.  This yields a significant
555    performance improvement on PyPy. (#4283)
558 Twisted News 10.1.0 (2010-06-27)
559 ================================
561 No significant changes have been made for this release.
564 Twisted Pair 10.1.0 (2010-06-27)
565 ================================
567 No significant changes have been made for this release.
570 Twisted Runner 10.1.0 (2010-06-27)
571 ==================================
573 Features
574 --------
575  - twistd now has a procmon subcommand plugin - a convenient way to
576    monitor and automatically restart another process. (#4356)
578 Deprecations and Removals
579 -------------------------
580  - twisted.runner.procmon.ProcessMonitor's active, consistency, and
581    consistencyDelay attributes are now deprecated. (#1763)
583 Other
584 -----
585  - #3775
588 Twisted Web 10.1.0 (2010-06-27)
589 ===============================
591 Features
592 --------
593  - twisted.web.xmlrpc.XMLRPC and twisted.web.xmlrpc.Proxy now expose
594    xmlrpclib's support of datetime.datetime objects if useDateTime is
595    set to True. (#3219)
596  - HTTP11ClientProtocol now has an abort() method for cancelling an
597    outstanding request by closing the connection before receiving the
598    entire response. (#3811)
599  - twisted.web.http_headers.Headers initializer now rejects
600    incorrectly structured dictionaries. (#4022)
601  - twisted.web.client.Agent now supports HTTPS URLs. (#4023)
602  - twisted.web.xmlrpc.Proxy.callRemote now returns a Deferred which
603    can be cancelled to abort the attempted XML-RPC call. (#4377)
605 Bugfixes
606 --------
607  - twisted.web.guard now logs out avatars even if a request completes
608    with an error. (#4411)
609  - twisted.web.xmlrpc.XMLRPC will now no longer trigger a RuntimeError
610    by trying to write responses to closed connections. (#4423)
612 Improved Documentation
613 ----------------------
614  - Fix broken links to deliverBody and iweb.UNKNOWN_LENGTH in
615    doc/web/howto/client.xhtml. (#4507)
617 Deprecations and Removals
618 -------------------------
619  - twisted.web.twcgi.PHP3Script and twisted.web.twcgi.PHPScript are
620    now deprecated. (#516)
622 Other
623 -----
624  - #4403, #4452
627 Twisted Words 10.1.0 (2010-06-27)
628 =================================
630 Bugfixes
631 --------
632  - twisted.words.im.basechat.ChatUI now has a functional
633    contactChangedNick with unit tests. (#229)
634  - twisted.words.protocols.jabber.error.StanzaError now correctly sets
635    a default error type and code for the remote-server-timeout
636    condition (#4311)
637  - twisted.words.protocols.jabber.xmlstream.ListenAuthenticator now
638    uses unicode objects for session identifiers (#4345)
641 Twisted Core 10.0.0 (2010-03-01)
642 ================================
644 Features
645 --------
646  - The twistd man page now has a SIGNALS section. (#689)
648  - reactor.spawnProcess now will not emit a PotentialZombieWarning
649    when called before reactor.run, and there will be no potential for
650    zombie processes in this case. (#2078)
652  - High-throughput applications based on Perspective Broker should now
653    run noticably faster thanks to the use of a more efficient decoding
654    function in Twisted Spread. (#2310)
656  - Documentation for trac-post-commit-hook functionality in svn-dev
657    policy. (#3867)
659  - twisted.protocols.socks.SOCKSv4 now supports the SOCKSv4a protocol.
660    (#3886)
662  - Trial can now output test results according to the subunit
663    protocol, as long as Subunit is installed (see
664    https://launchpad.net/subunit). (#4004)
666  - twisted.protocols.amp now provides a ListOf argument type which can
667    be composed with some other argument types to create a zero or more
668    element sequence of that type. (#4116)
670  - If returnValue is invoked outside of a function decorated with
671    @inlineCallbacks, but causes a function thusly decorated to exit, a
672    DeprecationWarning will be emitted explaining this potentially
673    confusing behavior.  In a future release, this will cause an
674    exception. (#4157)
676  - twisted.python.logfile.BaseLogFile now has a reopen method allowing
677    you to use an external logrotate mechanism. (#4255)
679 Bugfixes
680 --------
681  - FTP.ftp_NLST now handles requests on invalid paths in a way
682    consistent with RFC 959. (#1342)
684  - twisted.python.util.initgroups now calls the low-level C initgroups
685    by default if available: the python version can create lots of I/O
686    with certain authentication setup to retrieve all the necessary
687    information. (#3226)
689  - startLogging now does nothing on subsequent invocations, thus
690    fixing a terrible infinite recursion bug that's only on edge case.
691    (#3289)
693  - Stringify non-string data to NetstringReceiver.sendString before
694    calculating the length so that the calculated length is equal to
695    the actual length of the transported data. (#3299)
697  - twisted.python.win32.cmdLineQuote now correctly quotes empty
698    strings arguments (#3876)
700  - Change the behavior of the Gtk2Reactor to register only one source
701    watch for each file descriptor, instead of one for reading and one
702    for writing. In particular, it fixes a bug with Glib under Windows
703    where we failed to notify when a client is connected. (#3925)
705  - Twisted Trial no longer crashes if it can't remove an old
706    _trial_temp directory.  (#4020)
708  - The optional _c_urlarg extension now handles unquote("") correctly
709    on platforms where malloc(0) returns NULL, such as AIX.  It also
710    compiles with less warnings. (#4142)
712  - On POSIX, child processes created with reactor.spawnProcess will no
713    longer automatically ignore the signals which the parent process
714    has set to be ignored. (#4199)
716  - All SOCKSv4a tests now use a dummy reactor with a deterministic
717    resolve method. (#4275)
719  - Prevent extraneous server, date and content-type headers in proxy
720    responses. (#4277)
722 Deprecations and Removals
723 -------------------------
724  - twisted.internet.error.PotentialZombieWarning is now deprecated.
725    (#2078)
727  - twisted.test.time_helpers is now deprecated. (#3719)
729  - The deprecated connectUDP method of IReactorUDP has now been
730    removed. (#4075)
732  - twisted.trial.unittest.TestCase now ignores the previously
733    deprecated setUpClass and tearDownClass methods. (#4175)
735 Other
736 -----
737  - #917, #2406, #2481, #2608, #2689, #2884, #3056, #3082, #3199,
738    #3480, #3592, #3718, #3935, #4066, #4083, #4154, #4166, #4169,
739    #4176, #4183, #4186, #4188, #4189, #4194, #4201, #4204, #4209,
740    #4222, #4234, #4235, #4238, #4240, #4245, #4251, #4264, #4268,
741    #4269, #4282
744 Twisted Conch 10.0.0 (2010-03-01)
745 =================================
747 Bugfixes
748 --------
749  - twisted.conch.checkers.SSHPublicKeyDatabase now looks in the
750    correct user directory for authorized_keys files. (#3984)
751  - twisted.conch.ssh.SSHUserAuthClient now honors preferredOrder when
752    authenticating. (#4266)
754 Other
755 -----
756  - #2391, #4203, #4265
759 Twisted Lore 10.0.0 (2010-03-01)
760 ================================
762 Other
763 -----
764  - #4241
767 Twisted Mail 10.0.0 (2010-03-01)
768 ================================
770 Bugfixes
771 --------
772  - twisted.mail.smtp.ESMTPClient and
773    twisted.mail.smtp.LOGINAuthenticator now implement the (obsolete)
774    LOGIN SASL mechanism according to the draft specification. (#4031)
776  - twisted.mail.imap4.IMAP4Client will no longer misparse all html-
777    formatted message bodies received in response to a fetch command.
778    (#4049)
780  - The regression in IMAP4 search handling of "OR" and "NOT" terms has
781    been fixed. (#4178)
783 Other
784 -----
785  - #4028, #4170, #4200
788 Twisted Names 10.0.0 (2010-03-01)
789 =================================
791 Bugfixes
792 --------
793  - twisted.names.root.Resolver no longer leaks UDP sockets while
794    resolving names. (#970)
796 Deprecations and Removals
797 -------------------------
798  - Several top-level functions in twisted.names.root are now
799    deprecated. (#970)
801 Other
802 -----
803  - #4066
806 Twisted Pair 10.0.0 (2010-03-01)
807 ================================
809 Other
810 -----
811  - #4170
814 Twisted Runner 10.0.0 (2010-03-01)
815 ==================================
817 Other
818 -----
819  - #3961
822 Twisted Web 10.0.0 (2010-03-01)
823 ===============================
825 Features
826 --------
827  - Twisted Web in 60 Seconds, a series of short tutorials with self-
828    contained examples on a range of common web topics, is now a part
829    of the Twisted Web howto documentation. (#4192)
831 Bugfixes
832 --------
833  - Data and File from twisted.web.static and
834    twisted.web.distrib.UserDirectory will now only generate a 200
835    response for GET or HEAD requests.
836    twisted.web.client.HTTPPageGetter will no longer ignore the case of
837    a request method when considering whether to apply special HEAD
838    processing to a response. (#446)
840  - twisted.web.http.HTTPClient now supports multi-line headers.
841    (#2062)
843  - Resources served via twisted.web.distrib will no longer encounter a
844    Banana error when writing more than 640kB at once to the request
845    object. (#3212)
847  - The Error, PageRedirect, and InfiniteRedirection exception in
848    twisted.web now initialize an empty message parameter by mapping
849    the HTTP status code parameter to a descriptive string. Previously
850    the lookup would always fail, leaving message empty.  (#3806)
852  - The 'wsgi.input' WSGI environment object now supports -1 and None
853    as arguments to the read and readlines methods. (#4114)
855  - twisted.web.wsgi doesn't unquote QUERY_STRING anymore, thus
856    complying with the WSGI reference implementation. (#4143)
858  - The HTTP proxy will no longer pass on keep-alive request headers
859    from the client, preventing pages from loading then "hanging"
860    (leaving the connection open with no hope of termination). (#4179)
862 Deprecations and Removals
863 -------------------------
864  - Remove '--static' option from twistd web, that served as an alias
865    for the '--path' option. (#3907)
867 Other
868 -----
869  - #3784, #4216, #4242
872 Twisted Words 10.0.0 (2010-03-01)
873 =================================
875 Features
876 --------
877  - twisted.words.protocols.irc.IRCClient.irc_MODE now takes ISUPPORT
878    parameters into account when parsing mode messages with arguments
879    that take parameters (#3296)
881 Bugfixes
882 --------
883  - When twisted.words.protocols.irc.IRCClient's versionNum and
884    versionEnv attributes are set to None, they will no longer be
885    included in the client's response to CTCP VERSION queries. (#3660)
887  - twisted.words.protocols.jabber.xmlstream.hashPassword now only
888    accepts unicode as input (#3741, #3742, #3847)
890 Other
891 -----
892  - #2503, #4066, #4261
895 Twisted Core 9.0.0 (2009-11-24)
896 ===============================
898 Features
899 --------
900  - LineReceiver.clearLineBuffer now returns the bytes that it cleared (#3573)
901  - twisted.protocols.amp now raises InvalidSignature when bad arguments are
902    passed to Command.makeArguments (#2808)
903  - IArgumentType was added to represent an existing but previously unspecified
904    interface in amp (#3468)
905  - Obscure python tricks have been removed from the finger tutorials (#2110)
906  - The digest auth implementations in twisted.web and twisted.protocolos.sip
907    have been merged together in twisted.cred (#3575)
908  - FilePath and ZipPath now has a parents() method which iterates up all of its
909    parents (#3588)
910  - reactors which support threads now have a getThreadPool method (#3591)
911  - The MemCache client implementation now allows arguments to the "stats"
912    command (#3661)
913  - The MemCache client now has a getMultiple method which allows fetching of
914    multiple values (#3171)
915  - twisted.spread.jelly can now unserialize some new-style classes (#2950)
916  - twisted.protocols.loopback.loopbackAsync now accepts a parameter to control
917    the data passed between client and server (#3820)
918  - The IOCP reactor now supports SSL (#593)
919  - Tasks in a twisted.internet.task.Cooperator can now be paused, resumed, and
920    cancelled (#2712)
921  - AmpList arguments can now be made optional (#3891)
922  - The syslog output observer now supports log levels (#3300)
923  - LoopingCall now supports reporting the number of intervals missed if it
924    isn't able to schedule calls fast enough (#3671)
926 Fixes
927 -----
928  - The deprecated md5 and sha modules are no longer used if the stdlib hashlib
929    module is available (#2763)
930  - An obscure deadlock involving waking up the reactor within signal handlers
931    in particular threads was fixed (#1997)
932  - The passivePortRange attribute of FTPFactory is now honored (#3593)
933  - TestCase.flushWarnings now flushes warnings even if they were produced by a
934    file that was renamed since it was byte compiled (#3598)
935  - Some internal file descriptors are now marked as close-on-exec, so these will
936    no longer be leaked to child processes (#3576)
937  - twisted.python.zipstream now correctly extracts the first file in a directory
938    as a file, and not an empty directory (#3625)
939  - proxyForInterface now returns classes which correctly *implement* interfaces
940    rather than *providing* them (#3646)
941  - SIP Via header parameters should now be correctly generated (#2194)
942  - The Deferred returned by stopListening would sometimes previously never fire
943    if an exception was raised by the underlying file descriptor's connectionLost
944    method. Now the Deferred will fire with a failure (#3654)
945  - The command-line tool "manhole" should now work with newer versions of pygtk
946    (#2464)
947  - When a DefaultOpenSSLContextFactory is instantiated with invalid parameters,
948    it will now raise an exception immediately instead of waiting for the first
949    connection (#3700)
950  - Twisted command line scripts should now work when installed in a virtualenv
951    (#3750)
952  - Trial will no longer delete temp directories which it did not create (#3481)
953  - Processes started on Windows should now be cleaned up properly in more cases
954    (#3893)
955  - Certain misbehaving importers will no longer cause twisted.python.modules
956    (and thus trial) to raise an exception, but rather issue a warning (#3913)
957  - MemCache client protocol methods will now fail when the transport has been
958    disconnected (#3643)
959  - In the AMP method callRemoteString, the requiresAnswer parameter is now
960    honored (#3999)
961  - Spawning a "script" (a file which starts with a #! line) on Windows running
962    Python 2.6 will now work instead of raising an exception about file mode
963    "ru" (#3567)
964  - FilePath's walk method now calls its "descend" parameter even on the first
965    level of children, instead of only on grandchildren. This allows for better
966    symlink cycle detection (#3911)
967  - Attempting to write unicode data to process pipes on Windows will no longer
968    result in arbitrarily encoded messages being written to the pipe, but instead
969    will immediately raise an error (#3930)
970  - The various twisted command line utilities will no longer print
971    ModuleType.__doc__ when Twisted was installed with setuptools (#4030)
972  - A Failure object will now be passed to connectionLost on stdio connections
973    on Windows, instead of an Exception object (#3922)
975 Deprecations and Removals
976 -------------------------
977  - twisted.persisted.marmalade was deleted after a long period of deprecation
978    (#876)
979  - Some remaining references to the long-gone plugins.tml system were removed
980    (#3246)
981  - SSLv2 is now disabled by default, but it can be re-enabled explicitly
982    (#3330)
983  - twisted.python.plugin has been removed (#1911)
984  - reactor.run will now raise a ReactorAlreadyRunning exception when it is
985    called reentrantly instead of warning a DeprecationWarning (#1785)
986  - twisted.spread.refpath is now deprecated because it is unmaintained,
987    untested, and has dubious value (#3723)
988  - The unused --quiet flag has been removed from the twistd command (#3003)
990 Other
991 -----
992  - #3545, #3490, #3544, #3537, #3455, #3315, #2281, #3564, #3570, #3571, #3486,
993    #3241, #3599, #3220, #1522, #3611, #3596, #3606, #3609, #3602, #3637, #3647,
994    #3632, #3675, #3673, #3686, #2217, #3685, #3688, #2456, #506, #3635, #2153,
995    #3581, #3708, #3714, #3717, #3698, #3747, #3704, #3707, #3713, #3720, #3692,
996    #3376, #3652, #3695, #3735, #3786, #3783, #3699, #3340, #3810, #3822, #3817,
997    #3791, #3859, #2459, #3677, #3883, #3894, #3861, #3822, #3852, #3875, #2722,
998    #3768, #3914, #3885, #2719, #3905, #3942, #2820, #3990, #3954, #1627, #2326,
999    #2972, #3253, #3937, #4058, #1200, #3639, #4079, #4063, #4050
1002 Twisted Conch 9.0.0 (2009-11-24)
1003 ================================
1005 Fixes
1006 -----
1007  - The SSH key parser has been removed and conch now uses pyASN1 to parse keys.
1008    This should fix a number of cases where parsing a key would fail, but it now
1009    requires users to have pyASN1 installed (#3391)
1010  - The time field on SFTP file listings should now be correct (#3503)
1011  - The day field on SFTP file listings should now be correct on Windows (#3503)
1012  - The "cftp" sftp client now truncates files it is uploading over (#2519)
1013  - The telnet server protocol can now properly respond to subnegotiation
1014    requests (#3655)
1015  - Tests and factoring of the SSHv2 server implementation are now much better
1016    (#2682)
1017  - The SSHv2 server now sends "exit-signal" messages to the client, instead of
1018    raising an exception, when a process dies due to a signal (#2687)
1019  - cftp's client-side "exec" command now uses /bin/sh if the current user has
1020    no shell (#3914)
1022 Deprecations and Removals
1023 -------------------------
1024  - The buggy SSH connection sharing feature of the SSHv2 client was removed
1025    (#3498)
1026  - Use of strings and PyCrypto objects to represent keys is deprecated in favor
1027    of using Conch Key objects (#2682)
1029 Other
1030 -----
1031  - #3548, #3537, #3551, #3220, #3568, #3689, #3709, #3809, #2763, #3540, #3750,
1032    #3897, #3813, #3871, #3916, #4047, #3940, #4050
1035 Twisted Lore 9.0.0 (2009-11-24)
1036 ===============================
1038 Features
1039 --------
1040  - Python source listings now include line numbers (#3486)
1042 Fixes
1043 -----
1044  - Lore now uses minidom instead of Twisted's microdom, which incidentally
1045    fixes some Lore bugs such as throwing away certain whitespace
1046    (#3560, #414, #3619)
1047  - Lore's "lint" command should no longer break on documents with links in them
1048    (#4051, #4115)
1050 Deprecations and Removals
1051 -------------------------
1052  - Lore no longer uses the ancient "tml" Twisted plugin system (#1911)
1054 Other
1055 -----
1056  - #3565, #3246, #3540, #3750, #4050
1059 Twisted Mail 9.0.0 (2009-11-24)
1060 ===============================
1062 Features
1063 --------
1064  - maildir.StringListMailbox, an in-memory maildir mailbox, now supports
1065    deletion, undeletion, and syncing (#3547)
1066  - SMTPClient's callbacks are now more completely documented (#684)
1068 Fixes
1069 -----
1070  - Parse UNSEEN response data and include it in the result of
1071    IMAP4Client.examine (#3550)
1072  - The IMAP4 client now delivers more unsolicited server responses to callbacks
1073    rather than ignoring them, and also won't ignore solicited responses that
1074    arrive on the same line as an unsolicited one (#1105)
1075  - Several bugs in the SMTP client's idle timeout support were fixed (#3641,
1076    #1219)
1077  - A case where the SMTP client could skip some recipients when retrying
1078    delivery has been fixed (#3638)
1079  - Errors during certain data transfers will no longer be swallowed. They will
1080    now bubble up to the higher-level API (such as the sendmail function) (#3642)
1081  - Escape sequences inside quoted strings in IMAP4 should now be parsed
1082    correctly by the IMAP4 server protocol (#3659)
1083  - The "imap4-utf-7" codec that is registered by twisted.mail.imap4 had a number
1084    of fixes that allow it to work better with the Python codecs system, and to
1085    actually work (#3663)
1086  - The Maildir implementation now ensures time-based ordering of filenames so
1087    that the lexical sorting of messages matches the order in which they were
1088    received (#3812)
1089  - SASL PLAIN credentials generated by the IMAP4 protocol implementations
1090    (client and server) should now be RFC-compliant (#3939)
1091  - Searching for a set of sequences using the IMAP4 "SEARCH" command should 
1092    now work on the IMAP4 server protocol implementation. This at least improves
1093    support for the Pine mail client (#1977)
1095 Other
1096 -----
1097  - #2763, #3647, #3750, #3819, #3540, #3846, #2023, #4050
1100 Twisted Names 9.0.0 (2009-11-24)
1101 ================================
1103 Deprecations and Removals
1104 -------------------------
1105  - client.ThreadedResolver is deprecated in favor of
1106    twisted.internet.base.ThreadedResolver (#3710)
1108 Other
1109 -----
1110  - #3540, #3560, #3712, #3750, #3990
1113 Twisted News 9.0.0 (2009-11-24)
1114 ===============================
1116 Other
1117 -----
1118  - #2763, #3540
1121 Twisted Pair 9.0.0 (2009-11-24)
1122 ===============================
1124 Other
1125 -----
1126  - #3540, #4050
1129 Twisted Runner 9.0.0 (2009-11-24)
1130 =================================
1132 Features
1133 --------
1134  - procmon.ProcessMonitor.addProcess now accepts an 'env' parameter which allows
1135    users to specify the environment in which a process will be run (#3691)
1137 Other
1138 -----
1139  - #3540
1142 Twisted Web 9.0.0 (2009-11-24)
1143 ==============================
1145 Features
1146 --------
1147  - There is now an iweb.IRequest interface which specifies the interface that
1148    request objects provide (#3416)
1149  - downloadPage now supports the same cookie, redirect, and timeout features
1150    that getPage supports (#2971)
1151  - A chapter about WSGI has been added to the twisted.web documentation (#3510)
1152  - The HTTP auth support in the web server now allows anonymous sessions by
1153    logging in with ANONYMOUS credentials when no Authorization header is
1154    provided in a request (#3924, #3936)
1155  - HTTPClientFactory now accepts a parameter to enable a common deviation from
1156    the HTTP 1.1 standard by responding to redirects in a POSTed request with a
1157    GET instead of another POST (#3624)
1158  - A new basic HTTP/1.1 client API is included in twisted.web.client.Agent
1159    (#886, #3987)
1161 Fixes
1162 -----
1163  - Requests for "insecure" children of a static.File (such as paths containing
1164    encoded directory separators) will now result in a 404 instead of a 500
1165    (#3549, #3469)
1166  - When specifying a followRedirect argument to the getPage function, the state
1167    of redirect-following for other getPage calls should now be unaffected.  It
1168    was previously overwriting a class attribute which would affect outstanding
1169    getPage calls (#3192)
1170  - Downloading an URL of the form "http://example.com:/" will now work,
1171    ignoring the extraneous colon (#2402)
1172  - microdom's appendChild method will no longer issue a spurious warning, and
1173    microdom's methods in general should now issue more meaningful exceptions
1174    when invalid parameters are passed (#3421)
1175  - WSGI applications will no longer have spurious Content-Type headers added to
1176    their responses by the twisted.web server. In addition, WSGI applications
1177    will no longer be able to specify the server-restricted headers Server and
1178    Date (#3569)
1179  - http_headers.Headers now normalizes the case of raw headers passed directly
1180    to it in the same way that it normalizes the headers passed to setRawHeaders
1181    (#3557)
1182  - The distrib module no longer relies on the deprecated woven package (#3559)
1183  - twisted.web.domhelpers now works with both microdom and minidom (#3600)
1184  - twisted.web servers will now ignore invalid If-Modified-Since headers instead
1185    of returning a 500 error (#3601)
1186  - Certain request-bound memory and file resources are cleaned up slightly
1187    sooner by the request when the connection is lost (#1621, #3176)
1188  - xmlrpclib.DateTime objects should now correctly round-trip over twisted.web's
1189    XMLRPC support in all supported versions of Python, and errors during error
1190    serialization will no longer hang a twisted.web XMLRPC response (#2446)
1191  - request.content should now always be seeked to the beginning when
1192    request.process is called, so application code should never need to seek 
1193    back manually (#3585)
1194  - Fetching a child of static.File with a double-slash in the URL (such as
1195    "example//foo.html") should now return a 404 instead of a traceback and
1196    500 error (#3631)
1197  - downloadPage will now fire a Failure on its returned Deferred instead of
1198    indicating success when the connection is prematurely lost (#3645)
1199  - static.File will now provide a 404 instead of a 500 error when it was
1200    constructed with a non-existent file (#3634)
1201  - microdom should now serialize namespaces correctly (#3672)
1202  - The HTTP Auth support resource wrapper should no longer corrupt requests and
1203    cause them to skip a segment in the request path (#3679)
1204  - The twisted.web WSGI support should now include leading slashes in PATH_INFO,
1205    and SCRIPT_NAME will be empty if the application is at the root of the
1206    resource tree. This means that WSGI applications should no longer generate
1207    URLs with double-slashes in them even if they naively concatenate the values
1208    (#3721)
1209  - WSGI applications should now receive the requesting client's IP in the
1210    REMOTE_ADDR environment variable (#3730)
1211  - The distrib module should work again. It was unfortunately broken with the
1212    refactoring of twisted.web's header support (#3697)
1213  - static.File now supports multiple ranges specified in the Range header
1214    (#3574)
1215  - static.File should now generate a correct Content-Length value when the
1216    requested Range value doesn't fit entirely within the file's contents (#3814)
1217  - Attempting to call request.finish() after the connection has been lost will
1218    now immediately raise a RuntimeError (#4013)
1219  - An HTTP-auth resource should now be able to directly render the wrapped
1220    avatar, whereas before it would only allow retrieval of child resources
1221    (#4014)
1222  - twisted.web's wsgi support should no longer attempt to call request.finish
1223    twice, which would cause errors in certain cases (#4025)
1224  - WSGI applications should now be able to handle requests with large bodies
1225    (#4029)
1226  - Exceptions raised from WSGI applications should now more reliably be turned
1227    into 500 errors on the HTTP level (#4019)
1228  - DeferredResource now correctly passes through exceptions raised from the
1229    wrapped resource, instead of turning them all into 500 errors (#3932)
1230  - Agent.request now generates a Host header when no headers are passed at
1231    (#4131)
1233 Deprecations and Removals
1234 -------------------------
1235  - The unmaintained and untested twisted.web.monitor module was removed (#2763)
1236  - The twisted.web.woven package has been removed (#1522)
1237  - All of the error resources in twisted.web.error are now in
1238    twisted.web.resource, and accessing them through twisted.web.error is now
1239    deprecated (#3035)
1240  - To facilitate a simplification of the timeout logic in server.Session,
1241    various things have been deprecated (#3457)
1242    - the loopFactory attribute is now ignored
1243    - the checkExpired method now does nothing
1244    - the lifetime parameter to startCheckingExpiration is now ignored
1245  - The twisted.web.trp module is now deprecated (#2030)
1247 Other
1248 -----
1249  - #2763, #3540, #3575, #3610, #3605, #1176, #3539, #3750, #3761, #3779, #2677,
1250    #3782, #3904, #3919, #3418, #3990, #1404, #4050
1253 Twisted Words 9.0.0 (2009-11-24)
1254 ================================
1256 Features
1257 --------
1258  - IRCClient.describe is a new method meant to replace IRCClient.me to send
1259    CTCP ACTION messages with less confusing behavior (#3910)
1260  - The XMPP client protocol implementation now supports ANONYMOUS SASL
1261    authentication (#4067)
1262  - The IRC client protocol implementation now has better support for the
1263    ISUPPORT server->client message, storing the data in a new
1264    ServerSupportedFeatures object accessible via IRCClient.supported (#3285)
1266 Fixes
1267 -----
1268  - The twisted.words IRC server now always sends an MOTD, which at least makes
1269    Pidgin able to successfully connect to a twisted.words IRC server (#2385)
1270  - The IRC client will now dispatch "RPL MOTD" messages received before a
1271    "RPL MOTD START" instead of raising an exception (#3676)
1272  - The IRC client protocol implementation no longer updates its 'nickname'
1273    attribute directly; instead, that attribute will be updated when the server
1274    acknowledges the change (#3377)
1275  - The IRC client protocol implementation now supports falling back to another
1276    nickname when a nick change request fails (#3377, #4010)
1278 Deprecations and Removals
1279 -------------------------
1280  - The TOC protocol implementation is now deprecated, since the protocol itself
1281    has been deprecated and obselete for quite a long time (#3580)
1282  - The gui "im" application has been removed, since it relied on GTK1, which is
1283    hard to find these days (#3699, #3340)
1285 Other
1286 -----
1287  - #2763, #3540, #3647, #3750, #3895, #3968, #4050
1290 Core 8.2.0 (2008-12-16)
1291 =======================
1293 Features
1294 --------
1295  - Reactors are slowly but surely becoming more isolated, thus improving
1296    testability (#3198)
1297  - FilePath has gained a realpath method, and FilePath.walk no longer infinitely
1298    recurses in the case of a symlink causing a self-recursing filesystem tree
1299    (#3098)
1300  - FilePath's moveTo and copyTo methods now have an option to disable following
1301    of symlinks (#3105)
1302  - Private APIs are now included in the API documentation (#3268)
1303  - hotshot is now the default profiler for the twistd --profile parameter and
1304    using cProfile is now documented (#3355, #3356)
1305  - Process protocols can now implement a processExited method, which is
1306    distinct from processEnded in that it is called immediately when the child
1307    has died, instead of waiting for all the file descriptors to be closed
1308    (#1291)
1309  - twistd now has a --umask option (#966, #3024)
1310  - A new deferToThreadPool function exists in twisted.internet.threads (#2845)
1311  - There is now an example of writing an FTP server in examples/ftpserver.py
1312    (#1579)
1313  - A new runAsEffectiveUser function has been added to twisted.python.util
1314    (#2607)
1315  - twisted.internet.utils.getProcessOutput now offers a mechanism for
1316    waiting for the process to actually end, in the event of data received on
1317    stderr (#3239)
1318  - A fullyQualifiedName function has been added to twisted.python.reflect
1319    (#3254)
1320  - strports now defaults to managing access to a UNIX socket with a lock;
1321    lockfile=0 can be included in the strports specifier to disable this
1322    behavior (#2295)
1323  - FTPClient now has a 'rename' method (#3335)
1324  - FTPClient now has a 'makeDirectory' method (#3500)
1325  - FTPClient now has a 'removeFile' method (#3491)
1326  - flushWarnings, A new Trial method for testing warnings, has been added
1327    (#3487, #3427, #3506)
1328  - The log observer can now be configured in .tac files (#3534)
1330 Fixes
1331 -----
1332  - TLS Session Tickets are now disabled by default, allowing connections to
1333    certain servers which hang when an empty session ticket is received (like
1334    GTalk) (#3463)
1335  - twisted.enterprise.adbapi.ConnectionPool's noisy attribute now defaults to
1336    False, as documented (#1806)
1337  - Error handling and logging in adbapi is now much improved (#3244)
1338  - TCP listeners can now be restarted (#2913)
1339  - Doctests can now be rerun with trial's --until-failure option (#2713)
1340  - Some memory leaks have been fixed in trial's --until-failure
1341    implementation (#3119, #3269)
1342  - Trial's summary reporter now prints correct runtime information and handles
1343    the case of 0 tests (#3184)
1344  - Trial and any other user of the 'namedAny' function now has better error
1345    reporting in the case of invalid module names (#3259)
1346  - Multiple instances of trial can now run in parallel in the same directory
1347    by creating _trial_temp directories with an incremental suffix (#2338)
1348  - Trial's failUnlessWarns method now works on Python 2.6 (#3223)
1349  - twisted.python.log now hooks into the warnings system in a way compatible
1350    with Python 2.6 (#3211)
1351  - The GTK2 reactor is now better supported on Windows, but still not passing
1352    the entire test suite (#3203)
1353  - low-level failure handling in spawnProcess has been improved and no longer
1354    leaks file descriptors (#2305, #1410)
1355  - Perspective Broker avatars now have their logout functions called in more
1356    cases (#392)
1357  - Log observers which raise exceptions are no longer removed (#1069)
1358  - transport.getPeer now always includes an IP address in the Address returned
1359    instead of a hostname (#3059)
1360  - Functions in twisted.internet.utils which spawn processes now avoid calling
1361    chdir in the case where no working directory is passed, to avoid some
1362    obscure permission errors (#3159)
1363  - twisted.spread.publish.Publishable no longer corrupts line endings on
1364    Windows (#2327)
1365  - SelectReactor now properly detects when a TLS/TCP connection has been
1366    disconnected (#3218)
1367  - twisted.python.lockfile no longer raises an EEXIST OSError and is much
1368    better supported on Windows (#3367)
1369  - When ITLSTransport.startTLS is called while there is data in the write
1370    buffer, TLS negotiation will now be delayed instead of the method raising
1371    an exception (#686)
1372  - The userAnonymous argument to FTPFactory is now honored (#3390)
1373  - twisted.python.modules no longer tries to "fix" sys.modules after an import
1374    error, which was just causing problems (#3388)
1375  - setup.py no longer attempts to build extension modules when run with Jython
1376    (#3410)
1377  - AMP boxes can now be sent in IBoxReceiver.startReceivingBoxes (#3477)
1378  - AMP connections are closed as soon as a key length larger than 255 is
1379    received (#3478)
1380  - Log events with timezone offsets between -1 and -59 minutes are now
1381    correctly reported as negative (#3515)
1383 Deprecations and Removals
1384 -------------------------
1385  - Trial's setUpClass and tearDownClass methods are now deprecated (#2903)
1386  - problemsFromTransport has been removed in favor of the argument passed to
1387    connectionLost (#2874)
1388  - The mode parameter to methods of IReactorUNIX and IReactorUNIXDatagram are
1389    deprecated in favor of applications taking other security precautions, since
1390    the mode of a Unix socket is often not respected (#1068)
1391  - Index access on instances of twisted.internet.defer.FirstError has been
1392    removed in favor of the subFailure attribute (#3298)
1393  - The 'changeDirectory' method of FTPClient has been deprecated in favor of
1394    the 'cwd' method (#3491)
1396 Other
1397 -----
1399  - #3202, #2869, #3225, #2955, #3237, #3196, #2355, #2881, #3054, #2374, #2918,
1400    #3210, #3052, #3267, #3288, #2985, #3295, #3297, #2512, #3302, #1222, #2631,
1401    #3306, #3116, #3215, #1489, #3319, #3320, #3321, #1255, #2169, #3182, #3323,
1402    #3301, #3318, #3029, #3338, #3346, #1144, #3173, #3165, #685, #3357, #2582,
1403    #3370, #2438, #1253, #637, #1971, #2208, #979, #1790, #1888, #1882, #1793,
1404    #754, #1890, #1931, #1246, #1025, #3177, #2496, #2567, #3400, #2213, #2027,
1405    #3415, #1262, #3422, #2500, #3414, #3045, #3111, #2974, #2947, #3222, #2878,
1406    #3402, #2909, #3423, #1328, #1852, #3382, #3393, #2029, #3489, #1853, #2026,
1407    #2375, #3502, #3482, #3504, #3505, #3507, #2605, #3519, #3520, #3121, #3484,
1408    #3439, #3216, #3511, #3524, #3521, #3197, #2486, #2449, #2748, #3381, #3236,
1409    #671
1412 Conch 8.2.0 (2008-12-16)
1413 ========================
1415 Features
1416 --------
1417  - The type of the protocols instantiated by SSHFactory is now parameterized
1418    (#3443)
1420 Fixes
1421 -----
1422  - A file descriptor leak has been fixed (#3213, #1789)
1423  - "File Already Exists" errors are now handled more correctly (#3033)
1424  - Handling of CR IAC in TelnetClient is now improved (#3305)
1425  - SSHAgent is no longer completely unusable (#3332)
1426  - The performance of insults.ClientProtocol is now greatly increased by
1427    delivering more than one byte at a time to application code (#3386)
1428  - Manhole and the conch server no longer need to be run as root when not
1429    necessary (#2607)
1430  - The value of FILEXFER_ATTR_ACMODTIME has been corrected (#2902)
1431  - The management of known_hosts and host key verification has been overhauled
1432    (#1376, #1301, #3494, #3496, #1292, #3499)
1434 Other
1435 -----
1436  - #3193, #1633
1439 Lore 8.2.0 (2008-12-16)
1440 =======================
1442 Other
1443 -----
1444  - #2207, #2514
1447 Mail 8.2.0 (2008-12-16)
1448 =======================
1450 Fixes
1451 -----
1452  - The mailmail tool now provides better error messages for usage errors (#3339)
1453  - The SMTP protocol implementation now works on PyPy (#2976)
1455 Other
1456 -----
1457  - #3475
1460 Names 8.2.0 (2008-12-16)
1461 ========================
1463 Features
1464 --------
1465  - The NAPTR record type is now supported (#2276)
1467 Fixes
1468 -----
1469  - Make client.Resolver less vulnerable to the Birthday Paradox attack by
1470    avoiding sending duplicate queries when it's not necessary (#3347)
1471  - client.Resolver now uses a random source port for each DNS request (#3342)
1472  - client.Resolver now uses a full 16 bits of randomness for message IDs,
1473    instead of 10 which it previously used (#3342)
1474  - All record types now have value-based equality and a string representation
1475    (#2935)
1477 Other
1478 -----
1479  - #1622, #3424
1482 Web 8.2.0 (2008-12-16)
1483 ======================
1485 Features
1486 --------
1487  - The web server can now deal with multi-value headers in the new attributes of
1488    Request, requestHeaders and responseHeaders (#165)
1489  - There is now a resource-wrapper which implements HTTP Basic and Digest auth
1490    in terms of twisted.cred (#696)
1491  - It's now possible to limit the number of redirects that client.getPage will
1492    follow (#2412)
1493  - The directory-listing code no longer uses Woven (#3257)
1494  - static.File now supports Range headers with a single range (#1493)
1495  - twisted.web now has a rudimentary WSGI container (#2753)
1496  - The web server now supports chunked encoding in requests (#3385)
1498 Fixes
1499 -----
1500  - The xmlrpc client now raises an error when the server sends an empty
1501    response (#3399)
1502  - HTTPPageGetter no longer duplicates default headers when they're explicitly
1503    overridden in the headers parameter (#1382)
1504  - The server will no longer timeout clients which are still sending request
1505    data (#1903)
1506  - microdom's isEqualToNode now returns False when the nodes aren't equal
1507    (#2542)
1509 Deprecations and Removals
1510 -------------------------
1512  - Request.headers and Request.received_headers are not quite deprecated, but
1513    they are discouraged in favor of requestHeaders and responseHeaders (#165)
1515 Other
1516 -----
1517  - #909, #687, #2938, #1152, #2930, #2025, #2683, #3471
1520 Web2 8.2.0 (2008-12-16)
1521 =======================
1523 Note: Twisted Web2 is being phased out in preference for Twisted Web, but some
1524 maintenance changes have been made.
1526 Fixes
1527 -----
1528  - The main twisted.web2 docstring now indicates the current state of the
1529    project (#2028)
1530  - Headers which require unusual bytes are now quoted (#2346)
1531  - Some links in the introduction documentation have been fixed (#2552)
1534 Words 8.2.0 (2008-12-16)
1535 ========================
1537 Feature
1538 -------
1539  - There is now a standalone XMPP router included in twisted.words: it can be
1540    used with the 'twistd xmpp-router' command line (#3407)
1541  - A server factory for Jabber XML Streams has been added (#3435)
1542  - Domish now allows for iterating child elements with specific qualified names
1543    (#2429)
1544  - IRCClient now has a 'back' method which removes the away status (#3366)
1545  - IRCClient now has a 'whois' method (#3133)
1547 Fixes
1548 -----
1549  - The IRC Client implementation can now deal with compound mode changes (#3230)
1550  - The MSN protocol implementation no longer requires the CVR0 protocol to
1551    be included in the VER command (#3394)
1552  - In the IRC server implementation, topic messages will no longer be sent for
1553    a group which has no topic (#2204)
1554  - An infinite loop (which caused infinite memory usage) in irc.split has been
1555    fixed.  This was triggered any time a message that starts with a delimiter
1556    was sent (#3446)
1557  - Jabber's toResponse now generates a valid stanza even when stanzaType is not
1558    specified (#3467)
1559  - The lifetime of authenticator instances in XmlStreamServerFactory is no
1560    longer artificially extended (#3464)
1562 Other
1563 -----
1564  - #3365
1567 Core 8.1.0 (2008-05-18)
1568 =======================
1570 Features
1571 --------
1573  - twisted.internet.error.ConnectionClosed is a new exception which is the
1574    superclass of ConnectionLost and ConnectionDone (#3137)
1575  - Trial's CPU and memory performance should be better now (#3034)
1576  - twisted.python.filepath.FilePath now has a chmod method (#3124)
1578 Fixes
1579 -----
1581  - Some reactor re-entrancy regressions were fixed (#3146, #3168)
1582  - A regression was fixed whereby constructing a Failure for an exception and
1583    traceback raised out of a Pyrex extension would fail (#3132)
1584  - CopyableFailures in PB can again be created from CopiedFailures (#3174)
1585  - FilePath.remove, when called on a FilePath representing a symlink to a
1586    directory, no longer removes the contents of the targeted directory, and
1587    instead removes the symlink (#3097)
1588  - FilePath now has a linkTo method for creating new symlinks (#3122)
1589  - The docstring for Trial's addCleanup method now correctly specifies when
1590    cleanup functions are run (#3131)
1591  - assertWarns now deals better with multiple identical warnings (#2904)
1592  - Various windows installer bugs were fixed (#3115, #3144, #3150, #3151, #3164)
1593  - API links in the howto documentation have been corrected (#3130)
1594  - The Win32 Process transport object now has a pid attribute (#1836)
1595  - A doc bug in the twistd plugin howto which would inevitably lead to
1596    confusion was fixed (#3183)
1597  - A regression breaking IOCP introduced after the last release was fixed
1598    (#3200)
1600 Deprecations and Removals
1601 -------------------------
1603  - mktap is now fully deprecated, and will emit DeprecationWarnings when used
1604    (#3127)
1606 Other
1607 -----
1608  - #3079, #3118, #3120, #3145, #3069, #3149, #3186, #3208, #2762
1611 Conch 8.1.0 (2008-05-18)
1612 ========================
1614 Fixes
1615 -----
1616  - A regression was fixed whereby the publicKeys and privateKeys attributes of
1617    SSHFactory would not be interpreted as strings (#3141)
1618  - The sshsimpleserver.py example had a minor bug fix (#3135)
1619  - The deprecated mktap API is no longer used (#3127)
1620  - An infelicity was fixed whereby a NameError would be raised in certain
1621    circumstances during authentication when a ConchError should have been
1622    (#3154)
1623  - A workaround was added to conch.insults for a bug in gnome-terminal whereby
1624    it would not scroll correctly (#3189)
1627 Lore 8.1.0 (2008-05-18)
1628 =======================
1630 Fixes
1631 -----
1632  - The deprecated mktap API is no longer used (#3127)
1635 News 8.1.0 (2008-05-18)
1636 =======================
1638 Fixes
1639 -----
1640  - The deprecated mktap API is no longer used (#3127)
1643 Web 8.1.0 (2008-05-18)
1644 ======================
1646 Fixes
1647 -----
1648  - Fixed an XMLRPC bug whereby sometimes a callRemote Deferred would
1649    accidentally be fired twice when a connection was lost during the handling of
1650    a response (#3152)
1651  - Fixed a bug in the "Using Twisted Web" document which prevented an example
1652    resource from being renderable (#3147)
1653  - The deprecated mktap API is no longer used (#3127)
1656 Words 8.1.0 (2008-05-18)
1657 ========================
1659 Features
1660 --------
1661  - JID objects now have a nice __repr__ (#3156)
1662  - Extending XMPP protocols is now easier (#2178)
1664 Fixes
1665 -----
1666  - The deprecated mktap API is no longer used (#3127)
1667  - A bug whereby one-time XMPP observers would be enabled permanently was fixed
1668    (#3066)
1671 Mail 8.1.0 (2008-05-18)
1672 =======================
1674 Fixes
1675 -----
1676  - The deprecated mktap API is no longer used (#3127)
1679 Names 8.1.0 (2008-05-18)
1680 ========================
1682 Fixes
1683 -----
1684  - The deprecated mktap API is no longer used (#3127)
1687 Web2 8.1.0 (2008-05-18)
1688 =======================
1690 Fixes
1691 -----
1692  - The deprecated mktap API is no longer used (#3127)
1695 Core 8.0.1 (2008-03-26)
1696 =======================
1698 Fixes
1699 -----
1700  - README no longer refers to obsolete trial command line option
1701  - twistd no longer causes a bizarre DeprecationWarning about mktap
1704 Core 8.0.0 (2008-03-17)
1705 =======================
1707 Features
1708 --------
1710  - The IOCP reactor has had many changes and is now greatly improved
1711    (#1760, #3055)
1712  - The main Twisted distribution is now easy_installable (#1286, #3110)
1713  - twistd can now profile with cProfile (#2469)
1714  - twisted.internet.defer contains a DeferredFilesystemLock which gives a
1715    Deferred interface to lock file acquisition (#2180)
1716  - twisted.python.modules is a new system for representing and manipulating
1717    module paths (i.e. sys.path) (#1951)
1718  - twisted.internet.fdesc now contains a writeToFD function, along with other
1719    minor fixes (#2419)
1720  - twisted.python.usage now allows optional type enforcement (#739)
1721  - The reactor now has a blockingCallFromThread method for non-reactor threads
1722    to use to wait for a reactor-scheduled call to return a result (#1042, #3030)
1723  - Exceptions raised inside of inlineCallbacks-using functions now have a
1724    better chance of coming with a meaningful traceback (#2639, #2803)
1725  - twisted.python.randbytes now contains code for generating secure random
1726    bytes (#2685)
1727  - The classes in twisted.application.internet now accept a reactor parameter
1728    for specifying the reactor to use for underlying calls to allow for better
1729    testability (#2937)
1730  - LoopingCall now allows you to specify the reactor to use to schedule new
1731    calls, allowing much better testing techniques (#2633, #2634)
1732  - twisted.internet.task.deferLater is a new API for scheduling calls and
1733    getting deferreds which are fired with their results (#1875)
1734  - objgrep now knows how to search through deque objects (#2323)
1735  - twisted.python.log now contains a Twisted log observer which can forward
1736    messages to the Python logging system (#1351)
1737  - Log files now include seconds in the timestamps (#867)
1738  - It is now possible to limit the number of log files to create during log
1739    rotation (#1095)
1740  - The interface required by the log context system is now documented as
1741    ILoggingContext, and abstract.FileDescriptor now declares that it implements
1742    it (#1272)
1743  - There is now an example cred checker that uses a database via adbapi (#460)
1744  - The epoll reactor is now documented in the choosing-reactors howto (#2539)
1745  - There were improvements to the client howto (#222)
1746  - Int8Receiver was added (#2315)
1747  - Various refactorings to AMP introduced better testability and public
1748    interfaces (#2657, #2667, #2656, #2664, #2810)
1749  - twisted.protocol.policies.TrafficLoggingFactory now has a resetCounter
1750    method (#2757)
1751  - The FTP client can be told which port range within which to bind passive
1752    transfer ports (#1904)
1753  - twisted.protocols.memcache contains a new asynchronous memcache client
1754    (#2506, #2957)
1755  - PB now supports anonymous login (#439, #2312)
1756  - twisted.spread.jelly now supports decimal objects (#2920)
1757  - twisted.spread.jelly now supports all forms of sets (#2958)
1758  - There is now an interface describing the API that process protocols must
1759    provide (#3020)
1760  - Trial reporting to core unittest TestResult objects has been improved (#2495)
1761  - Trial's TestCase now has an addCleanup method which allows easy setup of
1762    tear-down code (#2610, #2899)
1763  - Trial's TestCase now has an assertIsInstance method (#2749)
1764  - Trial's memory footprint and speed are greatly improved (#2275)
1765  - At the end of trial runs, "PASSED" and "FAILED" messages are now colorized
1766    (#2856)
1767  - Tests which leave global state around in the reactor will now fail in
1768    trial. A new option, --unclean-warnings, will convert these errors back into
1769    warnings (#2091)
1770  - Trial now has a --without-module command line for testing code in an
1771    environment that lacks a particular Python module (#1795)
1772  - Error reporting of failed assertEquals assertions now has much nicer
1773    formatting (#2893)
1774  - Trial now has methods for monkey-patching (#2598)
1775  - Trial now has an ITestCase (#2898, #1950)
1776  - The trial reporter API now has a 'done' method which is called at the end of
1777    a test run (#2883)
1778  - TestCase now has an assertWarns method which allows testing that functions
1779    emit warnings (#2626, #2703)
1780  - There are now no string exceptions in the entire Twisted code base (#2063)
1781  - There is now a system for specifying credentials checkers with a string
1782    (#2570)
1784 Fixes
1785 -----
1787  - Some tests which were asserting the value of stderr have been changed
1788    because Python uncontrollably writes bytes to stderr (#2405)
1789  - Log files handle time zones with DST better (#2404)
1790  - Subprocesses using PTYs on OS X that are handled by Twisted will now be able
1791    to more reliably write the final bytes before they exit, allowing Twisted
1792    code to more reliably receive them (#2371, #2858)
1793  - Trial unit test reporting has been improved (#1901)
1794  - The kqueue reactor handles connection failures better (#2172)
1795  - It's now possible to run "trial foo/bar/" without an exception: trailing
1796    slashes no longer cause problems (#2005)
1797  - cred portals now better deal with implementations of inherited interfaces
1798    (#2523)
1799  - FTP error handling has been improved (#1160, 1107)
1800  - Trial behaves better with respect to file locking on Windows (#2482)
1801  - The FTP server now gives a better error when STOR is attempted during an
1802    anonymous session (#1575)
1803  - Trial now behaves better with tests that use the reactor's threadpool (#1832)
1804  - twisted.python.reload now behaves better with new-style objects (#2297)
1805  - LogFile's defaultMode parameter is now better implemented, preventing
1806    potential security exploits (#2586)
1807  - A minor obscure leak in thread pools was corrected (#1134)
1808  - twisted.internet.task.Clock now returns the correct DelayedCall from
1809    callLater, instead of returning the one scheduled for the furthest in the
1810    future (#2691)
1811  - twisted.spread.util.FilePager no longer unnecessarily buffers data in
1812    memory (#1843, 2321)
1813  - Asking for twistd or trial to use an unavailable reactor no longer prints a
1814    traceback (#2457)
1815  - System event triggers have fewer obscure bugs (#2509)
1816  - Plugin discovery code is much better behaved, allowing multiple
1817    installations of a package with plugins (#2339, #2769)
1818  - Process and PTYProcess have been merged and some minor bugs have been fixed
1819    (#2341)
1820  - The reactor has less global state (#2545)
1821  - Failure can now correctly represent and format errors caused by string
1822    exceptions (#2830)
1823  - The epoll reactor now has better error handling which now avoids the bug
1824    causing 100% CPU usage in some cases (#2809)
1825  - Errors raised during trial setUp or tearDown methods are now handled better
1826    (#2837)
1827  - A problem when deferred callbacks add new callbacks to the deferred that
1828    they are a callback of was fixed (#2849)
1829  - Log messages that are emitted during connectionMade now have the protocol
1830    prefix correctly set (#2813)
1831  - The string representation of a TCP Server connection now contains the actual
1832    port that it's bound to when it was configured to listen on port 0 (#2826)
1833  - There is better reporting of error codes for TCP failures on Windows (#2425)
1834  - Process spawning has been made slightly more robust by disabling garbage
1835    collection temporarily immediately after forking so that finalizers cannot
1836    be executed in an unexpected environment (#2483)
1837  - namedAny now detects import errors better (#698)
1838  - Many fixes and improvements to the twisted.python.zipstream module have
1839    been made (#2996)
1840  - FilePager no longer blows up on empty files (#3023)
1841  - twisted.python.util.FancyEqMixin has been improved to cooperate with objects
1842    of other types (#2944)
1843  - twisted.python.FilePath.exists now restats to prevent incorrect result
1844    (#2896)
1845  - twisted.python.util.mergeFunctionMetadata now also merges the __module__
1846    attribute (#3049)
1847  - It is now possible to call transport.pauseProducing within connectionMade on
1848    TCP transports without it being ignored (#1780)
1849  - twisted.python.versions now understands new SVN metadata format for fetching
1850    the SVN revision number (#3058)
1851  - It's now possible to use reactor.callWhenRunning(reactor.stop) on gtk2 and
1852    glib2 reactors (#3011)
1854 Deprecations and removals
1855 -------------------------
1856  - twisted.python.timeoutqueue is now deprecated (#2536)
1857  - twisted.enterprise.row and twisted.enterprise.reflector are now deprecated
1858    (#2387)
1859  - twisted.enterprise.util is now deprecated (#3022)
1860  - The dispatch and dispatchWithCallback methods of ThreadPool are now
1861    deprecated (#2684)
1862  - Starting the same reactor multiple times is now deprecated (#1785)
1863  - The visit method of various test classes in trial has been deprecated (#2897)
1864  - The --report-profile option to twistd and twisted.python.dxprofile are
1865    deprecated (#2908)
1866  - The upDownError method of Trial reporters is deprecated (#2883)
1868 Other
1869 -----
1871  - #2396, #2211, #1921, #2378, #2247, #1603, #2463, #2530, #2426, #2356, #2574,
1872  - #1844, #2575, #2655, #2640, #2670, #2688, #2543, #2743, #2744, #2745, #2746,
1873  - #2742, #2741, #1730, #2831, #2216, #1192, #2848, #2767, #1220, #2727, #2643,
1874  - #2669, #2866, #2867, #1879, #2766, #2855, #2547, #2857, #2862, #1264, #2735,
1875  - #942, #2885, #2739, #2901, #2928, #2954, #2906, #2925, #2942, #2894, #2793,
1876  - #2761, #2977, #2968, #2895, #3000, #2990, #2919, #2969, #2921, #3005, #421,
1877  - #3031, #2940, #1181, #2783, #1049, #3053, #2847, #2941, #2876, #2886, #3086,
1878  - #3095, #3109
1881 Conch 8.0.0 (2008-03-17)
1882 ========================
1884 Features
1885 --------
1886  - Add DEC private mode manipulation methods to ITerminalTransport. (#2403)
1888 Fixes
1889 -----
1890  - Parameterize the scheduler function used by the insults TopWindow widget.
1891    This change breaks backwards compatibility in the TopWindow initializer.
1892    (#2413)
1893  - Notify subsystems, like SFTP, of connection close. (#2421)
1894  - Change the process file descriptor "connection lost" code to reverse the
1895    setNonBlocking operation done during initialization. (#2371)
1896  - Change ConsoleManhole to wait for connectionLost notification before
1897    stopping the reactor. (#2123, #2371)
1898  - Make SSHUserAuthServer.ssh_USERAUTH_REQUEST return a Deferred. (#2528)
1899  - Manhole's initializer calls its parent class's initializer with its
1900    namespace argument. (#2587)
1901  - Handle ^C during input line continuation in manhole by updating the prompt
1902    and line buffer correctly. (#2663)
1903  - Make twisted.conch.telnet.Telnet by default reject all attempts to enable
1904    options. (#1967)
1905  - Reduce the number of calls into application code to deliver application-level
1906    data in twisted.conch.telnet.Telnet.dataReceived (#2107)
1907  - Fix definition and management of extended attributes in conch file transfer.
1908    (#3010)
1909  - Fix parsing of OpenSSH-generated RSA keys with differing ASN.1 packing style.
1910    (#3008)
1911  - Fix handling of missing $HOME in twisted.conch.client.unix. (#3061)
1913 Misc
1914 ----
1915  - #2267, #2378, #2604, #2707, #2341, #2685, #2679, #2912, #2977, #2678, #2709
1916    #2063, #2847
1919 Lore 8.0.0 (2008-03-17)
1920 =======================
1922 Fixes
1923 -----
1924  - Change twisted.lore.tree.setIndexLin so that it removes node with index-link
1925    class when the specified index filename is None. (#812)
1926  - Fix the conversion of the list of options in man pages to Lore format.
1927    (#3017)
1928  - Fix conch man pages generation. (#3075)
1929  - Fix management of the interactive command tag in man2lore. (#3076)
1931 Misc
1932 ----
1933  - #2847
1936 News 8.0.0 (2008-03-17)
1937 =======================
1939 Misc
1940 ----
1941  - Remove all "API Stability" markers (#2847)
1944 Runner 8.0.0 (2008-03-17)
1945 =========================
1947 Misc
1948 ----
1949  - Remove all "API Stability" markers (#2847)
1952 Web 8.0.0 (2008-03-17)
1953 ======================
1955 Features
1956 --------
1957  - Add support to twisted.web.client.getPage for the HTTP HEAD method. (#2750)
1959 Fixes
1960 -----
1961  - Set content-type in xmlrpc responses to "text/xml" (#2430)
1962  - Add more error checking in the xmlrpc.XMLRPC render method, and enforce
1963    POST requests. (#2505)
1964  - Reject unicode input to twisted.web.client._parse to reject invalid
1965    unicode URLs early. (#2628)
1966  - Correctly re-quote URL path segments when generating an URL string to
1967    return from Request.prePathURL. (#2934)
1968  - Make twisted.web.proxy.ProxyClientFactory close the connection when
1969    reporting a 501 error. (#1089)
1970  - Fix twisted.web.proxy.ReverseProxyResource to specify the port in the
1971    host header if different from 80. (#1117)
1972  - Change twisted.web.proxy.ReverseProxyResource so that it correctly encodes
1973    the request URI it sends on to the server for which it is a proxy. (#3013)
1974  - Make "twistd web --personal" use PBServerFactory (#2681)
1976 Misc
1977 ----
1978  - #1996, #2382, #2211, #2633, #2634, #2640, #2752, #238, #2905
1981 Words 8.0.0 (2008-03-17)
1982 ========================
1984 Features
1985 --------
1986  - Provide function for creating XMPP response stanzas. (#2614, #2614)
1987  - Log exceptions raised in Xish observers. (#2616)
1988  - Add 'and' and 'or' operators for Xish XPath expressions. (#2502)
1989  - Make JIDs hashable. (#2770)
1991 Fixes
1992 -----
1993  - Respect the hostname and servername parameters to IRCClient.register. (#1649)
1994  - Make EventDispatcher remove empty callback lists. (#1652)
1995  - Use legacy base64 API to support Python 2.3 (#2461)
1996  - Fix support of DIGEST-MD5 challenge parsing with multi-valued directives.
1997    (#2606)
1998  - Fix reuse of dict of prefixes in domish.Element.toXml (#2609)
1999  - Properly process XMPP stream headers (#2615)
2000  - Use proper namespace for XMPP stream errors. (#2630)
2001  - Properly parse XMPP stream errors. (#2771)
2002  - Fix toResponse for XMPP stanzas without an id attribute. (#2773)
2003  - Move XMPP stream header procesing to authenticators. (#2772)
2005 Misc
2006 ----
2007  - #2617, #2640, #2741, #2063, #2570, #2847
2010 Mail 8.0.0 (2008-03-17)
2011 =======================
2013 Features
2014 --------
2015  - Support CAPABILITY responses that include atoms of the form "FOO" and
2016    "FOO=BAR" in IMAP4 (#2695)
2017  - Parameterize error handling behavior of imap4.encoder and imap4.decoder.
2018    (#2929)
2020 Fixes
2021 -----
2022  - Handle empty passwords in SMTP auth. (#2521)
2023  - Fix IMAP4Client's parsing of literals which are not preceeded by whitespace.
2024    (#2700)
2025  - Handle MX lookup suceeding without answers. (#2807)
2026  - Fix issues with aliases(5) process support. (#2729)
2028 Misc
2029 ----
2030  - #2371, #2123, #2378, #739, #2640, #2746, #1917, #2266, #2864, #2832, #2063,
2031    #2865, #2847
2034 Names 8.0.0 (2008-03-17)
2035 ========================
2037 Fixes
2038 -----
2040  - Refactor DNSDatagramProtocol and DNSProtocol to use same base class (#2414)
2041  - Change Resolver to query specified nameservers in specified order, instead
2042    of reverse order. (#2290)
2043  - Make SRVConnector work with bad results and NXDOMAIN responses.
2044    (#1908, #2777)
2045  - Handle write errors happening in dns queries, to have correct deferred
2046    failures. (#2492)
2047  - Fix the value of OP_NOTIFY and add a definition for OP_UPDATE. (#2945)
2049 Misc
2050 ----
2051  - #2685, #2936, #2581, #2847