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