Commit 0f1ce8e6461d417d1fed2ea4a0cbf27f10ee4eff
1 parent
4c31d3b8
Prepare 7.0.0 release
Showing
6 changed files
with
268 additions
and
42 deletions
ChangeLog
README-maintainer.md
| @@ -14,7 +14,7 @@ | @@ -14,7 +14,7 @@ | ||
| 14 | --enable-werror --disable-shared | 14 | --enable-werror --disable-shared |
| 15 | ``` | 15 | ``` |
| 16 | The test suite should run clean with this. This seems to be more reliable than valgrind. | 16 | The test suite should run clean with this. This seems to be more reliable than valgrind. |
| 17 | -* Test with clang. | 17 | +* Test with clang. Pass `CC=clang CXX=clang++` to `./configure`. |
| 18 | * Check all open issues in the sourceforge trackers and on github. | 18 | * Check all open issues in the sourceforge trackers and on github. |
| 19 | * If any interfaces were added or changed, check C API to see whether changes are appropriate there as well. If necessary, review the casting policy in the manual, and ensure that integer types are properly handled. | 19 | * If any interfaces were added or changed, check C API to see whether changes are appropriate there as well. If necessary, review the casting policy in the manual, and ensure that integer types are properly handled. |
| 20 | * Avoid atoi. Use QUtil::string_to_int instead. It does overflow/underflow checking. | 20 | * Avoid atoi. Use QUtil::string_to_int instead. It does overflow/underflow checking. |
TODO
configure.ac
| @@ -2,7 +2,7 @@ dnl Process this file with autoconf to produce a configure script. | @@ -2,7 +2,7 @@ dnl Process this file with autoconf to produce a configure script. | ||
| 2 | dnl This config.in requires autoconf 2.5 or greater. | 2 | dnl This config.in requires autoconf 2.5 or greater. |
| 3 | 3 | ||
| 4 | AC_PREREQ([2.68]) | 4 | AC_PREREQ([2.68]) |
| 5 | -AC_INIT([qpdf],[7.0.b1]) | 5 | +AC_INIT([qpdf],[7.0.0]) |
| 6 | 6 | ||
| 7 | AC_CONFIG_MACRO_DIR([m4]) | 7 | AC_CONFIG_MACRO_DIR([m4]) |
| 8 | AC_CONFIG_FILES([autoconf.mk]) | 8 | AC_CONFIG_FILES([autoconf.mk]) |
| @@ -29,9 +29,9 @@ LT_INIT([win32-dll]) | @@ -29,9 +29,9 @@ LT_INIT([win32-dll]) | ||
| 29 | # * Otherwise, increment LT_REVISION | 29 | # * Otherwise, increment LT_REVISION |
| 30 | 30 | ||
| 31 | # LT = libtool | 31 | # LT = libtool |
| 32 | -LT_CURRENT=18 | 32 | +LT_CURRENT=19 |
| 33 | +LT_AGE=1 | ||
| 33 | LT_REVISION=0 | 34 | LT_REVISION=0 |
| 34 | -LT_AGE=0 | ||
| 35 | AC_SUBST(LT_CURRENT) | 35 | AC_SUBST(LT_CURRENT) |
| 36 | AC_SUBST(LT_REVISION) | 36 | AC_SUBST(LT_REVISION) |
| 37 | AC_SUBST(LT_AGE) | 37 | AC_SUBST(LT_AGE) |
libqpdf/QPDF.cc
| @@ -19,7 +19,7 @@ | @@ -19,7 +19,7 @@ | ||
| 19 | #include <qpdf/QPDF_Null.hh> | 19 | #include <qpdf/QPDF_Null.hh> |
| 20 | #include <qpdf/QPDF_Dictionary.hh> | 20 | #include <qpdf/QPDF_Dictionary.hh> |
| 21 | 21 | ||
| 22 | -std::string QPDF::qpdf_version = "7.0.b1"; | 22 | +std::string QPDF::qpdf_version = "7.0.0"; |
| 23 | 23 | ||
| 24 | static char const* EMPTY_PDF = | 24 | static char const* EMPTY_PDF = |
| 25 | "%PDF-1.3\n" | 25 | "%PDF-1.3\n" |
manual/qpdf-manual.xml
| @@ -5,8 +5,8 @@ | @@ -5,8 +5,8 @@ | ||
| 5 | <!ENTITY mdash "—"> | 5 | <!ENTITY mdash "—"> |
| 6 | <!ENTITY ndash "–"> | 6 | <!ENTITY ndash "–"> |
| 7 | <!ENTITY nbsp " "> | 7 | <!ENTITY nbsp " "> |
| 8 | -<!ENTITY swversion "7.0.b1"> | ||
| 9 | -<!ENTITY lastreleased "August 22, 2017"> | 8 | +<!ENTITY swversion "7.0.0"> |
| 9 | +<!ENTITY lastreleased "September 15, 2017"> | ||
| 10 | ]> | 10 | ]> |
| 11 | <book> | 11 | <book> |
| 12 | <bookinfo> | 12 | <bookinfo> |
| @@ -154,8 +154,8 @@ | @@ -154,8 +154,8 @@ | ||
| 154 | <listitem> | 154 | <listitem> |
| 155 | <para> | 155 | <para> |
| 156 | A C++ compiler that works well with STL and has the <type>long | 156 | A C++ compiler that works well with STL and has the <type>long |
| 157 | - long</type> type. Most modern C++ compilers should fit the | ||
| 158 | - bill fine. QPDF is tested with gcc and Microsoft Visual C++. | 157 | + long</type> type. Most modern C++ compilers should fit the bill |
| 158 | + fine. QPDF is tested with gcc, clang, and Microsoft Visual C++. | ||
| 159 | </para> | 159 | </para> |
| 160 | </listitem> | 160 | </listitem> |
| 161 | </itemizedlist> | 161 | </itemizedlist> |
| @@ -283,15 +283,17 @@ make | @@ -283,15 +283,17 @@ make | ||
| 283 | treated as a command-line argument. The <option>@-</option> option | 283 | treated as a command-line argument. The <option>@-</option> option |
| 284 | allows arguments to be read from standard input. This allows qpdf | 284 | allows arguments to be read from standard input. This allows qpdf |
| 285 | to be invoked with an arbitrary number of arbitrarily long | 285 | to be invoked with an arbitrary number of arbitrarily long |
| 286 | - arguments. | 286 | + arguments. It is also very useful for avoiding having to pass |
| 287 | + passwords on the command line. | ||
| 287 | </para> | 288 | </para> |
| 288 | <para> | 289 | <para> |
| 289 | <option>outfilename</option> does not have to be seekable, even | 290 | <option>outfilename</option> does not have to be seekable, even |
| 290 | when generating linearized files. Specifying | 291 | when generating linearized files. Specifying |
| 291 | - “<option>--</option>” as <option>outfilename</option> | 292 | + “<option>-</option>” as <option>outfilename</option> |
| 292 | means to write to standard output. However, you can't specify the | 293 | means to write to standard output. However, you can't specify the |
| 293 | same file as both the input and the output because qpdf reads data | 294 | same file as both the input and the output because qpdf reads data |
| 294 | - from the input file as it writes to the output file. | 295 | + from the input file as it writes to the output file. QPDF attempts |
| 296 | + to detect this case and fail without overwriting the output file. | ||
| 295 | </para> | 297 | </para> |
| 296 | <para> | 298 | <para> |
| 297 | Most options require an output file, but some testing or | 299 | Most options require an output file, but some testing or |
| @@ -507,12 +509,11 @@ make | @@ -507,12 +509,11 @@ make | ||
| 507 | encoded in ISO-8859-1 and your terminal is configured to use | 509 | encoded in ISO-8859-1 and your terminal is configured to use |
| 508 | UTF-8, the password you supply may not work properly. There are | 510 | UTF-8, the password you supply may not work properly. There are |
| 509 | various approaches to handling this. For example, if you are | 511 | various approaches to handling this. For example, if you are |
| 510 | - using Linux and have the iconv executable (part of the ICU | ||
| 511 | - package) installed, you could pass <option>--password=`echo | ||
| 512 | - <replaceable>password</replaceable> | iconv -t | ||
| 513 | - iso-8859-1`</option> to qpdf where | 512 | + using Linux and have the iconv executable installed, you could |
| 513 | + pass <option>--password=`echo <replaceable>password</replaceable> | ||
| 514 | + | iconv -t iso-8859-1`</option> to qpdf where | ||
| 514 | <replaceable>password</replaceable> is a password specified in | 515 | <replaceable>password</replaceable> is a password specified in |
| 515 | - your terminal's locale. A detailed discussion of this is out of | 516 | + your terminal's locale. A detailed discussion of this is out of |
| 516 | scope for this manual, but just be aware of this issue if you have | 517 | scope for this manual, but just be aware of this issue if you have |
| 517 | trouble with a password that contains 8-bit characters. | 518 | trouble with a password that contains 8-bit characters. |
| 518 | </para> | 519 | </para> |
| @@ -904,7 +905,10 @@ outfile.pdf</option> | @@ -904,7 +905,10 @@ outfile.pdf</option> | ||
| 904 | supported generalized filters: <option>/LZWDecode</option>, | 905 | supported generalized filters: <option>/LZWDecode</option>, |
| 905 | <option>/FlateDecode</option>, | 906 | <option>/FlateDecode</option>, |
| 906 | <option>/ASCII85Decode</option>, and | 907 | <option>/ASCII85Decode</option>, and |
| 907 | - <option>/ASCIIHexDecode</option> | 908 | + <option>/ASCIIHexDecode</option>. We define generalized |
| 909 | + filters as those to be used for general-purpose compression | ||
| 910 | + or encoding, as opposed to filters specifically designed | ||
| 911 | + for image data. | ||
| 908 | </para> | 912 | </para> |
| 909 | </listitem> | 913 | </listitem> |
| 910 | <listitem> | 914 | <listitem> |
| @@ -953,9 +957,9 @@ outfile.pdf</option> | @@ -953,9 +957,9 @@ outfile.pdf</option> | ||
| 953 | </listitem> | 957 | </listitem> |
| 954 | <listitem> | 958 | <listitem> |
| 955 | <para> | 959 | <para> |
| 956 | - <option>uncompress</option>: uncompress stream data when | ||
| 957 | - possible; equivalent to | ||
| 958 | - <option>--compress-streams=n</option> | 960 | + <option>uncompress</option>: uncompress stream data |
| 961 | + compressed with generalized filters when possible; | ||
| 962 | + equivalent to <option>--compress-streams=n</option> | ||
| 959 | <option>--decode-level=generalized</option> | 963 | <option>--decode-level=generalized</option> |
| 960 | </para> | 964 | </para> |
| 961 | </listitem> | 965 | </listitem> |
| @@ -1131,18 +1135,6 @@ outfile.pdf</option> | @@ -1131,18 +1135,6 @@ outfile.pdf</option> | ||
| 1131 | requested with <option>--stream-data=compress</option>. | 1135 | requested with <option>--stream-data=compress</option>. |
| 1132 | </para> | 1136 | </para> |
| 1133 | <para> | 1137 | <para> |
| 1134 | - When <option>--stream-data=preserve</option> is specified, qpdf | ||
| 1135 | - will never attempt to change the filtering of any stream data. | ||
| 1136 | - </para> | ||
| 1137 | - <para> | ||
| 1138 | - When <option>--stream-data=uncompress</option> is specified, qpdf | ||
| 1139 | - will attempt to remove any non-lossy filters that it supports. | ||
| 1140 | - This includes <literal>/FlateDecode</literal>, | ||
| 1141 | - <literal>/LZWDecode</literal>, <literal>/ASCII85Decode</literal>, | ||
| 1142 | - and <literal>/ASCIIHexDecode</literal>. This can be very useful | ||
| 1143 | - for inspecting the contents of various streams. | ||
| 1144 | - </para> | ||
| 1145 | - <para> | ||
| 1146 | When <option>--normalize-content=y</option> is specified, qpdf | 1138 | When <option>--normalize-content=y</option> is specified, qpdf |
| 1147 | will attempt to normalize whitespace and newlines in page content | 1139 | will attempt to normalize whitespace and newlines in page content |
| 1148 | streams. This is generally safe but could, in some cases, cause | 1140 | streams. This is generally safe but could, in some cases, cause |
| @@ -1386,7 +1378,14 @@ outfile.pdf</option> | @@ -1386,7 +1378,14 @@ outfile.pdf</option> | ||
| 1386 | conditions that <option>--check</option> detects. These are | 1378 | conditions that <option>--check</option> detects. These are |
| 1387 | issued as warnings instead of errors. If qpdf finds no errors | 1379 | issued as warnings instead of errors. If qpdf finds no errors |
| 1388 | but finds warnings, it will exit with a status of 3 (as of | 1380 | but finds warnings, it will exit with a status of 3 (as of |
| 1389 | - version 2.0.4). | 1381 | + version 2.0.4). When <option>--check</option> is combined |
| 1382 | + with other options, checks are always performed before any | ||
| 1383 | + other options are processed. For erroneous files, | ||
| 1384 | + <option>--check</option> will cause qpdf to attempt to | ||
| 1385 | + recover, after which other options are effectively operating | ||
| 1386 | + on the recovered file. Combining <option>--check</option> with | ||
| 1387 | + other options in this way can be useful for manually | ||
| 1388 | + recovering severely damaged files. | ||
| 1390 | </para> | 1389 | </para> |
| 1391 | </listitem> | 1390 | </listitem> |
| 1392 | </varlistentry> | 1391 | </varlistentry> |
| @@ -2926,6 +2925,237 @@ print "\n"; | @@ -2926,6 +2925,237 @@ print "\n"; | ||
| 2926 | </para> | 2925 | </para> |
| 2927 | <variablelist> | 2926 | <variablelist> |
| 2928 | <varlistentry> | 2927 | <varlistentry> |
| 2928 | + <term>7.0.0: September 15, 2017</term> | ||
| 2929 | + <listitem> | ||
| 2930 | + <itemizedlist> | ||
| 2931 | + <listitem> | ||
| 2932 | + <para> | ||
| 2933 | + Packaging and Distribution Changes | ||
| 2934 | + </para> | ||
| 2935 | + <itemizedlist> | ||
| 2936 | + <listitem> | ||
| 2937 | + <para> | ||
| 2938 | + QPDF's primary license is now <ulink | ||
| 2939 | + url="http://www.apache.org/licenses/LICENSE-2.0">version 2.0 | ||
| 2940 | + of the Apache License</ulink> rather than version 2.0 of the | ||
| 2941 | + Artistic License. You may still, at your option, consider | ||
| 2942 | + qpdf to be licensed with version 2.0 of the Artistic | ||
| 2943 | + license. | ||
| 2944 | + </para> | ||
| 2945 | + </listitem> | ||
| 2946 | + <listitem> | ||
| 2947 | + <para> | ||
| 2948 | + QPDF no longer has a dependency on the PCRE (Perl-Compatible | ||
| 2949 | + Regular Expression) library. QPDF now has an added | ||
| 2950 | + dependency on the JPEG library. | ||
| 2951 | + </para> | ||
| 2952 | + </listitem> | ||
| 2953 | + </itemizedlist> | ||
| 2954 | + </listitem> | ||
| 2955 | + </itemizedlist> | ||
| 2956 | + <itemizedlist> | ||
| 2957 | + <listitem> | ||
| 2958 | + <para> | ||
| 2959 | + Bug Fixes | ||
| 2960 | + </para> | ||
| 2961 | + <itemizedlist> | ||
| 2962 | + <listitem> | ||
| 2963 | + <para> | ||
| 2964 | + This release contains many bug fixes for various infinite | ||
| 2965 | + loops, memory leaks, and other memory errors that could be | ||
| 2966 | + encountered with specially crafted or otherwise erroneous | ||
| 2967 | + PDF files. | ||
| 2968 | + </para> | ||
| 2969 | + </listitem> | ||
| 2970 | + </itemizedlist> | ||
| 2971 | + </listitem> | ||
| 2972 | + </itemizedlist> | ||
| 2973 | + <itemizedlist> | ||
| 2974 | + <listitem> | ||
| 2975 | + <para> | ||
| 2976 | + New Features | ||
| 2977 | + </para> | ||
| 2978 | + <itemizedlist> | ||
| 2979 | + <listitem> | ||
| 2980 | + <para> | ||
| 2981 | + QPDF now supports reading and writing streams encoded with | ||
| 2982 | + JPEG or RunLength encoding. Library API enhancements and | ||
| 2983 | + command-line options have been added to control this | ||
| 2984 | + behavior. See command-line options | ||
| 2985 | + <option>--compress-streams</option> and | ||
| 2986 | + <option>--decode-level</option> and methods | ||
| 2987 | + <function>QPDFWriter::setCompressStreams</function> and | ||
| 2988 | + <function>QPDFWriter::setDecodeLevel</function>. | ||
| 2989 | + </para> | ||
| 2990 | + </listitem> | ||
| 2991 | + <listitem> | ||
| 2992 | + <para> | ||
| 2993 | + QPDF is much better at recovering from broken files. In most | ||
| 2994 | + cases, qpdf will skip invalid objects and will preserve | ||
| 2995 | + broken stream data by not attempting to filter broken | ||
| 2996 | + streams. QPDF is now able to recover or at least not crash | ||
| 2997 | + on dozens of broken test files I have received over the past | ||
| 2998 | + few years. | ||
| 2999 | + </para> | ||
| 3000 | + </listitem> | ||
| 3001 | + <listitem> | ||
| 3002 | + <para> | ||
| 3003 | + Page rotation is now supported and accessible from both the | ||
| 3004 | + library and the command line. | ||
| 3005 | + </para> | ||
| 3006 | + </listitem> | ||
| 3007 | + <listitem> | ||
| 3008 | + <para> | ||
| 3009 | + <classname>QPDFWriter</classname> supports writing files in | ||
| 3010 | + a way that preserves PCLm compliance in support of | ||
| 3011 | + driverless printing. This is very specialized and is only | ||
| 3012 | + useful to applications that already know how to create PCLm | ||
| 3013 | + files. | ||
| 3014 | + </para> | ||
| 3015 | + </listitem> | ||
| 3016 | + </itemizedlist> | ||
| 3017 | + </listitem> | ||
| 3018 | + </itemizedlist> | ||
| 3019 | + <itemizedlist> | ||
| 3020 | + <listitem> | ||
| 3021 | + <para> | ||
| 3022 | + Enhancements to the <command>qpdf</command> Command-line Tool. | ||
| 3023 | + All new options listed here are documented in more detail in | ||
| 3024 | + <xref linkend="ref.using"/>. | ||
| 3025 | + </para> | ||
| 3026 | + <itemizedlist> | ||
| 3027 | + <listitem> | ||
| 3028 | + <para> | ||
| 3029 | + Command-line arguments can now be read from files or | ||
| 3030 | + standard input using <literal>@file</literal> or | ||
| 3031 | + <literal>@-</literal> syntax. Please see <xref | ||
| 3032 | + linkend="ref.invocation"/>. | ||
| 3033 | + </para> | ||
| 3034 | + </listitem> | ||
| 3035 | + <listitem> | ||
| 3036 | + <para> | ||
| 3037 | + <option>--rotate</option>: request page rotation | ||
| 3038 | + </para> | ||
| 3039 | + </listitem> | ||
| 3040 | + <listitem> | ||
| 3041 | + <para> | ||
| 3042 | + <option>--newline-before-endstream</option>: ensure that a | ||
| 3043 | + newline appears before every <literal>endstream</literal> | ||
| 3044 | + keyword in the file; used to prevent qpdf from breaking | ||
| 3045 | + PDF/A compliance on already compliant files. | ||
| 3046 | + </para> | ||
| 3047 | + </listitem> | ||
| 3048 | + <listitem> | ||
| 3049 | + <para> | ||
| 3050 | + <option>--preserve-unreferenced</option>: preserve | ||
| 3051 | + unreferenced objects in the input PDF | ||
| 3052 | + </para> | ||
| 3053 | + </listitem> | ||
| 3054 | + <listitem> | ||
| 3055 | + <para> | ||
| 3056 | + <option>--split-pages</option>: break output into chunks | ||
| 3057 | + with fixed numbers of pages | ||
| 3058 | + </para> | ||
| 3059 | + </listitem> | ||
| 3060 | + <listitem> | ||
| 3061 | + <para> | ||
| 3062 | + <option>--verbose</option>: print the name of each output | ||
| 3063 | + file that is created | ||
| 3064 | + </para> | ||
| 3065 | + </listitem> | ||
| 3066 | + <listitem> | ||
| 3067 | + <para> | ||
| 3068 | + <option>--compress-streams</option> and | ||
| 3069 | + <option>--decode-level</option> replace | ||
| 3070 | + <option>--stream-data</option> for improving granularity of | ||
| 3071 | + controlling compression and decompression of stream data. | ||
| 3072 | + The <option>--stream-data</option> option will remain | ||
| 3073 | + available. | ||
| 3074 | + </para> | ||
| 3075 | + </listitem> | ||
| 3076 | + <listitem> | ||
| 3077 | + <para> | ||
| 3078 | + When running <command>qpdf --check</command> with other | ||
| 3079 | + options, checks are always run first. This enables qpdf to | ||
| 3080 | + perform its full recovery logic before outputting other | ||
| 3081 | + information. This can be especially useful when manually | ||
| 3082 | + recovering broken files, looking at qpdf's regenerated cross | ||
| 3083 | + reference table, or other similar operations. | ||
| 3084 | + </para> | ||
| 3085 | + </listitem> | ||
| 3086 | + <listitem> | ||
| 3087 | + <para> | ||
| 3088 | + Process <command>--pages</command> earlier so that other | ||
| 3089 | + options like <option>--show-pages</option> or | ||
| 3090 | + <option>--split-pages</option> can operate on the file after | ||
| 3091 | + page splitting/merging has occurred. | ||
| 3092 | + </para> | ||
| 3093 | + </listitem> | ||
| 3094 | + </itemizedlist> | ||
| 3095 | + </listitem> | ||
| 3096 | + </itemizedlist> | ||
| 3097 | + <itemizedlist> | ||
| 3098 | + <listitem> | ||
| 3099 | + <para> | ||
| 3100 | + API Changes. All new API calls are documented in their | ||
| 3101 | + respective classes' header files. | ||
| 3102 | + </para> | ||
| 3103 | + <itemizedlist> | ||
| 3104 | + <listitem> | ||
| 3105 | + <para> | ||
| 3106 | + <function>QPDFObjectHandle::rotatePage</function>: apply | ||
| 3107 | + rotation to a page object | ||
| 3108 | + </para> | ||
| 3109 | + </listitem> | ||
| 3110 | + <listitem> | ||
| 3111 | + <para> | ||
| 3112 | + <function>QPDFWriter::setNewlineBeforeEndstream</function>: | ||
| 3113 | + force newline to appear before <literal>endstream</literal> | ||
| 3114 | + </para> | ||
| 3115 | + </listitem> | ||
| 3116 | + <listitem> | ||
| 3117 | + <para> | ||
| 3118 | + <function>QPDFWriter::setPreserveUnreferencedObjects</function>: | ||
| 3119 | + preserve unreferenced objects that appear in the input PDF. | ||
| 3120 | + The default behavior is to discard them. | ||
| 3121 | + </para> | ||
| 3122 | + </listitem> | ||
| 3123 | + <listitem> | ||
| 3124 | + <para> | ||
| 3125 | + New <classname>Pipeline</classname> types | ||
| 3126 | + <classname>Pl_RunLength</classname> and | ||
| 3127 | + <classname>Pl_DCT</classname> are available for developers | ||
| 3128 | + who wish to produce or consume RunLength or DCT stream data | ||
| 3129 | + directly. The <filename>examples/pdf-create.cc</filename> | ||
| 3130 | + example illustrates their use. | ||
| 3131 | + </para> | ||
| 3132 | + </listitem> | ||
| 3133 | + <listitem> | ||
| 3134 | + <para> | ||
| 3135 | + <function>QPDFWriter::setCompressStreams</function> and | ||
| 3136 | + <function>QPDFWriter::setDecodeLevel</function> methods | ||
| 3137 | + control handling of different types of stream compression. | ||
| 3138 | + </para> | ||
| 3139 | + </listitem> | ||
| 3140 | + <listitem> | ||
| 3141 | + <para> | ||
| 3142 | + Add new C API functions | ||
| 3143 | + <function>qpdf_set_compress_streams</function>, | ||
| 3144 | + <function>qpdf_set_decode_level</function>, | ||
| 3145 | + <function>qpdf_set_preserve_unreferenced_objects</function>, | ||
| 3146 | + and <function>qpdf_set_newline_before_endstream</function> | ||
| 3147 | + corresponding to the new <classname>QPDFWriter</classname> | ||
| 3148 | + methods. | ||
| 3149 | + </para> | ||
| 3150 | + </listitem> | ||
| 3151 | + </itemizedlist> | ||
| 3152 | + </listitem> | ||
| 3153 | + </itemizedlist> | ||
| 3154 | + </listitem> | ||
| 3155 | + </varlistentry> | ||
| 3156 | + </variablelist> | ||
| 3157 | + <variablelist> | ||
| 3158 | + <varlistentry> | ||
| 2929 | <term>6.0.0: November 10, 2015</term> | 3159 | <term>6.0.0: November 10, 2015</term> |
| 2930 | <listitem> | 3160 | <listitem> |
| 2931 | <itemizedlist> | 3161 | <itemizedlist> |