Commit 807dbf42c5420ee70bdc4f2c5342a82f3c0aaff1
Committed by
GitHub
Merge pull request #1381 from m-holger/rn
Update release notes and reverse making QPDFObjectHandle final
Showing
2 changed files
with
56 additions
and
4 deletions
include/qpdf/QPDFObjectHandle.hh
| @@ -63,7 +63,7 @@ class Pl_QPDFTokenizer; | @@ -63,7 +63,7 @@ class Pl_QPDFTokenizer; | ||
| 63 | class QPDFMatrix; | 63 | class QPDFMatrix; |
| 64 | class QPDFParser; | 64 | class QPDFParser; |
| 65 | 65 | ||
| 66 | -class QPDFObjectHandle final: public qpdf::BaseHandle | 66 | +class QPDFObjectHandle: public qpdf::BaseHandle |
| 67 | { | 67 | { |
| 68 | friend class QPDFParser; | 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 | .. _release-notes: | 4 | .. _release-notes: |
| 2 | 5 | ||
| 3 | Release Notes | 6 | Release Notes |
| @@ -41,13 +44,42 @@ more detail. | @@ -41,13 +44,42 @@ more detail. | ||
| 41 | - ``QIntC.hh`` contained the typo ``substract`` in function names, | 44 | - ``QIntC.hh`` contained the typo ``substract`` in function names, |
| 42 | which has been fixed to ``subtract``. | 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 | .. _r12-0-0-deprecate: | 68 | .. _r12-0-0-deprecate: |
| 45 | 69 | ||
| 46 | - The following are believed to be not in use and have been deprecated. | 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 | - All ``QPDFTokenizer`` push-mode methods. | 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 | - Library Enhancements | 83 | - Library Enhancements |
| 52 | 84 | ||
| 53 | - ``QPDFObjectHandle`` supports move construction/assignment. | 85 | - ``QPDFObjectHandle`` supports move construction/assignment. |
| @@ -59,6 +91,12 @@ more detail. | @@ -59,6 +91,12 @@ more detail. | ||
| 59 | 91 | ||
| 60 | - Most ``QPDFObjectHandle`` accessor methods are now const qualified. | 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 | - Build Changes | 100 | - Build Changes |
| 63 | 101 | ||
| 64 | - If ``POINTERHOLDER_TRANSITION`` is not defined, define it to | 102 | - If ``POINTERHOLDER_TRANSITION`` is not defined, define it to |
| @@ -70,12 +108,26 @@ more detail. | @@ -70,12 +108,26 @@ more detail. | ||
| 70 | ``PointerHolder`` will have to explicitly include it rather than | 108 | ``PointerHolder`` will have to explicitly include it rather than |
| 71 | relying on other headers to bring it along. | 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 | 11.10.1: February 15, 2025 | 125 | 11.10.1: February 15, 2025 |
| 74 | - Build fixes | 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 | 11.10.0: February 8, 2025 | 132 | 11.10.0: February 8, 2025 |
| 81 | - Bug fixes | 133 | - Bug fixes |