Commit 807dbf42c5420ee70bdc4f2c5342a82f3c0aaff1

Authored by m-holger
Committed by GitHub
2 parents 884d36be b4fe4c37

Merge pull request #1381 from m-holger/rn

Update release notes and reverse making QPDFObjectHandle final
include/qpdf/QPDFObjectHandle.hh
... ... @@ -63,7 +63,7 @@ class Pl_QPDFTokenizer;
63 63 class QPDFMatrix;
64 64 class QPDFParser;
65 65  
66   -class QPDFObjectHandle final: public qpdf::BaseHandle
  66 +class QPDFObjectHandle: public qpdf::BaseHandle
67 67 {
68 68 friend class QPDFParser;
69 69  
... ...
manual/release-notes.rst
  1 +.. _ticket: https://issues.qpdf.org
  2 +.. _shared null: https://wiki.qpdf.org/PDF-null-objects-vs-qpdf-null-objects
  3 +
1 4 .. _release-notes:
2 5  
3 6 Release Notes
... ... @@ -41,13 +44,42 @@ more detail.
41 44 - ``QIntC.hh`` contained the typo ``substract`` in function names,
42 45 which has been fixed to ``subtract``.
43 46  
  47 + - The protected ``QPDFObjectHelper::oh`` data member has been replaced with
  48 + the new accessor method ``QPDFObjectHelper::oh()``.
  49 +
  50 + - Except for abstract classes and the exceptions listed below, sub-classing of
  51 + qpdf classes is not supported. These classes were never designed to be used as a
  52 + base class and will be made final in version 13. If you have a use case for
  53 + extending one of these classes, please open a ticket_.
  54 +
  55 + Exceptions:
  56 +
  57 + - ``QPDFDocumentHelper``
  58 + - ``QPDFObjectHelper``
  59 +
  60 + - Upcasting to ``QPDFObjectHelper`` and ``QPDFDocumentHelper`` is not supported. Their
  61 + destructors will be made protected in version 13.
  62 +
  63 + - Catching of logic errors thrown as the result of using an uninitialized
  64 + ``QPDFObjectHandle`` is not supported. In version 13 uninitialized object handles
  65 + will be treated as immutable `shared null`_ objects. Using them will no longer throw
  66 + any logic errors, but may where appropriate generate type warnings or exceptions.
  67 +
44 68 .. _r12-0-0-deprecate:
45 69  
46 70 - The following are believed to be not in use and have been deprecated.
47   - If you are relying on them please open a `ticket <https://issues.qpdf.org>`__:
  71 + If you are relying on them please open a ticket_.
48 72  
49 73 - All ``QPDFTokenizer`` push-mode methods.
50 74  
  75 + - CLI breaking Changes
  76 +
  77 + - To support the future introduction of sub-commands, the use of filenames without
  78 + extension and path element as the first argument is no longer supported, and the
  79 + result may change in the future. For example, ``qpdf check out.pdf`` currently
  80 + copies the file ``check`` to ``out.pdf`` but may in future check ``out.pdf``.
  81 + Use ``qpdf ./check out.pdf`` or ``qpdf -- check out.pdf`` instead.
  82 +
51 83 - Library Enhancements
52 84  
53 85 - ``QPDFObjectHandle`` supports move construction/assignment.
... ... @@ -59,6 +91,12 @@ more detail.
59 91  
60 92 - Most ``QPDFObjectHandle`` accessor methods are now const qualified.
61 93  
  94 + - ``QPDFObjectHandle`` and all object helper classes are now explicitly convertible
  95 + to ``QPDFObjGen``, and therefore can be passed as parameter where a ``QPDFObjGen``
  96 + is required. Redundant overloaded methods have been removed.
  97 +
  98 + - All object helper classes are now explicitly convertible to ``QPDFObjectHandle``.
  99 +
62 100 - Build Changes
63 101  
64 102 - If ``POINTERHOLDER_TRANSITION`` is not defined, define it to
... ... @@ -70,12 +108,26 @@ more detail.
70 108 ``PointerHolder`` will have to explicitly include it rather than
71 109 relying on other headers to bring it along.
72 110  
  111 + - Other Changes
  112 +
  113 + - The internal implementation of objects has been extensively refactored, using
  114 + std::variant to eliminate one level of indirection. This has saved one shared pointer
  115 + per object with some improvement both in runtime and memory usage. A new class
  116 + ``BaseHandle`` has been added as common base class of both ``QPDFObjectHandle``
  117 + and ``QPDFObjectHelper`` to provide common functionality appropriate for all
  118 + object-handle-like classes including e.g. the operator to convert to ``QPDFObjGen``.
  119 + ``BaseHandle`` is an implementation detail and not directly usable by library users.
  120 +
  121 + - There has also been significant refactoring of how qpdf internally iterates over
  122 + arrays and dictionaries.
  123 +
  124 +
73 125 11.10.1: February 15, 2025
74 126 - Build fixes
75 127  
76   - - Fix incorrect detection of zopfli
  128 + - Fix incorrect detection of zopfli.
77 129  
78   - - Recognize cygwin perl as Windows when running test suite
  130 + - Recognize cygwin perl as Windows when running test suite.
79 131  
80 132 11.10.0: February 8, 2025
81 133 - Bug fixes
... ...