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
Browsing
  4. LDAP Support; CUPS now supports printer sharing via the Lightweight Directory Access Protocol, version 3
  5. Printer Lease Times; The server's BrowseTimeout value is now included
  6. Network Default Options; The server now advertises a printer's default options such as job-sheets, media, and so forth
  7. Network Default Printer; CUPS now advertises server-default printers so that clients can choose the correct default network printer
  8. "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
  9. 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
  10. BrowseLocalProtocols and BrowseRemoteProtocols Support; You can configure CUPS to use different protocols for advertising local shared printers and discovering remote shared printers
Web Interface
  11. Improved Look and Feel; The web interface has improved readability and a more consistent design
  12. New Searchable On-Line Help; The on-line help has been reorganized into categorized articles and references and can be searched
  13. Add This Printer; The administration page offers a new Add This Printer button for automatically-discovered printers, making printer configuration even easier than before
  14. 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
  15. Change Settings; The administration page offers a new simple server settings form for controlling common configuration settings such as printer sharing and remote administration
  16. Edit Configuration File; The administration page now provides a form for editing the cupsd.conf file from your web browser
  17. View Log Files; The administration page now provides access to the access_log, error_log, and page_log log files
  18. 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
  19. 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
  20. Print Self-Test Page; When the printer driver supports the CUPS command file format, you can now print the printer's self-test page
  21. Clean Print Heads; When the printer driver supports the CUPS command file format, you can now clean the printer's heads
  22. 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")
  23. Set Default Printer; You can now make a printer the default printer on the network
  24. 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
  25. Cancel All Jobs; You can now cancel all jobs on a printer or class
  26. Move Job; You can now move an active job to a different printer or class
  27. Move All Jobs; You can now move all active jobs to a different printer or class
  28. Per-Printer Sharing; You can now share (Publish) or hide (Unpublish) printers individually
  29. Show All Jobs; You can now view all jobs in addition to just the active or completed jobs
IPP Support
  30. IPP Notifications; CUPS now supports the complete IPP notification specification to provide asynchronous event notification to clients and users
  31. ippget Notification Scheme; CUPS now supports the required `ippget` pull method for event notification, allowing applications to receive events asychronously
  32. mailto Notification Scheme; CUPS now supports `mailto` recipients as proposed by the Printer Working Group, allowing users to receive event notifications via email
  33. CUPS Extensions to IPP Notifications; CUPS adds several server events (start, stop, restart, and audit) that can be monitored via the IPP notification operations
  34. 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
  35. Proxy Authentication; CUPS provides the new CUPS-Authenticate-Job operation to support proxy authentication of print jobs
  36. 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
  37. port-monitor; CUPS now supports the per-printer `port-monitor` and `port-monitor-supported` attributes for device-specific data/transport encoding
  38. printer-op-policy; CUPS supports new `printer-op-policy` and `printer-op-policy-supported` attributes which provide per-printer fine-grained access control policies
  39. printer-error-policy; CUPS supports new `printer-error-policy` and `printer-error-policy-supported` attributes which provide per-printer control over job error handling
  40. printer-is-shared; CUPS supports a new `printer-is-shared` attribute which provides per-printer sharing
  41. 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
  42. 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
  43. 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
  44. Default Job Template Attributes; CUPS now supports arbitrary default job template attributes and applies them to print jobs as needed
  45. which-jobs; The Get-Jobs operation now supports a `which-jobs` value of "all" to return all jobs regardless of state
  46. document-format-supported; The `document-format-supported` attribute now reflects the formats that are actually supported by the printer
  47. printer-type; The `printer-type` attribute now provides bits for "not shared", "authenticated", and "supports commands"
Scheduler
  48. 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
  49. 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
  50. Other Performance Improvements; Thanks to new CUPS API interfaces, the schedule now uses less memory, less CPU, and scales to even larger installations
  51. Improved Logging; CUPS now logs the IPP operation and status in in the access_log file
  52. 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
  53. DefaultAuthType; In conjunction with the new policy support, CUPS now supports a default authentication type that is used for IPP operations requiring a username
  54. DefaultEncryption; When authenticating a request, CUPS now uses the `DefaultEncryption` setting in addition to any location or policy encryption setting in effect
  55. 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
  56. Server-side Default Options; CUPS now supports server-side default options for each printer or class that are applied to new jobs
  57. POSIX ACL Support; CUPS now uses POSIX ACLs, when available, to allows multiple system groups to be used for local certificate authentication
  58. RunAsUser Removed; The insecure RunAsUser mode has been removed in favor of OS mechanisms such as SELinux
  59. Launchd Support; The schedule now supports running via the MacOS X launchd program, delaying cupsd startup until needed
  60. Dynamic Device Lookup; The scheduler now queries the backends for devices as needed - no more restarting to get new devices!
  61. 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!
  62. 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.
  63. 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
  64. Environment Variable Support; The scheduler now supports setting environment variables for filters and CGI programs via the Apache `PassEnv` and `SetEnv` directives
  65. Improved CGI Support; The scheduler now supports more of the CGI/1.1 specification
  66. Log Files; Log files are now accessible via HTTP requests using the /conf/log/filename resource
  67. Power Management; The scheduler now responds to power management events from the operating system (currently MacOS X only)
LPD Client Support
  68. Performance Improvements; CUPS no longer loads every available printer before accepting a print job
  69. Banner Support; Banner pages can now be requested by an LPD client, with server-side overrides as desired
  70. Multi-File Support; CUPS now creates a single IPP job for multi-file LPD jobs
Localization and Internationalization
  71. Command-Line Programs; All command-line programs are now fully localized
  72. Character Set Support; CUPS now supports a wider range of character sets including Big5 and Shift-JIS
  73. Globalized PPD Support; PPD files can now contain multiple language localizations
Printer Drivers
  74. New Drivers; CUPS 1.2 adds Zebra CPCL and EPL label printer drivers
  75. 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
  76. High-Definition Range Color; CUPS 1.2 adds 16-bit per channel color support
  77. Raster Compression; The CUPS raster format has been updated to use data compression for faster printing
  78. Extended Printer Attributes; The CUPS raster format has been extended to support additional per-page printer-specific attributes
  79. Back-Channel Data Support; Printer drivers can now read data back from the printer device
  80. Custom PPD Options; PPD files can now contain options that accept custom values
CUPS API
  81. Thread Safety; All of the CUPS API is now thread-safe on systems that support POSIX threads
  82. Performance Improvements; Many of the existing APIs have been optimized for speed
  83. 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
  84. Directory API; The new directory API allows applications to portably list the contents of a directory
  85. File API; The new file API supports optionally-compressed file IO and simple socket communications without the limitations of stdio
  86. 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
  87. 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.
  88. 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
  89. Error Handling; The CUPS API now provides a convenience function to get the full error message of the last request
  90. Back-Channel API; The new back-channel API provides backends and filters with access to information sent back from a printer
CUPS Imaging API
  91. 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
  92. 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
  93. 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