This article summarizes key features that are available beginning with Mac OS X version 10.4 (also known as “Tiger”). It also lists many of the documents that were created or updated for the release.
Mac OS X v10.4 supports the following new features.
The Xcode Tools now support the compilation, linking, and debugging of 64-bit binaries using C or C++. In addition to the tools support, the system also includes 64-bit versions of libSystem.dylib, which contains much of the C standard library code, and the Accelerate framework.
Support for 64-bit computing makes it possible to operate on large data sets more efficiently. For more information about creating 64-bit applications, see 64-Bit Transition Guide.
Mac OS X improves its support for accessibility by including VoiceOver—a full-featured spoken interface to the Macintosh. Built in to the Aqua user interface, VoiceOver uses the accessibility architecture to make it possible for users with visual disabilities to navigate and use the system. VoiceOver complements the existing Universal Access features and promotes collaboration between disabled and nondisabled users on the same computer.
For more information on accessibility technologies in Mac OS X, see Accessibility Overview.
Mac OS X v10.4 introduces support for Access Control Lists (ACLs)—a robust system for implementing file-based permissions. ACLs supplement the existing BSD permissions currently used by the Mac OS X file systems. They also offer many improvements over BSD permissions for applications that support them, including the following:
Support for ownership of files and directories by a group
Support for multiple owners of a file or directory, each with potentially different permissions
Enhanced interoperability with Samba and Windows
More control over a file than just read/write/execute permissions
Support for static inheritance of file permissions from a parent directory
See the acl man page for information and the list of functions you can use to manage ACLs. See also the unistd.h and acl.h header files.
Automator lets you automate common workflows on your computer without writing any code. The workflows you create can take advantage of many features of Mac OS X and any standard applications for which predefined actions are available. Actions are building blocks that represent tangible tasks, such as opening a file, saving a file, applying a filter, and so on. The output from one action becomes the input to another and you assemble the actions graphically with the Automator application.
In cases where actions are not available for the tasks you want, you can run AppleScript scripts directly with the “Run AppleScript” action or create new actions yourself. Automator supports the creation of actions using Objective-C code or AppleScript commands.
For more information about using Automator, see Automator Help. For information on how to write Automator actions, see Automator Programming Guide.
Core Audio includes new tools and functions to improve the audio handling experience of applications. New features include:
New Audio Units
A file-playback audio unit lets you use an existing sound file as an input source.
A time and pitch transformation audio unit lets you modify both the pitch and time of audio data.
AU Lab - a tool that lets you graphically host audio units and examine the results.
Aggregate device support
Extended audio file API - a new API for converting files from one format to another
A new extension mechanism for supporting audio file formats not supported natively by Core Audio
A clock API for creating and tracking MIDI time formats
For detailed information about the new function calls, see the header files of the assorted Core Audio frameworks.
The Core Data framework (CoreData.framework) is a new technology for managing the model data of a Model-View-Controller application. Core Data is intended for use in Cocoa applications where the data model is already highly structured. Instead of defining data structures programmatically, you use the graphical tools in Xcode to build a schema representing your data model. At runtime, instances of your data-model entities are created, managed, and made available through the Core Data framework.
By managing your application’s data model for you, Core Data significantly reduces the amount of code you have to write for your application. Core Data also provides the following features:
Storage of object data in mediums ranging from an XML file to a SQLite database
Management of undo/redo beyond basic text editing
Support for validation of property values
Support for propagating changes and ensuring that the relationships between objects remain consistent
Grouping, filtering, and organizing data in memory and transferring those changes to the user interface through Cocoa bindings
If you are starting to develop a new application, or are planning a significant update to an existing application, you should consider using Core Data. For more information about Core Data, including how to use it in your applications, see Core Data Programming Guide.
Core Image is an image processing technology that leverages programmable graphics hardware whenever possible. The Core Image application programming interface (API) provides access to built-in image filters for both video and still images and provides support for custom filters and near real-time processing.
Core Image is an extensible architecture for near real-time, pixel-accurate image processing of graphics as well as video. You can perform the following types of operations by using filters that are bundled in Core Image or that you or another developer creates:
Correct color, including perform white-point adjustments
Apply color effects, such as sepia tone
Blur or sharpen images
Composite images
Warp the geometry of an image by applying an affine transform or a displacement effect
Generate color, checkerboard patterns, Gaussian gradients, and other pattern images
Add transition effects to images or video
Provide real-time control, such as color adjustment and support for sports, vivid, and other video modes
Apply linear lighting effects, such as spotlight effects
Core Image is part of the Quartz Core framework (QuartzCore.framework). For information about how to use Core Image or how to write custom image units, see Core Image Programming Guide and Core Image Reference Collection.
Core Video provides a modern foundation for delivering video in your applications. It creates a bridge between QuickTime and the GPU to deliver hardware-accelerated video processing. By offloading complex processing to the GPU, you can significantly increase performance and reduce the CPU load of your applications. Core Video also allows developers to apply all the benefits of Core Image to video, including filters and effects, per-pixel accuracy, and hardware scalability.
Core Video is part of the Quartz Core framework (QuartzCore.framework). For information on how to use it, see Core Video Programming Guide and Core Video Reference.
Dashboard provides a lightweight desktop layer for running widgets. Widgets are lightweight web applications that display information a user might use occasionally. You could write widgets to track stock quotes, view the current time, or access key features of a frequently used application. Widgets reside in the Dashboard layer, which is activated by the user and comes into the foreground in a manner similar to Exposé. Mac OS X comes with several standard widgets, including a calculator, clock, and iTunes controller.
Creating widgets is simpler than creating most applications because widgets are effectively HTML-based applications with optional JavaScript code to provide dynamic behavior. Dashboard uses Web Kit to render HTML and run JavaScript code. Your widgets can take advantage of several extensions provided by that environment, including a way to render content using Quartz-like JavaScript functions.
For information on how to create widgets, see Dashboard Programming Topics.
The Instant Message framework (InstantMessage.framework) supports the detection and display of a user’s online presence in applications other than iChat. Using this framework, you can find out the current status of a user connected to an instant messaging service. You can then obtain the user’s custom icon, status message, or a URL to an image that indicates the user’s status. You can then display this information along with other user information in your program. For example, Mail uses the framework to determine if an email is from a user who is currently online; it the person is available, it then displays an appropriate icon next to that person’s name.
For more information, see Instant Message Framework Reference.
The Installer application supports several new features in Mac OS X v10.4. These features help you deliver a more robust installation experience for your users while ensuring that your software is installed correctly. Among the features added to Installer are the following:
Distribution scripts offer a flexible and convenient way to author installation packages. By consolidating information that was formerly scattered across many files, a distribution script provides better control for installing packages and metapackages.
Multiple CD/DVD support. Using distribution scripts, you can support installation from multiple CDs or DVDs and prompt the user for new discs as they are needed.
Installer plug-ins let you display custom panes in the Installer application.
File version checking. This feature extends the current “Find File” mechanism to support checks for individual files. This mechanism can ensure that you only replace outdated files on the user’s machine, leaving newer files alone.
For more information on creating software installation packages, see Software Delivery Guide and Installer Release Notes.
The design of the kernel data structures has changed to a more opaque access model. This change makes it possible for kernel developers to write nonfragile kernel extensions—that is, kernel extensions that do not break when the kernel data structures change. Developers are highly encouraged to use the new API for accessing kernel data structures.
For information about writing kernel extensions, see Kernel Programming Guide.
Network diagnostics is a way of helping the user solve network problems. Although modern networks are generally reliable, there are still times when network services may fail. Sometimes the cause of the failure is beyond the ability of the desktop user to fix, but sometimes the problem is in the way the user’s computer is configured. The network diagnostics feature provides a diagnostic application to help the user locate problems and correct them.
For more information, see the header files of CFNetwork.
The system now comes standard with the Open Audio Library (OpenAL) audio system installed. This interface is a cross-platform standard for delivering 3D audio in applications. OpenAL lets you implement high-performance positional audio in games and other programs that require high-quality audio output. Because it is a cross-platform standard, the applications you write using OpenAL on Mac OS X can be ported to run on many other platforms.
Apple’s implementation of OpenAL is based on Core Audio, so it delivers high-quality sound and performance on Mac OS X systems. To use OpenAL in a Mac OS X application, include the OpenAL framework (OpenAL.framework) in your Xcode project. This framework includes header files whose contents conform to the OpenAL specification, which is described at http://www.openal.org.
PDF Kit is a Cocoa framework for managing and displaying PDF content directly from your application’s windows and dialogs. Using the classes of PDF Kit, you can embed a PDFView in your window and give it a PDF file to display. The PDFView class handles the rendering of the PDF content, handles copy-and-paste operations, and provides controls for navigating and setting the zoom level. Other classes let you get the number of pages in a PDF file, find text, manage selections, add annotations, and specify the behavior of some graphical elements, among other actions. Users can also copy selected text in a PDFView to the pasteboard.
If you need to display PDF data directly from your application, PDF Kit is highly recommended. It hides many of the intricacies of the Adobe PDF specification and provides standard PDF viewing controls automatically. PDF Kit is part of the Quartz framework (Quartz.framework). For more information, see PDF Kit Reference Collection.
Quartz 2D includes the following improvements:
Support for the reading and writing of image data (including data that contains multiple images and thumbnail images) using the ImageIO framework
Layered drawing using CGLayer
More PDF support
Additional support for blend modes
For information about new Quartz features, see Quartz 2D Programming Guide.
Quartz Composer is a development tool for processing and rendering graphical data. Quartz Composer provides a visual development environment built on technologies such as Quartz 2D, Core Image, OpenGL, and QuickTime. You can use Quartz Composer as an exploratory tool to learn the tasks common to each visual technology and then use its application programming interface (API) to programmatically play and control your compositions. In addition to supporting visual technologies, Quartz Composer also supports nongraphical technologies such as MIDI System Services and Rich Site Summary (RSS) file content.
For information on how to use Quartz composer, see Quartz Composer Programming Guide and Quartz Composer Reference Collection.
Mac OS X v10.4 includes QuickTime version 7. This new version includes support for many new features, including the following:
High-resolution audio
H.264 support
Frame reordering video compression
Support for rendering to OpenGL and the elimination of dependence on graphics worlds (GWorlds)
A new metadata format
QuickTime sample table API
Changes to QuickTime Player and Pro UI
For detailed information list of changes to QuickTime, see QuickTime 7 Update Guide.
QuickTime Kit (QTKit.framework) is an Objective-C framework for manipulating QuickTime-based media. This framework lets you incorporate movie playback, movie editing, export to standard media formats, and other QuickTime behaviors easily into your applications. The classes in this framework open up a tremendous amount of QuickTime behavior to both Carbon and Cocoa developers. Instead of learning how to use the more than 2500 functions in QuickTime, you can now use a handful of classes to implement the features you need.
For an introduction and tutorial on how to use the QuickTime Kit, see QuickTime Kit Programming Guide. For reference information about the QuickTime Kit classes, see QTKit Framework Reference.
Search Kit in Mac OS X v10.4 contains several improvements over the version introduced in Mac OS X v10.3. Search performance is now significantly faster than before, with indexing up to three times faster than before. By adopting several new function calls, you can also achieve search-as-you-type performance with incremental results. Search Kit also includes the following capabilities:
The ability to search for text contained within a word or at the end of a word
Optional proximity indexing and quoted phrase searching
The ability to combine search patterns to form complex search expressions
Improved relevance ranking with absolute relevance to support incremental results
Greater control over indexing and searching options
Improved search syntax
Unranked search support, which improves performance
For more information, see Search Kit Programming Guide and Search Kit Reference.
Spotlight provides advanced search capabilities for applications. The Spotlight server gathers metadata from documents and other relevant user files and incorporates that metadata into a searchable index. The Finder uses this metadata to provide users with more relevant information about their files. For example, in addition to listing the name of a JPEG file, the Finder can also list its width and height in pixels.
Application developers use Spotlight in two different ways. First, you can search for file metadata using the Spotlight search API. Second, you can generate metadata for files that use your custom file formats. If your application defines a custom file format, you should provide a Spotlight importer plug-in to parse files of that format. In addition to writing an importer, your application should also add metadata information to any new files it creates.
For more information on using Spotlight in your applications, see Spotlight Overview.
The SQLite library lets you embed a SQL database engine into your applications. Programs that link with the SQLite library can access SQL databases without running a separate RDBMS process. You can create local database files and manage the tables and records in those files. The library is designed for general purpose use but is still optimized to provide fast access to database records.
The SQLite library is located at /usr/lib/libsqlite.dylib and the sqlite.h header file is in /usr/include. A command-line interface (sqlite) is also available for communicating with SQLite databases using scripts. For details on how to use this command-line interface, see the man page for sqlite.
For more information about using SQLite, go to http://www.sqlite.org.
Sync Services extends data synchronization capabilities to all Mac OS X applications. Third-party applications can use Sync Services to synchronize data with system databases, such as those provided by Address Book and iCal. They can also synchronize custom data with other applications and across multiple computers through the user’s .Mac account.
For more information about using Sync Services in your application, see Sync Services Programming Guide. For reference information, see Sync Services Framework Reference.
Web Kit now includes support for creating text views containing editable HTML. The editing support is equivalent to the support available in Cocoa for editing RTF-based content. With this support, you can replace text and manipulate the document text and attributes, including CSS properties. Although it offers many features, the Web Kit editing support is not intended to provide a full-featured editing facility like you might find in professional HTML editing applications. Instead, it is aimed at developers who need to display HTML and handle the basic editing of HTML content.
Web Kit also includes support for creating and editing content at the DOM level of an HTML document. You can use this support to navigate DOM nodes and manipulate those nodes and their attributes. You can also use the framework to extract DOM information. For example, you could extract the list of links on a page, modify them, and replace them prior to displaying the document in a web view.
For information on how to use Web Kit from both Carbon and Cocoa applications, see WebKit Objective-C Programming Guide. For information on the classes and protocols in the Web Kit framework, see WebKit Objective-C Framework Reference.
Xcode 2.0 includes the following key new features:
Workspaces. Xcode 2.0 introduces different project window configurations, called workspaces, that let you choose the layout that best suits your preferred workflow. Xcode 2.0 currently ships with three workspaces:
The default (or traditional) Xcode project window, introduced in Xcode 1.2
An all-in-one project window that combines views for project management, building, and debugging in a single window
A condensed project window workspace that provides a smaller and more compact project window
A Favorites bar that you can use to hold files, folders, smart groups, and so on
Support for downloading updates to the ADC Reference Library
64-bit support. See “64-Bit Support”
Visual design. Xcode 2.0 includes a visual designer that lets you create class models for C++, Objective-C, and Java classes and persistence models for use with the Core Data framework.
For more information about features and improvements of Xcode, see Xcode Release Notes and Xcode 2.0 User Guide.
In Mac OS X 10.4, GCC 4.0 is the default compiler. If you are creating new projects on the platform, you should naturally be using GCC 4.0 to compile those projects. However, if you are building existing projects using the GCC 3.3 compiler (the default compiler in Mac OS X 10.3), there are also many reasons to upgrade to GCC 4.0, including the following:
Better compile times
Better C++ language conformance
Smaller C++ binaries
Faster C++ compiles
Better optimization machinery
Better error checking and diagnosis
Before you upgrade though, you should understand the changes that have gone into GCC 4.0 and how they might affect your code. In particular, code that compiled cleanly using GCC 3.3 may now generate warnings and errors when compiled using GCC 4.0.
For information on how to port your code successfully to GCC 4.0, see GCC Porting Guide and GCC 4 Release Notes.
The NSXML classes offer advanced support for manipulating XML-based documents in Cocoa. You can use these classes to do the following:
Create new XML documents
Search the contents of an XML document arbitrarily
Convert structured documents using Extensible Stylesheet Language Transformation (XSLT)
Validate XML content
Create and manipulate document type definitions (DTDs) as logical tree structures
In addition to creating documents, you can also use NSXML to search documents using the XQuery or XPath query languages. These languages let you create complex search expressions to retrieve single nodes, groups of nodes, or atomic values (strings, integers, dates, and so on) from the XML document.
For more information, see Tree-Based XML Programming Guide for Cocoa in Cocoa Data Management Documentation.
The documents in Table 1 list the API changes that were made in system frameworks for Mac OS X v10.4.
Framework | Document |
|---|---|
Accelerate | |
Address Book | |
AGL | |
AppKit | |
Application Services | |
Automator | Automator Reference Update (new framework) |
Core Data | Core Data Reference Update (new framework) |
Core Foundation | |
Core Services | |
Foundation | |
Instant Message | Instant Message Reference Update (new framework) |
OpenGL | |
QTKit | QTKit Reference Update (new framework) |
Quartz Core | Quartz Core Reference Update (new framework) |
Quartz | Quartz Reference Update (new framework) |
QuickTime | |
Security | |
Sync Services | Sync Services Reference Update (new framework) |
vecLib | |
WebKit |
© 2005, 2009 Apple Inc. All Rights Reserved. (Last updated: 2009-11-13)