Commit b4fe4c376a88a24ea8e50a8f41907627079565bc
1 parent
00ad6f55
Update release notes and reverse making QPDFObjectHandle final
and delay to qpdf 13 to give users notice of the change.
Showing
2 changed files
with
56 additions
and
4 deletions
include/qpdf/QPDFObjectHandle.hh
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 | ... | ... |