Ticket numbers in this file can be looked up by visiting
http://twistedmatrix.com/trac/ticket/<number>

Core 8.2.0 (2008-12-16)
=======================

Features
--------
 - Reactors are slowly but surely becoming more isolated, thus improving
   testability (#3198)
 - FilePath has gained a realpath method, and FilePath.walk no longer infinitely
   recurses in the case of a symlink causing a self-recursing filesystem tree
   (#3098)
 - FilePath's moveTo and copyTo methods now have an option to disable following
   of symlinks (#3105)
 - Private APIs are now included in the API documentation (#3268)
 - hotshot is now the default profiler for the twistd --profile parameter and
   using cProfile is now documented (#3355, #3356)
 - Process protocols can now implement a processExited method, which is
   distinct from processEnded in that it is called immediately when the child
   has died, instead of waiting for all the file descriptors to be closed
   (#1291)
 - twistd now has a --umask option (#966, #3024)
 - A new deferToThreadPool function exists in twisted.internet.threads (#2845)
 - There is now an example of writing an FTP server in examples/ftpserver.py
   (#1579)
 - A new runAsEffectiveUser function has been added to twisted.python.util
   (#2607)
 - twisted.internet.utils.getProcessOutput now offers a mechanism for
   waiting for the process to actually end, in the event of data received on
   stderr (#3239)
 - A fullyQualifiedName function has been added to twisted.python.reflect
   (#3254)
 - strports now defaults to managing access to a UNIX socket with a lock;
   lockfile=0 can be included in the strports specifier to disable this
   behavior (#2295)
 - FTPClient now has a 'rename' method (#3335)
 - FTPClient now has a 'makeDirectory' method (#3500)
 - FTPClient now has a 'removeFile' method (#3491)
 - flushWarnings, A new Trial method for testing warnings, has been added
   (#3487, #3427, #3506)
 - The log observer can now be configured in .tac files (#3534)

Fixes
-----
 - TLS Session Tickets are now disabled by default, allowing connections to
   certain servers which hang when an empty session ticket is received (like
   GTalk) (#3463)
 - twisted.enterprise.adbapi.ConnectionPool's noisy attribute now defaults to
   False, as documented (#1806)
 - Error handling and logging in adbapi is now much improved (#3244)
 - TCP listeners can now be restarted (#2913)
 - Doctests can now be rerun with trial's --until-failure option (#2713)
 - Some memory leaks have been fixed in trial's --until-failure
   implementation (#3119, #3269)
 - Trial's summary reporter now prints correct runtime information and handles
   the case of 0 tests (#3184)
 - Trial and any other user of the 'namedAny' function now has better error
   reporting in the case of invalid module names (#3259)
 - Multiple instances of trial can now run in parallel in the same directory
   by creating _trial_temp directories with an incremental suffix (#2338)
 - Trial's failUnlessWarns method now works on Python 2.6 (#3223)
 - twisted.python.log now hooks into the warnings system in a way compatible
   with Python 2.6 (#3211)
 - The GTK2 reactor is now better supported on Windows, but still not passing
   the entire test suite (#3203)
 - low-level failure handling in spawnProcess has been improved and no longer
   leaks file descriptors (#2305, #1410)
 - Perspective Broker avatars now have their logout functions called in more
   cases (#392)
 - Log observers which raise exceptions are no longer removed (#1069)
 - transport.getPeer now always includes an IP address in the Address returned
   instead of a hostname (#3059)
 - Functions in twisted.internet.utils which spawn processes now avoid calling
   chdir in the case where no working directory is passed, to avoid some
   obscure permission errors (#3159)
 - twisted.spread.publish.Publishable no longer corrupts line endings on
   Windows (#2327)
 - SelectReactor now properly detects when a TLS/TCP connection has been
   disconnected (#3218)
 - twisted.python.lockfile no longer raises an EEXIST OSError and is much
   better supported on Windows (#3367)
 - When ITLSTransport.startTLS is called while there is data in the write
   buffer, TLS negotiation will now be delayed instead of the method raising
   an exception (#686)
 - The userAnonymous argument to FTPFactory is now honored (#3390)
 - twisted.python.modules no longer tries to "fix" sys.modules after an import
   error, which was just causing problems (#3388)
 - setup.py no longer attempts to build extension modules when run with Jython
   (#3410)
 - AMP boxes can now be sent in IBoxReceiver.startReceivingBoxes (#3477)
 - AMP connections are closed as soon as a key length larger than 255 is
   received (#3478)
 - Log events with timezone offsets between -1 and -59 minutes are now
   correctly reported as negative (#3515)

Deprecations and Removals
-------------------------
 - Trial's setUpClass and tearDownClass methods are now deprecated (#2903)
 - problemsFromTransport has been removed in favor of the argument passed to
   connectionLost (#2874)
 - The mode parameter to methods of IReactorUNIX and IReactorUNIXDatagram are
   deprecated in favor of applications taking other security precautions, since
   the mode of a Unix socket is often not respected (#1068)
 - Index access on instances of twisted.internet.defer.FirstError has been
   removed in favor of the subFailure attribute (#3298)
 - The 'changeDirectory' method of FTPClient has been deprecated in favor of
   the 'cwd' method (#3491)

Other
-----

 - #3202, #2869, #3225, #2955, #3237, #3196, #2355, #2881, #3054, #2374, #2918,
   #3210, #3052, #3267, #3288, #2985, #3295, #3297, #2512, #3302, #1222, #2631,
   #3306, #3116, #3215, #1489, #3319, #3320, #3321, #1255, #2169, #3182, #3323,
   #3301, #3318, #3029, #3338, #3346, #1144, #3173, #3165, #685, #3357, #2582,
   #3370, #2438, #1253, #637, #1971, #2208, #979, #1790, #1888, #1882, #1793,
   #754, #1890, #1931, #1246, #1025, #3177, #2496, #2567, #3400, #2213, #2027,
   #3415, #1262, #3422, #2500, #3414, #3045, #3111, #2974, #2947, #3222, #2878,
   #3402, #2909, #3423, #1328, #1852, #3382, #3393, #2029, #3489, #1853, #2026,
   #2375, #3502, #3482, #3504, #3505, #3507, #2605, #3519, #3520, #3121, #3484,
   #3439, #3216, #3511, #3524, #3521, #3197, #2486, #2449, #2748, #3381, #3236,
   #671


Conch 8.2.0 (2008-12-16)
========================

Features
--------
 - The type of the protocols instantiated by SSHFactory is now parameterized
   (#3443)

Fixes
-----
 - A file descriptor leak has been fixed (#3213, #1789)
 - "File Already Exists" errors are now handled more correctly (#3033)
 - Handling of CR IAC in TelnetClient is now improved (#3305)
 - SSHAgent is no longer completely unusable (#3332)
 - The performance of insults.ClientProtocol is now greatly increased by
   delivering more than one byte at a time to application code (#3386)
 - Manhole and the conch server no longer need to be run as root when not
   necessary (#2607)
 - The value of FILEXFER_ATTR_ACMODTIME has been corrected (#2902)
 - The management of known_hosts and host key verification has been overhauled
   (#1376, #1301, #3494, #3496, #1292, #3499)

Other
-----
 - #3193, #1633


Lore 8.2.0 (2008-12-16)
=======================

Other
-----
 - #2207, #2514


Mail 8.2.0 (2008-12-16)
=======================

Fixes
-----
 - The mailmail tool now provides better error messages for usage errors (#3339)
 - The SMTP protocol implementation now works on PyPy (#2976)

Other
-----
 - #3475


Names 8.2.0 (2008-12-16)
========================

Features
--------
 - The NAPTR record type is now supported (#2276)

Fixes
-----
 - Make client.Resolver less vulnerable to the Birthday Paradox attack by
   avoiding sending duplicate queries when it's not necessary (#3347)
 - client.Resolver now uses a random source port for each DNS request (#3342)
 - client.Resolver now uses a full 16 bits of randomness for message IDs,
   instead of 10 which it previously used (#3342)
 - All record types now have value-based equality and a string representation
   (#2935)

Other
-----
 - #1622, #3424


Web 8.2.0 (2008-12-16)
======================

Features
--------
 - The web server can now deal with multi-value headers in the new attributes of
   Request, requestHeaders and responseHeaders (#165)
 - There is now a resource-wrapper which implements HTTP Basic and Digest auth
   in terms of twisted.cred (#696)
 - It's now possible to limit the number of redirects that client.getPage will
   follow (#2412)
 - The directory-listing code no longer uses Woven (#3257)
 - static.File now supports Range headers with a single range (#1493)
 - twisted.web now has a rudimentary WSGI container (#2753)
 - The web server now supports chunked encoding in requests (#3385)

Fixes
-----
 - The xmlrpc client now raises an error when the server sends an empty
   response (#3399)
 - HTTPPageGetter no longer duplicates default headers when they're explicitly
   overridden in the headers parameter (#1382)
 - The server will no longer timeout clients which are still sending request
   data (#1903)
 - microdom's isEqualToNode now returns False when the nodes aren't equal
   (#2542)

Deprecations and Removals
-------------------------

 - Request.headers and Request.received_headers are not quite deprecated, but
   they are discouraged in favor of requestHeaders and responseHeaders (#165)

Other
-----
 - #909, #687, #2938, #1152, #2930, #2025, #2683, #3471


Web2 8.2.0 (2008-12-16)
=======================

Note: Twisted Web2 is being phased out in preference for Twisted Web, but some
maintenance changes have been made.

Fixes
-----
 - The main twisted.web2 docstring now indicates the current state of the
   project (#2028)
 - Headers which require unusual bytes are now quoted (#2346)
 - Some links in the introduction documentation have been fixed (#2552)


Words 8.2.0 (2008-12-16)
========================

Feature
-------
 - There is now a standalone XMPP router included in twisted.words: it can be
   used with the 'twistd xmpp-router' command line (#3407)
 - A server factory for Jabber XML Streams has been added (#3435)
 - Domish now allows for iterating child elements with specific qualified names
   (#2429)
 - IRCClient now has a 'back' method which removes the away status (#3366)
 - IRCClient now has a 'whois' method (#3133)

Fixes
-----
 - The IRC Client implementation can now deal with compound mode changes (#3230)
 - The MSN protocol implementation no longer requires the CVR0 protocol to
   be included in the VER command (#3394)
 - In the IRC server implementation, topic messages will no longer be sent for
   a group which has no topic (#2204)
 - An infinite loop (which caused infinite memory usage) in irc.split has been
   fixed.  This was triggered any time a message that starts with a delimiter
   was sent (#3446)
 - Jabber's toResponse now generates a valid stanza even when stanzaType is not
   specified (#3467)
 - The lifetime of authenticator instances in XmlStreamServerFactory is no
   longer artificially extended (#3464)

Other
-----
 - #3365


Core 8.1.0 (2008-05-18)
=======================

Features
--------

 - twisted.internet.error.ConnectionClosed is a new exception which is the
   superclass of ConnectionLost and ConnectionDone (#3137)
 - Trial's CPU and memory performance should be better now (#3034)
 - twisted.python.filepath.FilePath now has a chmod method (#3124)

Fixes
-----

 - Some reactor re-entrancy regressions were fixed (#3146, #3168)
 - A regression was fixed whereby constructing a Failure for an exception and
   traceback raised out of a Pyrex extension would fail (#3132)
 - CopyableFailures in PB can again be created from CopiedFailures (#3174)
 - FilePath.remove, when called on a FilePath representing a symlink to a
   directory, no longer removes the contents of the targeted directory, and
   instead removes the symlink (#3097)
 - FilePath now has a linkTo method for creating new symlinks (#3122)
 - The docstring for Trial's addCleanup method now correctly specifies when
   cleanup functions are run (#3131)
 - assertWarns now deals better with multiple identical warnings (#2904)
 - Various windows installer bugs were fixed (#3115, #3144, #3150, #3151, #3164)
 - API links in the howto documentation have been corrected (#3130)
 - The Win32 Process transport object now has a pid attribute (#1836)
 - A doc bug in the twistd plugin howto which would inevitably lead to
   confusion was fixed (#3183)
 - A regression breaking IOCP introduced after the last release was fixed
   (#3200)

Deprecations and Removals
-------------------------

 - mktap is now fully deprecated, and will emit DeprecationWarnings when used
   (#3127)

Other
-----
 - #3079, #3118, #3120, #3145, #3069, #3149, #3186, #3208, #2762


Conch 8.1.0 (2008-05-18)
========================

Fixes
-----
 - A regression was fixed whereby the publicKeys and privateKeys attributes of
   SSHFactory would not be interpreted as strings (#3141)
 - The sshsimpleserver.py example had a minor bug fix (#3135)
 - The deprecated mktap API is no longer used (#3127)
 - An infelicity was fixed whereby a NameError would be raised in certain
   circumstances during authentication when a ConchError should have been
   (#3154)
 - A workaround was added to conch.insults for a bug in gnome-terminal whereby
   it would not scroll correctly (#3189)


Lore 8.1.0 (2008-05-18)
=======================

Fixes
-----
 - The deprecated mktap API is no longer used (#3127)


News 8.1.0 (2008-05-18)
=======================

Fixes
-----
 - The deprecated mktap API is no longer used (#3127)


Web 8.1.0 (2008-05-18)
======================

Fixes
-----
 - Fixed an XMLRPC bug whereby sometimes a callRemote Deferred would
   accidentally be fired twice when a connection was lost during the handling of
   a response (#3152)
 - Fixed a bug in the "Using Twisted Web" document which prevented an example
   resource from being renderable (#3147)
 - The deprecated mktap API is no longer used (#3127)


Words 8.1.0 (2008-05-18)
========================

Features
--------
 - JID objects now have a nice __repr__ (#3156)
 - Extending XMPP protocols is now easier (#2178)

Fixes
-----
 - The deprecated mktap API is no longer used (#3127)
 - A bug whereby one-time XMPP observers would be enabled permanently was fixed
   (#3066)


Mail 8.1.0 (2008-05-18)
=======================

Fixes
-----
 - The deprecated mktap API is no longer used (#3127)


Names 8.1.0 (2008-05-18)
========================

Fixes
-----
 - The deprecated mktap API is no longer used (#3127)


Web2 8.1.0 (2008-05-18)
=======================

Fixes
-----
 - The deprecated mktap API is no longer used (#3127)


Core 8.0.1 (2008-03-26)
=======================

Fixes
-----
 - README no longer refers to obsolete trial command line option
 - twistd no longer causes a bizarre DeprecationWarning about mktap


Core 8.0.0 (2008-03-17)
=======================

Features
--------

 - The IOCP reactor has had many changes and is now greatly improved
   (#1760, #3055)
 - The main Twisted distribution is now easy_installable (#1286, #3110)
 - twistd can now profile with cProfile (#2469)
 - twisted.internet.defer contains a DeferredFilesystemLock which gives a
   Deferred interface to lock file acquisition (#2180)
 - twisted.python.modules is a new system for representing and manipulating
   module paths (i.e. sys.path) (#1951)
 - twisted.internet.fdesc now contains a writeToFD function, along with other
   minor fixes (#2419)
 - twisted.python.usage now allows optional type enforcement (#739)
 - The reactor now has a blockingCallFromThread method for non-reactor threads
   to use to wait for a reactor-scheduled call to return a result (#1042, #3030)
 - Exceptions raised inside of inlineCallbacks-using functions now have a
   better chance of coming with a meaningful traceback (#2639, #2803)
 - twisted.python.randbytes now contains code for generating secure random
   bytes (#2685)
 - The classes in twisted.application.internet now accept a reactor parameter
   for specifying the reactor to use for underlying calls to allow for better
   testability (#2937)
 - LoopingCall now allows you to specify the reactor to use to schedule new
   calls, allowing much better testing techniques (#2633, #2634)
 - twisted.internet.task.deferLater is a new API for scheduling calls and
   getting deferreds which are fired with their results (#1875)
 - objgrep now knows how to search through deque objects (#2323)
 - twisted.python.log now contains a Twisted log observer which can forward
   messages to the Python logging system (#1351)
 - Log files now include seconds in the timestamps (#867)
 - It is now possible to limit the number of log files to create during log
   rotation (#1095)
 - The interface required by the log context system is now documented as
   ILoggingContext, and abstract.FileDescriptor now declares that it implements
   it (#1272)
 - There is now an example cred checker that uses a database via adbapi (#460)
 - The epoll reactor is now documented in the choosing-reactors howto (#2539)
 - There were improvements to the client howto (#222)
 - Int8Receiver was added (#2315)
 - Various refactorings to AMP introduced better testability and public
   interfaces (#2657, #2667, #2656, #2664, #2810)
 - twisted.protocol.policies.TrafficLoggingFactory now has a resetCounter
   method (#2757)
 - The FTP client can be told which port range within which to bind passive
   transfer ports (#1904)
 - twisted.protocols.memcache contains a new asynchronous memcache client
   (#2506, #2957)
 - PB now supports anonymous login (#439, #2312)
 - twisted.spread.jelly now supports decimal objects (#2920)
 - twisted.spread.jelly now supports all forms of sets (#2958)
 - There is now an interface describing the API that process protocols must
   provide (#3020)
 - Trial reporting to core unittest TestResult objects has been improved (#2495)
 - Trial's TestCase now has an addCleanup method which allows easy setup of
   tear-down code (#2610, #2899)
 - Trial's TestCase now has an assertIsInstance method (#2749)
 - Trial's memory footprint and speed are greatly improved (#2275)
 - At the end of trial runs, "PASSED" and "FAILED" messages are now colorized
   (#2856)
 - Tests which leave global state around in the reactor will now fail in
   trial. A new option, --unclean-warnings, will convert these errors back into
   warnings (#2091)
 - Trial now has a --without-module command line for testing code in an
   environment that lacks a particular Python module (#1795)
 - Error reporting of failed assertEquals assertions now has much nicer
   formatting (#2893)
 - Trial now has methods for monkey-patching (#2598)
 - Trial now has an ITestCase (#2898, #1950)
 - The trial reporter API now has a 'done' method which is called at the end of
   a test run (#2883)
 - TestCase now has an assertWarns method which allows testing that functions
   emit warnings (#2626, #2703)
 - There are now no string exceptions in the entire Twisted code base (#2063)
 - There is now a system for specifying credentials checkers with a string
   (#2570)

Fixes
-----

 - Some tests which were asserting the value of stderr have been changed
   because Python uncontrollably writes bytes to stderr (#2405)
 - Log files handle time zones with DST better (#2404)
 - Subprocesses using PTYs on OS X that are handled by Twisted will now be able
   to more reliably write the final bytes before they exit, allowing Twisted
   code to more reliably receive them (#2371, #2858)
 - Trial unit test reporting has been improved (#1901)
 - The kqueue reactor handles connection failures better (#2172)
 - It's now possible to run "trial foo/bar/" without an exception: trailing
   slashes no longer cause problems (#2005)
 - cred portals now better deal with implementations of inherited interfaces
   (#2523)
 - FTP error handling has been improved (#1160, 1107)
 - Trial behaves better with respect to file locking on Windows (#2482)
 - The FTP server now gives a better error when STOR is attempted during an
   anonymous session (#1575)
 - Trial now behaves better with tests that use the reactor's threadpool (#1832)
 - twisted.python.reload now behaves better with new-style objects (#2297)
 - LogFile's defaultMode parameter is now better implemented, preventing
   potential security exploits (#2586)
 - A minor obscure leak in thread pools was corrected (#1134)
 - twisted.internet.task.Clock now returns the correct DelayedCall from
   callLater, instead of returning the one scheduled for the furthest in the
   future (#2691)
 - twisted.spread.util.FilePager no longer unnecessarily buffers data in
   memory (#1843, 2321)
 - Asking for twistd or trial to use an unavailable reactor no longer prints a
   traceback (#2457)
 - System event triggers have fewer obscure bugs (#2509)
 - Plugin discovery code is much better behaved, allowing multiple
   installations of a package with plugins (#2339, #2769)
 - Process and PTYProcess have been merged and some minor bugs have been fixed
   (#2341)
 - The reactor has less global state (#2545)
 - Failure can now correctly represent and format errors caused by string
   exceptions (#2830)
 - The epoll reactor now has better error handling which now avoids the bug
   causing 100% CPU usage in some cases (#2809)
 - Errors raised during trial setUp or tearDown methods are now handled better
   (#2837)
 - A problem when deferred callbacks add new callbacks to the deferred that
   they are a callback of was fixed (#2849)
 - Log messages that are emitted during connectionMade now have the protocol
   prefix correctly set (#2813)
 - The string representation of a TCP Server connection now contains the actual
   port that it's bound to when it was configured to listen on port 0 (#2826)
 - There is better reporting of error codes for TCP failures on Windows (#2425)
 - Process spawning has been made slightly more robust by disabling garbage
   collection temporarily immediately after forking so that finalizers cannot
   be executed in an unexpected environment (#2483)
 - namedAny now detects import errors better (#698)
 - Many fixes and improvements to the twisted.python.zipstream module have
   been made (#2996)
 - FilePager no longer blows up on empty files (#3023)
 - twisted.python.util.FancyEqMixin has been improved to cooperate with objects
   of other types (#2944)
 - twisted.python.FilePath.exists now restats to prevent incorrect result
   (#2896)
 - twisted.python.util.mergeFunctionMetadata now also merges the __module__
   attribute (#3049)
 - It is now possible to call transport.pauseProducing within connectionMade on
   TCP transports without it being ignored (#1780)
 - twisted.python.versions now understands new SVN metadata format for fetching
   the SVN revision number (#3058)
 - It's now possible to use reactor.callWhenRunning(reactor.stop) on gtk2 and
   glib2 reactors (#3011)

Deprecations and removals
-------------------------
 - twisted.python.timeoutqueue is now deprecated (#2536)
 - twisted.enterprise.row and twisted.enterprise.reflector are now deprecated
   (#2387)
 - twisted.enterprise.util is now deprecated (#3022)
 - The dispatch and dispatchWithCallback methods of ThreadPool are now
   deprecated (#2684)
 - Starting the same reactor multiple times is now deprecated (#1785)
 - The visit method of various test classes in trial has been deprecated (#2897)
 - The --report-profile option to twistd and twisted.python.dxprofile are
   deprecated (#2908)
 - The upDownError method of Trial reporters is deprecated (#2883)

Other
-----

 - #2396, #2211, #1921, #2378, #2247, #1603, #2463, #2530, #2426, #2356, #2574,
 - #1844, #2575, #2655, #2640, #2670, #2688, #2543, #2743, #2744, #2745, #2746,
 - #2742, #2741, #1730, #2831, #2216, #1192, #2848, #2767, #1220, #2727, #2643,
 - #2669, #2866, #2867, #1879, #2766, #2855, #2547, #2857, #2862, #1264, #2735,
 - #942, #2885, #2739, #2901, #2928, #2954, #2906, #2925, #2942, #2894, #2793,
 - #2761, #2977, #2968, #2895, #3000, #2990, #2919, #2969, #2921, #3005, #421,
 - #3031, #2940, #1181, #2783, #1049, #3053, #2847, #2941, #2876, #2886, #3086,
 - #3095, #3109


Conch 8.0.0 (2008-03-17)
========================

Features
--------
 - Add DEC private mode manipulation methods to ITerminalTransport. (#2403)

Fixes
-----
 - Parameterize the scheduler function used by the insults TopWindow widget.
   This change breaks backwards compatibility in the TopWindow initializer.
   (#2413)
 - Notify subsystems, like SFTP, of connection close. (#2421)
 - Change the process file descriptor "connection lost" code to reverse the
   setNonBlocking operation done during initialization. (#2371)
 - Change ConsoleManhole to wait for connectionLost notification before
   stopping the reactor. (#2123, #2371)
 - Make SSHUserAuthServer.ssh_USERAUTH_REQUEST return a Deferred. (#2528)
 - Manhole's initializer calls its parent class's initializer with its
   namespace argument. (#2587)
 - Handle ^C during input line continuation in manhole by updating the prompt
   and line buffer correctly. (#2663)
 - Make twisted.conch.telnet.Telnet by default reject all attempts to enable
   options. (#1967)
 - Reduce the number of calls into application code to deliver application-level
   data in twisted.conch.telnet.Telnet.dataReceived (#2107)
 - Fix definition and management of extended attributes in conch file transfer.
   (#3010)
 - Fix parsing of OpenSSH-generated RSA keys with differing ASN.1 packing style.
   (#3008)
 - Fix handling of missing $HOME in twisted.conch.client.unix. (#3061)

Misc
----
 - #2267, #2378, #2604, #2707, #2341, #2685, #2679, #2912, #2977, #2678, #2709
   #2063, #2847


Lore 8.0.0 (2008-03-17)
=======================

Fixes
-----
 - Change twisted.lore.tree.setIndexLin so that it removes node with index-link
   class when the specified index filename is None. (#812)
 - Fix the conversion of the list of options in man pages to Lore format.
   (#3017)
 - Fix conch man pages generation. (#3075)
 - Fix management of the interactive command tag in man2lore. (#3076)

Misc
----
 - #2847


News 8.0.0 (2008-03-17)
=======================

Misc
----
 - Remove all "API Stability" markers (#2847)


Runner 8.0.0 (2008-03-17)
=========================

Misc
----
 - Remove all "API Stability" markers (#2847)


Web 8.0.0 (2008-03-17)
======================

Features
--------
 - Add support to twisted.web.client.getPage for the HTTP HEAD method. (#2750)

Fixes
-----
 - Set content-type in xmlrpc responses to "text/xml" (#2430)
 - Add more error checking in the xmlrpc.XMLRPC render method, and enforce
   POST requests. (#2505)
 - Reject unicode input to twisted.web.client._parse to reject invalid
   unicode URLs early. (#2628)
 - Correctly re-quote URL path segments when generating an URL string to
   return from Request.prePathURL. (#2934)
 - Make twisted.web.proxy.ProxyClientFactory close the connection when
   reporting a 501 error. (#1089)
 - Fix twisted.web.proxy.ReverseProxyResource to specify the port in the
   host header if different from 80. (#1117)
 - Change twisted.web.proxy.ReverseProxyResource so that it correctly encodes
   the request URI it sends on to the server for which it is a proxy. (#3013)
 - Make "twistd web --personal" use PBServerFactory (#2681)

Misc
----
 - #1996, #2382, #2211, #2633, #2634, #2640, #2752, #238, #2905


Words 8.0.0 (2008-03-17)
========================

Features
--------
 - Provide function for creating XMPP response stanzas. (#2614, #2614)
 - Log exceptions raised in Xish observers. (#2616)
 - Add 'and' and 'or' operators for Xish XPath expressions. (#2502)
 - Make JIDs hashable. (#2770)

Fixes
-----
 - Respect the hostname and servername parameters to IRCClient.register. (#1649)
 - Make EventDispatcher remove empty callback lists. (#1652)
 - Use legacy base64 API to support Python 2.3 (#2461)
 - Fix support of DIGEST-MD5 challenge parsing with multi-valued directives.
   (#2606)
 - Fix reuse of dict of prefixes in domish.Element.toXml (#2609)
 - Properly process XMPP stream headers (#2615)
 - Use proper namespace for XMPP stream errors. (#2630)
 - Properly parse XMPP stream errors. (#2771)
 - Fix toResponse for XMPP stanzas without an id attribute. (#2773)
 - Move XMPP stream header procesing to authenticators. (#2772)

Misc
----
 - #2617, #2640, #2741, #2063, #2570, #2847


Mail 8.0.0 (2008-03-17)
=======================

Features
--------
 - Support CAPABILITY responses that include atoms of the form "FOO" and
   "FOO=BAR" in IMAP4 (#2695)
 - Parameterize error handling behavior of imap4.encoder and imap4.decoder.
   (#2929)

Fixes
-----
 - Handle empty passwords in SMTP auth. (#2521)
 - Fix IMAP4Client's parsing of literals which are not preceeded by whitespace.
   (#2700)
 - Handle MX lookup suceeding without answers. (#2807)
 - Fix issues with aliases(5) process support. (#2729)

Misc
----
 - #2371, #2123, #2378, #739, #2640, #2746, #1917, #2266, #2864, #2832, #2063,
   #2865, #2847


Names 8.0.0 (2008-03-17)
========================

Fixes
-----

 - Refactor DNSDatagramProtocol and DNSProtocol to use same base class (#2414)
 - Change Resolver to query specified nameservers in specified order, instead
   of reverse order. (#2290)
 - Make SRVConnector work with bad results and NXDOMAIN responses.
   (#1908, #2777)
 - Handle write errors happening in dns queries, to have correct deferred
   failures. (#2492)
 - Fix the value of OP_NOTIFY and add a definition for OP_UPDATE. (#2945)

Misc
----
 - #2685, #2936, #2581, #2847

