# What's New in CUPS 1.4

CUPS 1.4 adds over 67 changes and new features to CUPS 1.3.x. This page provides a high-level outline of these changes. If you have never used CUPS before, read the "Overview of CUPS" document instead.

## Commands

1. accept and reject; the accept and reject commands have been officially renamed to cupsaccept and cupsreject. The old names are still supported via symlinks.
2. cupsdisable and cupsenable; the cupsdisable command now supports a --hold option to stop printing after the current job and the cupsenable command now supports a --release option to release pending jobs for printing.
3. cupsfilter; the cupsfilter program now supports filtering of already-queued print job files and can also run printer-specific filters specified in the PPD file.
4. cupstestdsc; the cupstestdsc utility has been improved to better detect problems with PostScript print files.
5. cupstestppd; the cupstestppd utility has been improved to test new PPD keywords and better detect impossible contraints.
6. lpadmin; the lpadmin command now supports options to hold and release new jobs on a printer or all printers.
7. lpoptions; the lpoptions command now describes custom options and their parameters.
8. lppasswd; the lppasswd program is no longer installed setuid by default.
9. lpstat; the lpstat command now supports a -H option to show the current default server and no longer slows down when a printer is specified.

## Web Interface

10. Look-n-feel; the web interface has been given a new look.
11. PHP support; the "php-cgi" program is used, when available, to process PHP pages in the CUPS web interface.
12. Printer configuration; improvements have been made to the add and modify printer pages.
13. Printer options; the Set Default Options page now provides a "query" button that queries the default and installed options from the printer.
14. Printer sharing; the "share printer" and "unshare printer" buttons are now only shown when printer sharing is enabled in the scheduler.
15. Security; the web interface has been updated to support authentication for printing of test pages and RSS subscription operations.
16. Server settings; the Administration page now provides access to common "advanced" server settings.

## Networking

17. Bonjour (DNS-SD) printing support; a new mdns backend provides Bonjour-based printer discovery and the ipp, lpd, and socket backends now support Bonjour address resolution.
18. Bonjour (DNS-SD) perforance tuning; the scheduler now only uses a single file descriptor for printer sharing. It previously used one per printer.
19. Bonjour (DNS-SD) web interface registry; when remote access is enabled, the scheduler can register the web interface for easier access.
20. LPD client support; the cups-lpd mini-daemon now provides the document-name for print jobs and supports specification of a CUPS server.
21. PWG Port Monitor MIB; the snmp backend now supports the PWG Port Monitor MIB to better choose the device URI to use.
22. SNMP-based monitoring; the ipp, lpd, and socket backends now report supply levels and printer status using SNMP queries.

## IPP Support

23. IPP/2.x support; CUPS now conforms to the draft IPP/2.0 and IPP/2.1 specifications.
24. CUPS-Add-Modify-Printer operation; the scheduler now supports setting the printer-state-reasons attribute using this operation.
25. CUPS-Get-Document operation; the scheduler now supports a "get document" operation to download files from a print job.
26. Device location; the scheduler and backend discovery interface now support a device-location attribute.
27. Hold-New-Jobs and Release-Held-New-Jobs operations; the scheduler now supports the Hold-New-Jobs and Release-Held-New-Jobs operations.

## Scheduler

28. Access control; the scheduler now supports multiple addresses in Allow and Deny lines. It also now returns a HTTP 403 (forbidden) status when a user authenticates successfully but is not allowed to perform an operation.
29. Access logging; the scheduler now supports an AccessLogLevel directive to control what is logged in the access_log file.
30. Configuration files; the default cupsd.conf file now provides an "authenticated" policy that can be used to require a username and password to print or cancel a job.
31. Default LogLevel; the default LogLevel is now "warn" instead of "info".
32. Automatic debug logging; the scheduler now records up to the last N (default 200) debug messages for failed print jobs.
33. Default paper size; the scheduler now supports a DefaultPaperSize directive to override the default paper size defined by the locale or libpaper configuration.
34. Encryption support; the scheduler now supports a SSLOptions directive to optionally support Windows clients in "FIPS" mode. It also now loads both the server and CA certificates (if present) from the ServerCertificate file.
35. Error logging; the scheduler now logs unsuccessful operations as errors in the error_log file.
36. Error policies; the scheduler now supports a retry-current-job error policy that retries the current job immediately.
37. Fatal error handling; the scheduler now supports a FatalErrors directive to control which startup errors should be considered fatal.
38. Filter command-line; the scheduer now passes the job-originating-host-name attribute as a CUPS option to filters and backends.
39. Filter environment; the scheduler now includes CUPS_JOBTYPE, PRINTER_INFO, and PRINTER_LOCATION variables in the environment passed to filters and backends.
40. Job progress; the scheduler now supports a job-media-progress attribute to track the printing progress of each page.
41. MIME database; MIME types now support a priority attribute to override the default (alphabetical) rules of precedence.
42. Page logging; the scheduler now supports a `PageLogFormat` directive to control the format of the page_log file.
43. PAM support; the scheduler now sets more PAM attributes to better support third-party authentication schemes.
44. PDF job ticket support; the scheduler now supports cupsJobTicket comments at the beginning of PDF print jobs.
45. Performance tuning; the scheduler now coalesces configuration and state file changes to reduce the amount of disk activity and caches printer attributes to further reduce startup time.
46. Printcap support; the scheduler no longer clears the printcap file when shutting down, and can now create XML "plist" printcap files as well.
47. RSS subscriptions; the scheduler now starts the notifier for RSS subscriptions after creation so the feed is available immediately.
48. Sandbox support; the scheduler now runs child processes using restrictive policies on Mac OS X for improved security and job isolation.
49. Test option; the scheduler now supports a test mode via the "-t" option.

## Printer Drivers

50. Device discovery; the cups-deviced helper now runs backends in parallel for faster discovery and streams the results of discovery as the backends provide them.
51. Driver development kit; the CUPS DDK is now a standard part of CUPS.
52. Driver information file support; the cups-driverd helper program now directly supports PPD compiler driver information files.
53. Dynamic PPD support; drivers can now set PPD keywords dynamically using `PPD:` messages.
54. Generic PostScript command filter; a new CUPS command file filter for PostScript printers provides auto-configuration, self-test page, and status and supply level reporting functions.
55. New printer drivers; new generic PostScript and PCL drivers provide improved support for laser printers, the CUPS DDK drivers offer support for many HP DesignJet printers, and new label drivers offer support for Seiko and Tharo label printers.
56. PJL support; the cupsPJLDisplay PPD attribute controls the PJL commands used to display the current user and job on the printer.
57. PPD compiler improvements; the PPD compiler now supports Mac OS X .strings files, OID query strings, conditional directives, long file names, and a test mode. It also fixes many other bugs from the CUPS DDK 1.2.3 release.
58. USB printer support; the usb backend now uses libusb when available to allow it to better work with third-party scanning and printing solutions.

## Print Filters

59. Banner filter; the bundled banner ("job-sheets") pages are now generated using a new banner filter provides easier customization and better support for UTF-8 text.
60. Image filters; the standard image filters now support image files larger than 2GB.
61. PDF filter; the pdftops filter has been replaced with a wrapper program that runs the Xpdf, poppler, or Ghostscript PDF to PostScript utilities.

## CUPS API

62. Backend API; a new cupsBackendReport function is provided to report a device from a backend and handles any needed quoting of the make-and-model, info, device-id, and location strings.
63. Device discovery; the new `cupsGetDevices` function streams discovered devices to an application-provided callback function.
64. IPP API; the IPP read and write functions no longer use a large stack-based buffer when reading and writing IPP attributes.
65. PPD support; several new functions are provided: cupsGetPPD3, cupsResolveConflicts, ppdInstallableConflict, ppdLocalizeAttr, ppdLocalizeMarkerName and ppdPageSizeLimits.
66. Side-Channel API; new cupsSideChannelSNMPGet and cupsSideChannelSNMPWalk functions allow printer drivers to do SNMP queries via the standard network backends.
67. Streaming API; a new streaming request API provides asynchronous job creation and request submission.