Mac OS X v10.4

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.

Features

Mac OS X v10.4 supports the following new features.

64-Bit Support

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.

Accessibility

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.

ACL Support

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:

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

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

Core Audio includes new tools and functions to improve the audio handling experience of applications. New features include:

For detailed information about the new function calls, see the header files of the assorted Core Audio frameworks.

Core Data

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:

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

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:

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

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

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.

iChat Presence

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.

Installer Enhancements

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:

For more information on creating software installation packages, see Software Delivery Guide and Installer Release Notes.

KEXT API Changes

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

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.

OpenAL

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

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

Quartz 2D includes the following improvements:

For information about new Quartz features, see Quartz 2D Programming Guide.

Quartz Composer

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.

QuickTime 7

Mac OS X v10.4 includes QuickTime version 7. This new version includes support for many new features, including the following:

For detailed information list of changes to QuickTime, see QuickTime 7 Update Guide.

QuickTime Kit

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.

Note: The QuickTime Kit framework supersedes the NSMovie and NSMovieView classes available in Cocoa. If your code uses these older classes, you should consider changing your code to use QuickTime Kit.

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

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:

For more information, see Search Kit Programming Guide and Search Kit Reference.

Spotlight

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.

Note: Spotlight is intended primarily for searching meta information associated with files. To search the actual contents of a file, use the Search Kit API. For more information, see “Search Kit.”

For more information on using Spotlight in your applications, see Spotlight Overview.

SQLite

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

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.

Note: With Sync Services, applications can now directly initiate the synchronization process. The iSync application still exists but is now used to initiate the synchronization process for specific hardware devices.

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 Editing and DOM Support

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

Xcode 2.0 includes the following key new features:

For more information about features and improvements of Xcode, see Xcode Release Notes and Xcode 2.0 User Guide.

GCC 4.0

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:

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.

XML Parsing

The NSXML classes offer advanced support for manipulating XML-based documents in Cocoa. You can use these classes to do the following:

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.

API Delta Documents

The documents in Table 1 list the API changes that were made in system frameworks for Mac OS X v10.4.

Table 1  Mac OS X v10.4 delta documents

Framework

Document

Accelerate

Accelerate Reference Update

Address Book

Address Book Reference Update

AGL

AGL Reference Update

AppKit

Application Kit Reference Update

Application Services

Application Services Reference Update

Automator

Automator Reference Update (new framework)

Core Data

Core Data Reference Update (new framework)

Core Foundation

Core Foundation Reference Update

Core Services

Core Services Reference Update

Foundation

Foundation Reference Update

Instant Message

Instant Message Reference Update (new framework)

OpenGL

OpenGL Reference Update

QTKit

QTKit Reference Update (new framework)

Quartz Core

Quartz Core Reference Update (new framework)

Quartz

Quartz Reference Update (new framework)

QuickTime

QuickTime Reference Update

Security

Security Reference Update

Sync Services

Sync Services Reference Update (new framework)

vecLib

vecLib Reference Update

WebKit

WebKit Reference Update



© 2005, 2009 Apple Inc. All Rights Reserved. (Last updated: 2009-11-13)