aboutsummaryrefslogtreecommitdiffstats
path: root/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/topfiles/NEWS
blob: e0f7e219350623cb9280b80d1142b34757f28d93 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
Ticket numbers in this file can be looked up by visiting
http://twistedmatrix.com/trac/ticket/<number>

Twisted Core 12.2.0 (2012-08-26)
================================

Features
--------
 - twisted.protocols.sip.MessageParser now handles multiline headers.
   (#2198)
 - twisted.internet.endpoints now provides StandardIOEndpoint, a
   Standard I/O endpoint. (#4697)
 - If a FTPCmdError occurs during twisted.protocols.ftp.FTP.ftp_RETR
   sending the file (i.e. it is raised by the IReadFile.send method it
   invokes), then it will use that to return an error to the client
   rather than necessarily sending a 426 CNX_CLOSED_TXFR_ABORTED
   error. (#4913)
 - twisted.internet.interfaces.IReactorSocket.adoptStreamConnection is
   implemented by some reactors as a way to add an existing
   established connection to them. (#5570)
 - twisted.internet.endpoints now provides TCP6ServerEndpoint, an IPv6
   TCP server endpoint. (#5694)
 - twisted.internet.endpoints now provides TCP6ClientEndpoint, an IPv6
   TCP client endpoint. (#5695)
 - twisted.internet.endpoints.serverFromString, the endpoint string
   description feature, can now be used to create IPv6 TCP servers.
   (#5699)
 - twisted.internet.endpoints.serverFromString, the endpoint string
   description feature, can now be used to create servers that run on
   Standard I/O. (#5729)
 - twisted.trial.unittest now offers SynchronousTestCase, a test case
   base class that provides usability improvements but not reactor-
   based testing features. (#5853)

Bugfixes
--------
 - twisted.internet.Process.signalProcess now catches ESRCH raised by
   os.kill call and raises ProcessExitedAlready instead. (#2420)
 - TLSMemoryBIOProtocol (and therefore all SSL transports if pyOpenSSL
   >= 0.10) now provides the interfaces already provided by the
   underlying transport. (#5182)

Deprecations and Removals
-------------------------
 - Python 2.5 is no longer supported. (#5553)
 - The --extra option of trial, deprecated since 11.0, is removed now.
   (#3374)
 - addPluginDir and getPluginDirs in twisted.python.util are
   deprecated now. (#4533)
 - twisted.trial.runner.DocTestCase, deprecated in Twisted 8.0, has
   been removed. (#5554)
 - startKeepingErrors, flushErrors, ignoreErrors, and clearIgnores in
   twisted.python.log (deprecated since Twisted 2.5) are removed now.
   (#5765)
 - unzip, unzipIter, and countZipFileEntries in
   twisted.python.zipstream (deprecated in Twisted 11.0) are removed
   now. (#5766)
 - twisted.test.time_helpers, deprecated since Twisted 10.0, has been
   removed. (#5820)

Other
-----
 - #4244, #4532, #4930, #4999, #5129, #5138, #5385, #5521, #5655,
   #5674, #5679, #5687, #5688, #5689, #5692, #5707, #5734, #5736,
   #5745, #5746, #5747, #5749, #5784, #5816, #5817, #5818, #5819,
   #5830, #5857, #5858, #5859, #5869, #5632


Twisted Core 12.1.0 (2012-06-02)
================================

Features
--------
 - The kqueue reactor has been revived. (#1918)
 - twisted.python.filepath now provides IFilePath, an interface for
   file path objects. (#2176)
 - New gtk3 and gobject-introspection reactors have been added.
   (#4558)
 - gtk and glib reactors now run I/O and scheduled events with lower
   priority, to ensure the UI stays responsive. (#5067)
 - IReactorTCP.connectTCP() can now accept IPv6 address literals
   (although not hostnames) in order to support connecting to IPv6
   hosts. (#5085)
 - twisted.internet.interfaces.IReactorSocket, a new interface, is now
   supported by some reactors to listen on sockets set up by external
   software (eg systemd or launchd). (#5248)
 - twisted.internet.endpoints.clientFromString now also supports
   strings in the form of tcp:example.com:80 and ssl:example.com:4321
   (#5358)
 - twisted.python.constants.Flags now provides a way to define
   collections of flags for bitvector-type uses. (#5384)
 - The epoll(7)-based reactor is now the default reactor on Linux.
   (#5478)
 - twisted.python.runtime.platform.isLinux can be used to check if
   Twisted is running on Linux. (#5491)
 - twisted.internet.endpoints.serverFromString now recognizes a
   "systemd" endpoint type, for listening on a server port inherited
   from systemd. (#5575)
 - Connections created using twisted.internet.interfaces.IReactorUNIX
   now support sending and receiving file descriptors between
   different processes. (#5615)
 - twisted.internet.endpoints.clientFromString now supports UNIX
   client endpoint strings with the path argument specified like
   "unix:/foo/bar" in addition to the old style, "unix:path=/foo/bar".
   (#5640)
 - twisted.protocols.amp.Descriptor is a new AMP argument type which
   supports passing file descriptors as AMP command arguments over
   UNIX connections. (#5650)

Bugfixes
--------
 - twisted.internet.abstract.FileDescriptor implements
   twisted.internet.interfaces.IPushProducer instead of
   twisted.internet.interfaces.IProducer.
   twisted.internet.iocpreactor.abstract.FileHandle implements
   twisted.internet.interfaces.IPushProducer instead of
   twisted.internet.interfaces.IProducer. (#4386)
 - The epoll reactor now supports reading/writing to regular files on
   stdin/stdout. (#4429)
 - Calling .cancel() on any Twisted-provided client endpoint
   (TCP4ClientEndpoint, UNIXClientEndpoint, SSL4ClientEndpoint) now
   works as documented, rather than logging an AlreadyCalledError.
   (#4710)
 - A leak of OVERLAPPED structures in some IOCP error cases has been
   fixed. (#5372)
 - twisted.internet._pollingfile._PollableWritePipe now checks for
   outgoing unicode data in write() and writeSequence() instead of
   checkWork(). (#5412)

Improved Documentation
----------------------
 - "Working from Twisted's Subversion repository" links to UQDS and
   Combinator are now updated. (#5545)
 - Added tkinterdemo.py, an example of Tkinter integration. (#5631)

Deprecations and Removals
-------------------------
 - The 'unsigned' flag to twisted.scripts.tap2rpm.MyOptions is now
   deprecated.  (#4086)
 - Removed the unreachable _fileUrandom method from
   twisted.python.randbytes.RandomFactory. (#4530)
 - twisted.persisted.journal is removed, deprecated since Twisted
   11.0. (#4805)
 - Support for pyOpenSSL 0.9 and older is now deprecated.  pyOpenSSL
   0.10 or newer will soon be required in order to use Twisted's SSL
   features. (#4974)
 - backwardsCompatImplements and fixClassImplements are removed from
   twisted.python.components, deprecated in 2006. (#5034)
 - twisted.python.reflect.macro was removed, deprecated since Twisted
   8.2. (#5035)
 - twisted.python.text.docstringLStrip, deprecated since Twisted
   10.2.0, has been removed (#5036)
 - Removed the deprecated dispatch and dispatchWithCallback methods
   from twisted.python.threadpool.ThreadPool (deprecated since 8.0)
   (#5037)
 - twisted.scripts.tapconvert is now deprecated. (#5038)
 - twisted.python.reflect's Settable, AccessorType, PropertyAccessor,
   Accessor, OriginalAccessor and Summer are now deprecated.  (#5451)
 - twisted.python.threadpool.ThreadSafeList (deprecated in 10.1) is
   removed. (#5473)
 - twisted.application.app.initialLog, deprecated since Twisted 8.2.0,
   has been removed. (#5480)
 - twisted.spread.refpath was deleted, deprecated since Twisted 9.0.
   (#5482)
 - twisted.python.otp, deprecated since 9.0, is removed. (#5493)
 - Removed `dsu`, `moduleMovedForSplit`, and `dict` from
   twisted.python.util (deprecated since 10.2) (#5516)

Other
-----
 - #2723, #3114, #3398, #4388, #4489, #5055, #5116, #5242, #5380,
   #5392, #5447, #5457, #5484, #5489, #5492, #5494, #5512, #5523,
   #5558, #5572, #5583, #5593, #5620, #5621, #5623, #5625, #5637,
   #5652, #5653, #5656, #5657, #5660, #5673


Twisted Core 12.0.0 (2012-02-10)
================================

Features
--------
 - The interface argument to IReactorTCP.listenTCP may now be an IPv6
   address literal, allowing the creation of IPv6 TCP servers. (#5084)
 - twisted.python.constants.Names now provides a way to define
   collections of named constants, similar to the "enum type" feature
   of C or Java. (#5382)
 - twisted.python.constants.Values now provides a way to define
   collections of named constants with arbitrary values. (#5383)

Bugfixes
--------
 - Fixed an obscure case where connectionLost wasn't called on the
   protocol when using half-close. (#3037)
 - UDP ports handle socket errors better on Windows. (#3396)
 - When idle, the gtk2 and glib2 reactors no longer wake up 10 times a
   second. (#4376)
 - Prevent a rare situation involving TLS transports, where a producer
   may be erroneously left unpaused. (#5347)
 - twisted.internet.iocpreactor.iocpsupport now has fewer 64-bit
   compile warnings. (#5373)
 - The GTK2 reactor is now more responsive on Windows. (#5396)
 - TLS transports now correctly handle producer registration after the
   connection has been lost. (#5439)
 - twisted.protocols.htb.Bucket now empties properly with a non-zero
   drip rate. (#5448)
 - IReactorSSL and ITCPTransport.startTLS now synchronously propagate
   errors from the getContext method of context factories, instead of
   being capturing them and logging them as unhandled. (#5449)

Improved Documentation
----------------------
 - The multicast documentation has been expanded. (#4262)
 - twisted.internet.defer.Deferred now documents more return values.
   (#5399)
 - Show a better starting page at
   http://twistedmatrix.com/documents/current (#5429)

Deprecations and Removals
-------------------------
 - Remove the deprecated module twisted.enterprise.reflector. (#4108)
 - Removed the deprecated module twisted.enterprise.row. (#4109)
 - Remove the deprecated module twisted.enterprise.sqlreflector.
   (#4110)
 - Removed the deprecated module twisted.enterprise.util, as well as
   twisted.enterprise.adbapi.safe. (#4111)
 - Python 2.4 is no longer supported on any platform. (#5060)
 - Removed printTraceback and noOperation from twisted.spread.pb,
   deprecated since Twisted 8.2. (#5370)

Other
-----
 - #1712, #2725, #5284, #5325, #5331, #5362, #5364, #5371, #5407,
   #5427, #5430, #5431, #5440, #5441


Twisted Core 11.1.0 (2011-11-15)
================================

Features
--------
 - TCP and TLS transports now support abortConnection() which, unlike
   loseConnection(), always closes the connection immediately. (#78)
 - Failures received over PB when tracebacks are disabled now display
   the wrapped exception value when they are printed. (#581)
 - twistd now has a --logger option, allowing the use of custom log
   observers. (#638)
 - The default reactor is now poll(2) on platforms that support it.
   (#2234)
 - twisted.internet.defer.inlineCallbacks(f) now raises TypeError when
   f returns something other than a generator or uses returnValue as a
   non-generator. (#2501)
 - twisted.python.usage.Options now supports performing Zsh tab-
   completion on demand. Tab-completion for Twisted commands is
   supported out-of-the-box on any recent zsh release. Third-party
   commands may take advantage of zsh completion by copying the
   provided stub file. (#3078)
 - twisted.protocols.portforward now uses flow control between its
   client and server connections to avoid having to buffer an
   unbounded amount of data when one connection is slower than the
   other. (#3350)
 - On Windows, the select, IOCP, and Gtk2 reactors now implement
   IReactorWin32Events (most notably adding support for serial ports
   to these reactors). (#4862)
 - twisted.python.failure.Failure no longer captures the state of
   locals and globals of all stack frames by default, because it is
   expensive to do and rarely used.  You can pass captureVars=True to
   Failure's constructor if you want to capture this data. (#5011)
 - twisted.web.client now supports automatic content-decoding via
   twisted.web.client.ContentDecoderAgent, gzip being supported for
   now. (#5053)
 - Protocols may now implement ILoggingContext to customize their
   logging prefix.  twisted.protocols.policies.ProtocolWrapper and the
   endpoints wrapper now take advantage of this feature to ensure the
   application protocol is still reflected in logs. (#5062)
 - AMP's raw message-parsing performance was increased by
   approximately 12%. (#5075)
 - Twisted is now installable on PyPy, because some incompatible C
   extensions are no longer built. (#5158)
 - twisted.internet.defer.gatherResults now accepts a consumeErrors
   parameter, with the same meaning as the corresponding argument for
   DeferredList. (#5159)
 - Added RMD (remove directory) support to the FTP client. (#5259)
 - Server factories may now implement ILoggingContext to customize the
   name that is logged when the reactor uses one to start listening on
   a port. (#5292)
 - The implementations of ITransport.writeSequence will now raise
   TypeError if passed unicode strings. (#3896)
 - iocp reactor now operates correctly on 64 bit Python runtimes.
   (#4669)
 - twistd ftp now supports the cred plugin. (#4752)
 - twisted.python.filepath.FilePath now has an API to retrieve the
   permissions of the underlying file, and two methods to determine
   whether it is a block device or a socket.  (#4813)
 - twisted.trial.unittest.TestCase is now compatible with Python 2.7's
   assertDictEqual method. (#5291)

Bugfixes
--------
 - The IOCP reactor now does not try to erroneously pause non-
   streaming producers. (#745)
 - Unicode print statements no longer blow up when using Twisted's
   logging system. (#1990)
 - Process transports on Windows now support the `writeToChild` method
   (but only for stdin). (#2838)
 - Zsh tab-completion of Twisted commands no longer relies on
   statically generated files, but instead generates results on-the-
   fly - ensuring accurate tab-completion for the version of Twisted
   actually in use. (#3078)
 - LogPublishers don't use the global log publisher for reporting
   broken observers anymore. (#3307)
 - trial and twistd now add the current directory to sys.path even
   when running as root or on Windows. mktap, tapconvert, and
   pyhtmlizer no longer add the current directory to sys.path. (#3526)
 - twisted.internet.win32eventreactor now stops immediately if
   reactor.stop() is called from an IWriteDescriptor.doWrite
   implementation instead of delaying shutdown for an arbitrary period
   of time. (#3824)
 - twisted.python.log now handles RuntimeErrors more gracefully, and
   always restores log observers after an exception is raised. (#4379)
 - twisted.spread now supports updating new-style RemoteCache
   instances. (#4447)
 - twisted.spread.pb.CopiedFailure will no longer be thrown into a
   generator as a (deprecated) string exception but as a
   twisted.spread.pb.RemoteException. (#4520)
 - trial now gracefully handles the presence of objects in sys.modules
   which respond to attributes being set on them by modifying
   sys.modules. (#4748)
 - twisted.python.deprecate.deprecatedModuleAttribute no longer
   spuriously warns twice when used to deprecate a module within a
   package.  This should make it easier to write unit tests for
   deprecated modules. (#4806)
 - When pyOpenSSL 0.10 or newer is available, SSL support now uses
   Twisted for all I/O and only relies on OpenSSL for cryptography,
   avoiding a number of tricky, potentially broken edge cases. (#4854)
 - IStreamClientEndpointStringParser.parseStreamClient now correctly
   describes how it will be called by clientFromString (#4956)
 - twisted.internet.defer.Deferreds are 10 times faster at handling
   exceptions raised from callbacks, except when setDebugging(True)
   has been called. (#5011)
 - twisted.python.filepath.FilePath.copyTo now raises OSError(ENOENT)
   if the source path being copied does not exist. (#5017)
 - twisted.python.modules now supports iterating over namespace
   packages without yielding duplicates. (#5030)
 - reactor.spawnProcess now uses the resource module to guess the
   maximum possible open file descriptor when /dev/fd exists but gives
   incorrect results. (#5052)
 - The memory BIO TLS/SSL implementation now supports producers
   correctly. (#5063)
 - twisted.spread.pb.Broker no longer creates an uncollectable
   reference cycle when the logout callback holds a reference to the
   client mind object. (#5079)
 - twisted.protocols.tls, and SSL/TLS support in general, now do clean
   TLS close alerts when disconnecting. (#5118)
 - twisted.persisted.styles no longer uses the deprecated allYourBase
   function (#5193)
 - Stream client endpoints now start (doStart) and stop (doStop) the
   factory passed to the connect method, instead of a different
   implementation-detail factory. (#5278)
 - SSL ports now consistently report themselves as SSL rather than TCP
   when logging their close message. (#5292)
 - Serial ports now deliver connectionLost to the protocol when
   closed. (#3690)
 - win32eventreactor now behaves better in certain rare cases in which
   it previously would have failed to deliver connection lost
   notification to a protocol. (#5233)

Improved Documentation
----------------------
 - Test driven development with Twisted and Trial is now documented in
   a how-to. (#2443)
 - A new howto-style document covering twisted.protocols.amp has been
   added. (#3476)
 - Added sample implementation of a Twisted push producer/consumer
   system. (#3835)
 - The "Deferred in Depth" tutorial now includes accurate output for
   the deferred_ex2.py example. (#3941)
 - The server howto now covers the Factory.buildProtocol method.
   (#4761)
 - The testing standard and the trial tutorial now recommend the
   `assertEqual` form of assertions rather than the `assertEquals` to
   coincide with the standard library unittest's preference. (#4989)
 - twisted.python.filepath.FilePath's methods now have more complete
   API documentation (docstrings). (#5027)
 - The Clients howto now uses buildProtocol more explicitly, hopefully
   making it easier to understand where Protocol instances come from.
   (#5044)

Deprecations and Removals
-------------------------
 - twisted.internet.interfaces.IFinishableConsumer is now deprecated.
   (#2661)
 - twisted.python.zshcomp is now deprecated in favor of the tab-
   completion system in twisted.python.usage (#3078)
 - The unzip and unzipIter functions in twisted.python.zipstream are
   now deprecated. (#3666)
 - Options.optStrings, deprecated for 7 years, has been removed.  Use
   Options.optParameters instead. (#4552)
 - Removed the deprecated twisted.python.dispatch module. (#5023)
 - Removed the twisted.runner.procutils module that was deprecated in
   Twisted 2.3. (#5049)
 - Removed twisted.trial.runner.DocTestSuite, deprecated in Twisted
   8.0. (#5111)
 - twisted.scripts.tkunzip is now deprecated. (#5140)
 - Deprecated option --password-file in twistd ftp (#4752)
 - mktap, deprecated since Twisted 8.0, has been removed. (#5293)

Other
-----
 - #1946, #2562, #2674, #3074, #3077, #3776, #4227, #4539, #4587,
   #4619, #4624, #4629, #4683, #4690, #4702, #4778, #4944, #4945,
   #4949, #4952, #4957, #4979, #4980, #4987, #4990, #4994, #4995,
   #4997, #5003, #5008, #5009, #5012, #5019, #5042, #5046, #5051,
   #5065, #5083, #5088, #5089, #5090, #5101, #5108, #5109, #5112,
   #5114, #5125, #5128, #5131, #5136, #5139, #5144, #5146, #5147,
   #5156, #5160, #5165, #5191, #5205, #5215, #5217, #5218, #5223,
   #5243, #5244, #5250, #5254, #5261, #5266, #5273, #5299, #5301,
   #5302, #5304, #5308, #5311, #5321, #5322, #5327, #5328, #5332,
   #5336


Twisted Core 11.0.0 (2011-04-01)
================================

Features
--------
 - The reactor is not restartable, but it would previously fail to
   complain. Now, when you restart an unrestartable reactor, you get
   an exception. (#2066)
 - twisted.plugin now only emits a short log message, rather than a
   full traceback, if there is a problem writing out the dropin cache
   file. (#2409)
 - Added a 'replacement' parameter to the
   'twisted.python.deprecate.deprecated' decorator.  This allows
   deprecations to unambiguously specify what they have been
   deprecated in favor of. (#3047)
 - Added access methods to FilePath for FilePath.statinfo's st_ino,
   st_dev, st_nlink, st_uid, and st_gid fields.  This is in
   preparation for the deprecation of FilePath.statinfo. (#4712)
 - IPv4Address and UNIXAddress now have a __hash__ method. (#4783)
 - twisted.protocols.ftp.FTP.ftp_STOR now catches `FTPCmdError`s
   raised by the file writer, and returns the error back to the
   client. (#4909)

Bugfixes
--------
 - twistd will no longer fail if a non-root user passes --uid 'myuid'
   as a command-line argument. Instead, it will emit an error message.
   (#3172)
 - IOCPReactor now sends immediate completions to the main loop
   (#3233)
 - trial can now load test methods from multiple classes, even if the
   methods all happen to be inherited from the same base class.
   (#3383)
 - twisted.web.server will now produce a correct Allow header when a
   particular render_FOO method is missing. (#3678)
 - HEAD requests made to resources whose HEAD handling defaults to
   calling render_GET now always receive a response with no body.
   (#3684)
 - trial now loads decorated test methods whether or not the decorator
   preserves the original method name. (#3909)
 - t.p.amp.AmpBox.serialize will now correctly consistently complain
   when being fed Unicode. (#3931)
 - twisted.internet.wxreactor now supports stopping more reliably.
   (#3948)
 - reactor.spawnProcess on Windows can now handle ASCII-encodable
   Unicode strings in the system environment (#3964)
 - When C-extensions are not complied for twisted, on python2.4, skip
   a test in twisted.internet.test.test_process that may hang due to a
   SIGCHLD related problem. Running 'python setup.py build_ext
   --inplace' will compile the extension and cause the test to both
   run and pass. (#4331)
 - twisted.python.logfile.LogFile now raises a descriptive exception
   when passed a log  directoy which does not exist. (#4701)
 - Fixed a bug where Inotify will fail to add a filepatch to watchlist
   after it has been added/ignored previously. (#4708)
 - IPv4Address and UNIXAddress object comparison operators fixed
   (#4817)
 - twisted.internet.task.Clock now sorts the list of pending calls
   before and after processing each call (#4823)
 - ConnectionLost is now in twisted.internet.error.__all__ instead of
   twisted.words.protocols.jabber.xmlstream.__all__. (#4856)
 - twisted.internet.process now detects the most appropriate mechanism
   to use for detecting the open file descriptors on a system, getting
   Twisted working on FreeBSD even when fdescfs is not mounted.
   (#4881)
 - twisted.words.services referenced nonexistent
   twisted.words.protocols.irc.IRC_NOSUCHCHANNEL. This has been fixed.
   Related code has also received test cases. (#4915)

Improved Documentation
----------------------
 - The INSTALL file now lists all of Twisted's dependencies. (#967)
 - Added the stopService and startService methods to all finger
   example files. (#3375)
 - Missing reactor.run() calls were added in the UDP and client howto
   documents. (#3834)
 - The maxRetries attribute of
   twisted.internet.protocols.RetryingClientFactory now has API
   documentation. (#4618)
 - Lore docs pointed to a template that no longer existed, this has
   been fixed. (#4682)
 - The `servers` argument to `twisted.names.client.createResolver` now
   has more complete API documentation. (#4713)
 - Linked to the Twisted endpoints tutorial from the Twisted core
   howto list.  (#4773)
 - The Endpoints howto now links to the API documentation. (#4774)
 - The Quotes howto is now more clear in its PYTHONPATH setup
   instructions. (#4785)
 - The API documentation for DeferredList's fireOnOneCallback
   parameter now gives the correct order of the elements of the result
   tuple. (#4882)

Deprecations and Removals
-------------------------
 - returning a value other than None from IProtocol.dataReceived was
   deprecated (#2491)
 - Deprecated the --extra option in trial.  (#3372)
 - twisted.protocols._c_urlarg has been removed. (#4162)
 - Remove the --report-profile option for twistd, deprecated since
   2007. (#4236)
 - Deprecated twisted.persisted.journal.  This library is no longer
   maintained.  (#4298)
 - Removed twisted.protocols.loopback.loopback, which has been
   deprecated since Twisted 2.5. (#4547)
 - __getitem__ __getslice__ and __eq__ (tuple comparison, indexing)
   removed from twisted.internet.address.IPv4Address and
   twisted.internet.address.UNIXAddress classes UNIXAddress and
   IPv4Address properties _bwHack are now deprecated in
   twisted.internet.address (#4817)
 - twisted.python.reflect.allYourBase is now no longer used, replaced
   with inspect.getmro (#4928)
 - allYourBase and accumulateBases are now deprecated in favor of
   inspect.getmro. (#4946)

Other
-----
 - #555, #1982, #2618, #2665, #2666, #4035, #4247, #4567, #4636,
   #4717, #4733, #4750, #4821, #4842, #4846, #4853, #4857, #4858,
   #4863, #4864, #4865, #4866, #4867, #4868, #4869, #4870, #4871,
   #4872, #4873, #4874, #4875, #4876, #4877, #4878, #4879, #4905,
   #4906, #4908, #4934, #4955, #4960


Twisted Core 10.2.0 (2010-11-29)
================================

Features
--------
 - twisted.internet.cfreactor has been significantly improved.  It now
   runs, and passes, the test suite.  Many, many bugs in it have been
   fixed, including several segfaults, as it now uses PyObjC and
   longer requires C code in Twisted. (#1833)
 - twisted.protocols.ftp.FTPRealm now accepts a parameter to override
   "/home" as the container for user directories.  The new
   BaseFTPRealm class in the same module also allows easy
   implementation of custom user directory schemes. (#2179)
 - twisted.python.filepath.FilePath and twisted.python.zippath.ZipPath
   now have a descendant method to simplify code which calls the child
   method repeatedly. (#3169)
 - twisted.python.failure._Frame objects now support fake f_locals
   attribute. (#4045)
 - twisted.internet.endpoints now has 'serverFromString' and
   'clientFromString' APIs for constructing endpoints from descriptive
   strings. (#4473)
 - The default trial reporter now combines reporting of tests with the
   same result to shorten its summary output. (#4487)
 - The new class twisted.protocols.ftp.SystemFTPRealm implements an
   FTP realm which uses system accounts to select home directories.
   (#4494)
 - twisted.internet.reactor.spawnProcess now wastes less time trying
   to close non-existent file descriptors on POSIX platforms. (#4522)
 - twisted.internet.win32eventreactor now declares that it implements
   a new twisted.internet.interfaces.IReactorWin32Events interface.
   (#4523)
 - twisted.application.service.IProcess now documents its attributes
   using zope.interface.Attribute. (#4534)
 - twisted.application.app.ReactorSelectionMixin now saves the value
   of the --reactor option in the "reactor" key of the options object.
   (#4563)
 - twisted.internet.endpoints.serverFromString and clientFromString,
   and therefore also twisted.application.strports.service, now
   support plugins, so third parties may implement their own endpoint
   types. (#4695)

Bugfixes
--------
 - twisted.internet.defer.Deferred now handles chains iteratively
   instead of recursively, preventing RuntimeError due to excessive
   recursion when handling long Deferred chains. (#411)
 - twisted.internet.cfreactor now works with trial. (#2556)
 - twisted.enterprise.adbapi.ConnectionPool.close may now be called
   even if the connection pool has not yet been started.  This will
   prevent the pool from ever starting. (#2680)
 - twisted.protocols.basic.NetstringReceiver raises
   NetstringParseErrors for  invalid netstrings now. It handles empty
   netstrings ("0:,") correctly, and  the performance for receiving
   netstrings has been improved. (#4378)
 - reactor.listenUDP now returns an object which declares that it
   implements IListeningPort. (#4462)
 - twisted.python.randbytes no longer uses PyCrypto as a secure random
   number source (since it is not one). (#4468)
 - twisted.internet.main.installReactor now blocks installation of
   another reactor when using python -O (#4476)
 - twisted.python.deprecate.deprecatedModuleAttribute now emits only
   one warning when used to deprecate a package attribute which is a
   module. (#4492)
 - The "brief" mode of twisted.python.failure.Failure.getTraceback now
   handles exceptions raised by the underlying exception's __str__
   method. (#4501)
 - twisted.words.xish.domish now correctly parses XML with namespaces
   which include whitespace. (#4503)
 - twisted.names.authority.FileAuthority now generates correct
   negative caching hints, marks its referral NS RRs as non-
   authoritative, and correctly generates referrals for ALL_RECORDS
   requests. (#4513)
 - twisted.internet.test.reactormixins.ReactorBuilder's attribute
   `requiredInterface` (which should an interface) is now
   `requiredInterfaces` (a list of interfaces) as originally described
   per the documentation. (#4527)
 - twisted.python.zippath.ZipPath.__repr__ now correctly formats paths
   with ".." in them (by including it). (#4535)
 - twisted.names.hosts.searchFileFor has been fixed against
   refcounting dependency. (#4540)
 - The POSIX process transports now declare that they implement
   IProcessTransport. (#4585)
 - Twisted can now be built with the LLVM clang compiler, with
   'CC=clang python setup.py build'.  C code that caused errors with
   this compiler has been removed. (#4652)
 - trial now puts coverage data in the path specified by --temp-
   directory, even if that option comes after --coverage on the
   command line. (#4657)
 - The unregisterProducer method of connection-oriented transports
   will now cause the connection to be closed if there was a prior
   call to loseConnection. (#4719)
 - Fixed an issue where the new StreamServerEndpointService didn't log
   listen errors.  (This was a bug not present in any previous
   releases, as this class is new.) (#4731)

Improved Documentation
----------------------
 - The trial man page now documents the meaning of the final line of
   output of the default reporter. (#1384)
 - The API documentation for twisted.internet.defer.DeferredList now
   goes into more depth about the effects each of the __init__ flags
   that class accepts. (#3595)
 - There is now narrative documentation for the endpoints APIs, in the
   'endpoints' core howto, as well as modifications to the 'writing
   clients' and 'writing servers' core howto documents to indicate
   that endpoints are now the preferred style of listening and
   connecting. (#4478)
 - trial's man page now documents the --disablegc option in more
   detail. (#4511)
 - trial's coverage output format is now documented in the trial man
   page. (#4512)
 - Broken links and spelling errors in the finger tutorial are now
   fixed. (#4516)
 - twisted.internet.threads.blockingCallFromThread's docstring is now
   explicit about Deferred support. (#4517)
 - twisted.python.zippath.ZipPath.child now documents its handling of
   ".." (which is not special, making it different from
   FilePath.child). (#4535)
 - The API docs for twisted.internet.defer.Deferred now cover several
   more of its (less interesting) attributes. (#4538)
 - LineReceiver, NetstringReceiver, and IntNStringReceiver from
   twisted.protocols.basic now have improved API documentation for
   read callbacks and write methods. (#4542)
 - Tidied up the Twisted Conch documentation for easier conversion.
   (#4566)
 - Use correct Twisted version for when cancellation was introduced in
   the Deferred docstring. (#4614)
 - The logging howto is now more clear about how the standard library
   logging module and twisted.python.log can be integrated. (#4642)
 - The finger tutorial still had references to .tap files. This
   reference has now been removed. The documentation clarifies
   "finger.tap" is a module and not a filename. (#4679)
 - The finger tutorial had a broken link to the
   twisted.application.service.Service class, which is now fixed.
   Additionally, a minor typo ('verison') was fixed.  (#4681)
 - twisted.protocols.policies.TimeoutMixin now has clearer API
   documentation. (#4684)

Deprecations and Removals
-------------------------
 - twisted.internet.defer.Deferred.setTimeout has been removed, after
   being deprecated since Twisted 2.0. (#1702)
 - twisted.internet.interfaces.IReactorTime.cancelCallLater
   (deprecated since  2007) and
   twisted.internet.interfaces.base.ReactorBase.cancelCallLater
   (deprecated since 2002) have been removed. (#4076)
 - Removed twisted.cred.util.py, which has been deprecated since
   Twisted 8.3. (#4107)
 - twisted.python.text.docstringLStrip was deprecated. (#4328)
 - The module attributes `LENGTH`, `DATA`, `COMMA`, and `NUMBER` of
   twisted.protocols.basic (previously used by `NetstringReceiver`)
   are now deprecated. (#4541)
 - twisted.protocols.basic.SafeNetstringReceiver, deprecated since
   2001 (before Twisted 2.0), was removed. (#4546)
 - twisted.python.threadable.whenThreaded, deprecated since Twisted
   2.2.0, has been removed. (#4550)
 - twisted.python.timeoutqueue, deprecated since Twisted 8.0, has been
   removed. (#4551)
 - iocpreactor transports can no longer be pickled. (#4617)

Other
-----
 - #4300, #4475, #4477, #4504, #4556, #4562, #4564, #4569, #4608,
   #4616, #4617, #4626, #4630, #4650, #4705


Twisted Core 10.1.0 (2010-06-27)
================================

Features
--------
 - Add linux inotify support, allowing monitoring of file system
   events. (#972)
 - Deferreds now support cancellation. (#990)
 - Added new "endpoint" interfaces in twisted.internet.interfaces,
   which abstractly describe stream transport endpoints which can be
   listened on or connected to.  Implementations for TCP and SSL
   clients and servers are present in twisted.internet.endpoints.
   Notably, client endpoints' connect() methods return cancellable
   Deferreds, so code written to use them can bypass the awkward
   "ClientFactory.clientConnectionFailed" and
   "Connector.stopConnecting" methods, and handle errbacks from or
   cancel the returned deferred, respectively. (#1442)
 - twisted.protocols.amp.Integer's documentation now clarifies that
   integers of arbitrary size are supported and that the wire format
   is a base-10 representation. (#2650)
 - twisted.protocols.amp now includes support for transferring
   timestamps (amp.DateTime) and decimal values (amp.Decimal). (#2651)
 - twisted.protocol.ftp.IWriteFile now has a close() method, which can
   return a Deferred. Previously a STOR command would finish
   immediately upon the receipt of the last byte of the uploaded file.
   With close(), the backend can delay the finish until it has
   performed some other slow action (like storing the data to a
   virtual filesystem). (#3462)
 - FilePath now calls os.stat() only when new status information is
   required, rather than immediately when anything changes.  For some
   applications this may result in fewer stat() calls.  Additionally,
   FilePath has a new method, 'changed', which applications may use to
   indicate that the FilePath may have been changed on disk and
   therefore the next status information request must  fetch a new
   stat result.  This is useful if external systems, such as C
   libraries, may have changed files that Twisted applications are
   referencing via a FilePath. (#4130)
 - Documentation improvements are now summarized in the NEWS file.
   (#4224)
 - twisted.internet.task.deferLater now returns a cancellable
   Deferred. (#4318)
 - The connect methods of twisted.internet.protocol.ClientCreator now
   return cancellable Deferreds. (#4329)
 - twisted.spread.pb now has documentation covering some of its
   limitations. (#4402)
 - twisted.spread.jelly now supports jellying and unjellying classes
   defined with slots if they also implement __getstate__ and
   __setstate__. (#4430)
 - twisted.protocols.amp.ListOf arguments can now be specified as
   optional. (#4474)

Bugfixes
--------
 - On POSIX platforms, reactors now support child processes in a way
   which doesn't cause other syscalls to sometimes fail with EINTR (if
   running on Python 2.6 or if Twisted's extension modules have been
   built). (#733)
 - Substrings are escaped before being passed to a regular expression
   for searching to ensure that they don't get interpreted as part of
   the expression. (#1893)
 - twisted.internet.stdio now supports stdout being redirected to a
   normal file (except when using epollreactor). (#2259)
 -  (#2367)
 - The tap2rpm script now works with modern versions of RPM. (#3292)
 - twisted.python.modules.walkModules will now handle packages
   explicitly precluded from importing by a None placed in
   sys.modules. (#3419)
 - ConnectedDatagramPort now uses stopListening when a connection
   fails instead of the deprecated loseConnection. (#3425)
 - twisted.python.filepath.FilePath.setContent is now safe for
   multiple processes to use concurrently. (#3694)
 - The mode argument to the methods of
   twisted.internet.interfaces.IReactorUNIX is no longer deprecated.
   (#4078)
 - Do not include blacklisted projects when generating NEWS. (#4190)
 - When generating NEWS for a project that had no significant changes,
   include a section for that project and say that there were no
   interesting changes. (#4191)
 - Redundant 'b' mode is no longer passed to calls to FilePath.open
   and FilePath.open itself now corrects the mode when multiple 'b'
   characters are present, ensuring only one instance of 'b' is
   provided, as a workaround for http://bugs.python.org/issue7686.
   (#4207)
 - HTML tags inside <pre> tags in the code snippets are now escaped.
   (#4336)
 - twisted.protocols.amp.CommandLocator now allows subclasses to
   override responders inherited from base classes. (#4343)
 - Fix a bunch of small but important defects in the INSTALL, README
   and so forth. (#4346)
 - The poll, epoll, glib2, and gtk2 reactors now all support half-
   close in the twisted.internet.stdio.StandardIO transport. (#4352)
 - twisted.application.internet no longer generates an extra and
   invalid entry in its __all__ list for the nonexistent
   MulticastClient. (#4373)
 - Choosing a reactor documentation now says that only the select-
   based reactor is a truly cross-platform reactor. (#4384)
 - twisted.python.filepath.FilePath now no longer leaves files open,
   to be closed by the garbage collector, when an exception is raised
   in the implementation of setContent, getContent, or copyTo. (#4400)
 - twisted.test.proto_helpers.StringTransport's getHost and getPeer
   methods now return IPv4Address instances by default. (#4401)
 - twisted.protocols.amp.BinaryBoxProtocol will no longer deliver an
   empty string to a switched-to protocol's dataReceived method when
   the BinaryBoxProtocol's buffer happened to be empty at the time of
   the protocol switch. (#4405)
 - IReactorUNIX.listenUNIX implementations now support abstract
   namespace sockets on Linux. (#4421)
 - Files opened with FilePath.create() (and therefore also files
   opened via FilePath.open() on a path with alwaysCreate=True) will
   now be opened in binary mode as advertised, so that they will
   behave portably across platforms. (#4453)
 - The subunit reporter now correctly reports import errors as errors,
   rather than by crashing with an unrelated error. (#4496)

Improved Documentation
----------------------
 - The finger tutorial example which introduces services now avoids
   double-starting the loop to re-read its users file. (#4420)
 - twisted.internet.defer.Deferred.callback's docstring now mentions
   the implicit chaining feature. (#4439)
 - doc/core/howto/listing/pb/chatclient.py can now actually send a
   group message. (#4459)

Deprecations and Removals
-------------------------
 - twisted.internet.interfaces.IReactorArbitrary,
   twisted.application.internet.GenericServer, and
   twisted.application.internet.GenericClient are now deprecated.
   (#367)
 - twisted.internet.gtkreactor is now deprecated. (#2833)
 - twisted.trial.util.findObject has been deprecated. (#3108)
 - twisted.python.threadpool.ThreadSafeList is deprecated and Jython
   platform detection in Twisted core removed (#3725)
 - twisted.internet.interfaces.IUDPConnectedTransport has been removed
   (deprecated since Twisted 9.0). (#4077)
 - Removed twisted.application.app.runWithProfiler, which has been
   deprecated since Twisted 8.0. (#4090)
 - Removed twisted.application.app.runWithHotshot, which has been
   deprecated since Twisted 8.0. (#4091)
 - Removed twisted.application.app.ApplicationRunner.startLogging,
   which has been deprecated (doesn't say since when), as well as
   support for the legacy
   twisted.application.app.ApplicationRunner.getLogObserver method.
   (#4092)
 - twisted.application.app.reportProfile has been removed. (#4093)
 - twisted.application.app.getLogFile has been removed. (#4094)
 - Removed twisted.cred.util.py, which has been deprecated since
   Twisted 8.3. (#4107)
 - twisted.python.util.dsu is now deprecated. (#4339)
 - In twisted.trial.util: FailureError, DirtyReactorWarning,
   DirtyReactorError, and PendingTimedCallsError, which have all been
   deprecated since Twisted 8.0, have been removed. (#4505)

Other
-----
 - #1363, #1742, #3170, #3359, #3431, #3738, #4088, #4206, #4221,
   #4239, #4257, #4272, #4274, #4287, #4291, #4293, #4309, #4316,
   #4319, #4324, #4332, #4335, #4348, #4358, #4394, #4399, #4409,
   #4418, #4443, #4449, #4479, #4485, #4486, #4497


Twisted Core 10.0.0 (2010-03-01)
================================

Features
--------
 - The twistd man page now has a SIGNALS section. (#689)

 - reactor.spawnProcess now will not emit a PotentialZombieWarning
   when called before reactor.run, and there will be no potential for
   zombie processes in this case. (#2078)

 - High-throughput applications based on Perspective Broker should now
   run noticably faster thanks to the use of a more efficient decoding
   function in Twisted Spread. (#2310)

 - Documentation for trac-post-commit-hook functionality in svn-dev
   policy. (#3867)

 - twisted.protocols.socks.SOCKSv4 now supports the SOCKSv4a protocol.
   (#3886)

 - Trial can now output test results according to the subunit
   protocol, as long as Subunit is installed (see
   https://launchpad.net/subunit). (#4004)

 - twisted.protocols.amp now provides a ListOf argument type which can
   be composed with some other argument types to create a zero or more
   element sequence of that type. (#4116)

 - If returnValue is invoked outside of a function decorated with
   @inlineCallbacks, but causes a function thusly decorated to exit, a
   DeprecationWarning will be emitted explaining this potentially
   confusing behavior.  In a future release, this will cause an
   exception. (#4157)

 - twisted.python.logfile.BaseLogFile now has a reopen method allowing
   you to use an external logrotate mechanism. (#4255)

Bugfixes
--------
 - FTP.ftp_NLST now handles requests on invalid paths in a way
   consistent with RFC 959. (#1342)

 - twisted.python.util.initgroups now calls the low-level C initgroups
   by default if available: the python version can create lots of I/O
   with certain authentication setup to retrieve all the necessary
   information. (#3226)

 - startLogging now does nothing on subsequent invocations, thus
   fixing a terrible infinite recursion bug that's only on edge case.
   (#3289)

 - Stringify non-string data to NetstringReceiver.sendString before
   calculating the length so that the calculated length is equal to
   the actual length of the transported data. (#3299)

 - twisted.python.win32.cmdLineQuote now correctly quotes empty
   strings arguments (#3876)

 - Change the behavior of the Gtk2Reactor to register only one source
   watch for each file descriptor, instead of one for reading and one
   for writing. In particular, it fixes a bug with Glib under Windows
   where we failed to notify when a client is connected. (#3925)

 - Twisted Trial no longer crashes if it can't remove an old
   _trial_temp directory.  (#4020)

 - The optional _c_urlarg extension now handles unquote("") correctly
   on platforms where malloc(0) returns NULL, such as AIX.  It also
   compiles with less warnings. (#4142)

 - On POSIX, child processes created with reactor.spawnProcess will no
   longer automatically ignore the signals which the parent process
   has set to be ignored. (#4199)

 - All SOCKSv4a tests now use a dummy reactor with a deterministic
   resolve method. (#4275)

 - Prevent extraneous server, date and content-type headers in proxy
   responses. (#4277)

Deprecations and Removals
-------------------------
 - twisted.internet.error.PotentialZombieWarning is now deprecated.
   (#2078)

 - twisted.test.time_helpers is now deprecated. (#3719)

 - The deprecated connectUDP method of IReactorUDP has now been
   removed. (#4075)

 - twisted.trial.unittest.TestCase now ignores the previously
   deprecated setUpClass and tearDownClass methods. (#4175)

Other
-----
 - #917, #2406, #2481, #2608, #2689, #2884, #3056, #3082, #3199,
   #3480, #3592, #3718, #3935, #4066, #4083, #4154, #4166, #4169,
   #4176, #4183, #4186, #4188, #4189, #4194, #4201, #4204, #4209,
   #4222, #4234, #4235, #4238, #4240, #4245, #4251, #4264, #4268,
   #4269, #4282


Twisted Core 9.0.0 (2009-11-24)
===============================

Features
--------
 - LineReceiver.clearLineBuffer now returns the bytes that it cleared (#3573)
 - twisted.protocols.amp now raises InvalidSignature when bad arguments are
   passed to Command.makeArguments (#2808)
 - IArgumentType was added to represent an existing but previously unspecified
   interface in amp (#3468)
 - Obscure python tricks have been removed from the finger tutorials (#2110)
 - The digest auth implementations in twisted.web and twisted.protocolos.sip
   have been merged together in twisted.cred (#3575)
 - FilePath and ZipPath now has a parents() method which iterates up all of its
   parents (#3588)
 - reactors which support threads now have a getThreadPool method (#3591)
 - The MemCache client implementation now allows arguments to the "stats"
   command (#3661)
 - The MemCache client now has a getMultiple method which allows fetching of
   multiple values (#3171)
 - twisted.spread.jelly can now unserialize some new-style classes (#2950)
 - twisted.protocols.loopback.loopbackAsync now accepts a parameter to control
   the data passed between client and server (#3820)
 - The IOCP reactor now supports SSL (#593)
 - Tasks in a twisted.internet.task.Cooperator can now be paused, resumed, and
   cancelled (#2712)
 - AmpList arguments can now be made optional (#3891)
 - The syslog output observer now supports log levels (#3300)
 - LoopingCall now supports reporting the number of intervals missed if it
   isn't able to schedule calls fast enough (#3671)

Fixes
-----
 - The deprecated md5 and sha modules are no longer used if the stdlib hashlib
   module is available (#2763)
 - An obscure deadlock involving waking up the reactor within signal handlers
   in particular threads was fixed (#1997)
 - The passivePortRange attribute of FTPFactory is now honored (#3593)
 - TestCase.flushWarnings now flushes warnings even if they were produced by a
   file that was renamed since it was byte compiled (#3598)
 - Some internal file descriptors are now marked as close-on-exec, so these will
   no longer be leaked to child processes (#3576)
 - twisted.python.zipstream now correctly extracts the first file in a directory
   as a file, and not an empty directory (#3625)
 - proxyForInterface now returns classes which correctly *implement* interfaces
   rather than *providing* them (#3646)
 - SIP Via header parameters should now be correctly generated (#2194)
 - The Deferred returned by stopListening would sometimes previously never fire
   if an exception was raised by the underlying file descriptor's connectionLost
   method. Now the Deferred will fire with a failure (#3654)
 - The command-line tool "manhole" should now work with newer versions of pygtk
   (#2464)
 - When a DefaultOpenSSLContextFactory is instantiated with invalid parameters,
   it will now raise an exception immediately instead of waiting for the first
   connection (#3700)
 - Twisted command line scripts should now work when installed in a virtualenv
   (#3750)
 - Trial will no longer delete temp directories which it did not create (#3481)
 - Processes started on Windows should now be cleaned up properly in more cases
   (#3893)
 - Certain misbehaving importers will no longer cause twisted.python.modules
   (and thus trial) to raise an exception, but rather issue a warning (#3913)
 - MemCache client protocol methods will now fail when the transport has been
   disconnected (#3643)
 - In the AMP method callRemoteString, the requiresAnswer parameter is now
   honored (#3999)
 - Spawning a "script" (a file which starts with a #! line) on Windows running
   Python 2.6 will now work instead of raising an exception about file mode
   "ru" (#3567)
 - FilePath's walk method now calls its "descend" parameter even on the first
   level of children, instead of only on grandchildren. This allows for better
   symlink cycle detection (#3911)
 - Attempting to write unicode data to process pipes on Windows will no longer
   result in arbitrarily encoded messages being written to the pipe, but instead
   will immediately raise an error (#3930)
 - The various twisted command line utilities will no longer print
   ModuleType.__doc__ when Twisted was installed with setuptools (#4030)
 - A Failure object will now be passed to connectionLost on stdio connections
   on Windows, instead of an Exception object (#3922)

Deprecations and Removals
-------------------------
 - twisted.persisted.marmalade was deleted after a long period of deprecation
   (#876)
 - Some remaining references to the long-gone plugins.tml system were removed
   (#3246)
 - SSLv2 is now disabled by default, but it can be re-enabled explicitly
   (#3330)
 - twisted.python.plugin has been removed (#1911)
 - reactor.run will now raise a ReactorAlreadyRunning exception when it is
   called reentrantly instead of warning a DeprecationWarning (#1785)
 - twisted.spread.refpath is now deprecated because it is unmaintained,
   untested, and has dubious value (#3723)
 - The unused --quiet flag has been removed from the twistd command (#3003)

Other
-----
 - #3545, #3490, #3544, #3537, #3455, #3315, #2281, #3564, #3570, #3571, #3486,
   #3241, #3599, #3220, #1522, #3611, #3596, #3606, #3609, #3602, #3637, #3647,
   #3632, #3675, #3673, #3686, #2217, #3685, #3688, #2456, #506, #3635, #2153,
   #3581, #3708, #3714, #3717, #3698, #3747, #3704, #3707, #3713, #3720, #3692,
   #3376, #3652, #3695, #3735, #3786, #3783, #3699, #3340, #3810, #3822, #3817,
   #3791, #3859, #2459, #3677, #3883, #3894, #3861, #3822, #3852, #3875, #2722,
   #3768, #3914, #3885, #2719, #3905, #3942, #2820, #3990, #3954, #1627, #2326,
   #2972, #3253, #3937, #4058, #1200, #3639, #4079, #4063, #4050


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


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


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


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


2.5.0 (2006-12-29)
==================

Twisted 2.5.0 is a major feature release, with several interesting new
developments and a great number of bug fixes. Some of the highlights
follow.

 * AMP, the Asynchronous Messaging Protocol, was introduced.  AMP is
   a protocol which provides request/response semantics over a
   persistent connection in a very simple and extensible manner.

 * An Epoll-based reactor was added, which can be used with twistd or
   trial by passing "-r epoll" on the command line. This may improve
   performance of certain high-traffic network applications.

 * The 'twistd' command can now accept sub-commands which name an
   application to run. For example, 'twistd web --path .' will start a
   web server serving files out of the current directory. This
   functionality is meant to replace the old way of doing things with
   'mktap' and 'twistd -f'.

 * Python 2.5 is now supported. Previous releases of Twisted were
   broken by changes in the release of Python 2.5.

 * 'inlineCallbacks' was added, which allows taking advantage of the
   new 'yield' expression syntax in Python 2.5 to avoid writing
   callbacks for Deferreds.

In addition to these changes, there are many other minor features and
a large number of bug fixes.

Features
--------
 - log.err can now take a second argument for specifying information
   about an error (#1399)
 - A time-simulating test helper class, twisted.internet.task.Clock,
   was added (#1757)
 - Trial docstring improvements were made (#1604, #2133)
 - New SSL features were added to twisted.internet.ssl, such as client
   validation (#302)
 - Python 2.5 is now supported (#1867)
 - Trial's assertFailure now provides more information on failure (#1869)
 - Trial can now be run on tests within a zipfile (#1940)
 - AMP, a new simple protocol for asynchronous messaging, was added (#1715)
 - Trial's colorful reporter now works on win32 (#1646)
 - Trial test modules may now dynamically construct TestSuites (#1638, #2165)
 - twistd can now make use of plugins to run applications (#1922, #2013)
 - Twisted now works with the latest (unreleased) zope.interface (#2160)
 - An epoll-based reactor, epollreactor, was added. It is selectable
   with the -r options to twistd and trial (#1953)
 - twistd and trial now use the plugin system to find reactors which
   can be selected (#719)
 - twisted.internet.defer.inlineCallbacks was added. It takes
   advantage of Python 2.5's generators to offer a way to deal with
   Deferreds without callbacks (#2100)

Fixes
-----
 - Traceback formatting in Trial was improved (#1454, #1610)
 - twisted.python.filepath.FilePath.islink now actually returns True when
   appropriate (#1773)
 - twisted.plugin now no longer raises spurious errors (#926)
 - twisted.pb Cacheables may now be new-style classes (#1324)
 - FileDescriptor now deals with producers in a more
   interface-compliant and robust manner (#2286, #811)
 - "setup.py build" and other setup.py commands which don't actually
   install the software now work (#1835)
 - wxreactor has had various fixes (#1235, #1574, #1688)

Deprecations and Removals
-------------------------
 - The old twisted.cred API (Perspectives, Identities and such) was
   removed (#1440)
 - twisted.spread.newjelly was removed (#1831)
 - Various deprecated things in twisted.python.components were
   removed: Interface, MetaInterface, getAdapterClass, and
   getAdapterClassWithInheritance (#1636)
 - twisted.enterprise.xmlreflector was removed (#661)
 - mktap is slowly on its way out, now that twistd supports plugins. It
   is not yet officially deprecated (#2013)
 - tkmktap was removed, because it wasn't working anyway (#2020)
 - reactor.iterate calls made inside of a Trial test case are
   deprecated (#2090)
 - twisted.internet.qtreactor was removed: It has been moved to a
   separate project. See http://twistedmatrix.com/trac/wiki/QTReactor
   (#2130, #2137)
 - threadedselectreactor is now not a directly usable reactor; it is
   only meant to help in writing other reactors (#2126)
 - twisted.python.reflect.funcinfo is deprecated (#2079)
 - twisted.spread.sturdy, which was already completely broken, was
   removed (#2299)


Other
-----
The following changes are minor or closely related to other changes.

 - #1783, #1786, #1788, #1648, #1734, #1609, #1800, #1818,
   #1629, #1829, #491, #1816, #1824, #1855, #1797, #1637, #1371,
   #1892, #1887, #1897, #1563, #1741, #1943, #1952, #1276,
   #1837, #1726, #1963, #1965, #1973, #1976, #1991, #1936, #1113,
   #630, #2002, #2040, #2044, #1617, #2045, #2055, #2056, #2022,
   #2052, #1552, #1999, #1507, #2054, #1970, #1968, #662, #1910,
   #1694, #1999, #1409, #2150, #2127, #2155, #1983, #2014, #2222,
   #1067, #2136, #2065, #1430, #2173, #2212, #1871, #2147, #1199,
   #2273, #428, #992, #815, #2024, #2292, #2125, #2139, #2291, #2174,
   #2306, #2228, #2309, #2319, #2317, #2313, #2154, #1985, #1201


2.4.0 (2006-05-21)
==================

Features
--------
 - twisted.internet.task.Cooperator (Added along with #1701).

Fixes
-----
 - Errors in UDP protocols no longer unbind the UDP port (#1695).
 - Misc: #1717, #1705, #1563, #1719, #1721, #1722, #1728.


2.3.0 (2006-05-14)
==================

Features
--------
 - twisted-dev-mode's F9 now uses trial's --testmodule feature, rather than
   trying to guess what tests to run.  This will break files using the "-x"
   test-case-name hack (just use a comma separated list instead).
 - API Documentation improvements.
 - A new Producer/Consumer guide (#53)
 - Better-defined error behavior in IReactorMulticast (#1578)
 - IOCP Multicast support (#1500)
 - Improved STDIO support on Windows. (#1553)
 - LoopingCall supports Deferreds such that it will wait until a
   Deferred has fired before rescheduling the next call (#1487)
 - Added twisted.python.versions.Version, a structured representation
   of Version information, including support for SVN revision numbers
   (#1663)

Fixes
-----

 - Many trial fixes, as usual
 - All API documentation is now correctly formatted as epytext (#1545)
 - twisted.python.filepath.FilePath.__repr__ is safer.
 - Fix trial's "until-failure" mode. (#1453)
 - deferredGenerator now no longer causes handled exceptions (or
   results) to propagate to the resulting Deferred (#1709).
 - Misc: #1483, #1495, #1503, #1532, #1539, #1559, #1509, #1538,
   #1571, #1331, #1561, #737, #1562, #1573, #1594, #1607, #1407, #1615,
   #1645, #1634, #1620, #1664, #1666, #1650, #1670, #1675, #1692, #1710,
   #1668.

Deprecations
------------

 - Removal of already-deprecated trial APIs: the assertions module,
   util.deferredResult, util.deferredError, util.fireWhenDoneFunc,
   util.spinUntil, util.spinWhile, util.extract_tb,
   util.format_exception, util.suppress_warnings, unittest.wait,
   util.wait
 - The backwards compatibility layer of twisted.python.components
   (e.g., backwardsCompatImplements, fixClassImplements, etc) has been
   disabled. The functions still exist, but do nothing as to not break
   user code outright (#1511)
 - Deprecate the usage of the 'default' argument as a keyword argument
   in Interface.__call__. Passing a second positional argument to
   specify the default return value of the adaptation is still
   supported.


2.2.0 (2006-02-12)
==================

Features
--------
 - Twisted no longer works with Python 2.2
 - FTP server supports more clients
 - Process support on Windows
 - twisted.internet.stdio improved (including Windows support!)
 - Trial:
   - Continued Trial refactoring
   - Default trial reporter is verbose black&white when color isn't supported
   - Deferreds returned in trial tests that don't fire before the
     unittest timeout now have their errback fired with a TimeoutError
   - raising SkipTest in setUp and setUpClass skips tests
   - Test suites are failed if there are import errors

Fixes
-----
 - iocpreactor fixes
 - Threadpool fixes
 - Fixed infinite loops in datagramReceived edge cases
 - Issues resolved: 654, 773, 998, 1005, 1008, 1116, 1123, 1198, 1221,
   1232, 1233, 1236, 1240, 1244, 1258, 1263, 1265, 1266, 1271, 1275,
   1293, 1294, 1298, 1308, 1316, 1317, 1321, 1341, 1344, 1353, 1359,
   1372, 1374, 1377, 1379, 1380, 1385, 1388, 1389, 1413, 1422, 1426,
   1434, 1435, 1448, 1449, 1456

Deprecations
------------
 - Trial:
   - spinWhile and spinUntil
   - util.wait
   - extract_tb and format_exception
   - util.suppressWarnings
   - runReactor is gone


2.1.0 (2005-11-06)
==================

Features
--------
 - threadedselectreactor, a reactor which potentially makes
   integration with foreign event loops much simpler.
 - major improvements to twisted.conch.insults, including many new widgets.
 - adbapi ConnectionPools now have 'runWithConnection' which is
   similar to runInteraction but gives you a connection object instead of
   a transaction. [975]
 - __file__ is now usable in tac files
 - twisted.cred.pamauth now contains a PAM checker (moved from twisted.conch)
 - twisted.protocols.policies.LimitTotalConnectionsFactory now exists,
   which does as the name suggests
 - twisted.protocols.ident now uses /proc/net/tcp on Linux [233]
 - trial now recurses packages by default (a la the old -R parameter)
 - (PB) Calling a remote method that doesn't exist now raises
   NoSuchMethod instead of AttributeError.

Fixes
-----
 - FTP client and server improvements
 - Trial improvements: The code is now much simpler, and more stable.
 - twisted.protocols.basic.FileSender now works with empty files
 - Twisted should now be much more usable on Pythons without thread support.
 - minor improvements to process code in win32eventreactor
 - twistd -y (--python) now implies -o (--nosave). [539]
 - improved lockfile handling especially with respect to unix sockets.
 - deferredGenerator now no longer overuses the stack, which sometimes
   caused stack overflows.
 - Failure.raiseException now at least always raises the correct Exception.
 - minor improvements to serialport code

Deprecations
------------
 - twisted.python.componts.getAdapter. Use IFoo(o) instead.
 - Adapter persistence (IFoo(x, persist=True)). Just don't use it.
 - log.debug. It was equivalent to log.msg(), just use that.
 - twisted.protocols.telnet. twisted.conch.telnet replaces it.
 - Setting a trial reporter using a flag to 'trial'. Instead of 'trial
   --bwverbose', for example, use 'trial --reporter=bwverbose'.
 - trial --coverage will become a flag in Twisted 2.2.
 - passing a fully-qualified python name to --reporter is
   deprecated. Pass only names of Reporter plugins.
 - trial --psyco.
 - trial -R (--recurse) is now the default, so passing it is deprecated.
 - trial --reporter-args. Use the plugin system to do this sort of thing.
 - trial.assertions.assertionMethod and trial.unittest.assertionMethod
   are both deprecated. Use instance methods on TestCases instead.
 - trial's deferredResult, deferredError, and wait functions. Return
   Deferreds from your test methods instead of using them.
 - Raising unittest.SkipTest with no arguments. Give a reason for your skip.
 - The Failure returned from a gatherResults and DeferredList is now
   of type FirstError instead of a tuple of (Exception, index). It
   supports a firstError[idx] syntax but that is deprecated. Use
   firstError.subFailure and firstError.index instead.
 - whenThreaded now simply calls the passed function synchronously.

2.0.1 (2005-05-09)
===================
Minor bug fix release.

SVN rev (file) - [bug number] description
-----------------------------------------
13307 (twisted/topfiles/README) - Mention support for python 2.4, too
13324 (twisted/internet/defer.py) - [947] Fix DeferredQueue backlog/size limit.
13354 (twisted/plugins/__init__.py) - Correct maintainer address.
13355 (twisted/test/test_defer.py) - improvements to DeferredQueue test case
13387 (setup.py) - add news to list of subprojects to install
13332 (twisted/internet/posixbase.py) - Fix spelling error
13366 (twisted/internet/qtreactor.py) - [957] [954] reactor.iterate fixes
13368 (twisted/test/test_internet.py) - Fix DelayedCall test case
13422 (twisted/internet/posixbase.py) - Remove log from _Win32Waker creation.
13437 (twisted/plugin.py) - [958] Only write cache if there were changes.
13666 (twisted/internet/gtkreactor.py,gtk2reactor.py) - Don't run callbacks
          until the reactor is actually up and running
13748 (twisted/internet/gtk2reactor.py) - [552] [994] Initialize threading properly.


2.0.0 (2005-03-25)
==================

Major new features
------------------
 - Replaced home-grown components system with zope.interface.
 - Split Twisted into multiple pieces.
 - Relicensed: Now under the MIT license, rather than LGPL.
 - Python 2.4 compatibility fixes
 - Major efficiency improvements in TCP buffering algorithm.
 - Major efficiency improvements in reactor.callLater/DelayedCall.
 - Half-close support for TCP/SSL. (loseWriteConnection).

Miscellaneous features/fixes
----------------------------
 - New plugin system: twisted.plugin
 - Better debugging support. Control-C will break you into PDB.
 - The twistd command has --uid --gid command line arguments.
 - *Incompatibility: mktap defaults to not change UID/GID, instead of saving
   the invoking user's UID/GID.
 - Removed some functions that were deprecated since Twisted 1.0.
 - ZSH tab-completion for twisted commands.

 - More correct daemonization in twistd.
 - twisted.python.log: do not close the log because of invalid format string.
 - Disabled automatic import of cBanana.
 - Boolean support for twisted.persisted.marmalade.
 - Refactor of plugin and application HOWTO documentation
 - Async HOWTO expanded greatly.
 - twisted.python.usage outputs the actual defaults, not passed in values.

twisted.trial
-------------
 - Rewritten, a bunch of bugs fixed, a few more added.

twisted.internet
----------------
 - Multi-listen UDP multicast support
 - protocol.ClientCreator has a connectSSL.
 - defer.deferredGenerator: allows you to write Deferred code w/o callbacks.
 - Deferred.setTimeout is now deprecated.
 - New defer.DeferredLock/DeferredSemaphore/DeferredQueue.
 - Add utils.getProcessOutputAndValue to get stdout/err/value.

 - Default DNS resolver is now non-blocking.
 - Increased default TCP accept backlog from 5 to 50.
 - Make buffering large amounts of TCP data work on Windows.
 - Fixed SSL disconnect to not wait for remote host. Fixes issue with firefox.
 - Separate state for Deferred finalization so that GC-loops preventing
   finalization don't occur.
 - Many Process bugfixes
 - Processes spawned on windows can successfully use sockets
 - gtk2reactor can optionally use glib event loop instead of gtk
 - gtk2reactor notifies gobject to initialize thread support
 - Fix registering a streaming producer on a transport.
 - Close client sockets explicitly after failed connections.
 - ReconnectingClientFactory now continues attempting to reconnect after all
   errors, not just those which are not UserErrors.

twisted.protocols
-----------------
 - Portforward doesn't start reading from a client until a connection is made.
 - Bugfixes in twisted.protocols.loopback
 - Improve speed of twisted.protocols.LineReceiver.
 - LineReceiver implements IProducer. (stop/pause/resumeProducing)
 - SOCKSv4 properly closes connections

twisted.enterprise
------------------
 - Add "new connection" callback to adbapi.ConnectionPool to allow for
   custom db connection setup (cp_openfun)
 - adbapi.ConnectionPool automatic reconnection support
 - Don't log exceptions extraneously


1.3.0 (2004-05-14)
==================

- Address objects for IPv4 and Unix addresses throughout twisted.internet.
- Improved connected UDP APIs.
- Refactored SSH client support.
- Initial implementation of Windows I/O Completion Ports event loop.
- Bug fixes and feature enhancements.
- Nevow support for Lore (so your Lore documents can use Nevow directives).
- This is the last release before Twisted begins splitting up.