|
1 | | -# CHANGES - OpenPrinting CUPS Filters v2.0b1 - 2022-11-14 |
| 1 | +# CHANGES - libppd v2.0b1 - 2022-11-14 |
2 | 2 |
|
3 | 3 | ## CHANGES IN V2.0b1 (TBA) |
4 | 4 |
|
5 | | -### libcupsfilters |
6 | | - |
7 | | -- Introduced the filter functions concept converting filter |
8 | | - executables into library functions with common call scheme, moving |
9 | | - their core functionality into libcupsfilters and allowing easier use |
10 | | - by Printer Applications. Common data about the printer and the job |
11 | | - are supplied via a data structure, which is the same for each filter |
12 | | - in a chain of filters. The data structure can be extended via named |
13 | | - extensions. |
14 | | - |
15 | | -- Converted nearly all filters to filter functions, only exceptions |
16 | | - are rastertoescpx, rastertopclx, commandtoescpx, commandtopclx, and |
17 | | - foomatic-rip. The latter is deeply involved with Foomatic PPDs and |
18 | | - the others are legacy printer drivers. Filter functions which |
19 | | - output PostScript are implemented in libppd. |
20 | | - |
21 | | -- Converted CUPS' rastertopwg filter into the cfFilterRasterToPWG() |
22 | | - filter function. |
23 | | - |
24 | | -- Created new cfFilterPWGToRaster() filter function primarily to print |
25 | | - raster input (PWG Raster, Apple Raster, images) to CUPS Raster |
26 | | - drivers in driver-retro-fitting Printer Applications. |
27 | | - |
28 | | -- Converted all filter functions to completely work without PPD files, |
29 | | - using only printer and job IPP attributes and an option list for |
30 | | - options not mappable to IPP attributes. For some filter functions |
31 | | - there are also wrappers for a more comprehensive PPD file support in |
32 | | - libppd. |
33 | | - |
34 | | -- Added concept of callback functions for logging, for the filter |
35 | | - functions not spitting their log to stderr. |
36 | | - |
37 | | -- Added concept of callback functions for telling that a job is |
38 | | - cancelled so that filter functions can return early. This change is |
39 | | - to get more flexibility and especially to support the |
40 | | - papplJobIsCanceled() of PAPPL. |
41 | | - |
42 | | -- Added new streaming mode triggered by the boolean |
43 | | - "filter-streaming-mode" option. In this mode a filter (function) is |
44 | | - supposed to avoid everything which prevents the job data from |
45 | | - streaming, as loading the whole job (or good part of it) into a |
46 | | - temporary file or into memory, interpreting PDF, pre-checking input |
47 | | - file type or zero-page jobs, ... This is mainly to be used by |
48 | | - Printer Applications when they do raster printing in streaming mode, |
49 | | - to run with lowest resources possible. Currently |
50 | | - cfFilterGhostscript() and cfFilterPDFToPDF() got a streaming |
51 | | - mode. In streaming mode PostScript (not PDF) is assumed as input and |
52 | | - no zero-page-job check is done, and all QPDF processing (page |
53 | | - management, page size adjustment, ...) is skipped and only JCL |
54 | | - according to the PPD added. |
55 | | - |
56 | | -- Added raster-only PDF and PCLm output support to the ghostscript() |
57 | | - filter function. Note that PCLm does not support back side |
58 | | - orientation for duplex. |
59 | | - |
60 | | -- cfFilterPDFToPDF(): Introduced new "input-page-ranges" attribute |
61 | | - (Issue #365, Pull request #444, #445). |
62 | | - |
63 | | -- Added cfFilterChain() filter function to run several filter |
64 | | - functions in a chain. |
65 | | - |
66 | | -- Added filterPOpen() and filterPClose() functions which similar to |
67 | | - popen() and pclose() create a file descriptor which either takes |
68 | | - data to feed into a filter function or provides data coming out of a |
69 | | - filter function. |
70 | | - |
71 | | -- Added new cfFilterExternal() filter function which calls an external |
72 | | - CUPS filter (or backend) executable specified in the parameters, for |
73 | | - example a legacy or proprietary printer driver which cannot be |
74 | | - converted into a filter function. Backends can be run both for job |
75 | | - execution or in their discovery mode. The environment in which the |
76 | | - external executable is running is resembling CUPS as best as |
77 | | - possible. |
78 | | - |
79 | | -- Added support for the back and side channels which CUPS uses for |
80 | | - additional communication between the filters and the backend into |
81 | | - the filter function infrastructure. Now filter functions can use |
82 | | - these channels and also CUPS filters or backends called via the |
83 | | - cfFilterExternal() function. Printer Applications can easily create |
84 | | - the needed pipes via the new function cfFilterOpenBackAndSidePipes() |
85 | | - and close them via cfFilterCloseBackAndSidePipes() and filter |
86 | | - functions used as classic CUPS filters get the appropriate file |
87 | | - descriptors supplied by ihe ppdFilterCUPSWrapper() function of |
88 | | - libppd. |
89 | | - |
90 | | -- Added the cfFilterUniversal() filter function which allows a single |
91 | | - CUPS filter executable which auto-creates chains of filter function |
92 | | - calls to convert any input data format into any other output data |
93 | | - format. So CUPS can call a single filter for any conversion, taking |
94 | | - up less resources. Thanks to Pranshu Kharkwal for this excellent |
95 | | - GSoC project (Pull request #421). |
96 | | - |
97 | | -- Added functions to read out IPP attributes from the job and check |
98 | | - them against the IPP attributes (capabilities) of the printer: |
99 | | - cfIPPAttrEnumValForPrinter(), cfIPPAttrIntValForPrinter(), |
100 | | - cfIPPAttrResolutionForPrinter() |
101 | | - |
102 | | -- Added functions cfGenerateSizes() and cfGetPageDimensions() to match |
103 | | - input page sizes with the page sizes available on the printer |
104 | | - according to printer IPP attributes. |
105 | | - |
106 | | -- Moved IEEE1284-device-ID-related functions into the public API of |
107 | | - libcupsfilters, also made the internal functions public and renamed |
108 | | - them all to cfIEEE1284...(), moved test1284 to cupsfilters/. |
109 | | - |
110 | | -- Extended cfIEEE1284NormalizeMakeAndModel() to a universal function |
111 | | - to clean up and normalize make/model strings (also device IDs) to |
112 | | - get human-readable, machine-readable, or easily sortable make/model |
113 | | - strings. Also allow supplying a regular expression to extract driver |
114 | | - information when the input string is a PPD's *NickName. |
115 | | - |
116 | | -- When calling filters without having printer attributes, improved |
117 | | - understanding of color mode options/attributes. Options |
118 | | - "output-mode", "OutputMode", "print-color-mode", and choices "auto", |
119 | | - "color", "auto-monochrome", "process-monochrome", and "bi-level" are |
120 | | - supported now and default color mode is RGB 8-bit color and not |
121 | | - 1-bit monochrome. |
122 | | - |
123 | | -- When parsing IPP attributes/options map the color spaces the same |
124 | | - way as in the PPD generator (Issue #326, Pull request #327). |
125 | | - |
126 | | -- Added new oneBitToGrayLine() API function which converts a line of |
127 | | - 1-bit monochrome pixels into 8-bit grayscale format |
128 | | - (cupsfilters/bitmap.[ch]). |
129 | | - |
130 | | -- Removed support for asymmetric image resolutions ("ppi=XXXxYYY") in |
131 | | - cfFilterImageToPDF() and cfFilterImageToRaster() as CUPS does not |
132 | | - support this (Issue #347, Pull request #361, OpenPrinting CUPS issue |
133 | | - #115). |
134 | | - |
135 | | -- Removed now obsolete apply_filters() API function to call a chain of |
136 | | - external CUPS filter executables, as we have filter functions now |
137 | | - and even can call one or another filter executable (or even backend) |
138 | | - via cfFilterExternal(). |
139 | | - |
140 | | -- Build system, README: Require CUPS 2.2.2+ and QPDF 10.3.2+. Removed |
141 | | - now unneeded ./configure switches for PCLm support in QPDF and for |
142 | | - use of the urftopdf filter for old CUPS versions. |
143 | | - |
144 | | -- Renamed function/data type/constant names to get a consistent API: |
145 | | - Functions start with "cf" and the name is in camel-case, data types |
146 | | - start with "cf_" and are all-lowercase with "_" separators, |
147 | | - constants start with "CF_" and are all-uppercase, also with "_" |
148 | | - separators. |
149 | | - |
150 | | -- Bumped soname to 2, as we have a new API now. |
151 | | - |
152 | | -- Build system: Remove '-D_PPD_DEPRECATED=""' from the compiling |
153 | | - command lines of the source files which use libcups. The flag is not |
154 | | - supported any more for longer times already and all the PPD-related |
155 | | - functions deprecated by CUPS have moved into libppd now. |
156 | | - |
157 | | -- Older versions of libcups (< 2.3.1) had the enum name for |
158 | | - fold-accordion finishings mistyped. Added a workaround. |
159 | | - |
160 | | -- Added support for Sharp-proprietary "ARDuplex" PPD option name for |
161 | | - double-sided printing. |
162 | | - |
163 | | -- Build system: Add files in gitignore that are generated by |
164 | | - "autogen.sh", "configure", and "make" (Pull request #336). |
165 | | - |
166 | | -- Fixed possible crash bug in oneBitLine() function. |
167 | | - |
168 | | -- In ghostscript() pass on LD_LIBRARY_PATH to Ghostscript |
169 | | - |
170 | | - |
171 | | -### libppd |
172 | | - |
173 | 5 | - Added the new libppd library overtaking all the PPD handling |
174 | 6 | functions from libcups, CUPS' ppdc utility (PPD compiler using *.drv |
175 | 7 | files), and the PPD file collection handling functionality from |
|
294 | 126 | - Fixed PPD memory leak caused by "emulators" field not freed |
295 | 127 | (OpenPrinting CUPS issue #124). - Make "True" in boolean options |
296 | 128 | case-insensitive (OpenPrinting CUPS pull request #106). |
297 | | - |
298 | | - |
299 | | -### cups-filters |
300 | | - |
301 | | -- Converted nearly all filters to filter functions, only exceptions |
302 | | - are rastertoescpx, rastertopclx, commandtoescpx, commandtopclx, and |
303 | | - foomatic-rip. The latter is deeply involved with Foomatic PPDs and |
304 | | - the others are legacy printer drivers. |
305 | | - |
306 | | -- Replaced all the filters converted to filter functions by a simple |
307 | | - wrapper executable using ppdFilterCUPSWrapper() for backward |
308 | | - compatibility with CUPS 2.x. |
309 | | - |
310 | | -- Added new streaming mode triggered by the boolean |
311 | | - "filter-streaming-mode" option. In this mode a filter (function) is |
312 | | - supposed to avoid everything which prevents the job data from |
313 | | - streaming, as loading the whole job (or good part of it) into a |
314 | | - temporary file or into memory, interpreting PDF, pre-checking input |
315 | | - file type or zero-page jobs, ... This is mainly to be used by |
316 | | - Printer Applications when they do raster printing in streaming mode, |
317 | | - to run with lowest resources possible. Currently foomatic-rip, |
318 | | - ghostscript, and pdftopdf got a streaming mode. For the former two |
319 | | - PostScript (not PDF) is assumed as input and no zero-page-job check |
320 | | - is done, in the latter all QPDF processing (page management, page |
321 | | - size adjustment, ...) is skipped and only JCL according to the PPD |
322 | | - added. |
323 | | - |
324 | | -- The CUPS filter imagetops uses the cfFilterImageToPS() filter |
325 | | - function now. |
326 | | - |
327 | | -- driverless, driverless-fax, Added IPP Fax Out support. Now printer |
328 | | - setup tools list an additional fax "driver". A fax queue is created |
329 | | - by selecting this driver. Jobs have to be sent with "-o phone=12345" |
330 | | - to supply the destination phone number (Pull request #280, #293, |
331 | | - #296, #302, #304, #305, #306, #309, Issue #298, #308). |
332 | | - |
333 | | -- sys5ippprinter, cups-browsed: Removed sys5ippprinter, as CUPS does |
334 | | - not support System V interface scripts any more. This first approach |
335 | | - of PPD-less printing was also not actually made use of. |
336 | | - |
337 | | -- urftopdf: Removed as we require CUPS 2.2.2+ now which supports Apple |
338 | | - Raster by itself. |
339 | | - |
340 | | -- Build system, README: Require CUPS 2.2.2+ and QPDF 10.3.2+. Removed |
341 | | - now unneeded ./configure switches for PCLm support in QPDF and for |
342 | | - use of the urftopdf filter for old CUPS versions. |
343 | | - |
344 | | -- Sample PPDs: Renamed source directory from "ppd/" to "ppdfiles/" |
345 | | - |
346 | | -- Build system: Added missing library dependencies to the filters to |
347 | | - make parallel builds work (Issue #319). |
348 | | - |
349 | | -- Build system: Remove '-D_PPD_DEPRECATED=""' from the compiling |
350 | | - command lines of the source files which use libcups. The flag is not |
351 | | - supported any more for longer times already and all the PPD-related |
352 | | - functions deprecated by CUPS have moved into libppd now. |
353 | | - |
354 | | -- Build system: Add files in gitignore that are generated by |
355 | | - "autogen.sh", "configure", and "make" (Pull request #336). |
356 | | - |
357 | | - |
358 | | -### braille-printer-app |
359 | | - |
360 | | -- textbrftoindex: Fix control character filtering (Pull |
361 | | - request #409) |
362 | | - |
363 | | -- Build system: Remove '-D_PPD_DEPRECATED=""' from the |
364 | | - compiling command lines of the source files which use |
365 | | - libcups. The flag is not supported any more for longer times |
366 | | - already and all the PPD-related functions deprecated by CUPS |
367 | | - have moved into libppd now. |
368 | | - |
369 | | -- Build system: Add files in gitignore that are generated by |
370 | | - "autogen.sh", "configure", and "make" (Pull request #336). |
371 | | - |
372 | | - |
373 | | -### cups-browsed |
374 | | - |
375 | | -- Added multi-threaded operation, the Avahi resolver callback (which |
376 | | - examines the remote printer, registers it, checks whether we want a |
377 | | - local queue for it, adds it to a cluster, ...) and the |
378 | | - creation/modification of a local CUPS queue is now done in separate |
379 | | - threads, so that these processes can get executed in parallel to |
380 | | - keep the local queues up-to-date more timely and to not overload the |
381 | | - system's resources. Thanks a lot to Mohit Mohan who did this work |
382 | | - as Google Summer of Code 2020 project |
383 | | - (https://github.com/mohitmo/GSoC-2020-Documentation). |
384 | | - |
385 | | -- Let the implicitclass backend use filter functions instead of |
386 | | - calling filter executables. |
387 | | - |
388 | | -- Build system, README.md: Require CUPS 2.2.2+ and QPDF 10.3.2+. |
389 | | - Removed now unneeded ./configure switches for PCLm support in QPDF |
390 | | - and for use of the urftopdf filter for old CUPS versions. |
391 | | - |
392 | | -- Build system: Remove '-D_PPD_DEPRECATED=""' from the compiling |
393 | | - command lines of the source files which use libcups. The flag is not |
394 | | - supported any more for longer times already and all the PPD-related |
395 | | - functions deprecated by CUPS have moved into libppd now. |
396 | | - |
397 | | -- Build system: Add files in gitignore that are generated by |
398 | | - "autogen.sh", "configure", and "make" (Pull request #336). |
399 | | - |
400 | | -- implicitclass: Added "#include <signal.h>" (Issue #335). |
0 commit comments