CUPS 1.2 adds over 90 changes and new features to CUPS 1.1.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.

## Changes in CUPS 1.2

Networking
  1. IPv6; CUPS now supports IPv6 connectivity when the host operating system provides it
  2. Domain Sockets; CUPS now supports the much faster UNIX domain sockets for local printing
  3. Auto-SSL; CUPS now automatically detects when a client is connecting with SSL encryption, so it can support both unencrypted, SSL-encrypted, and TLS-encrypted connections over a single port
  4. Network Printer Discovery; CUPS can now find printers on the LAN using SNMP
Browsing
  5. LDAP Support; CUPS now supports printer sharing via the Lightweight Directory Access Protocol, version 3
  6. Printer Lease Times; The server's BrowseTimeout value is now included
  7. Network Default Options; The server now advertises a printer's default options such as job-sheets, media, and so forth
  8. Network Default Printer; CUPS now advertises server-default printers so that clients can choose the correct default network printer
  9. "Delete Printer" Message; CUPS now sends a final "delete printer" message to all clients when a printer is deleted, allowing for extremely long BrowseTimeout values without side-effects
  10. BrowseLocalOptions and BrowseRemoteOptions Support; You can configure CUPS to use specific IPP options for local and remote printers, for example to compress print jobs that are sent over a slow WAN link
  11. BrowseLocalProtocols and BrowseRemoteProtocols Support; You can configure CUPS to use different protocols for advertising local shared printers and discovering remote shared printers
Web Interface
  12. Improved Look and Feel; The web interface has improved readability and a more consistent design
  13. New Searchable On-Line Help; The on-line help has been reorganized into categorized articles and references and can be searched
  14. Add This Printer; The administration page offers a new Add This Printer button for automatically-discovered printers, making printer configuration even easier than before
  15. Export Printers to Samba; The administration page now offers an Export Printers to Samba button and function which allows administrators to export printer drivers to Windows clients via Samba
  16. Change Settings; The administration page offers a new simple server settings form for controlling common configuration settings such as printer sharing and remote administration
  17. Edit Configuration File; The administration page now provides a form for editing the cupsd.conf file from your web browser
  18. View Log Files; The administration page now provides access to the access_log, error_log, and page_log log files
  19. Searchable Classes, Jobs, and Printers; the class, job, and printer pages can now be searched and shown in ascending or descending order, with the results displayed in groups of 10
  20. Links for Class Members; When viewing a printer class, we now provide hyperlinks to each of the class members - previously only the names were shown
  21. Print Self-Test Page; When the printer driver supports the CUPS command file format, you can now print the printer's self-test page
  22. Clean Print Heads; When the printer driver supports the CUPS command file format, you can now clean the printer's heads
  23. Set Default Options; You can now set the default options for a printer, including the new operation and error policies (the previous incarnation of this was confusingly called "Configure Printer")
  24. Set Default Printer; You can now make a printer the default printer on the network
  25. Set Allowed Users; You can now set the list of users and/or groups that are allowed or not allowed to access a printer or class
  26. Cancel All Jobs; You can now cancel all jobs on a printer or class
  27. Move Job; You can now move an active job to a different printer or class
  28. Move All Jobs; You can now move all active jobs to a different printer or class
  29. Per-Printer Sharing; You can now share (Publish) or hide (Unpublish) printers individually
  30. Show All Jobs; You can now view all jobs in addition to just the active or completed jobs
IPP Support
  31. IPP Notifications; CUPS now supports the complete IPP notification specification to provide asynchronous event notification to clients and users
  32. ippget Notification Scheme; CUPS now supports the required `ippget` pull method for event notification, allowing applications to receive events asychronously
  33. mailto Notification Scheme; CUPS now supports `mailto` recipients as proposed by the Printer Working Group, allowing users to receive event notifications via email
  34. CUPS Extensions to IPP Notifications; CUPS adds several server events (start, stop, restart, and audit) that can be monitored via the IPP notification operations
  35. CUPS-Get-Printers Improvements; The CUPS-Get-Printers operation now returns all queues by default and filters the results based on the `requesting-user-name` attribute
  36. Proxy Authentication; CUPS provides the new CUPS-Authenticate-Job operation to support proxy authentication of print jobs
  37. Unique Job IDs; CUPS maintains a new `job-uuid` attribute which provides a unique identifier that can be used to track a job on your network or anywhere in the world
  38. port-monitor; CUPS now supports the per-printer `port-monitor` and `port-monitor-supported` attributes for device-specific data/transport encoding
  39. printer-op-policy; CUPS supports new `printer-op-policy` and `printer-op-policy-supported` attributes which provide per-printer fine-grained access control policies
  40. printer-error-policy; CUPS supports new `printer-error-policy` and `printer-error-policy-supported` attributes which provide per-printer control over job error handling
  41. printer-is-shared; CUPS supports a new `printer-is-shared` attribute which provides per-printer sharing
  42. printer-state-change-time; CUPS now tracks the last time and date of a change to the printer configuration, enabled/disabled state, or accepting/rejecting state
  43. printer-uri-supported; CUPS now reports the IP address or hostname used by the client in the `printer-uri-supported` attribute - this prevents hostname resolution issues on complex networks
  44. requested-attributes; CUPS now fully supports limiting of attributes by name or group - previously CUPS would only limit common attributes and did not support attribute group names
  45. Default Job Template Attributes; CUPS now supports arbitrary default job template attributes and applies them to print jobs as needed
  46. which-jobs; The Get-Jobs operation now supports a `which-jobs` value of "all" to return all jobs regardless of state
  47. document-format-supported; The `document-format-supported` attribute now reflects the formats that are actually supported by the printer
  48. printer-type; The `printer-type` attribute now provides bits for "not shared", "authenticated", and "supports commands"
Scheduler
  49. Remote Printer Caching; The scheduler now maintains a remote printer cache so that remote printers are not lost when the scheduler or system is restarted
  50. Job Caching; The scheduler now maintains a job cache so that completed jobs do not need to be loaded into memory all of the time - jobs are loaded and unloaded automatically for optimum performance and memory usage
  51. Other Performance Improvements; Thanks to new CUPS API interfaces, the schedule now uses less memory, less CPU, and scales to even larger installations
  52. Improved Logging; CUPS now logs the IPP operation and status in in the access_log file
  53. Policies; CUPS now provides per-printer and server access control policies based on IPP operations in addition to the traditional location-based access control available in previous releases
  54. DefaultAuthType; In conjunction with the new policy support, CUPS now supports a default authentication type that is used for IPP operations requiring a username
  55. DefaultEncryption; When authenticating a request, CUPS now uses the `DefaultEncryption` setting in addition to any location or policy encryption setting in effect
  56. Per-Printer document-format-supported; CUPS now maintains per-printer `document-format-supported` attributes that reflect the formats that can be printed by a particular printer
  57. Server-side Default Options; CUPS now supports server-side default options for each printer or class that are applied to new jobs
  58. POSIX ACL Support; CUPS now uses POSIX ACLs, when available, to allows multiple system groups to be used for local certificate authentication
  59. RunAsUser Removed; The insecure RunAsUser mode has been removed in favor of OS mechanisms such as SELinux
  60. Launchd Support; The schedule now supports running via the MacOS X launchd program, delaying cupsd startup until needed
  61. Dynamic Device Lookup; The scheduler now queries the backends for devices as needed - no more restarting to get new devices!
  62. Dynamic PPD/Printer Driver Lookup; The scheduler now scans for PPD files and/or printer drivers as needed - no more restarting after installing drivers, and PPD files can be generated dynamically!
  63. Port Monitor Support; CUPS now supports "port monitor" filters between the printer driver filters and backend to do printer- and device-specific encoding and transport functions.
  64. Multi-File Job Improvements; CUPS now sends multi-file jobs in a single connection to the printer or remote server, preserving the order of jobs
  65. Environment Variable Support; The scheduler now supports setting environment variables for filters and CGI programs via the Apache `PassEnv` and `SetEnv` directives
  66. Improved CGI Support; The scheduler now supports more of the CGI/1.1 specification
  67. Log Files; Log files are now accessible via HTTP requests using the /conf/log/filename resource
  68. Power Management; The scheduler now responds to power management events from the operating system (currently MacOS X only)
LPD Client Support
  69. Performance Improvements; CUPS no longer loads every available printer before accepting a print job
  70. Banner Support; Banner pages can now be requested by an LPD client, with server-side overrides as desired
  71. Multi-File Support; CUPS now creates a single IPP job for multi-file LPD jobs
Localization and Internationalization
  72. Command-Line Programs; All command-line programs are now fully localized
  73. Character Set Support; CUPS now supports a wider range of character sets including Big5 and Shift-JIS
  74. Globalized PPD Support; PPD files can now contain multiple language localizations
Printer Drivers
  75. New Drivers; CUPS 1.2 adds Zebra CPCL and EPL label printer drivers
  76. Driver Interfaces; CUPS now supports driver interfaces which allow a driver to advertise the printers it supports and automatically generate the PPD file as needed
  77. High-Definition Range Color; CUPS 1.2 adds 16-bit per channel color support
  78. Raster Compression; The CUPS raster format has been updated to use data compression for faster printing
  79. Extended Printer Attributes; The CUPS raster format has been extended to support additional per-page printer-specific attributes
  80. Back-Channel Data Support; Printer drivers can now read data back from the printer device
  81. Custom PPD Options; PPD files can now contain options that accept custom values
CUPS API
  82. Thread Safety; All of the CUPS API is now thread-safe on systems that support POSIX threads
  83. Performance Improvements; Many of the existing APIs have been optimized for speed
  84. Array API; The new array API provides a generic array container and is used to implement many of the new CUPS 1.2 features and performance improvements
  85. Directory API; The new directory API allows applications to portably list the contents of a directory
  86. File API; The new file API supports optionally-compressed file IO and simple socket communications without the limitations of stdio
  87. HTTP API; The HTTP API now provides many new URI and address handling functions, accessor functions to key `http_t` information, write-buffering functions, and large file APIs
  88. IPP API; The IPP API now provides functions to encode arbitrary options, add `octetString` attributes, create common IPP requests, convert IPP status and operation code values to/from strings, and read and write IPP messages via callbacks.
  89. PPD API; The PPD API has been updated with new functions to support reading from CUPS files, localization of globalized PPD files, emission of arbitrary ranges of options, custom option support, enhanced JCL support, and access to all options in the PPD file
  90. Error Handling; The CUPS API now provides a convenience function to get the full error message of the last request
  91. Back-Channel API; The new back-channel API provides backends and filters with access to information sent back from a printer
CUPS Imaging API
  92. Image API; The new image API provides access to image files of arbitrary size and is based on the CUPS 1.1.x private image filter APIs
  93. Raster API; The raster API provides new functions to read and write the version 2 raster page headers, and a new function to generate a page header from marked PPD options
Scripting Support
  94. PHP Bindings; The PHP language bindings have been revamped to be more consistent with the CUPS API and are now officially supported and installed by default if you have PHP installed on your system