Commit 557bd3c26141b5e450de0fada2a27584a386125e
1 parent
a5814d93
Start 9.0.0 release notes
Showing
1 changed file
with
158 additions
and
0 deletions
manual/qpdf-manual.xml
| @@ -4277,6 +4277,164 @@ print "\n"; | @@ -4277,6 +4277,164 @@ print "\n"; | ||
| 4277 | </para> | 4277 | </para> |
| 4278 | <variablelist> | 4278 | <variablelist> |
| 4279 | <varlistentry> | 4279 | <varlistentry> |
| 4280 | + <term>9.0.0: XXX</term> | ||
| 4281 | + <listitem> | ||
| 4282 | + <itemizedlist> | ||
| 4283 | + <listitem> | ||
| 4284 | + <para> | ||
| 4285 | + Incompatible API (source-level) Changes (minor) | ||
| 4286 | + </para> | ||
| 4287 | + <itemizedlist> | ||
| 4288 | + <listitem> | ||
| 4289 | + <para> | ||
| 4290 | + The method <function>QUtil::strcasecmp</function> has been | ||
| 4291 | + renamed to <function>QUtil::str_compare_nocase</function>. | ||
| 4292 | + This incompatible change is necessary to enable qpdf to | ||
| 4293 | + build on platforms that define | ||
| 4294 | + <function>strcasecmp</function> as a macro. | ||
| 4295 | + </para> | ||
| 4296 | + </listitem> | ||
| 4297 | + <listitem> | ||
| 4298 | + <para> | ||
| 4299 | + The <function>QPDF::copyForeignObject</function> method has | ||
| 4300 | + an overloaded version that took a boolean parameter that was | ||
| 4301 | + not used. If you were using this version, just omit the | ||
| 4302 | + extra parameter. | ||
| 4303 | + </para> | ||
| 4304 | + </listitem> | ||
| 4305 | + <listitem> | ||
| 4306 | + <para> | ||
| 4307 | + There was a version | ||
| 4308 | + <function>QPDFTokenizer::expectInlineImage</function> that | ||
| 4309 | + took no arguments. This version has been removed since it | ||
| 4310 | + caused the tokenizer to return incorrect inline images. A | ||
| 4311 | + new version was added some time ago that produces correct | ||
| 4312 | + output. This is a very low level method that doesn't make | ||
| 4313 | + sense to call outside of qpdf's lexical engine. There are | ||
| 4314 | + higher level methods for tokenizing content streams. | ||
| 4315 | + </para> | ||
| 4316 | + </listitem> | ||
| 4317 | + </itemizedlist> | ||
| 4318 | + </listitem> | ||
| 4319 | + <listitem> | ||
| 4320 | + <para> | ||
| 4321 | + Bug Fixes | ||
| 4322 | + </para> | ||
| 4323 | + <itemizedlist> | ||
| 4324 | + <listitem> | ||
| 4325 | + <para> | ||
| 4326 | + A small handful of memory issues, assertion failures, and | ||
| 4327 | + unhandled exceptions that could occur on badly mangled input | ||
| 4328 | + files have been fixed. Most of these problems were found by | ||
| 4329 | + Google's OSS-Fuzz project. | ||
| 4330 | + </para> | ||
| 4331 | + </listitem> | ||
| 4332 | + </itemizedlist> | ||
| 4333 | + </listitem> | ||
| 4334 | + <listitem> | ||
| 4335 | + <para> | ||
| 4336 | + Build Changes | ||
| 4337 | + </para> | ||
| 4338 | + <itemizedlist> | ||
| 4339 | + <listitem> | ||
| 4340 | + <para> | ||
| 4341 | + On platforms that support it, qpdf now builds with | ||
| 4342 | + <option>-fvisibility=hidden</option>. If you build qpdf with | ||
| 4343 | + your own build system, this is now safe to use. This | ||
| 4344 | + prevents methods that are not part of the public API from | ||
| 4345 | + being exported by the shared library, and makes qpdf's ELF | ||
| 4346 | + shared libraries (used on Linux, MacOS, and most other UNIX | ||
| 4347 | + flavors) behave more like the Windows DLL. Since the DLL | ||
| 4348 | + already behaves in much this way, it is unlikely that there | ||
| 4349 | + are any methods that were accidentally not exported. | ||
| 4350 | + However, with ELF shared libraries, typeinfo for some | ||
| 4351 | + classes has to be explicitly exported. If there are problems | ||
| 4352 | + in dynamically linked code catching exceptions or | ||
| 4353 | + subclassing, this could be the reason. If you see this, | ||
| 4354 | + please report a bug at <ulink | ||
| 4355 | + url="https://github.com/qpdf/qpdf/issues/">pikepdf</ulink>. | ||
| 4356 | + </para> | ||
| 4357 | + </listitem> | ||
| 4358 | + <listitem> | ||
| 4359 | + <para> | ||
| 4360 | + QPDF is now compiled with integer conversion and sign | ||
| 4361 | + conversion warnings enabled. Numerous changes were made to | ||
| 4362 | + the library to make this safe. | ||
| 4363 | + </para> | ||
| 4364 | + </listitem> | ||
| 4365 | + </itemizedlist> | ||
| 4366 | + </listitem> | ||
| 4367 | + <listitem> | ||
| 4368 | + <para> | ||
| 4369 | + Library Enhancements | ||
| 4370 | + </para> | ||
| 4371 | + <itemizedlist> | ||
| 4372 | + <listitem> | ||
| 4373 | + <para> | ||
| 4374 | + A new namespace <classname>QIntC</classname>, provided by | ||
| 4375 | + <filename>qpdf/QIntC.hh</filename>, provides safe conversion | ||
| 4376 | + methods between different integer types. These conversion | ||
| 4377 | + methods do range checking to ensure that the cast can be | ||
| 4378 | + performed with no loss of information. Every use of | ||
| 4379 | + <function>static_cast</function> in the library was | ||
| 4380 | + inspected to see if it could use one of these safe | ||
| 4381 | + converters instead. See <xref linkend="ref.casting"/> for | ||
| 4382 | + additional details. | ||
| 4383 | + </para> | ||
| 4384 | + </listitem> | ||
| 4385 | + <listitem> | ||
| 4386 | + <para> | ||
| 4387 | + New methods have been added to <classname>QUtil</classname> | ||
| 4388 | + for converting back and forth between strings and unsigned | ||
| 4389 | + integers: <function>uint_to_string</function>, | ||
| 4390 | + <function>uint_to_string_base</function>, | ||
| 4391 | + <function>string_to_uint</function>, and | ||
| 4392 | + <function>string_to_ull</function>. | ||
| 4393 | + </para> | ||
| 4394 | + </listitem> | ||
| 4395 | + <listitem> | ||
| 4396 | + <para> | ||
| 4397 | + New methods have been added to | ||
| 4398 | + <classname>QPDFObjectHandle</classname> that return the | ||
| 4399 | + value of <classname>Integer</classname> objects as | ||
| 4400 | + <type>int</type> or <type>unsigned int</type> with range | ||
| 4401 | + checking and sensible fallback values, and a new method was | ||
| 4402 | + added to return an unsigned value. This makes it easier to | ||
| 4403 | + write code that is safe from unintentional data loss. | ||
| 4404 | + Functions: <function>getUIntValue</function>, | ||
| 4405 | + <function>getIntVauleAsInt</function>, | ||
| 4406 | + <function>getUIntValueAsUInt</function>. | ||
| 4407 | + </para> | ||
| 4408 | + </listitem> | ||
| 4409 | + <listitem> | ||
| 4410 | + <para> | ||
| 4411 | + A new helper method | ||
| 4412 | + <function>QUtil::read_file_into_memory</function> was added. | ||
| 4413 | + </para> | ||
| 4414 | + </listitem> | ||
| 4415 | + </itemizedlist> | ||
| 4416 | + </listitem> | ||
| 4417 | + <listitem> | ||
| 4418 | + <para> | ||
| 4419 | + Other Notes | ||
| 4420 | + </para> | ||
| 4421 | + <itemizedlist> | ||
| 4422 | + <listitem> | ||
| 4423 | + <para> | ||
| 4424 | + QPDF has been fully integrated into <ulink | ||
| 4425 | + url="https://github.com/google/oss-fuzz">Google's OSS-Fuzz | ||
| 4426 | + project</ulink>. This project exercises code with randomly | ||
| 4427 | + mutated inputs and is great for discovering hidden security | ||
| 4428 | + crashes and security issues. Several bugs found by oss-fuzz | ||
| 4429 | + have already been fixed in qpdf. | ||
| 4430 | + </para> | ||
| 4431 | + </listitem> | ||
| 4432 | + </itemizedlist> | ||
| 4433 | + </listitem> | ||
| 4434 | + </itemizedlist> | ||
| 4435 | + </listitem> | ||
| 4436 | + </varlistentry> | ||
| 4437 | + <varlistentry> | ||
| 4280 | <term>8.4.2: May 18, 2019</term> | 4438 | <term>8.4.2: May 18, 2019</term> |
| 4281 | <listitem> | 4439 | <listitem> |
| 4282 | <para> | 4440 | <para> |