6c3699073ed3943eddfa1c752c5f753d8df0350d
[privoxy.git] / doc / source / changelog.sgml
1 <!--
2  File        :  $Source: /cvsroot/ijbswa/current/doc/source/p-authors.sgml,v $
3
4  Purpose     :  Entity included in other project documents.
5
6  $Id: p-authors.sgml,v 2.49 2013/01/10 11:39:05 fabiankeil Exp $
7
8  Copyright (C) 2013 Privoxy Developers http://www.privoxy.org/
9  See LICENSE.
10
11  ======================================================================
12   This file used for inclusion with other documents only.
13  ======================================================================
14
15  If you make changes to this file, please verify the finished
16  docs all display as intended.
17
18  This file is included into:
19
20   user-manual
21 -->
22
23 <para>
24  <application>Privoxy 3.0.20</application> is a beta release.
25  The changes since 3.0.19 stable are:
26 </para>
27
28 <!--
29  The SGML ChangeLog can be generated with: utils/changelog2doc.pl ChangeLog
30 -->
31 <para>
32  <itemizedlist>
33     <listitem>
34    <para>
35     Bug fixes:
36     <itemizedlist>
37     <listitem>
38      <para>
39       Client sockets are now properly shutdown and drained before being
40       closed. This fixes page truncation issues with clients that aggressively
41       pipeline data on platforms that otherwise discard already written data.
42       The issue mainly affected Opera users and was initially reported
43       by Kevin in #3464439, szotsaki provided additional information to track
44       down the cause.
45      </para>
46     </listitem>
47     <listitem>
48      <para>
49       Fix latency calculation for shared connections (disabled by default).
50       It was broken since their introduction in 2009. The calculated latency
51       for most connections would be 0 in which case the timeout detection
52       failed to account for the real latency.
53      </para>
54     </listitem>
55     <listitem>
56      <para>
57       Reject URLs with invalid port. Previously they were parsed incorrectly and
58       characters between the port number and the first slash were silently
59       dropped as shown by curl test 187.
60      </para>
61     </listitem>
62     <listitem>
63      <para>
64       The default-server-timeout and socket-timeout directives accept 0 as
65       valid value.
66      </para>
67     </listitem>
68     <listitem>
69      <para>
70       Fix a race condition on Windows that could cause Privoxy to become
71       unresponsive after toggling it on or off through the taskbar icon.
72       Reported by Tim H. in #3525694.
73      </para>
74     </listitem>
75     <listitem>
76      <para>
77       Fix the compilation on Windows when configured without IPv6 support.
78      </para>
79     </listitem>
80     <listitem>
81      <para>
82       Fix an assertion that could cause debug builds to abort() in case of
83       socks5 connection failures with "debug 2" enabled.
84      </para>
85     </listitem>
86     <listitem>
87      <para>
88       Fix an assertion that could cause debug builds to abort() if a filter
89       contained nul bytes in the replacement text.
90      </para>
91      </listitem>
92     </itemizedlist>
93    </para>
94   </listitem>
95   <listitem>
96    <para>
97     General improvements:
98     <itemizedlist>
99     <listitem>
100      <para>
101       Significantly improved keep-alive support for both client and server
102       connections.
103      </para>
104     </listitem>
105     <listitem>
106      <para>
107       New debug log level 65536 which logs all actions that were applied to
108       the request.
109      </para>
110     </listitem>
111     <listitem>
112      <para>
113       New directive client-header-order to forward client headers in a
114       different order than the one in which they arrived.
115      </para>
116     </listitem>
117     <listitem>
118      <para>
119       New directive tolerate-pipelining to allow client-side pipelining.
120       If enabled (3.0.20 beta enables it by default), Privoxy will keep
121       pipelined client requests around to deal with them once the current
122       request has been served.
123      </para>
124     </listitem>
125     <listitem>
126      <para>
127       New --config-test option to let Privoxy exit after checking whether or not
128       the configuration seems valid. The limitations noted in TODO #22 and #23
129       still apply. Based on a patch by Ramkumar Chinchani.
130      </para>
131     </listitem>
132     <listitem>
133      <para>
134       New limit-cookie-lifetime{} action to let cookies expire before the end
135       of the session. Suggested by Rick Sykes in #1049575.
136      </para>
137     </listitem>
138     <listitem>
139      <para>
140       Increase the hard-coded maximum number of actions and filter files from
141       10 to 30 (each). It doesn't significantly affect Privoxy's memory usage
142       and recompiling wasn't an option for all Privoxy users that reached the
143       limit.
144      </para>
145     </listitem>
146     <listitem>
147      <para>
148       Add support for chunk-encoded client request bodies. Previously
149       chunk-encoded request bodies weren't guaranteed to be forwarded correctly,
150       so this can also be considered a bug fix although chunk-encoded request
151       bodies aren't commonly used in the real world.
152      </para>
153     </listitem>
154     <listitem>
155      <para>
156       Add support for Tor's optimistic-data SOCKS extension, which can reduce the
157       latency for requests on newly created connections. Currently only the
158       headers are sent optimistically and only if the client request has already
159       been read completely which rules out requests with large bodies.
160      </para>
161     </listitem>
162     <listitem>
163      <para>
164       After preventing the client from pipelining, don't signal keep-alive
165       intentions. When looking at the response headers alone, it previously
166       wasn't obvious from the client's perspective that no additional responses
167       should be expected.
168      </para>
169     </listitem>
170     <listitem>
171      <para>
172       Stop considering client sockets tainted after receiving a request with body.
173       It hasn't been necessary for a while now and unnecessarily causes test
174       failures when using curl's test suite.
175      </para>
176     </listitem>
177     <listitem>
178      <para>
179       Allow HTTP/1.0 clients to signal interest in keep-alive through the
180       Proxy-Connection header. While such client are rare in the real world, it
181       doesn't hurt and couple of curl tests rely on it.
182      </para>
183     </listitem>
184     <listitem>
185      <para>
186       Only remove duplicated Content-Type headers when filters are enabled.
187       If they are not it doesn't cause ill effects and the user might not want it.
188       Downgrade the removal message to LOG_LEVEL_HEADER to clarify that it's not
189       an error in Privoxy and is unlikely to cause any problems in general.
190       Anonymously reported in #3599335.
191      </para>
192     </listitem>
193     <listitem>
194      <para>
195       Set the socket option SO_LINGER for the client socket.
196      </para>
197     </listitem>
198     <listitem>
199      <para>
200       Move several variable declarations to the beginning of their code block.
201       It's required when compiling with gcc 2.95 which is still used on some
202       platforms. Initial patch submitted by Simon South in #3564815.
203      </para>
204     </listitem>
205     <listitem>
206      <para>
207       Optionally try to sanity-check strptime() results before trusting them.
208       Broken strptime() implementations have caused problems in the past and
209       the most recent offender seems to be FreeBSD's libc (standards/173421).
210      </para>
211     </listitem>
212     <listitem>
213      <para>
214       When filtering is enabled, let Range headers pass if the range starts at
215       the beginning. This should work around (or at least reduce) the video
216       playback issues with various Apple clients as reported by Duc in #3426305.
217      </para>
218     </listitem>
219     <listitem>
220      <para>
221       Do not confuse a client hanging up with a connection time out. If a client
222       closes its side of the connection without sending a request line, do not
223       send the CLIENT_CONNECTION_TIMEOUT_RESPONSE, but report the condition
224       properly.
225      </para>
226     </listitem>
227     <listitem>
228      <para>
229       Allow closing curly braces as part of action values as long as they are
230       escaped.
231      </para>
232     </listitem>
233     <listitem>
234      <para>
235       On Windows, the logfile is now written before showing the GUI error
236       message which blocks until the user acknowledges it.
237       Reported by Adriaan in #3593603.
238      </para>
239     </listitem>
240     <listitem>
241      <para>
242       Remove an unreasonable parameter limit in the CGI interface. The new
243       parameter limit depends on the memory available and is currently unlikely
244       to be reachable, due to other limits in both Privoxy and common clients.
245       Reported by Andrew on ijbswa-users@.
246      </para>
247     </listitem>
248     <listitem>
249      <para>
250       Decrease the chances of parse failures after requests with unsupported
251       methods were sent to the CGI interface.
252      </para>
253      </listitem>
254     </itemizedlist>
255    </para>
256   </listitem>
257   <listitem>
258    <para>
259     Action file improvements:
260     <itemizedlist>
261     <listitem>
262      <para>
263       Remove the comment that indicated that updated default.action versions
264       are released on their own.
265      </para>
266     </listitem>
267     <listitem>
268      <para>
269       Block 'optimize.indieclick.com/' and 'optimized-by.rubiconproject.com/'
270      </para>
271     </listitem>
272     <listitem>
273      <para>
274       Unblock 'adjamblog.wordpress.com/' and 'adjamblog.files.wordpress.com/'.
275       Reported by Ryan Farmer in #3496116.
276      </para>
277     </listitem>
278     <listitem>
279      <para>
280       Unblock '/.*Bugtracker'. Reported by pwhk in #3522341.
281      </para>
282     </listitem>
283     <listitem>
284      <para>
285       Add test URLs for '.freebsd.org' and '.watson.org'.
286      </para>
287     </listitem>
288     <listitem>
289      <para>
290       Unblock '.urbandictionary.com/popular'.
291      </para>
292     </listitem>
293     <listitem>
294      <para>
295       Block '.adnxs.com/'.
296      </para>
297     </listitem>
298     <listitem>
299      <para>
300       Block 'farm.plista.com/widgetdata.php'.
301      </para>
302     </listitem>
303     <listitem>
304      <para>
305       Block 'rotation.linuxnewmedia.com/'.
306      </para>
307     </listitem>
308     <listitem>
309      <para>
310       Block 'reklamy.sfd.pl/'. Reported by kacperdominik in #3399948.
311      </para>
312     </listitem>
313     <listitem>
314      <para>
315       Block 'g.adspeed.net/'.
316      </para>
317     </listitem>
318     <listitem>
319      <para>
320       Unblock 'websupport.wdc.com/'. Reported by Adam Piggot in #3577851.
321      </para>
322     </listitem>
323     <listitem>
324      <para>
325       Block '/openx/www/delivery/'.
326      </para>
327     </listitem>
328     <listitem>
329      <para>
330       Disable fast-redirects for '.googleapis.com/'.
331      </para>
332     </listitem>
333     <listitem>
334      <para>
335       Block 'imp.double.net/'. Reported by David Bo in #3070411.
336      </para>
337     </listitem>
338     <listitem>
339      <para>
340       Block 'gm-link.com/' which is used for email tracking.
341       Reported by David Bo in #1812733.
342      </para>
343     </listitem>
344     <listitem>
345      <para>
346       Verify that requests to "bwp." are blocked. URL taken from #1736879
347       submitted by Francois Marier.
348      </para>
349     </listitem>
350     <listitem>
351      <para>
352       Block '/.*bannerid='. Reported by Adam Piggott in #2975779.
353      </para>
354     </listitem>
355     <listitem>
356      <para>
357       Block 'cltomedia.info/delivery/' and '.adexprt.com/'.
358       Anonymously reported in #2965254.
359      </para>
360     </listitem>
361     <listitem>
362      <para>
363       Block 'de17a.com/'. Reported by David Bo in #3061472.
364      </para>
365     </listitem>
366     <listitem>
367      <para>
368       Block 'oskar.tradera.com/'. Reported by David Bo in #3060596.
369      </para>
370     </listitem>
371     <listitem>
372      <para>
373       Block '/scripts/webtrends\.js'. Reported by johnd16 in #3002729.
374      </para>
375     </listitem>
376     <listitem>
377      <para>
378       Block requests for 'pool.*.adhese.com/'. Reported by johnd16 in #3002716.
379      </para>
380     </listitem>
381     <listitem>
382      <para>
383       Update path pattern for Coremetrics and add tests.
384       Pattern and URLs submitted by Adam Piggott #3168443.
385      </para>
386     </listitem>
387     <listitem>
388      <para>
389       Enable +fast-redirects{check-decoded-url} for 'tr.anp.se/'.
390       Reported by David Bo in #3268832.
391      </para>
392     </listitem>
393     <listitem>
394      <para>
395       Unblock '.conrad.se/newsletter/banners/'. Reported by David Bo in #3413824.
396      </para>
397     </listitem>
398     <listitem>
399      <para>
400       Block '.tynt.com/'. Reported by Dan Stahlke in #3421767.
401      </para>
402     </listitem>
403     <listitem>
404      <para>
405       Unblock '.bbci.co.uk/radio/'. Reported by Adam Piggott in #3569603.
406      </para>
407     </listitem>
408     <listitem>
409      <para>
410       Block requests to 'service.maxymiser.net/'.
411       Reported by johnd16 in #3118401 (with a previous URL).
412      </para>
413     </listitem>
414     <listitem>
415      <para>
416       Disable fast-redirects for Google's "let's pretend your computer is
417       infected" page.
418      </para>
419     </listitem>
420     <listitem>
421      <para>
422       Unblock '/.*download' to resolve actionsfile feedback #3498129.
423       Submitted by Steven Kolins (soundcloud.com not working).
424      </para>
425     </listitem>
426     <listitem>
427      <para>
428       Unblock '.wlxrs.com/' which is required by hotmail.com.
429       Fixes #3413827 submitted by David Bo.
430      </para>
431     </listitem>
432     <listitem>
433      <para>
434       Add two unblock patterns for popup radio and TV players.
435       Submitted by Adam Piggott in #3596089.
436      </para>
437      </listitem>
438     </itemizedlist>
439    </para>
440   </listitem>
441   <listitem>
442    <para>
443     Filter file improvements & bug fixes:
444     <itemizedlist>
445     <listitem>
446      <para>
447       Add a referer tagger.
448      </para>
449     </listitem>
450     <listitem>
451      <para>
452       Reduce the likelihood that the google filter messes up HTML-generating
453       JavaScript. Reported by Zeno Kugy in #3520260.
454      </para>
455      </listitem>
456     </itemizedlist>
457    </para>
458   </listitem>
459   <listitem>
460    <para>
461     Documentation improvements:
462     <itemizedlist>
463     <listitem>
464      <para>
465       Revised all OS X sections due to new packaging module (OSXPackageBuilder).
466      </para>
467     </listitem>
468     <listitem>
469      <para>
470       Update the list of supported operating systems to clarify that all Windows
471       versions after 95 are expected to work and note that the platform-specific
472       code for AmigaOS and QNX currently isn't maintained.
473      </para>
474     </listitem>
475     <listitem>
476      <para>
477       Update 'Signals' section, the only explicitly handled signals are SIGINT,
478       SIGTERM and SIGHUP.
479      </para>
480     </listitem>
481     <listitem>
482      <para>
483       Add Haiku to the list of operating systems on which Privoxy is known to
484       run.
485      </para>
486     </listitem>
487     <listitem>
488      <para>
489       Add DragonFly to the list of BSDs on which Privoxy is known to run.
490      </para>
491     </listitem>
492     <listitem>
493      <para>
494       Removed references to redhat-specific documentation set since it no longer
495       exists.
496      </para>
497     </listitem>
498     <listitem>
499      <para>
500       Removed references to building PDFs since we no longer do so.
501      </para>
502     </listitem>
503     <listitem>
504      <para>
505       Multiple listen-address directives are supported since 3.0.18, correct the
506       documentation to say so.
507      </para>
508     </listitem>
509     <listitem>
510      <para>
511       Remove bogus section about long and short being preferable to int.
512      </para>
513     </listitem>
514     <listitem>
515      <para>
516       Corrected some Internet JunkBuster references to Privoxy.
517      </para>
518     </listitem>
519     <listitem>
520      <para>
521       Removed references to www.junkbusters.com since it is no longer
522       maintained. Reported by Angelina Matson.
523      </para>
524     </listitem>
525     <listitem>
526      <para>
527       Various grammar and spelling corrections
528      </para>
529     </listitem>
530     <listitem>
531      <para>
532       Add a client-header-tagger{} example for disabling filtering for range
533       requests.
534      </para>
535     </listitem>
536     <listitem>
537      <para>
538       Correct a URL in the "Privoxy with Tor" FAQ.
539      </para>
540     </listitem>
541     <listitem>
542      <para>
543       Spell 'refresh-tags' correctly. Reported by Don in #3571927.
544      </para>
545     </listitem>
546     <listitem>
547      <para>
548       Sort manpage options alphabetically.
549      </para>
550     </listitem>
551     <listitem>
552      <para>
553       Remove an incorrect sentence in the toggle section. The toggle state
554       doesn't affect whether or not the Windows version uses the tray icon.
555       Reported by Zeno Kugy in #3596395.
556      </para>
557     </listitem>
558     <listitem>
559      <para>
560       Add new contributors since 3.0.19.
561      </para>
562      </listitem>
563     </itemizedlist>
564    </para>
565   </listitem>
566   <listitem>
567    <para>
568     Log message improvements:
569     <itemizedlist>
570     <listitem>
571      <para>
572       When stopping to watch a client socket due to pipelining, additionally log
573       the socket number.
574      </para>
575     </listitem>
576     <listitem>
577      <para>
578       Log the client socket and its condition before closing it. This makes it
579       more obvious that the socket actually gets closed and should help when
580       diagnosing problems like #3464439.
581      </para>
582     </listitem>
583     <listitem>
584      <para>
585       In case of SOCKS5 failures, do not explicitly log the server's response.
586       It hasn't helped so far and the response can already be logged by enabling
587       "debug 32768" anyway. This reverts v1.81 and the follow-up bug fix v1.84.
588      </para>
589     </listitem>
590     <listitem>
591      <para>
592       Relocate the connection-accepted message from listen_loop() to serve().
593       This way it's printed by the thread that is actually serving the
594       connection which is nice when grepping for thread ids in log files.
595      </para>
596      </listitem>
597     </itemizedlist>
598    </para>
599   </listitem>
600   <listitem>
601    <para>
602     Code cleanups:
603     <itemizedlist>
604     <listitem>
605      <para>
606       Remove compatibility layer for versions prior to 3.0 since it has been
607       obsolete for more than 10 years now.
608      </para>
609     </listitem>
610     <listitem>
611      <para>
612       Remove the ijb_isupper() and ijb_tolower() macros from parsers.c since
613       they aren't used in this file.
614      </para>
615     </listitem>
616     <listitem>
617      <para>
618       Removed the 'Functions declared include:' comment sections since they tend
619       to be incomplete, incorrect and out of date and the benefit seems
620       questionable.
621      </para>
622     </listitem>
623     <listitem>
624      <para>
625       Various comment grammar and comprehensibility improvements.
626      </para>
627     </listitem>
628     <listitem>
629      <para>
630       Remove a pointless fflush() call in chat(). Flushing all streams pretty
631       much all the time for no obvious reason is ridiculous.
632      </para>
633     </listitem>
634     <listitem>
635      <para>
636       Relocate ijb_isupper()'s definition to project.h and get the ijb_tolower()
637       definition from there, too.
638      </para>
639     </listitem>
640     <listitem>
641      <para>
642       Relocate ijb_isdigit()'s definition to project.h.
643      </para>
644     </listitem>
645     <listitem>
646      <para>
647       Rename ijb_foo macros to privoxy_foo.
648      </para>
649     </listitem>
650     <listitem>
651      <para>
652       Add malloc_or_die() which will allow to simplify code paths where malloc()
653       failures don't need to be handled gracefully.
654      </para>
655     </listitem>
656     <listitem>
657      <para>
658       Add strdup_or_die() which will allow to simplify code paths where strdup()
659       failures don't need to be handled gracefully.
660      </para>
661     </listitem>
662     <listitem>
663      <para>
664       Replace strdup() calls with strdup_or_die() calls where it's safe and
665       simplifies the code.
666      </para>
667     </listitem>
668     <listitem>
669      <para>
670       Fix white-space around parentheses.
671      </para>
672     </listitem>
673     <listitem>
674      <para>
675       Add missing white-space behind if's and the following parentheses.
676      </para>
677     </listitem>
678     <listitem>
679      <para>
680       Unwrap a memcpy() call in resolve_hostname_to_ip().
681      </para>
682     </listitem>
683     <listitem>
684      <para>
685       Declare pcrs_get_delimiter()'s delimiters[] static const.
686      </para>
687     </listitem>
688     <listitem>
689      <para>
690       Various optimisations to remove dead code and merge inefficient code
691       structures for improved clarity, performance or code compactness.
692      </para>
693     </listitem>
694     <listitem>
695      <para>
696       Various data type corrections.
697      </para>
698     </listitem>
699     <listitem>
700      <para>
701       Change visibility of several code segments when compiling without
702       FEATURE_CONNECTION_KEEP_ALIVE enabled for clarity.
703      </para>
704     </listitem>
705     <listitem>
706      <para>
707       In pcrs_get_delimiter(), do not use delimiters outside the ASCII range.
708       Fixes a clang complaint.
709      </para>
710     </listitem>
711     <listitem>
712      <para>
713       Fix an error message in get_last_url() nobody is supposed to see.
714       Reported by Matthew Fischer in #3507301.
715      </para>
716     </listitem>
717     <listitem>
718      <para>
719       Fix a typo in the no-zlib-support complaint. Patch submitted by Matthew
720       Fischer in #3507304.
721      </para>
722     </listitem>
723     <listitem>
724      <para>
725       Shorten ssplit()'s prototype by removing the last two arguments. We always
726       want to skip empty fields and ignore leading delimiters, so having
727       parameters for this only complicates the API.
728      </para>
729     </listitem>
730     <listitem>
731      <para>
732       Use an enum for the type of the action value.
733      </para>
734     </listitem>
735     <listitem>
736      <para>
737       Rename action_name's member takes_value to value_type as it isn't used as
738       boolean.
739      </para>
740     </listitem>
741     <listitem>
742      <para>
743       Turn family mismatches in match_sockaddr() into fatal errors.
744      </para>
745     </listitem>
746     <listitem>
747      <para>
748       Let enlist_unique_header() verify that the caller didn't pass a header
749       containing either \r or \n.
750      </para>
751     </listitem>
752     <listitem>
753      <para>
754       Change the hashes used in load_config() to unsigned int. That's what
755       hash_string() actually returns and using a potentially larger type
756       is at best useless.
757      </para>
758     </listitem>
759     <listitem>
760      <para>
761       Use privoxy_tolower() instead of vanilla tolower() with manual casting of
762       the argument.
763      </para>
764     </listitem>
765     <listitem>
766      <para>
767       Catch ssplit() failures in parse_cgi_parameters().
768      </para>
769      </listitem>
770     </itemizedlist>
771    </para>
772   </listitem>
773   <listitem>
774    <para>
775     Privoxy-Regression-Test:
776     <itemizedlist>
777     <listitem>
778      <para>
779       Add an 'Overwrite condition' directive to skip any matching tests before
780       it. As it has a global scope, using it is more convenient than clowning
781       around with the Ignore directive.
782      </para>
783     </listitem>
784     <listitem>
785      <para>
786       Log to STDOUT instead of STDERR.
787      </para>
788     </listitem>
789     <listitem>
790      <para>
791       Include the Privoxy version in the output.
792      </para>
793     </listitem>
794     <listitem>
795      <para>
796       Various grammar and spelling corrections in documentation and code.
797      </para>
798     </listitem>
799     <listitem>
800      <para>
801       Additional tests for range requests with filtering enabled.
802      </para>
803     </listitem>
804     <listitem>
805      <para>
806       Tests with mostly invalid range request.
807      </para>
808     </listitem>
809     <listitem>
810      <para>
811       Add a couple of hide-if-modified-since{} tests with different date formats.
812      </para>
813     </listitem>
814     <listitem>
815      <para>
816       Cleaned up the format of the regression-tests.action file to match the
817       format of default.action.
818      </para>
819     </listitem>
820     <listitem>
821      <para>
822       Remove the "Copyright" line from print_version(). When using --help, every
823       line of screen space matters and thus shouldn't be wasted on things the
824       user doesn't care about.
825      </para>
826      </listitem>
827     </itemizedlist>
828    </para>
829   </listitem>
830   <listitem>
831    <para>
832     Privoxy-Log-Parser:
833     <itemizedlist>
834     <listitem>
835      <para>
836       Improve the --statistics performance by skipping sanity checks for input
837       that shouldn't affect the results anyway. Add a --strict-checks option
838       that enables some of the checks again, just in case anybody cares.
839      </para>
840     </listitem>
841     <listitem>
842      <para>
843       The distribution of client requests per connection is included in
844       the --statistic output.
845      </para>
846     </listitem>
847     <listitem>
848      <para>
849       The --accept-unknown-messages option has been removed and the behavior
850       is now the default.
851      </para>
852     </listitem>
853     <listitem>
854      <para>
855       Accept and (mostly) highlight new log messages introduced with
856       Privoxy 3.0.20.
857      </para>
858      </listitem>
859     </itemizedlist>
860    </para>
861   </listitem>
862   <listitem>
863    <para>
864     uagen:
865     <itemizedlist>
866     <listitem>
867      <para>
868       Bump generated Firefox version to 17.
869      </para>
870      </listitem>
871     </itemizedlist>
872    </para>
873   </listitem>
874   <listitem>
875    <para>
876     GNUmakefile improvements:
877     <itemizedlist>
878     <listitem>
879      <para>
880       The dok-tidy target no longer taints documents with a tidy-mark
881      </para>
882     </listitem>
883     <listitem>
884      <para>
885       Change RA_MODE from 0664 to 0644. Suggested by Markus Dittrich in
886       #3505445.
887      </para>
888     </listitem>
889     <listitem>
890      <para>
891       Remove tidy's clean flag as it changes the scope of attributes.
892       Link-specific colors end up being applied to all text. Reported by Adam
893       Piggott in #3569551.
894      </para>
895     </listitem>
896     <listitem>
897      <para>
898       Leave it up to the user whether or not smart tags are inserted.
899      </para>
900     </listitem>
901     <listitem>
902      <para>
903       Let w3m itself do the line wrapping for the config file. It works better
904       than fmt as it can honour pre tags causing less unintentional line breaks.
905      </para>
906     </listitem>
907     <listitem>
908      <para>
909       Ditch a pointless '-r' passed to rm to delete files.
910      </para>
911     </listitem>
912     <listitem>
913      <para>
914       The config-file target now requires less manual intervention and updates
915       the original config.
916      </para>
917     </listitem>
918     <listitem>
919      <para>
920       Change WDUMP to generate ASCII. Add WDUMP_UTF8 to allow UTF-8 in the
921       AUTHORS file so the names are right.
922      </para>
923     </listitem>
924     <listitem>
925      <para>
926       Stop pretending that lynx and links are supported for the documentation.
927      </para>
928      </listitem>
929     </itemizedlist>
930    </para>
931   </listitem>
932   <listitem>
933    <para>
934     configure improvements:
935     <itemizedlist>
936     <listitem>
937      <para>
938       On Haiku, do not pass -lpthread to the compiler. Haiku's pthreads
939       implementation is contained in its system library, libroot, so no
940       additional library needs to be searched.
941       Patch submitted by Simon South in #3564815.
942      </para>
943     </listitem>
944     <listitem>
945      <para>
946       Additional Haiku-specific improvements. Disable checks intended for
947       multi-user systems as Haiku is presently single-user. Group Haiku-specific
948       settings in their own section, following the pattern for Solaris, OS/2 and
949       AmigaOS. Add additional library-related settings to remove the need for
950       providing configure with custom LDFLAGS.
951       Submitted by Simon South in #3574538.
952      </para>
953      </listitem>
954     </itemizedlist>
955    </para>
956   </listitem>
957  </itemizedlist>
958 </para>