ADC Membership Technical Business Join ADC
Search Advanced Search
Technical Note TN2029
Mac OS X v10.1

This Technical Note was created for application developers interested in writing software that is compatible with Mac OS X. This list includes changes that affect API level programming and product testing, it is not intended to be an exhaustive list of all the changes in this software update.


[Oct 15 2001]

Apple Help

Apple Help provides system-wide instructional help services for virtually all aspects of Mac OS. The Help Viewer is the main user interface component of the Apple Help technology.

  • AHRegisterHelpBook was not returning an error for cases where caller of AHRegisterHelpBook supplied a CFBundleHelpBookName and no book by that name could be found in the supplied bundle (r. 2632943).

  • HREF links in help pages referencing applications that are to be launched as a result of a click on the link now work as expected (r. 2707989).

  • Apple Help Indexing Tool is now available on the Mac OS X Developer CD.

Back to top


AppleScript is a component of the operating system that provides a scripting interface for users to automate actions on system and application data. Even more importantly, it allows users to access functionality of applications which would be difficult or impossible to access by hand.

  • With Mac OS X version 10.1 and later, and AppleScript version 1.7 and later, Program Linking works between Mac OS X machines as well as between Mac OS 9 and Mac OS X machines. When targeting applications running on a Mac OS X machine, you must use TCP/IP networking and addressing; AppleTalk is not supported. (In addition, AppleScript 1.7 now supports encoding the login name and password into the "eppc" URL.) For a Mac OS X machine to respond to Program Linking requests, "Allow Remote Apple Events" must be enabled in the Sharing panel of System Preferences.

  • AppleScript 1.7 for Mac OS X 10.1 can use Internet applications as targets of Tell blocks. The syntax is

    tell application ""
        call xmlrpc {methodName:"XMLRPCMethod", parameters: {"hello", 25}}
        --  or
        call soap {methodName:"SOAPMethod", method namespace uri: "urn:xmethodsTest",
        parameters: {name:"Fred", age:32}, SOAPAction:"urn:xmethodsTest#Test"}
    end tell

    The URL for the application reference must be a correct URL for a SOAP (Simple Object Access Protocol) or XML-RPC (eXtended Markup Language Remote Procedure Call) Web server.

    An alternate syntax is:

        tell application "application" of machine ""

    but this form will be converted to the form above when the script is compiled (r. 2412943, 2718557).

  • AppleScript now defines the following file name extensions for file names:

    Type of File

    File Name Extension

    script text


    compiled script


    scripting addition


    scripting dictionary


  • Because many Mac OS X files use "UNIX-style" line endings (using the linefeed character, or ASCII character 10), AppleScript versions 1.7 and later explicitly support embedding the linefeed character in strings with \n. Scripts that use this feature can be run on older versions of AppleScript, but if decompiled, the linefeed character will not be visible in the decompiled output (but will recompile correctly) (r. 2465565).

  • Made changes to support saving in typeFileURL. See Technical Note TN2022, "The Death of typeFSSpec" for details (r. 2710315, 2708208).

  • In AppleScript 1.5 through 1.6, a script's global variables could be lost under certain rare circumstances. If a script contains a Tell block that targets a variable, and that variable specifies an application that does not exist, the "Where is application <name>?" dialog would be presented when the script is executed. After that point, further references to global variables in the handler that included the Tell block would fail. This has been fixed in AppleScript 1.7 for Mac OS X and Classic.

  • In AppleScript 1.5 and 1.6 for Mac OS X, scripting additions behaved fundamentally differently than in Mac OS 9: they were only installed in certain applications that were AppleScript-aware. If a scripting addition command (such as 'display dialog') was sent to an application that was not AppleScript-aware, the event would instead be executed in the application running the script (e.g. Script Editor); that means the dialog would come up in the Script Editor layer, not the Tell target application. In AppleScript 1.7 in Mac OS 10.1, the scripting additions mechanism has been redesigned to behave more like Mac OS 9, and scripting addition commands sent to applications will be executed in the process space and window layer of the target application.

  • AppleScript 1.5 through 1.6 often launched applications unnecessarily in order to get their terminology, and often used the terminology of the script editing application (such as Script Debugger) instead of application terminology. This has been fixed in AppleScript 1.7.

  • In AppleScript 1.5 through 1.6 for Mac OS X, the version property of AppleScript or an application would be displayed as raw data rather than a string (unless the version property was explicitly converted to a string). This has been fixed in AppleScript 1.7 (r. 2569693).

  • In AppleScript 1.5 and 1.6 for Mac OS X, certain operations with 'file' object specifiers (e.g. 'file "Mac OS" as alias) would fail, when similar operations would succeed on AppleScript 1.3 through 1.6 for Mac OS 9. These operations now work in AppleScript 1.7 for Mac OS X. Note that, as always, while you can pass a 'file' object specifier as a parameter to an event, or perform certain operations on it (like assignment and coercion), simply evaluating 'file "pathname"' is itself an AppleScript error.

  • AppleScript 1.5 and 1.6 for Mac OS X could not target Mac OS 9 control panels running in the Classic environment. This has been fixed in AppleScript 1.7. Note that the Classic environment only supports a small number of control panels from Mac OS 9 (such as the Launcher).

  • Accessing paragraphs of AppleScript strings did not work correctly in AppleScript 1.5 through 1.6 if the line endings were Windows-style (CRLF). The result would be only the first half of the text paragraphs, interspersed with an equal number of blank strings. This has been fixed in AppleScript 1.7 and later.

  • Occasionally with AppleScript 1.5 and 1.6, recompiling a script would get an End of File error reading an application's terminology. This has been fixed in AppleScript 1.7.

  • In AppleScript 1.6, under certain circumstances calling a handler in an applet that has not been launched could cause an "Can't continue" error. This has been fixed in AppleScript 1.7 and later.

  • In AppleScript 1.6, Unicode text values stored in script properties of a saved script could not be reloaded reliably. This has been fixed in AppleScript 1.7.

  • In AppleScript 1.6, Unicode text received from certain applications that included a Unicode byte-order mark would behave incorrectly; the text would appear to begin with the Euro symbol, and some operations would fail. AppleScript 1.7 handles Unicode text with byte-order marks correctly.

  • In somewhat rare circumstances, comparing two references to the same file for equality can fail even if both references refer to the same file. This is true in AppleScript 1.0 through 1.6 and has been fixed in AppleScript 1.7.

  • Due to a problem in AppleScript's script parser, the language formations "isn't", "doesn't", and possessives ending with "'s" would all accept a vertical bar or a double-quote character in place of the "s" or "t" following the apostrophe. In AppleScript 1.7 and later, these constructions (for example, "doesn'|" or "AppleScript'" version") are correctly noted as syntax errors.

  • Apple events sent by AppleScript now include an attribute (enumConsidsAndIgnores) to indicate the current state of "considering" and "ignoring" (r. 2708130).

  • The script parser now supports Mac, Unix, and Windows line endings (r. 2468789).

  • Extracting a range of paragraphs from text with Windows line endings now works (r. 2671646)

  • .
  • Miscellaneous performance and stability improvements (rr. 2684555, 2684651, 2700558, 2660044, 2716584, 2719078).

Scripting Additions

Scripting additions provide a mechanism for delivery of additional functionality written in other computer languages that can be used in AppleScripts.

  • All disks formatted as Enhanced Macintosh File System ("HFS Plus") are able to store files with file names greater than 32 characters and stored as Unicode text. When older software accesses such files, those names are represented in an encoded form (with a file ID such as "#28AF" in the name). With AppleScript 1.6 and earlier, the results of many Standard Additions commands (like 'path to', 'info for', and 'list folder'), as well as creation and display of alias objects, would require and return encoded names. In AppleScript 1.7, long and Unicode file names in aliases and for scripting additions are represented by styled or Unicode text. Encoded file names are no longer supported.

  • From AppleScript 1.1, the 'offset' scripting addition command has not worked correctly when the direct parameter is styled text. It also has not worked correctly with the newly-introduced Unicode text type. In Standard Additions 1.7 and later it produces correct results with both styled and Unicode text (r. 1197997).

  • In versions of Standard Additions prior to 1.7, the 'choose URL' command's 'using editable URL' parameter was present in the Scripting Additions dictionary but was nonfunctional (URLs were always editable regardless of the setting of the parameter). It behaves correctly in Standard Additions 1.7 and later: if set to false, the user can choose a URL only by browsing, not by editing the URL in the text box (r. 2635064).

  • The 'choose from list' command in Scripting Additions 1.4 through 1.6 allowed the scripter to create a situation where it would return an empty selection even if the scripter specifically disallowed that case. (This can be done by supplying a default item that does not appear in the list). In Scripting Additions 1.7 and later, the "OK" button will not be enabled in such cases (r. 2644023).

  • In Mac OS X, the 'info for' scripting addition in Standard Additions 1.7 now returns additional record items that provide information about the file's extensions. The 'displayed name' item returns the name of the item as the user sees it in the Finder or file dialogs, and the 'name extension' item now returns the file extension (if any) that is on the indicated file (without the ".", which is considered a separator, and not part of either the name or the extension). Both of these fields (along with the 'name' field itself) are Unicode text values (r. 2716929).

  • In Standard Additions 1.6 and earlier, the 'info for' scripting addition would fail if any piece of information in the requested file or directory was unavailable. On UFS (Mac OS X ) disks and mounted NFS volumes, the file creation date is unavailable, and accessing it causes a -8850 error (in trying to convert it to Universal Time). Starting with Standard Additions 1.7, any missing piece of information in the 'info for' result is provided as the value 'missing value' without failure. In AppleScript 1.6 and earlier, magnitude comparisons (<, <=, >, >=) against the 'missing value' would signal a coercion error for most types; in 1.7 and later, these comparisons always return 'false' without error. These two changes ensure that scripts that use 'info for' against UFS and NFS volumes do not fail, though they may not get correct results because any comparison to the creation date is always false (r. 2648937).

  • In Standard Additions 1.6 on both Mac OS 9 and Mac OS X, the 'info for' scripting addition would return an error -1401 for a nonexistent file, rather than the normal -35 returned in previous versions. In Standard Additions 1.7 trying to get the info for a nonexistent file (or a file in a nonexistent directory or inaccessible disk) will return the -35 error (r. 2664789).

  • The 'read' command in Scripting Additions 1.6 had specific problems with the "using delimiters" parameter: in previous versions, 'read f as list using delimiters {tab}' would return a list, but in AppleScript 1.6, it returns a list of one-item lists. In AppleScript 1.7 and later it behaves as it did prior to version 1.6 (rr. 2665233, 2665169).

  • The 'read' command in Scripting Additions 1.6 had specific problems with the 'before' and 'until' parameters if used in conjunction with the 'as' parameter. Instead of returning a value of a given type, it would return random data or an error. This has been fixed in Scripting Additions 1.7 and later.

  • Mac OS 9 introduced the concept of a "package", that is, a file composed of a folder of several files and folders, which is treated as an integral file by the Finder and other applications. The 'info for' scripting addition in AppleScript 1.6 and earlier treated such packaged data application files as folders, not files, and would not return file- or application-related information about them. In Standard Additions 1.7 and later, getting the information for any directory (including package folders) returns an additional record item "package folder" (if this Boolean value is true, then the directory is a package), and the file's type and creator.

  • Standard Additions 1.5 through 1.6 changed the way that the random number seed worked in the 'random number' scripting addition. Older versions used the system clock as the seed value if no seed value (or a seed value of 0) was provided; Scripting Additions 1.5 and 1.6 always use a seed value of 0 in these cases. In Scripting Additions 1.7 the older behavior has been restored. In addition, the seed value is now taken from the 60Hz 'ticks' counter rather than the system clock, because the increased speed of new machines makes it more likely that two consecutive random number calls may receive the same system clock time as their seed value (r. 2675978).

  • In Mac OS X 10.0 through 10.0.4, the 'choose file name' scripting addition in Standard Additions 1.6 would crash if given an empty string ("") as the default file name. This has been fixed in Standard Additions 1.7. In addition, on Mac OS X the default file name can be a Unicode string.

  • Fixed crash when executing script 'choose file name default name ""' (r. 2723566).

  • 'Adding a OSAX in one domain can make AppleScript forget other OSAX domains.' Fixed now: we iterate through all the folders if any of them have changed (r. 2702081).

Back to top

Script Editor

The Script Editor is a program installed with Mac OS that allows for creation and editing of scripts in any OSA scripting language.

  • In Script Editor 1.6 for Mac OS X 10.0.0 through 10.0.4, you could not choose the Finder with the "Browse" option from the "Open Dictionary..." dialog box. This has been fixed by Standard Additions 1.7 on Mac OS 10.1.

  • In Script Editor 1.6 in Mac OS X, attempting to paste Unicode text into the script window would result in an error. This has been fixed in Script Editor 1.7.

  • In Script Editor 1.6, printing a script to the printer would result in random characters being printed in the place of the script file name. This has been fixed in Script Editor 1.7.

  • Under certain circumstances in Mac OS 10.0.0 through 10.0.4, double-clicking generic TEXT files in the Finder would cause them to be opened by the Script Editor. This has been fixed in Script Editor 1.7, which will now be chosen to open only AppleScript-generated script text files (r. 2657598).

  • Script Editor 1.7 can also open files with the file extension ".applescript" even if they have no file type.

Back to top

Script Runner

The Script Runner is a convenient user interface gadget that allows users to run AppleScripts.

  • Example Scripts have been moved to /Library/Scripts/ for simplify the user's life (r. 2700647).

Back to top


In Mac OS X, the command line tools osacompile and osascript can be used to run AppleScripts from inside of the Terminal application.

  • The osacompile and osascript tools now have an "include" option ('-i') that allows you to specify application terminology to be used when compiling the given scripts. This frees you from having to specify applications in 'Tell' blocks in the script itself. You can also use this to specify the static terminology for an application with dynamic terms, so you can prevent that application from being launched when you compile the script.

  • For the osacompile and osascript command-line tools, the requirement that they be invoked with full paths (i.e. /usr/bin/osacompile) has been eliminated. They can now be invoked with implicit paths like any other command-line tool.

  • In Mac OS X 10.0.0 through 10.0.4, the '-l' and '-d' options for the osalang tool did not work as documented. In Mac OS X 10.1 and later, -l prints the subtype, manufacturer, flags, and name; and -L also prints the description in parentheses after the name.

  • The osacompile and osascript tools previously had a limit of 32K of input text. This limit has been lifted in Mac OS 10.1.

  • The osacompile and osascript tools execute as background applications; they cannot involve any user interface. If you want to call 'display dialog', 'choose from list', or other user-interface scripting additions from a script being executed by osascript, you must enclose it in a Tell block targeting a running application (such as the Finder).

  • '"activate" fails when called from osascript.' Fixed, we now ignore any error from SetFrontProcess (r. 2689926).

Back to top

Finder Scripting

Finder scripting has been enhanced for Mac OS X 10.1 and is now very close to the level of scripting provided by the Mac OS 9 Finder.

  • When a script sets view options (list view options or icon view options), the Finder will now set the view's display setting to "uses custom view options" so the new options will actually be used (r. 2740380).

  • A problem where AppleScript terminology referencing the same file object could resolve to unique (and sometimes unusable) references has been corrected (r. 2740369).

  • The script 'home' would return a value that could not be used. This has been corrected and how the value returned by 'home' is the current user's home directory (r. 2738234).

  • The 'whose' clause 'every disk whose format is Mac OS Extended format' was not working correctly. Now it does (r. 2737997).

  • The script "make new Finder window" was not working correctly. Now it does (r. 2734299).

  • The finder now interprets "::" to mean "the parent folder" when "::" is present in a path name (r. 2722378).

  • In some cases, telling the Finder to make a new alias file was not working correctly. This has been corrected (r. 2716767).

  • The Finder now supports the process class allowing scripts to enumerate other processes as they could before (r. 2715201).

  • Scripts requesting "every file of" a folder would crash the finder. This problem has been fixed so such inquiries no longer crash the finder (r. 2711179).

  • Restart, shut down, and sleep are once again part of the terminology understood by the finder (r. 2693209).

  • The Finder's implementation of text comparison in "whose" clauses was not working. This has corrected (r. 2690467).

  • It was not possible to refer to a file in a Finder script using "file" with a full path. For example, the script 'file "Mac OS"' would not work. This has been corrected so such references now work as expected (r. 2689925).

  • The finder now does a better job of responding to the "update item" command (r. 2686070).

  • It is now possible to get the contents of the selection if the selected items are on the desktop (r. 2684258).

  • Disk objects now include an "ignore privileges" property (r. 2683017).

  • To provide support for the finder's file name display facilities in Mac OS X and how they work with file name extensions, new properties have been added for file objects. The read only property "displayed name" returns the name of an object as it is currently being displayed in the finder's windows. The read only property "name extension" returns the file name extension for the object. Display of file name extensions can be controlled by way of the "extension hidden" property that can be set to a boolean value (r. 2683015).


Back to top


This section discusses changes and new features in Mac OS X 10.1 related to audio input and output.

Audio HAL

The Audio Hardware Abstraction Layer (HAL) represents the lowest level of access to audio devices, as well as the general characteristics of the device.

  • An API for accessing physical device formats has been added (r. 2667943).

  • The kAudioDevicePropertyStreamLatency property is now implemented (r. 2642225).

  • The routine AudioDeviceGetProperty no longer crashes when the outPropertyData parameter is set to NULL (r. 2711043).

  • A new property, kAudioStreamPropertyOwningDevice = 'stdv', has been added so streams can now obtain a reference to the device that owns them (r. 2718528).

  • Wild cards now work with DisplayHALDeviceInfo (r. 2720184).

  • Problems where calling AudioDeviceGetProperty or AudioStreamGetProperty to ask for kAudioDevicePropertyDeviceName or kAudioDevicePropertyDeviceManufacturer would return the error code kAudioHardwareUnknownPropertyError even though the correct property value was being returned have been corrected (r. 2724863).

  • When using the kAudioDevicePropertyDataSourceNameForID property to translate a source OSType to a source name with the AudioDeviceGetProperty() routine, it was possible that the size of the resulting C string, reported in the mOutputDataSize field of the AudioValueTranslation record, was not being reported correctly. This has been corrected (r. 2724938).

  • Audio HAL now uses the IORegistry's interest notification support to detect when a device becomes unavailable (r. 2724980).

  • AudioDeviceStop has been changed so it no longer returns until its IOThread is in the stopped state (r. 2726766).

  • XThreadedDevice::Stopped() now waits for a signal if it isn't executing in its IOThread (r. 2728036).

  • Support for devices with hardware pass has been implemented (r. 2510134).

  • Two new properties have been added allowing callers to get and set the volume in decibels. These properties are: kAudioDevicePropertyVolumeDecibels, that gets and sets the volume, and kAudioDevicePropertyVolumeRangeDecibels, that returns the range of values valid for the device (r. 2587736).

  • AudioDeviceRead direct buffer access is now working correctly (r. 2619532).

Back to top

Audio Toolbox

Contains APIs for AUGraph and MusicToolbox. The AUGraph is a high-level representation of a set of AudioUnits, along with the connections between them. You can use these APIs to construct arbitrary signal paths through which audio may be processed, i.e., a modular routing system. The APIs deal with large numbers of AudioUnits and their relationships.

The MusicPlayer APIs provide the services of a sequencing toolbox. This toolbox is where events can be collected into tracks, and tracks can be copied, pasted, and looped within a sequence.

  • In some cases the MusicSequenceGetIndTrack routine was returning kAudioToolBoxErr_TrackIndexError when it should not have. This has been corrected (r. 2708433).

  • New accessor calls have been added for MusicTrack AUNodes and MIDIEndpoints (r. 2705509).

  • New APIs have been added to allow clients to query the current connection state of the various nodes in a graph at any given time. AUGraphGetNumberOfConnections allows you to count connections and AUGraphGetConnectionInfo allows you to place inquiries about individual connections (r. 2701468).

  • Problems that could occur if AUGraphInitialize was called to initialize a graph that had already been initialized have been corrected (r. 2701458).

  • A new API has been added that allows callers to place inquiries about a graph's cup load. UGraphGetCPULoad returns a double value usually between 0 and 1 (range of CPU load for LAST render cycle: 0 = not running, above 1 would indicate an overload) (r. 2701450).


Back to top


AudioUnits are used to generate, process, receive, or otherwise manipulate streams of audio. They are building blocks that may be used singly or connected together to form an audio signal graph, or AUGraph.

  • Apple provided AudioUnits now correctly support multi-channel audio where appropriate (r. 2733575).

Back to top


The I/O Kit family for writing kernel audio drivers, such as USB audio and MIDI drivers.

  • IOAudioFamily API has been finalized and is now available for developers to use (r. 2689466)


Back to top

Sound Manager

The Sound Manager is the Carbon API for playing and recording sound.

  • The sound manager now returns a complete list of HAL devices by way of the SPBGetIndexedDevice call (r. 2716220).

  • The SPBRecord routine now works as expected when an interrupt callback is specified without a buffer or a completion routine (r. 2703549).

  • The error field of the parameter block was not being set to abortErr before the completion routine was being called when SPBStopRecording was called. This has been corrected (r. 2698286).

  • SPBGetDeviceInfo now returns two UnsignedFixed values for siStereoInputGain as documented (r. 2626723).


Back to top

Speech Recognition Manager

This manager provides speech recognition support in applications.

  • Speech Recognition underwent modifications to lower the memory footprint and to increase performance (rr. 2687320, 2659009).

  • Speech recognition fixed to with properly with USB mono input sources (r. 2689841).

  • The "listen for" AppleScript command returns wrong result what it hears noise. Fixed to not return when it hears noise, rather to continue listening until it hears one of the desired phrases (or the AE times out or is canceled) (r. 2734918).

  • A problem where SRNewLanguageObjectFromHandle could fail when passed valid data has been corrected (r. 2658996).

  • A problem preventing the compilation of AppleScripts that call the Speech Listener has been corrected (r. 2598854).


Back to top

BSD Commands

This section describes changes and enhancements in BSD command line tools that can be executed from inside of the terminal window.

  • The sc_usage and latency commands have been updated to call the mach_absolute_time routine for timing information instead of accessing the processor's TBR register directly (r. 2628734).

    Processes requiring high resolution processor based timing information should use the one of the high level abstractions provided by Mac OS X such as mach_absolute_time or UPTime and should never attempt to access the hardware directly.

  • The command wget has been replaced by the command curl.

  • The portmap command has been updated for better security (r. 2314762).

  • The crontab now handles the -e command line option correctly (r. 2738429).

  • The commands crontab (rr. FreeBSD-SA-01:09, 2651761), timed (rr. FreeBSD-SA-01:28, 2661541), rwhod (r. FreeBSD-SA-01:29, 2661550), fetchmail (rr. FreeBSD-SA-01:43, 2722975, 2747320), telnetd (r. FreeBSD-SA-01:49, 2732197), procmail (r. RHSA-2001:093-03, 2730082) have been updated to close potential security holes.

  • The login command now changes the permissions on the user's terminal device to prevent another user from either reading or writing to the terminal device (r. 2724204).

  • The rm command has been updated to provide so that it is now more convenient to use with files that have been locked in the Finder (checking Locked in the Finder sets the BSD IMMUTABLE flag). The rm command now provides a warning prompt allowing users logged in as root to override the IMMUTABLE flag when they attempt to delete a locked file (r. 2690268).

  • The default login script for the tcsh command so that it now sets the MANPATH environment variable to include the user's ~/man directory (r. 2592246).

  • The top command now processes it's command line arguments as expected. Before this correction there the top command had difficulties recognizing combined parameters such as "-us10" and they had to be provided as separate parameters as in "-u -s10" (r. 2705129).

  • The arp command now parses all of the other supplied command line options before acting on the "-a" option (r. 2711665).

  • A problem in the pax command where it would incorrectly chown the target of a symlink rather than the symlink itself has been corrected (r. 2713351).

  • The ps command now processes the "-p" command line option as expected (r. 2715815).

  • The bsd generic template makefiles now include templates for creating Mach-O shared library targets (r. 2717020).

  • Steamlined the execution time of the init command that is run as the last stage of the boot process (r. 2720339).

  • The tftpd command has been updated or improved in the following areas (r. 2253425):
    • The "-s" command line option has been added. This option callers to chroot the tftpd deamon,

    • Added support for running tftpd command as any user,

    • Added support for file transfers of files larger than 32M

    • Formatting of syslog messages generated by the command has been cleaned up,

    • Improved bounds checking on internal buffers to prevent potential buffer overflows has been added.

  • A problem in the ftpd command has been corrected so it no longer quits if a connection sends a PASV command to the deamon before any user has logged in to the Machine (r. 2662358).

  • When performing the ""<<"" redirection bash1 creates a temporary file in /tmp with a name based on the process id, writes subsequent input out to that file, and then closes the file before re-opening it as the standard input of the command to be executed. At no stage are the results of the creat, writes, or open checked for an error status. This problem has been corrected so error status values for these calls are checked during the operation (r. 2695582).

Back to top


Carbon is a set of programming interfaces for use in Mac OS applications, especially those being ported from Mac OS 9 to Mac OS X. Carbon includes about 70 percent of the legacy Mac OS APIs and a number of new APIs for Mac OS X.

Alias Manager

The Alias Manager is the part of the operating system that communicates with the file system to maintain alias records that are used to keep track of file and folder locations. The Alias Manager does not create Finder alias files; the Finder creates these files and stores alias records created by the Alias Manager in them.

  • Aliases referencing NFS servers now contain sufficient information to allow those servers to be mounted correctly (r. 2709380).

  • A problem where the routine IsAliasFile always returned the result true has been corrected. IsAliasFile now calls through to FSIsAliasFile (r. 2680574).

Back to top

Appearance Manager

The Appearance Manager extends the facilities provided by the Control Manager, the Dialog Manager, the Menu Manager, and the Window Manager to provide a consistent look and feel for all on screen user interface elements in the Mac OS environment.

  • The DrawThemeTextStyle/Box routines now cache the ATSUTextLayout record for improved performance (r. 2503794).

  • A new tag, kThemeVariantBaseTintTag, was added to Appearance.h in list of tags supported by GetTheme. Authors of custom controls for Mac OS X can use this tag in their drawing routines (r. 2659537).

  • A new API, CopyThemeIdentifier, was added to Appearance.h that allows callers to determine which Appearance Theme is in effect (r. 2675406).

  • Performance improvements have been implemented in menu item text drawing, menu drawing with special fonts, and per-application menu manager initialization (rr. 2676928, 2684067, 2695346, 2696870, 2692043).

  • The routine DrawThemeTextBox now correctly draws the special glyphs (check mark, bullet, dash, diamond) rather than using the special glyphs font (rr. 2690202, 2695604).

  • The routine TruncateThemeText would sometimes truncate incorrectly because it was using invalid cached information. This has now been fixed (r. 2719313).


Back to top

Apple Type Services (ATS)

ATS provides advance typography APIs that make it possible for Mac OS applications to draw Unicode text. ATS provides both low-level services for drawing Unicode text as well as much of the high-end typographical control previously provided by QuickDraw GX.

  • Changed ATS to output correct PostScript for certain non-compliant TrueType fonts (which worked with the LaserWriter 8 driver) (r. 2717188).

  • A problem where ATSFontActivateFromFileSpecification would fail when large numbers of fonts were installed has been corrected (r. 2632647).

  • The routine ATSFontFindFromPostscriptName was sometimes returning incorrect font IDs. This has been corrected (r. 2625997).

  • Fonts were made available to the System and applications based on the order added (earlier ones took precedence), making it impossible for an application to use its own (private) versions of those fonts. A precedence ordering scheme has been implemented that gives application-added fonts highest priority so they will override existing fonts when appropriate (r. 2563643).

  • A problem where the bottom line of an Arabic or a Persian font would display correctly on the screen but would not print correctly has been corrected. Here, the right end of the line was being cut off. Now, the distribution and location of Kashidas and white spaces are more now accurate in big slope lines (r. 2533850).

  • Added support for 32-bit cmap formats. Specifically, formats 8, 10 and 12, which allow mapping of additional Unicode characters (r. 2491112).


Back to top

ATSUI (Apple Type Services for Unicode Imaging)

ATSUI extends the QuickDraw API and makes it possible for Mac OS applications to draw Unicode text. ATSUI provides both basic services for drawing Unicode text and much of the high-end typographical control formerly provided by QuickDraw GX.

  • ATSUI now allows you to create separate font fallback objects which can be associated with an ATSUTextLayout. These objects cache the result of the font fallback process for greater performance.

  • Font variations were not working correctly when imaging with CoreGraphics. ATSUI now passes the variations attribute to CoreGraphics when drawing text (r. 2570218).

  • A problem where ATSUI text drawn to the printer was being printed rotated 180 degrees relative to the same text drawn to the screen has been corrected (r. 2731716).

  • Many aspects of ATSUI performance have been greatly improved. Font substitution is now much faster, and overall layout performance is faster. ATSUI caches many more values and data structures to speed up text drawing performance (rr. 2726410, 2716871, 2716169, 2715296, 2713179, 2705998, 2699489, 2673744, 2671234, 2572090, 2499393, 2487786).

  • The routines ATSUSetTextPointerLocation and ATSUSetTextHandleLocation have been updated so they now support the constants kATSUFromTextBeginning and kATSUToTextEnd in the iTextOffset and iTextLength parameters (r. 2715359).

  • A problem where ATSUI truncation could go past the end of a text boundary when using Lucida Grande font at 18 point has been corrected (r. 2706551).

  • ATSUI was reporting bad descender values for certain fonts. Here, the value descender+leading was being returned as the descender value. Now, ATSUI clients that do not want the leading value to be included in this calculation can specify the kATSLineIgnoreFontLeading flag in the kATSULineLayoutOptionsTag attribute's ATSLineLayoutOptions value. This works nicely for fonts that have the leading value defined - when necessary, ATSUI will get leading values from GetGlyphVectorSpecs for fonts that do not have a leading value defined (r. 2686163).

  • When changing Type 1 fonts, WorldText complains that some chars cannot be displayed in the selected font even though the characters are simple low ASCII Roman. Prevent ATSUI from displaying an error message for fonts that do not have the correct glyph assigned for U+000D (r. 2590963).

  • ATSUI is now significantly more thread safe: ATSUStyle and ATSUFontfallbacks objects are thread safe in that you can share them among different threads, but ATSUTextLayout objects are not thread safe and should not be shared.

  • ATSUI now supports Unicode surrogate pairs directly, and can handle cmap formats which support them.


Back to top

Apple events

Apple events provide a simple interapplication and intraapplication communications facility for Mac OS X applications.

  • It is now possible to target processes on remote machines as recipients of Apple events.

  • The Apple event data coercion handler typeChar->typeLongInteger sometimes returned a long integer on an error. We now correctly return errAECoercionFail for this coercion error (r. 2674451).

  • Hex data output by AEPrintDescToHandle was being truncated at 32 bytes. This limit has been removed - hex data is no longer truncated (r. 2672759).


Back to top

Carbon Core

The Carbon Core incorporates essential services that are generally devoid of a user interface. These facilities range from memory management to process management.

  • CSCopyMachineName now returns the machine's AppleTalk name (In 10.0.x CSCopyMachineName returned the machine's hostname).

  • The routine Delay now returns a value finalTicks (r. 2736558).

  • The routine CFDistributedNotifications can now be called outside of login sessions (r. 2698120).

  • The routine CSCopyUserName can now be called from Carbon CFM applications (r. 2666981).


Back to top

Code Fragment Manager

The Code Fragment Manager (CFM) is responsible for loading and preparing PowerPC executables. Almost all of the PowerPC Mac OS and all PowerPC applications depend on the services of the CFM in some way.

  • The LaunchCFMApp command is now pre-bound against all Carbon module. As a result, less launch time binding is required for CFM Carbon applications resulting in significantly faster application launch times (r. 2699026).

  • A problem with CFM reference counting on connection IDs has been corrected (r. 2696728).

  • Additional work has been done to improve the performance of the Code Fragment Manager's handling of file system calls when loading libraries (r. 2712553).


Back to top

Component Manager

The Component Manager provides facilities for tracking and calling code modules that provide a defined set of services to one or more clients (components).

  • New APIs to support two-level name space lookups and improve symbol lookup performance have been added (2689833, 2701673).

  • The performance and reliability of the GetComponentPublicResourceList routine has been improved (r. 2713803).

  • QuickTime package installations are now recognized by the Component Manager without having to restart the system (r. 2718051).


Back to top

Control Manager

The Control Manager provides facilities for drawing and processing user interaction with on screen items inside of windows.

  • A problem where TrackControl was returning the value kControlMenuPart rather than the value kControlLabelPart after tracking a click in a popup menu control where the user had chosen a menu item has been corrected (r. 2427323).

  • Icon control creation no longer fails if you point it at an invalid icon (r. 2713860).

  • CountSubControls now returns 0 for popup-with-checkbox controls. Before it was returning 1 (r. 2360729).

  • A new tag, kControlTabImageContentTag, has been defined in ControlDefinitions.h that allows callers to get and set icons in tab controls (r. 2447692).

  • Standard controls which were returning kControlWantsIdle now use their own carbon event timers for their idle operations (r. 2464967).

  • It is now possible to provide a NULL pointer for the second parameter to CreateRootControl when your application does not require that the root control be returned. Previously, CreateRootControl would return paramErr if NULL was passed as the second parameter (r. 2666166).

  • A new tag, kControlEditTextPasswordCFStringTag, has been defined in ControlDefinitions.h that can be used in Mac OS X applications. This tag provides the same functionality as the non-CFString tag kControlEditTextPasswordTag, only it allows callers to obtain the password text as a CFString (r. 2722976).

  • Data browser control drawing performance has been improved (rr. 2497529, 2658680, 2601622, 2547537, 2597258).

  • A problem in the Data Browser control where SetDataBrowserItemDataText would call CFRetain one additional time for the CFString value passed to it (and thereby cause a memory leak) has been corrected (r. 2706654).

  • In the Data Browser control, while an in place editing command was in progress, the EnableDataBrowserEditCommand routine was not working correctly. This has been corrected so the EnableDataBrowserEditCommand routine works as expected (r. 2691325).


Back to top

Date & Time Utilities

The Date & Time Utilities provide facilities for accessing the clock chip and APIs for converting dates between various formats.

  • The InitDateCache now performs better internal error checking when reading resources it requires (r. 2718176).


Back to top

Dialog Manager

The Dialog Manager manages user interactions with windows containing controls arranged and positioned using dialog layout templates.

  • The Dialog Manager routine SetDialogDefaultItem now calls the Control Manager routine SetWindowDefaultButton to set a dialog's default button (r. 2635614).

  • The routine GetDialogItemAsControl was returning a bogus ControlRef when the item was of type kHelpDialogItem. GetDialogItemAsControl now returns an error for items of type kHelpDialogItem (r. 2413887).

  • The StandardAlert routine no longer forces the current application to the front since the Notification Manager (a la Mac OS 9) is now available again on Mac OS X 10.1. Applications should use the Notification Manager or AEInteractWithUser before posting an alert from the background, as has always been the case on classic Mac OS (r. 2713623).


Back to top

Drag Manager

The Drag Manager supports drag-and-drop operations between windows and applications.

  • SetDragImage no longer crashes when passed a zero-sized region. In these cases, the image will be drawn full (rr. 2643332, 2700741).

  • A new flavor flag, flavorDataPromised, has been added to Drag.h. This flag allows callers to mark those flavors that are promised so recipients can determine which of the flavors provided in a drag will require additional processing when their data is requested (r. 2703450).

  • Data for promised flavors can now be requested during drag tracking by tracking applications and not just at receiving time. Applications retrieving promised data while tracking drags should do so with discretion.


Back to top

Event Manager

The Event Manager manages the delivery of system and user interaction events to applications.

  • "Clear" key no longer triggers IsUserCancelEventRef to return true (r. 2726545).

  • A problem where RemoveEventHandler could corrupt memory when called twice to remove the same handler has been corrected (r. 2719106).

  • The screen snapshot key combinations command-shift-3 and command-shift-4 have been implemented for Mac OS X 10.1. Screenshots created using these commands are stored as TIFF files in the ~/Desktop folder (r. 2709557).

  • FlushEvents now properly flushes events regardless of weather an application has entered its event loop or not (r. 2667246).

  • It is now possible for Carbon Event handlers to dispose of their target object while executing. The Carbon Event dispatcher no longer makes any assumptions about the validity of the handler or its target after a handler has returned. This would be useful in some cases such as a handler that disposes of its window in response to some user activity (r. 2648390).

  • A new routine GetCFRunLoopFromEventLoop has been added to allow an application to obtain the CFRunLoopSource. This new facility can be used to add new CFRunLoopSources (sockets, pipe's) to the run loop (r. 2605077).


Back to top

File Manager

The File Manager provides services for storing and retrieving disk-based information.

  • Carbon was caching of the EOF value in the Carbon FCB to avoid having to call lseek every time the current EOF value is required. This caused synchronization problems when multiple applications accessed a single file. The EOF value is no longer cached (r. 2656449).

  • In Mac OS X 10.0.x, the filesystemID and sigWord in volume info parameter blocks for Audio CDs were incorrect (in fact, they were swapped from what they are on OS 9). They are now correct in 10.1. The correct values are:

        filesystemID = 0x4A48
        sigWord = kHFSSigWord ('BD')

  • Mac OS X, Carbon, may not have been updating the volume encoding bitmap correctly if the system was booted in one script but another script was used to create a file. This caused the Unicode->Pascal conversion to behave incorrectly. This bug caused a number of international related bugs in which files were not found, etc (r. 2739253).

  • A file can now be opened for shared read/write access by the same application (r. 2725021).

  • FNSubscribe API was added to Mac OS X (Mac OS X 10.1) to allow applications to be notified when a folder contents have been changed. The FNSubscribe routine is documented in Files.h (r. 2706955).

  • If non unicode, non UTF characters are found on UFS/NFS volumes, they are now returned as '?' characters (r. 2690819).

  • The routine PBReadSync was not returning eofErr if the new line bit was set. This caused noErr to be returned with zero bytes of data when attempts were made to read past the end of a file (r. 2677789).

  • The Carbon File System now returns a badNameErr if the volume name of a UFS file or volume is greater than 255 bytes (r. 2648740).


Back to top

Folder Manager

The Folder Manager provides facilities for locating "special" folders (for example, the Extensions folder) without relying on the names of those folders. This aids developers in application localization.

  • With the release of the Directory Services, 2 new FindFolder constants have been defined to enable developers to locate specific folders: kDirectoryServicesFolderType -> */Library/DirectoryServices, and kDirectoryServicesPlugInsFolderType -> */Library/DirectoryServices/PlugIns (r. 2609405).

  • FindFolder (and FSFindFolder) was not taking in account changes of user id (through setuid). This has now been fixed (rr. 2611363, 2693365).

  • A small memory leak in FindFolder has been corrected (r. 2644507).

  • Some file systems (ie. HFS+) are case insensitive whereas some others (ie. UFS) are not. FindFolder now takes this into account when searching for folders (r. 2645592).

  • The Folder Manager was mishandling permission privileges and was not thread safe. This has been fixed (r. 2658862).

  • A new FindFolder constant was added to enable developers to locate the Receipts folder: kInstallerReceiptsFolderType -> */Library/Receipts (r. 2662562).

  • A new FindFolder constant was added to enable developers to locate the Authentication Modules Plug-ins folder: kAppleShareAuthenticationFolderType -> */Library/Filesystems/AppleShare/Authentication (r. 2668964).

  • A new FindFolder constant was added to enable developers to locate the MIDI Drivers folder: kMIDIDriversFolderType -> */Library/Audio/MIDI Drivers (r. 2678403).

  • Calls to FSFindFolder(kLocalDomain, kDesktopPicturesFolderType, ...) were returning a reference to /Library/Appearance/Desktop Pictures/ rather than /Library/Desktop Pictures/. This has now been fixed (r. 2730236).


Back to top

Font Manager

The Font Manager provides system-wide services for the retrieval of glyphs for display of textual information.

  • Shadow/outline width tab values from FontMetrics in Mac OS X 10.1 have been corrected so they are now consistent with the same values returned in Mac OS 9 (r. 2698733).

  • Fract enabled bit is now respected for Type 1 fonts (rr. 2668615, 2668622).

  • Accessor functions have been added for the font container and font family resources (r. 2717955).

  • Conversion functions for ATSFontRef <-> FMFont and ATSFontFamilyRef <-> FMFontFamily have been added (r. 2717952).


Back to top


FontSync provides a common method for identifying fonts based upon the content of the font rather than just the name as a document is moved from machine to machine.

  • FontSync now supports FSRefs in addition to FSSpecs. This allows for using Unicode in the name of the profile as well as increasing the number of characters allowed in file names (r. 2724642).

  • AppleScript support for FontSync has been added.


Back to top

Gestalt Manager

The Gestalt Manager provides a simple, efficient way for your application to determine the user's hardware and software configuration at runtime so that you can fully exploit the available features or inform the user if a necessary feature is missing.

  • Calls to the NewGestalt routine when the selector was already installed were mistakenly returning noErr. NewGestalt has been corrected so it now returns gestaltDupSelectorErr for selectors that have already been defined (r. 2674422).


Back to top

Help Tags

Help Tags are the primary method for providing context sensitive help in Mac OS X. They are the Mac OS X replacement for the older Balloon Help technology.

  • A new API has been added, HMHideTag, that allows applications to hide the tag that is currently being displayed (r. 2654097).

Back to top

Icon Services

Icon Services provides fast and efficient facilities for retrieval of appropriate icon information used to represent files, directories, or other commonly used icons (for example, the caution alert icon, the note alert icon, and the help icon).

  • New Alert icons for Stop, Note, and Caution now available (r. 2694601).

  • SetSuiteLabel will now return paramErr if called with a value greater than 7 or less than 0 (r. 2388249).

  • A problem causing intermittent crashes when using PlotIconRef to draw application icons (16x16) in a palette window has been fixed (r. 2744424).


Back to top

Menu Manager

The Menu Manager is the part of the operating system responsible for both drawing the menu bar, and drawing menus and pop-up menus on the screen while the mouse is being held down.

  • New documentation for enabling Services for Carbon applications is available at the reference given below (r. 2761323).

  • Contextual Menu plugins now work correctly (r. 2744024).


Back to top

Multilingual Text Editor (MLTE)

The Multilingual Text Editor (MLTE) supplies a C language interface for creating and editing Unicode text documents. Although MLTE may appear to be functionally similar to TextEdit in many ways, MLTE provides many features that are not provided in TextEdit.

  • On 10.0 MLTE allowed developers to automatically handle Text Input Carbon events. On 10.1, MLTE handles a wider number of Carbon events automatically.

    MLTE no longer uses Apple events for text input. MLTE now uses Carbon Text Input events. This avoids possible conflicts with other potential Apple event handlers for text input that a developer might use in their application, and it brings MLTE in line with Apple's new event handling model.(r. 2661191, 2685845).

  • On 10.1, MLTE uses by default CoreGraphics for imaging. New masks were introduced for developers to select the imaging environment. For example, clients can specify the frame option kTXNUseQDforImagingMask to use QuickDraw Text (r. 2681781).

  • The new APIs, TXNGetSpecifiedChangeCount and TXNClearSpecifiedChangeCount, have been introduced that allow clients to determine if the contents of MLTE objects have changed. These APIs are described as follows:

    TXNGetSpecifiedChangeCount will return the number of changes for the given option mask(s). Every input action will be incremented, including undo and key press. The purpose of this API is to provide a more expandible version of existing API TXNGetChangeCount and allow clients to obtain various count information.

    TXNClearSpecifiedChangeCount will allow client to reset the specified counter. Writing the document to the disk will not reset the counter automatically (r. 2664957).

  • A new flag, kTXNDisableDragAndDropMask, that allows applications to turn off Drag and Drop has been added (r. 2744110).

  • The TXNEchoMode routine had a potential crashing bug with certain UniChar values when called with the kTXNUnicodeEncoding parameter. This has been fixed (r. 2692659).

  • MLTE now provides finer control over the view rectangle and destination rectangle. The API TXNGetRectBounds has been added to the set of APIs exported by MLTE that allows developers to have finer control over the view rectangle and destination rectangle (r. 2689977).

  • Previously MLTE would not supply correct script info when placing non- Roman text on the public scrap in some specific cases (for example: when the non-Roman text in an MLTE object was not set to the correct font/ script combination.) This problem was fixed (r. 2679828).

  • TXNGetDataEncoded API might have failed for certain specific offset parameters (end offset < start offset * 2) when translating from Unicode to plain text encoding. This was fixed. (r. 2661305).

  • MLTE added a flag to specify that a TXNObject only allow a single line of text. This turns off vertical scrolling and disallows input of any line break characters. (r. 2661126).


Back to top

Navigation Services

Navigation Services provides new Open and Save dialogs, allowing users to locate and select files and other resources.

  • Custom event handing callback routines will now receive HighLevelEvent notifications. Applications can use these notifications to either call AEProcessAppleEvent to dispatch the event to their own handlers (r. 2719014).

  • In Mac OS X 10.0.0 through Mac OS X 10.0.4 NavChooseFolder was not returning the correct item number in itemHit for a keyDown event directed to a custom edit control. This has been corrected (r. 2719835).


Back to top

Process Manager

The Process Manager provides a set of APIs allowing processes to find out information about other processes registered with the Process Manager.

  • Speed of the GetProcessInformation call has been improved (r. 2651002).

  • Two new APIs, IsProcessVisible and ShowHideProcess, have been defined in Processes.h. These routines are available for Mac OS X applications. For more information, read the descriptions in Processes.h (r. 2489238).


Back to top


QuickDraw is a part of the Mac OS used for drawing and displaying graphical information on the screen and other raster devices.

  • Fixed a bug that occurred when copying from a window's port's PixMap to another PixMap; afterwards, the source port's PixMap's base address would be reset to the base address of the current GDevice - now it's correctly reset to the base address of the main GDevice (r. 2756169).

  • The stability of the GetPictInfo routine has been improved (r. 2762314).

  • A problem where importing an image for which no codec exists could cause a crash has been fixed (r. 2660484).

  • The routines CreateQDContextForCollapsedWindowDockTile and ReleaseQDContextForCollapsedWindowDockTile can now be called from Carbon CFM applications (r. 2676885).

  • Performance of line drawing for has been improved (rr. 2438552, 2668363).

  • Accessor functions for the txSize, txFont, txFace, and txMode GrafPort fields have been added (r. 2440918).

  • Painting with a single color PixPat created using MakeRGBPat now works as expected (r. 2563999).

  • Information returned by the routines GetPictInfo and GetPixMapInfo is accurate. Some of the fields were not accurate in previous Mac OS X implementations of these routines (rr. 2567490, 2570346).

  • Problems rendering grey underlines in TextEdit fields under millions of colors have been fixed (rr. 2648635, 2689331).

  • QDAddRectToDirtyRegion and QDAddRegionToDirtyRegion have been can now be called by Carbon CFM applications (r. 2662034).

  • In Mac OS X 10.0.x, calling DrawPicture to draw a picture containing a DirectPix opcode with packtype == 2 (stripped alpha channel ) could cause a crash. This has been corrected (r. 2663619).

  • A new accessor, SwapPortPicSaveHandle, for swapping the GrafPort's picSave handle has been added to QuickDraw.h (r. 2670340).

  • Calling QDFlushPortBuffer after a call to CGContextSynchronize now behaves as expected (r. 2688434).

  • Support for intermixing QuickDraw and CoreGraphics calls during printing operations has been added (rr. 2690777, 2705621).

  • QuickDraw now passes all SetCursor calls through to CoreGraphics. This allows applications to set the cursor to a custom cursor during, say, drag and drop tracking while their application is not necessarily in the foreground (r. 2693703).

  • A problem where PICTs created using OpenCPicture and CopyBits in Mac OS X 10.0.x were not setting the pmVersion field correctly has been corrected. This problem prevented these pictures from being opened in some third party software (r. 2705390).

  • scaling quality of the CopyBits and CopyMask routines has been improved (r. 2715736).

  • Image quality problems with drawing Pictures containing BitMaps using QDPictDrawToCGContext have been corrected (r. 2730941).


Back to top

Script Manager

The Script Manager enables internationalization of non-Unicode applications.

  • The MacCyrillic and MacCentralEuropean script bundles were added to the system. They are normally inactive unless a font from the appropriate ID range is present (e.g., Charcoal CY or Charcoal CE).


Back to top

Text Encoding Converter

The Text Encoding Converter enables the conversion of text data from one encoding to another (e.g., Mac OS Roman to Unicode).

  • A problem where encoding conversion between MacJapanese and decomposed form Unicode could fail has been corrected (r. 2723355).

  • Support for the JIS X 0213, HK-SCS, and GB 18030 character sets has been added.

  • Support for Unicode 3.1 and Unicode 3.2 (draft) has been added.

  • The MacKorean/Unicode mapping was significantly revised to take advantage of Unicode 3.2, and to make it complete (approximately 140 characters were not being mapped in prior versions).

  • The mapping for Symbol was revised to take advantage of Unicode 3.2.

  • The UTF-8 converters now check for malformed UTF-8 more strictly, per the policy of the Unicode Consortium.

  • The performance of TEC initialization was significantly improved.


Back to top

Text Services Manager

The Text Services Manager provides facilities for applications to communicate with various text processing utilities that provide services such as special text input methods, spell checking, hyphenation, etc.

  • Keyboard script switching now behaves correctly (rr. 2650765, 2688646).

  • The 'International Preferences' panel of the Keyboard system preference pane now correctly shows Roman keyboard layouts when a Roman input method is installed (r. 2658289).


Back to top

Unicode Utilities

The Unicode Utilities enable internationalization of Unicode applications.

  • Fixed a bug where having a precomposed fraction character (e.g. 1/2, 3/4) with the numeric sorting option turned on would cause collation to hang.

  • Added support for Unicode 3.1 and 3.2, including surrogate pairs.


Back to top

Window Manager

The Window Manager provides facilities for drawing and maintaining windows on the screen.

  • A new routine, IsWindowLatentVisible, has been added to Windows.h.

    Mac OS X applications can call this routine to determine if a window is visible on screen and also whether it is latently visible but not currently on screen.

    All windows are either on screen or off screen. A window that is off screen may still be latently visible: this occurs, for example, when a floating window is hidden as an application is suspended. The floating window is not visible on screen, but it is latently visible and is only hidden due to the suspended state of the application: when the application becomes active again, the floating window will be placed back on screen (r. 2754595).


Back to top

Classic Runtime

The Mac OS X Classic Runtime environment provides a Mac OS 9 compatibility runtime environment for legacy applications and software.

  • Applications on ISO 9660 disks can now be launched in Classic (r. 2684479).

  • A problem where the classic Resource Manager cache was not being invalidated after a resource file was closed has been corrected. This would only be a problem if the file refnum was reused, that is only likely to happen when the FCB table was getting full. If that occurred, then the wrong resource data for resources smaller than 512 bytes could be returned (r. 2710761).

  • A number of corrections related to sleep in the Classic environment have been corrected (rr. 2705529, 2707041, 2710201, 2625336, 2653690, 2654232, 2654978, 2659472, 2663493, 2669710, 2700087, 2705234).

  • MP Tasks running in the classic environment on multi-processor machines were only running on one processor. This have been corrected (r. 2663329).

  • MPLibraryIsLoaded was returning false in the Classic environment on single processor machines. This has been changed so now the MPLibraryIsLoaded routine returns true on both single and multiple processor machines when called from classic (r. 2661330).

  • Multiprocessing library 2.0 is now supported in classic (with the exception of the MPThrowException routine) (r. 2351584).

  • Classic setup preferences in the System Preferences dialog now does a better job of identifying and enabling eligible classic system folders (r. 2717173).

  • The Rebuild Desktop button in the classic setup preferences in the System Preferences dialog would fail to rebuild the desktop file when clicked. this problem has been corrected (r. 2703373).

  • Classic applications expecting to change the cursor position by adjusting the low memory cursor position values now work as expected (r. 2729368).

Back to top


A set of object-oriented frameworks that support rapid development and high productivity, using a dynamic runtime and rich object hierarchy.


AppKit is a framework that provides graphical objects with default behaviors for rapid application development, including windows, panels, buttons, menus, scrollers, text fields, and more.

  • Credits.rtfd is now supported in the "About..." dialog, along with the other supported formats (rtf, html) - just put the file in the Resources folder in your application's bundle (r. 2704891). See the discussion of the Credits.html file in the Standard About Panel section of the Mac OS X 10.1 Release Notes for more information about using this file.

  • Drawing strings off the left edge, and through affine transforms now display correctly (r. 2632822).

  • Cocoa applications crashed in very specific cases involving Unicode Hex input and the user changing the font size. These cases have been corrected (r. 2735052).

  • An infinite loop could occur when 32-bit cmap tries to map a two Unicode character into a single gylph. We now pad with a null gylph to prevent this hang from occuring (r. 2734557).

  • Cocoa applications can now set the contents of their Dock menu (r. 2711768).

  • NSTextView sometimes crashed after calling -[NSLayoutManager rectArrayForCharacterRange:...]. We now properly check the return value (r. 2663005).


Back to top


Foundation is a framework that provides the base layer of (typically non-GUI) functionality that Cocoa applications need, including classes for dealing with strings, arrays, the file system, memory management, and more.

  • NSURL and NSURLHandle have been extended to access "https:" style URLs

  • NSFileManager's removeFileAtPath: now removes "._" catalog files for directories on file systems that don't understand resource forks, for binaries compiled against 10.1 (r. 2746605).

    Binaries compiled under 10.0.x when run under 10.1 will exhibit their old 10.0.x behavior (i.e. should they request a directoryContentsAtPath they'll get back "._" catalog/resource files) even though they're running under 10.1. Also, the existence of a preference to get 10.0.x applications to exhibit 10.1 behavior.

  • NSFileManager's directoryContents method now accounts for "._" catalog files, when called from binaries compiled against 10.1 (r. 2718226, see note above).

  • NSFileManager now properly copies or moves resource forks and other HFS meta data (r. 2718221).

  • NSDictionaries are now actually immutable when possible, instead of being really NSMutableDictionaries underneath (r. 2683641).

  • A problem that could cause a crash in NSSocketPort has been fixed (r. 2650498).

  • A problem that could cause a crash in NSTimeZone's +timeZoneWithName: with Africa/Abidjan has been fixed (r. 2623966).

  • A potential race condition in NSThread has been fixed (r. 2747448).

  • A problem in the exception handling code for -[NSConnection sendInvocation:target:] where a variable was being released too many times has been corrected (r. 2710164).

  • NSFoundationVersionNumber is now declared in NSObjCRuntime.h. Applications with compile time dependencies on particular versions of foundation can compare against this value in their preprocessor code (rr. 2695088, 2695627).

  • A problem where NSData objects created from CFObjects could hash their data differently than ordinary NSData objects has been corrected. This prevents -isEqual: from failing on objects that are really equal but were hashed differently (r. 2682823).

  • -[NSMutableArray removeObjectsInArray:] now uses -isEqual: for comparisons rather than pointer equality (r. 2675482).

  • A potential crashing problem that could occur in NSAttributedStrings in multi-threaded applications has been corrected (r. 2617551).

  • Problems found with putting spaces in the format string of a formatter passed to NSNumberFormatter have been corrected (r. 2566070).

  • Collections now respect the initial size hint provided to them in the various initialization methods (r. 2543041).

  • A case where NSFileHandle could leak a file descriptor has been fixed (r. 2272814).


Back to top


NSDrawer is a user interface element that attaches to a window, sliding in/out as needed to display other views and controls.

  • A crash could occur when using an NSDrawer with a text view and the window was closed without being saved. This has been corrected (r. 2696029).

  • NSDrawer had a 6 pixel by 30 pixel offset. The framework was modified so this no longer occurs. Developers will have to re-link to the new framework to take advantage of the change (r. 2671249).


Back to top


NSFileManager enables you to perform many generic file-system operations.

  • -fileAttributesAtPath:traverseLink: used to return nil when passed a path of "/dev". It now properly returns an attributes dictionary (r. 2731166).


Back to top


An NSFileWrapper holds a file's contents in dynamic memory. In this role it enables a document object to embed a file, treating it as a unit of data that can be displayed as an image (and possibly edited in place), saved to disk, or transmitted to another application. It can also store an icon for representing the file in a document or in a dragging operation.

  • NSFileWrapper now creates compressed .tiff files. In Mac OS X 10.0.x, .tiff files created by NSFileWrapper were not compressed (r. 2722101).


Back to top


NSOpenPanel provides the Open panel for the Cocoa user interface. Applications use the Open panel as a convenient way to query the user for the name of a file to open. The Open panel can only be run modally.

  • Tagged controls in NSOpenPanel and NSSavePanel now work as expected (r. 2471276).


Back to top


An NSSavePanel object manages a panel that allows users to specify the directory and name under which a file is saved. It supports browsing of the file system and it accommodates custom accessory views.

  • NSSavePanel would sometimes not point to the proper default directory after previous uses. This has been fixed (r. 2739034).

  • NSDocument-based applications are now able to save documents correctly even if a parent directory has been renamed or moved (r. 2529722).

  • Hidden file name extension support has been added to NSSavePanel (r. 2575042).


Back to top


An NSScrollView allows the user to scroll a document view that's too large to display in its entirety.

  • Ganged scroll bars have been implemented for NSScrollView (r. 2541625).


Back to top


An NSSplitView object stacks several sub views within one view so that the user can change their relative sizes.

  • A rare case where NSSplitViews would not redraw correctly has been fixed (r. 2505922).


Back to top


The NSString class declares the programmatic interface for an object that manages immutable strings.

  • When doing NSString -> NSData conversion using NSASCIIEncoding, line separators are now converted properly (r. 2706916).

  • -[NSScanner isAtEnd] auto-released memory as it went, which for long string processing, could eat up a lot of memory. This operation has been streamlined so it does not use as much memory when processing long strings (r. 2661434).

  • Converting to ASCII (using NSASCIIStringEncoding) with lossy conversion now produces more accurate results (r. 2641320).


Back to top


An NSTableView object displays record-oriented data in a table, and allows the user to edit values and resize and rearrange columns.

  • NSTableViews can now be resized in drawers (r. 2501737, 2704541).

  • NSTableView now allows dragging from windows that are not front-most (r. 2686096).

  • Sometimes when dragging data from a table view, developers might have seen text with partial backgrounds drawn behind them (in the drag image). This has been fixed. The default drag image is now always drawn as the selected cells with no background (r. 2654201).


Back to top


NSTabView is a user interface element that permits the use of multiple tabs in a window to cycle through different views.

  • In some scenarios, NSTabView will crash when the users switches between tabs. Typically you might see this if the views of your items contained contents that changed each time the user switched between tabs. If your tab items contain an unchanging set of views you will not see this problem. The crasher has been fixed (r. 2733195).

  • Bugs with keyboard loops in NSTabViews have been fixed, and they should work properly now (r. 2731276, see the AppKit release notes for details).

  • In NSTabView.h, -controlSize: has been defined to return a NSControlSize value rather than a NSControlTint value (r. 2719772).


Back to top


An NSTextField is a kind of NSControl that displays text that the user can select or edit, and which sends its action message to its target when the user presses the Return key while editing.

  • Text width is now updated correctly when an NSTextField, with wrapping turned on, is resized (r. 2623500).

  • NSSecureTextFieldCell no longer assumes the view it is given is an NSSecureTextField (r. 2524116).


Back to top


NSTextStorage is a semi-concrete subclass of NSMutableAttributedString that manages a set of client NSLayoutManagers, notifying them of any changes to its characters or attributes so that they can re-lay and redisplay the text as needed. NSTextStorage defines the fundamental storage mechanism of the Application Kit's extended text-handling system.

  • NSTextStorage now accesses read-only documents appropriately (r. 2700735).


Back to top


NSTextView is the front-end component of the Application Kit's text system. It displays and manipulates text laid out in an area defined by an NSTextContainer, and adds many features to those defined by its super class, NSText.

  • Dragging the last line up in an NSTextView could break auto-scrolling. This has been fixed (r. 2727187).

  • A problem where NSTextView in a drawer could not be set to the first responder more than once has been corrected (r. 2725609).

  • For NSTextViews, -shouldChangeTextInRange:replacementString: now checks to see if -isEditable is YES (r. 2704908).

  • NSTextView now draws its selection highlighting even if it is not the first responder (r. 2696367).


Back to top


NSToolbar and NSToolbarItem provide the mechanism for a titled window to display a tool bar area (similar to the tool bar areas displayed at the top part of the Finder's windows).

  • Adding a default set to a tool bar (which removes items not in the default set) didn't call didRemoveItem as it should have. We now properly generate a didRemoveItem notification (r. 2723008).


Back to top


NSToolTip allows applications to display context sensitive help for user interface elements on the screen.

  • Attempts to remove tool tips from a view not installed in a window would crash. This scenario is seen most often when using tab views. Consider, for instance a tab view with views A and B, each containing tool tips. If view B is being displayed, and you remove view A's tool tips your app will eventually crash. This has been fixed. (r. 2736943).

  • Memory leaks in NSTooltip have been fixed (rr. 2714923, 2713818).

  • NSTooltip has been changed so that if you return nil from -view:stringForToolTip:point:userData: no tool tip will be displayed (r. 2712566).

Back to top


NSView is an abstract class that defines the basic drawing, event-handling, and printing architecture of an application.

  • An unmatched unlockFocus message now raises an exception instead of simply logging a warning message (r. 2660151).


Back to top


An NSWindow manages an on-screen window, coordinating the display and event handling for its NSViews.

  • The representedFileName shown in the window title and window menus now hides the extension if the 'hide extension' attribute is set for the file (r. 2718156).

  • A problem where [NSWindow flushWindow] was not resulting in a context flush for a custom titled window with no shadow has been corrected (r. 2702733).

  • A problem where [NSWindow windowWillClose] was being called twice has been corrected (r. 2645726).

  • -[NSWindow setTitle:] now copies the string you pass in instead of retaining it (r. 2745031).

  • A problem where a crash could occur in [NSWindow initWithWindowRef:] has been corrected (r. 2743856).

  • A crash related to choosing a new responder while closing a window with a drawer has been fixed (r. 2686168).

  • A problem where resizing a window after calling setAspectRatio: would cause the window to shrink to (0, 0) size has been fixed (r. 2565155).


Back to top

Printing (AppKit)

This section talks about changes in the printing facilities available in AppKit.

  • A problem where the print progress panel would appear in during some operations where its presentation was not appropriate has been corrected (r. 2586862).

  • Fixed problem where drawing an NSImage from a PICT file scaled down caused horizontal white lines to appear (r. 2764934).

  • Fixed a bug where drawing a picture using QDDrawPictToCGContext could crash if the PICT contained any ColorSync profile identifiers (r. 2763840).

  • Fixed bug where Print Center complains when you try to send it a quit Apple event (r. 2742663).

  • The NSPrintInfo attributes including NSPrintJobDisposition (the NSPrintSaveJob value), NSPrintPagesPerSheet, NSPrintReversePageOrder, and NSPrintSavePath are now used by the printing system (r. 2574589).


Back to top

Keyboard UI (Cocoa)

The Cocoa Keyboard UI facility allows users to use tab, shift-tab, and various control keys (user setable; see Preferences) to navigate between user interface elements.

  • New for 10.1.


Back to top


Core Foundation is a set of APIs used as a common data and service abstraction layer for other high level software facilities in Mac OS X.

  • Two new CFTypes, CFReadStream and CFWriteStream, have been added to CoreFoundation. These types allow you to access various sources (like files or sockets) in an incremental fashion; see the CoreFoundation release notes for full details.

  • Memory leaks in the CFMessagePort apis have been corrected (r. 2447596).


Back to top


CFNetwork provides facilities for creating and processing HTTP requests; it is a new API in Mac OS X 10.1, and follows the API conventions of CoreFoundation. It is accessed from the CoreServices framework; link against CoreServices to use CFNetwork.

Back to top


String Services is an API that provides a suite of efficient string-manipulation and string-conversion routines.

  • A problem where the CFStringCompareWithOptions routine did not respect the kCFCompareCaseInsensitive when it was provided has been corrected. Now, strings are converted to lowercase before comparisons when this flag is provided (r. 2740030).

  • The CFStringUppercase API could overwrite part of the input string with other characters because it assumed that each character mapped to a single character, despite encoding - CFStringUppercase now checks the length of the string and behaves correctly with regards to unicode multi-character symbols (r. 2725743).

  • The CFStringConvertEncodingToIANACharSetName API is inconsistent in the case representation of the text it returns - The API now uppercases IANA names before passing them back (r. 2722630).

  • A problem where the CFSocketConnectToAddress routine would always fail, if a non-zero timeout was specified, has been corrected. (r. 2703634).

  • Performance of conversion between text encodings has been improved in many cases (r. 2691725).

  • A problem where the routine CFStringGetMaximumSizeForEncoding routine was failing for all Chinese encodings including kCFStringEncodingEUC_CN, causing some Unicode text searches to fail, has been corrected (r. 2689640).

  • The CFString text conversion APIs were not working correctly with the kTextEncodingMacKeyboardGlyphs encoding. Now they do (r. 2660343).


Back to top


URL Services is an API that provides facilities for creating, parsing, and dereferencing URL strings.

  • A problem preventing the routine CFURLCreateDataAndPropertiesFromResource from working correctly with http: scheme URLs has been corrected (r. 2730143).

  • A problem where CFURLCreateWithFileSystemPathRelativeToBase always sets the URL scheme to file: has been corrected (r. 2723055).

  • A problem where CFURLCopyFileSystemPath was not properly converting between ':' and '/' characters has been corrected (r. 2695891).

  • A problem where CFEqual would abort unexpectedly, if one of the URLs being compared had a NULL scheme and the other did not, has been corrected (r. 2654386).


Back to top


The Dock provides a convenient graphical interface for launching applications and organizing frequently used items.

  • New APIs, Get/SetApplicationDockTileMenu, have been added in MacApplication.h that provide a way for applications to customize the menu showing in the dock when their dock tile is clicked (r. 2670233).

Back to top

File Systems

This section discusses changes and improvements in the file systems installed with Mac OS X 10.1.

AFP Server

Implements an AFP (AppleTalk Filing Protocol) over TCP server that allows AppleShare clients to connect and access files.

  • Fixed support for AFP short (8.3) file names, which improves compatibility with third party Windows AFP clients (r. 2738157).

  • The AFP server now cleans up its SLP registration when the geographic location changes (r. 2699081).

  • The AFP server now updates its NBP registration when the computer name changes (r. 2712013).

  • A problem where files deleted from inside of a folder that was being deleted would be listed in the parent folder for a short time after the folder was deleted has been corrected (r. 2717288).

  • Fixed a bug that would cause the "execute" permission bit to be dropped from applications copied from the server (r. 2750658).

  • Fixed a problem that prevent PBExchageFiles working properly on the server (r. 2762796).

  • Worked around a problem which caused desktop database calls to AFP volumes sourced by a server on the same machine to deadlock (r. 2769634).

Back to top

AppleShare Client

AppleShare Client file sharing services for computers networked with AFP file servers.

  • Fixes were made to eliminate crashes, enhance performance, handle aliases correctly, not truncate files, correctly handle multi-byte characters, handle unexpected disconnected volumes more robustly, and fix Classic problems (rr. 2720633, 2727960, 2731669, 2740992, 2752604, 2753767, 2754011, 2758652, 2767707, 2703790).

  • Fixed an index calculation problem inside of getdirentries over AppleShare (r. 2731219).

  • A compatibility problem between Mac OS 9 and Mac OS X aliases in the AFPXVolMountInfo copied into alias records referring to remote volumes has been corrected (r. 2624962).

  • A problem where attempting to enumerate a folder with 100+ items could result in a server being unexpectedly unmounted has been corrected by setting the upper limit for the reply buffer size in the FPEnumerate packet. Now, for AFP 3.0 servers, the upper limit is not allowed to exceed the value 0x7FFF, and for AFP 2.x the reply buffer size limit is set to 8*578 bytes (r. 2739142).

  • Folder action scripts running under Mac OS X that watch for a change to an AFP server volume, such as the deletion or creation of a new file, now work as expected (r. 2733329).

  • Fixed several problems that could cause kernel panics that could occur when connected to an AFP 3.0 Server (r. 2731215).

  • A problem where a copy of an application would appear to be "in use" after being copied to a server, launched, and quit (r. 2728358).

  • The routine PBHGetFInfoSync was returning different modification dates on the same file in Classic and Mac OS X. The time values returned have been synchronized (r. 2727044).

  • To facilitate the use of custom authenticators to talk with AppleShare servers, a new directory, /Library/Filesystems/AppleShare/Authentication/, has been created for placement of custom authentication plugins (r. 2723147).

  • A problem where the PBDTGetCommentSync would fail to get the finder comment for an AppleShare server volume running under Mac OS 9 has been corrected (r. 2715707).

  • Calling PBVolumeMount again to mount a volume that has already been mounted by a different user will now return an error unless the volMountSeperateSession flag is provided (rr. 2712033, 2712025).

  • File and Folder permissions and group access rights are now preserved when copying files and folders to and from AppleShare servers. Specifically, the group access rights were not being set properly if the group is unknown at the destination system. Now, the "other" access is mapped to "group" access and "group" access is left as "unknown" access (r. 2709825).

  • If you are debugging a remote system that establishes a client connection with a server, afpfs reported hundred of lines of status information to the serial port. Afpfs no longer reports this status information to the serial port debug connection (r. 2702948).

  • Fixed a problem with the AppleShare X Client not working with Netware servers using ShareWayIP. The server would be shown as mounted under Terminal, but not with the Finder (r. 2702384).

  • Fixed a problem with using an AppleShare X Client to connect to a Windows NT server using ShareWay IP where the volume would be mounted, but none of the contents of the volume were displayed (rr. 2702382, 2702379, 2676134).

  • Problems where AFP could would hang or kernel panic the system in the following circumstances have been corrected: connecting to some third party servers (r. 2702009), enumerating items on a disk containing numerous files (r. 2704236), copying a file an relaunching the finder simultaneously (r. 2672905), and during some file copy operations from third party Linux servers (r. 2666595).

  • The AppleShare X Client now supports connections to AFP Servers over AppleTalk (r. 2691895).

  • Improved the performance of file copies (r. 2689487).

  • A problem where the file cache was not being updated correctly when a number of cached and uncached read and write calls were intermixed has been corrected (r. 2687263).

  • The AppleShare X Client now supports Windows 2000 AFP Servers (r. 2682327).

  • The performance in accessing a server folder which has a large number of files, has been improved (r. 2669253).

Back to top


The Hierarchical File System.

  • HFS Dates (modification and creation) were not being calculated correctly in Mac OS X 10.0.x. These dates are now calculated correctly (r. 2731813).

  • Performance of the FSSetForkSize has been improved for HFS formatted disks (r. 2658517).


Back to top


Mac OS Enhanced volume format, which supports file names of up to 255 Unicode characters, file sizes of up to 2^63 bytes, and more efficient use of space on large volumes.

  • A problem where permissions could be set incorrectly has been fixed (r. 2717619).

  • The HFS+ file system now correctly handles names with embedded NULL characters (r. 2690395).

  • A problem where PBSetCatInfoSync could set the modification date to the current time (rather than using the value provided in the parameter block) has been corrected (r. 2675668).

  • VFS file systems are now mountable and display in the desktop. This change included setting and respecting the auto-mount, MNT_AUTOMOUNTED, bit as well as the Finder respecting this bit (r. 2689584).

  • The first time an HFS+ volume is mounted under Mac OS X, the permissions of the root directory on the volume are set to "unknown" rather than "root/wheel" as they were set in Mac OS X 10.0.x. This allows users to delete files from the root directory on the volume which may have been installed by some other software (r. 2665905).


Back to top


Volume format used by MS-DOS and Microsoft Windows.

  • A memory access exception that could occur with 250MB MSDOS formatted USB Zip drives has been corrected (r. 2678871).

  • Problems with mounting and unmounting some MSDOS formatted volumes with unusual volume names have been corrected (r. 2699995).

Back to top


Network Filesystem, originally developed by Sun Microsystems, used in UNIX environments for sharing volumes over TCP/IP networks.

  • A number of kernel panics that could occur as a result of NFS connections have been corrected (rr. 2301130, 2686121, 2666793).

  • NFS file systems mounted via automount time-to-live causes NFS file operations to fail or hang'. Fixed a deadlock in the code that check for expired AFP mounts. Created A new version of automount (r. 2715286).

  • A problem preventing some volumes from being unmounted because of a "Device Busy" error has been corrected. This problem was only apparent in Mac OS X 10.0.3 (r. 2715295).

  • NFS URLs are now registered with NSL using the numeric IP address instead of the hostname so they will work on isolated networks that do not have access to a DNS (rr. 2674380, 2739756).

Back to top

ISO 9660

ISO-9660 is a file system plug-in that allows access to ISO-9660 format volumes (possibly with Joliet extensions). This format is commonly used for multi-platform CDs.

  • Improved compatibility with certain Kodak PhotoCDs and Kodak PictureCDs (r. 2649047, 2685812).

  • A Joliet CD will now display the Joliet volume name rather than just the ISO name (r. 2690991).

  • Fixed a bug that prevented files with composed characters from being copied off a Joliet CD (r. 2713915).

Back to top


Server Message Block, Microsoft's file sharing protocol for Windows.

  • Support for SMB is new for 10.1 (r. 2712168).

Back to top


UDF is a file system plug-in that allows access to Universal Disk Format volumes. This format is used for consumer DVD media and can also be used as a multi-platform disk format.

  • Fixed a problem with Japanese file names on a UDF volume (r. 2751107).

  • The default file type and creator for files without Mac-specific information is now '????'/'????'. This allows higher-level software to do the right thing (r. 2714426).

  • UDF now correctly supports files larger than 4GB. Previously, UDF disks with a file > 4GB in size would result in missing files in the directory listing (r. 2723679).

  • Previous limit of 31 characters for UDF volume names has been fixed (r. 2714475).

  • A problem where resolving a parent dirID to its name was not working correctly has been fixed. In some cases, this problem prevented aliases from being resolved correctly (r. 2650197).

  • Added support for reading UDF media that has a Sparing Table on it (r. 2671221).

Back to top


WebDAV stands for "Web-based Distributed Authoring and Versioning". It is a set of extensions to the HTTP protocol which allows users to collaboratively edit and manage files on remote web servers.

  • Problems including memory and vnode leaks seriously affecting heavy WebDAV usage have been corrected (r. 2724670).

  • A problem where the WebDAV client did not recognize files or directories having the same name as their parent directory has been corrected (r. 2698397).

  • Attempts to perform write operations on WebDAV read only volumes now return EROFS errors rather than EPERM errors as they did in Mac OS X 10.0.x (r. 2637743).

  • Previously when sending PROPFIND requests the type was not identified in the request as XML. Now it is (r. 2578315).

Back to top


Routines for drawing and displaying graphical information on the screen are discussed in this section.


ColorSync provides system-level color management that enables publishing software to achieve repeatable and consistent color on-screen, in print, and for electronic delivery.

  • CMGetProfileDescriptions now returns the correct results (r. 2725835).

  • Calling CMSetDefaultProfileBySpace to set a version 4.0 profile now works as expected (r. 2724082).

  • ColorSync Utility can now change the current profile for a device (r. 2709306).

  • ColorSync Utility now supports ICC 4.0 profiles (r. 2690776).

  • ColorSync now supports the ICC 4.0 profile specification (r. 2690772).

  • A problem where calling CMSetDeviceDefaultProfileID could cause problems with the CMIterateColorDevices routine (r. 2684661).

  • A problem where a dialog background would be drawn black after selecting certain ICC profiles containing Lab cluts has been corrected (r. 2666897).

  • A problem where in some cases CMGetDefaultProfileByUse would not return the correct profile has been corrected (r. 2633168).

  • ColorSync now complies with ICC clarification regarding 16bit Lab data (r. 2615101).

  • The CMDeviceInfo structure passed to the callback for CMIterateDeviceProfiles now has user and host set correctly (r. 2590873).


Back to top

Draw Sprocket

DrawSprocket provides drawing services coordinated with the display manager that are useful in game development.

  • Problems with hot key handling have been corrected in the DSpProcessEvent routine (r. 2730907).


Back to top


The Image Capture architecture provides a common API for discovering digital imaging devices and transferring images from them.

  • "Build web page" script has scripting errors. Fixed a bug in this script which would cause it to fail (2738005).

  • Disposing a property would cause the Image Capture extension to quit. Error -9906 now returned when trying to dispose a device property (2733109).

  • Wrong profile embedded into images. The profile selected in the Image Capture application preferences is now correctly embedded into downloaded images (2731774).

  • Project Builder error, "ICAApplication.h:428 rotationAngle has non-optimal alignment" when building Image Capture applications. Fixed incorrect data type in ICAApplication.h (2731547).

  • Sending the message "del1" does not work for mass storage cameras. Added support for deleting images from mass storage camera devices (2730929).

  • Fixed a bug where no error is being returned on ICADownloadFile if the object is nil (2724105).

  • Fixed a bug where calling the Image Capture APIs in a thread other than the main thread would crash in Apple Event processing (2722785).

  • Fixed a bug where the Image Capture AppleScript "Build Web Page" would error if the user set the scripts settings to not show image names (2647225).

  • Can't target Image Capture Extension for scripting. It has now been moved to /System/Library/ScriptingAdditions, which is the designated place for scriptable pieces of components (2613463).

Back to top

OpenGL / OpenGL Carbon / AGL

OpenGL is a vendor-neutral, multi-platform graphics standard with broad industry support. OpenGL APIs allow you to develop portable, interactive 2D and 3D graphics applications.

  • Improvements to display list execution when using GL_LINE_STRIP (r. 2736531).

  • A problem where calling glEnd could crash malloc debug has been fixed (rr. 2631486, 2698112).

  • A problem rendering borders on 2D textures has been fixed (r. 2663147).

  • glTexSubImage2D and glPixelStorei with GL_UNPACK_ROW_LENGTH now work when using GL_UNSIGNED_INT_8_8_8_8 pixel format with kCGLPFANoRecovery on (r. 2663528).

  • Various OpenGL improvements under Classic environment have been implemented (r. 2665539)

  • .
  • Calls to glDrawBuffer(GL_NONE) has been fixed for double-buffered contexts (r. 2679450).

  • A problem using full-screen contexts on multi-monitor macs has been fixed (r. 2688559).

  • Support for shared texture palette extension has been added (r. 2690757).

  • Some performance optimizations to Pixel Transfer, Immediate Mode, State Management, and glDrawPixels have been implemented (rr. 2690754, 2702570).

  • A problem causing Carbon applications to display the alert "<AGL.vlib missing>" has been fixed (r. 2709433).

  • Calls to glDepthMask(GL_FALSE) now work as expected (r. 2719700).

  • A problem with surface updates on windows with multiple GL/AGL contexts has been corrected (rr. 2571842, 2742836).

  • A problem where calls to aglDescribePixelFormat could return zero for supported renderers has been corrected (r. 2709183).

  • Improved performance and interoperability with the NVIDIA GeForce video card (rr. 2688069, 2746882, 2614345, 2646245, 2649681, 2669524, 2672996, 2673055, 2710243, 2710896, 2715900, 2715978, 2716708).


Back to top


This section discusses new features, bug fixes, and new APIs in the Mac OS X 10.1 printing services.

  • New features

  • Auto discovery of USB printers has been added (r. 2514274).

  • Print Center icon in the Dock is now badged to show job status (number of sheets to be printed) and errors, and its contextual menu provides access to the printer list (r. 2559380).

  • Save as PostScript file added as an output option (r. 2696351).

  • A problem where print dialog overrides were not working correctly under certain conditions has been corrected (r. 2649798).

  • A problem where switching printers in the Page Setup dialog would cause the document's paper size to change has been corrected (r. 2630468).

  • A problem where switching from US English to a European language did not change default paper size from US Letter to A4 has been corrected (r. 2707916).

  • Problems with USB bus arbitration between X and Classic during printing have been corrected (r. 2634123).

  • PAP EOF flag was not being set for last data packet of a query job in PAP connections generated by the Print Center. This has been corrected (r. 2642999).

  • Support for Quickdraw CopyBits transparent mode has been added (r. 2622042).

  • Calls CopyBits to print 1-bit images using the crcCopy transfer mode were not were not being rendered correctly when the foreground color wasn't black and/or the background color wasn't white. Now they are (r. 2622009).

  • Calls to CopyBits using the srcBic transfer mode to print images with a bit depth greater than one were not being imaged correctly. Now they are (r. 2699025).

  • Support for MM (Multiple Master) fonts has been added (r. 2571329).

  • Support for fonts with derived styles and fractional widths has been added (r. 2700792).

  • Support for 8-bit PS generation has been added (r. 2563000).

  • Support TBCP for PS over USB has been added (r. 2564057).

  • The search for PPD files has been extended to include the Classic System folder, after searching the Mac OS X System and Local domains (r. 2611301).

  • Installation of localized PPD files is now supported by organizing PPD directory tree like a Mac OS X bundle (r. 2621629).

  • PS queries now include the %!PS-Adobe-3.0 Query (r. 2642964).

  • Problems with the LW8 compatibility path failed that could occur when a Type 1 font could not be found in /System/Library/Fonts/ or the job contained only OTF fonts have been corrected (rr. 2657537, 2658079).

  • HP, Lexmark and Xerox PPD files are now bundled with Mac OS X (r. 2671153).

  • PostScript jobs did not emit PPD code for *DeviceAdjustMatrix. Now the do (r. 2706518).

  • A new API, PMSessionCreatePageFormatList, to support finder tuned control over paper sizes has been added (r. 2568970).

  • New APIs that allow callers to set the system to write finished PostScript files to Disk have been added. These APIs include PMSessionSetDestination, PMSessionGetDestinationType, PMSessionGetDestinationFormat, and PMSessionGetDestinationLocation (r. 2696352).

  • New APIs, PMSessionCreatePrinterList and PMSessionSetCurrentPrinter, have been added for accessing the system's print queues (r. 2651979).

  • PMSessionBeginDocument now returns kPMNoDefaultPrinter when there are no print queues (r. 2703817).


Back to top

Quartz 2D

Quartz 2D is a feature-rich, two-dimensional drawing engine that is accessible from all Mac OS X application environments outside of the kernel. The Quartz 2D application programming interface (API) is easy to use and gives you access to powerful features such as Bezier curves, path-based drawing, transparency, and advanced color management.

  • A problem where CGContextClip would not clip properly during some drawing operations involving mixing of alpha masks and shapes when anti-aliasing was turned off has been corrected (r. 2726562).

  • The CGPostKeyboardEvent has been updated so it no longer includes modifier keys that are being held down when it is called. Other issues related to specifying modifier keys with CGPostKeyboardEvent have been corrected as well (rr. 2717989, 2706275).

  • A new API has been added, CGColorSpaceCreateWithPlatformColorSpace, that allows CGColorSpaceRefs to be created from ColorSync profiles (r. 2715298).

  • CGPostKeyboardEvent does not work as expected. Changes made to CoreGraphics to fix this issue (r. 2706275).

  • A problem where invalid memory accesses could occur when rendering a CGImage in cases where its row stride (bytesPerRow parameter of CGImageCreate) is larger than (bitsPerPixel * width / 8) has been corrected (r. 2696962).

  • APIs for using Patterns for filling areas have been added (r. 2692348).

  • A memory leak that could occur in Carbon applications when the bit depth of the display is changed has been corrected (r. 2667929).

  • A problem that could occur when drawing zero length lines when rendering a PDF file has been corrected (r. 2662308).

  • A new API has been added, CGWindowServerCFMachPort, that returns the window server's CFMachPortRef. This value can be used by Carbon or Cocoa applications to obtain port-death notifications so they can establish when the window server is closed (r. 2643122).

  • The performance of the routines CGDisplayMoveCursorToPoint, and CGWarpMouseCursorPosition has been improved (r. 2545018).

  • A problem where setting text rendering to CGFilledClippedTextRenderingMode or CGFilledStrokedClippedTextRenderingMode and then calling CGShowText CGShowTextAtPoint could result in an invalid text clipping region has been corrected (r. 2386257).


Back to top


QuickTime provides various multimedia services for the Mac OS, including the ability to display movies and facilities for the translation and display of various audio and visual data file formats.

  • Mac OS X 10.1 ships with QuickTime 5.0.2. See the QuickTime release notes for details.


Back to top


This section discusses changes and new features for device driver writers provided in Mac OS X 10.1.

Disk Arbitration

Disk Arbitration manages disk insertion and ejection. Amongst other things, it probes newly inserted disks to determine their file system format, checks these disks for corruption, and mounts the file system on the disk.

  • Disk Arbitration will now mount removable media by default if the setting in /etc/hostconfig is lost (r. 2694226).

  • Disk Arbitration will no longer delete mount points it didn't create (r. 2710178).

  • You can now press the keyboard Eject key to inject an open CD/DVD Tray (r. 2739698).

  • Made numerous improvements in how disks are mounted and unmounted (rr. 2741930, 2741621, 2741570, 2740736, 2740326, 2738856, 2732894, 2732806, 2715924, 2731111, 2727289, 2725495, 2722929, 2722826, 2718662, 2717648, 2716305, 2714577, 2713027, 2710467, 2694976, 2694772, 2694668, 2694622, 2691584, 2691553, 2691551, 2690407, 2682158, 2681271, 2679446, 2653158, 2647679, 2586029, 2583014, 2559644, 2475229).

  • You can now send a SIGHP to the Disk Arbitration server (autodiskmount) to force it to refresh its internal state (r. 2426274).

  • Disk Arbitration now supports an option to always perform file system checks (fsck) on read-only media (r. 2685016, 2503133).

  • Disk Arbitration now identifies CD media in a DVD drive as a CD, not a DVD (r. 2507759).

  • A problem preventing users from renaming a hard disk to have more than 10 Japanese characters has been corrected (r. 2754272).

Back to top


Apple's object-oriented I/O development model. The I/O Kit provides a framework for simplified driver development, supporting many families of devices.

  • kIOMessageServiceIsAttemptingOpen general interest notifications now include the options argument passed to IOService::open (r. 2733924).

  • The performance of the IORegistryEntryCreateCFProperty routine has been improved (r. 2670274).

  • Moved the implementation of readBytes and writeBytes from IOGeneralMemoryDescriptor to IOMemoryDescriptor. As a result, subclasses of IOMemoryDescriptor no longer need to implement their own versions of readBytes and writeBytes (r. 2738315).

  • The IORegistryEntry::matchPathLocation call now properly handles 64 bit locations (r. 2718611).

  • The PCI family has been changed to be loadable. Drivers now need to explicitly declare their dependency on IOPCIFamily per IOKit documentation and release notes (r. 2699334).

  • Changes were made to make some kernel level drivers loadable thus lowering the wired memory footprint (rr. 2370069, 2370075, 2370078...).

  • A problem where IOFramebuffer::deliverFramebufferNotification always returned kIOReturnSuccess, even in cases where one of the notification handlers returned an error, has been corrected (r. 2602514).

  • Problems with recognizing video cards supporting only 24 bit color have been corrected (r. 2665190).

  • Declarations for IORegistryEntryGetLocation and IOObjectRetain have been added to IOKitLib.h (r. 2670078).

  • Additional boot time debug info is now provided to IOLog when the i/o kit debug flag is enabled (r. 2686931).

  • IOKit drivers are now able to register with the root power domain for power notifications such as shut downs and restarts (r. 2663574).

Back to top

KEXT Management

Services for loading and unloading kernel extensions.

  • The kalloc map was increased from 8MB to 16MB. The limit had been reached by large kexts such as debug versions with symbolic information (r. 2699907).

  • The performance of kernel extensions loading at boot time has been improved (rr. 2702018, 2691879).

  • Kernel extensions will no longer load if they fail the version check. On Mac OS X 10.0.x a warning was issued but the kext would load anyway (r. 2605536).

  • Most KEXTs that depend on BSD internal data structures need to be rebuilt. Also, for KEXTs to be loaded the must declare their dependency on to be 1.1: if the dependency is not set to this version they will not be loaded. For more information refer to BSD Kernel section.

Back to top

Mass Storage

Drivers for storage devices such as hard disks and CD-RW drives.

  • Problems preventing the data volume from being mounted on some multisession CDs have been corrected (r. 2678448).

  • Problems experienced by some developers with the readCD have been corrected (rr. 2730219, 2748293).

  • Fixed problem where only the first partition of certain multi-partition CD-R media would mount (r. 2720421).

  • Added support for MO drives and USB floppy drives (rr. 2768365, 2771244).

  • Added DVD playback support on selected models (r. 2546553).

Back to top

PCCard Support

Drivers for PCCard and CardBus card devices.

  • Add support for multifunction cardbus cards (rr. 2723252, 2708051).

  • A problem where PCCards were not being powered off during sleep has been corrected (r. 2616128).

Back to top

SCSI Architecture Model (SAM)

Support for devices conforming to the SCSI Architecture Model. This includes ATAPI, FireWire, and some USB storage devices.

  • IOSCSIProtocolInterface::GetUserClientExclusivityState and IOSCSIProtocolInterface::SetUserClientExclusivityState are now public virtual functions (r. 2768807).

  • Added ability to distinguish DVD-RAM support in the "DVD Features" property (r. 2720961).

  • Added kCDFeaturesCDDAStreamAccurateBit to the CDFeatures property so applications can find out if a CD drive doesn't need stitching (r. 2764753).

  • Eject key now opens CD tray on drives that don't respond properly to GET_EVENT_STATUS_NOTIFICATION commands (r. 2749692).

  • IOSCSIMultimediaCommandsDevice::readMCN and IOSCSIMultimediaCommandsDevice::readISRC now work as documented (r. 2730240).

  • A problem where the Vendor Identification string in the IORegistry was set to garbage characters for devices with a vendor identification string of all spaces has been corrected (r. 2726934).

  • A new property, SCSITaskDeviceCategory, has been added to property IOSCSIPeripheralDeviceNub. Also, new definitions for the objects IOCompactDiscServices and IODVDServices have been added to the interfaces (r. 2724405).

  • IOSCSIPeripheralDeviceNub objects now have a GUID property (r. 2724404).

  • Device Characteristics and Protocol Characteristics dictionaries have been added to the IOBlockStorageDevices definitions. This change provides a means to determine how a device is connected and what CD and DVD features the device supports. The new keys are defined in IOKit/storage/IOStorageDeviceCharacteristics.h and other related keys are defined in command set-specific headers, such as IOKit/scsi-commands/IOSCSIMultimediaCommandsDevice.h (rr. 2706348, 2706360).

  • A problem where errors of type -36 (ioErr) could be reported during file copies to FireWire hard drives as a result of a FireWire bus reset has been corrected (r. 2653050).

  • SCSI Application Layer now supports client request timeouts (r. 2648536).

  • New CD Get/SetMediaAccessSpeed APIs have been added to IOSCSIMultimediaCommandsDevice (r. 2730472).

  • Added SCSITask User Client. This allows user space code to send SCSITasks to SCSI Primary Commands compliant devices with Peripheral Device Types other than 00h, 05h, 07h, and 0Eh. Devices which have authoring capabilities, namely CD-R/W and DVD-R/W devices, can also use the SCSITask User Client to send commands to a device (r. 2599900).

Back to top


This section discusses changes and fixes present in the Java implementation provided in Mac OS X 10.1.

  • A crashing problem in was corrected (r. 2733452).

  • A problem where Locale.getDefault was always returning the value "en" as the default locale has been corrected. Locale.getDefault now returns a meaningful value (r. 2667503).

  • A problem where Java applications would fail to launch when machine date was set to before 1/1/1970 has been corrected (r. 2639678).


Abstract Windowing Toolkit (AWT) is a cross platform windowing system used in Java applications. Swing is built on top of AWT.

  • Java windows did not refresh after hiding, they now do (r. 2746001).

  • Many Drag and Drop issues have been fixed (r. 2681079).

  • FileDialog now allows resizing (r. 2528156).

  • AWT FileDialog used to ignore setDirectory(), now it does not (r. 2735612).

  • Click-to-go-here feature has been implemented for AWT scroll bars (r. 2732106).

  • Heavyweight and Lightweight components didn't mix in CardLayout, they now do (r. 2721431).

  • Placing a Frame outside the screen area caused it to appear at (0,0). This has been corrected so now it will not appear on screen (r. 2720752).

  • Setting a Frame or Dialog's setResizable false and then calling setSize() would cause a crash. This has been corrected so now it has no effect (r. 2720630).

  • Previously the property had no affect. Now it turns on anti-aliased graphics drawing (r. 2719642).

  • Previously the property had no affect, but it now turns on anti-aliased text drawing (r. 2719641).

  • Problems where invisible windows could cause crashes under certain circumstances have been corrected (rr. 2719588, 2719589).

  • A problem where repeatedly showing or moving a JDialog could cause a crash has been fixed (r. 2719492).

  • A problem where JDialog did not disable menus properly has been corrected (r. 2712885).

  • The Print progress dialog was not properly re-enabling menus after being dismissed. Now it does (r. 2712865).

  • A problem where Window bounds were not being updated after moving a window has been corrected (r. 2709420).

  • The Frame Peer used to throw an exception when the Frame got focus while adding menus, but it no longer does (r. 2709311).

  • List navigation using the arrow keys moves the selection to the next item, in Mac OS X 10.0.x it moved the selection 2 cells away (r. 2703456).

  • FileDialog returned a mangled name for files that have 8-bit characters in there name, now it returns a proper UTF8 name (r. 2699436).

  • Under some circumstances Modal Dialogs and JDialogs could freeze an application, but they now behave correctly (r. 2698180).

  • Invoking the translate method on a Graphics object created from a printer context didn't work correctly, but now it does (rr. 2697592, 2698221).

  • Mac OS X Java Frames that were not supposed to be resizeable could still be maximized, but now they can not (r. 2696978).

  • DropTargetDragEvent method getLocation() used to return wrong position (local not global), but now it returns a global position (r. 2696171).

  • Disabled menu's could become enabled when the menu is clicked on, now they stay disabled (r. 2696151).

  • Cursorshape was not being updated after window deactivate/reactivate. Now it is updated (r. 2689283).

  • The JToolBar window did not dock/undock properly (it drew behind other windows), but now it behaves correctly (r. 2669608).

  • Disabled menu items with accelerators caused hangs in 10.0. Now they behave correctly (r. 2659749).

  • A Java Application could not receive Apple events unless it made a call to CPSRegisterWithServer(carbon flavor) before loading AWT lib. In 10.1 this is no longer necessary (r. 2658960).

  • The Toolkit Peer's color setting code wasn't set thread safe in Mac OS X 10.0.x. Now it is (r. 2651909).

  • MRJApplicationUtils.registerQuitHandler would throw a NullPointerException if called before AWT was loaded. Now it does not (r. 2651622).

  • Java apps sometimes crashed when attempting to access disposed windows. They no longer do (r. 2644062).

  • With a default FileDialog, the user could not select a .app application. Now they can (r. 2614649).

  • A hang that could occur on Quit has been corrected (r. 2614602).

  • Labels did not change size to reflect updated string length, but they now do (r. 2583125).

  • List peer deselect in single-select mode didn't check if the index was valid, but now it does (r. 2539318).

  • Passing focus to a window that was being disposed could cause a null pointer exception. Now it will not (r. 2516328).

Back to top

Bridge Technology

Java Bridge Technology allows Java classes to subclass Objective-C classes and reference Objective-C classes.

  • Objective-C calling Java sometimes would invoke the wrong method. We now do a better job at making sure the signatures match (r. 2608405).

  • Since you cannot use the == operator to compare NSSelectors an isEqual method has been added for comparisons (r. 2252809).

  • The FoundationJava initialization routines were not being called by the Java/ObjC bridge, so morphing was not being setup properly for any of the morphed objects (NSDecimalNumber, for example). Now the bridge explicitly loads dependent libraries (r. 2308011).

  • Asking an NS object for its URL would throw an exception if the URL was NULL. Rather than throwing an exception, it now returns NULL (r. 2665340).

Back to top


Java Embedding is a framework that allows Java Applets to be embeded inside of Carbon applications.

  • A problem where embedded applets without focus could intercept user input events has been fixed (r. 2511098).

  • Various reliability improvements for Java embedding have been implemented (rr. 2519898, 2600213, 2638472, 2651426, 2679378, 2689641, 2693347, 2697511, 2697518, 2697524, 2697518, 2708134, 2704924, 2709852, 2711898, 2720805, 2723293, 2743619).

  • Support for showDocument() and showStatus() have been added for use by web browsers (r. 2545471).

  • Libraries pertaining to Java embedding now reside in their own Framework (rr. 2703482, 2578808, 2733977).

  • A problem where Internet Explorer gave incorrect coordinates for positioning Java applet controls has been fixed (r. 2580608).

  • HTTP authenticator support has been added for embedded applets (rr. 2629138, 2693417).

  • A problem where Internet Explorer called applet.stop() when an applet's host window lost focus, causing flickering, has been fixed (rr. 2670878, 2670962).

  • Embedded applets are now clipped properly when resized or moved (r. 2671085).

  • Embedding calls can now be made from multiple threads (r. 2674470).

  • Applet parameters are now read from Internet Explorer (r. 2674474).

  • A problem where boxes intermittently appeared between text typed in applet TextField's has been fixed (r. 2674504).

  • A problem where the first mouseReleased event in an applet could go to the wrong component has been fixed (r. 2692363).

  • A problem where returning to a page with a Java applet could crash Internet Explorer has been fixed (r. 2693344).

  • A problem where applets output could overwrite the toolbar in Internet Explorer has been fixed (r. 2701402).

  • A problem where applets in Internet Explorer with focus were not recognizing key events has been fixed (r. 2713719).

  • A problem where the graphics port could change when making embedding calls from a browser has been fixed (r. 2721668).

  • Deadlocking problems when scrolling windows with embedded applets have been fixed (rr. 2734901, 2734904).

  • A problem where null applet URLs could cause a crash has been fixed (r. 2741437).

Back to top


Changes to Java's graphics implementation that are relevant to developers are discussed in this section.

  • Various improvements to XOR drawing mode have been implemented (r. 2499676, 2636026, 2643300, 2684230, 2684233, 2699353, 2702077).

  • Various improvements in Java, Java2D drawing performance have been implemented (rr. 2539624, 2597968, 2650703, 2658375, 2671016, 2671028, 2671074, 2686338, 2704952, 2713795, 2713875, 2727227).

  • Various improvements in GUI component drawing have been implemented (rr. 2627491, 2693950, 2724572).

  • Various improvements in Java2D printing have been implemented (rr. 2561648, 2603766).

  • A problem preventing TogetherJ from running on Mac OS X has been fixed (r. 2680016).

  • A problem that could crash Applet Launcher under certain locales has been fixed (r. 2703835).

  • BufferedImages with byte DataBuffers are now supported (rr. 2669214, 2681035).

  • Fixed a bug where drawRect()'s line thickness inconsistent (r. 2752733).

  • Fixed a bug where XOR mode drawing doesn't work when a JComponent is inside a JScrollPane (r. 2724599).

  • Fixed a bug where images with an alpha channel were not anti-aliased properly (r. 2719498).

  • Changed drawImage to handle the case with dst flipped over the y-axis (r. 2717089).

  • Fixed bug where XOR drawing did not render correctly for some color combinations when drawing in thousands-of-colors mode (r. 2657050).

Back to top


HotSpot the Java virtual Machine used in Mac OS X.

  • The JNI function AttachCurrentThread was modified to allow previously created pthreads to be attached as daemon threads (r. 2717431).

  • A problem where a SIGTRAP exception could occur while using JVMPI instruction tracing has been corrected (r. 2716155).

  • A problem that could result in an exception being thrown when element 32768 of an array was accessed has been corrected (r. 2699669).

  • Spurious ArrayOutOfBoundsException and NullPointerException exception that could occur for valid objects have been corrected (r. 2681318).

  • A problem where repeated JVMPI suspend/resume operations on threads could cause them to get stuck in calls to wait() has been corrected (r. 2677945).

Back to top


Platform Independent GUI APIs for Java.

  • A problem where Drag & Drop could throw spurious exceptions has been fixed (r. 2690650).

  • When dragging from lightweight components, e.g. JTextField, the drag rectangle used to be positioned outside the window with varying offsets. Now it is positioned correctly (r. 2688201).

  • Mouse right-button clicks now work as expected (r. 2669617).

  • Large TooTips would just appear then disappear, they now stay around as expected (r. 2611120).

  • Selecting a PopupMenu item in an applet resulted in "VToolkit.postEvent: Unknown AppContext for Deferred". It is now fixed (r. 2557368).

  • Java did not allow switching keyboard script with command - space, it now does (rr. 2682687, 2667295, 2699301).

  • Swing Applets used to cause SecurityManager exceptions accessing internal properties, this no longer occurs (r. 2620186).

  • FileDialog can't choose an application under Mac OS X 10.0.x, but it now can (r. 2546407).

  • FileDialog didn't remember where it's been; and it always reset to root of drive. It now remembers the last location used (r. 2693988).

  • Problems rendering popup menus on JComboBox components when using dual monitors have been fixed (r. 2754051).

  • A problem where non-focused JTextFields could receive keystrokes has been fixed (r. 2721748).

  • A problem where JComboBox components could be sized incorrectly has been fixed (r. 2681582).

  • Composite JButton components now render and function properly when placed inside a GridBagLayout (r. 2679273).

  • A problem where JMenuItems relocated to the Mac OS screen menu bar stop firing mouseEntered/Exited events has been fixed (r. 2679250).

  • Problems with cut-off event handling for JWindow and JDialog-based components have been fixed (r. 2677522).

  • Fixed a bug where JTabbedPane's tab heights were drawn too small for Web Objects Java clients (r. 2738236).

  • Fixed bug in KeyStroke.getKeyStroke() and JMenuItem.setAccelerator (r. 2737102).

  • JScrollbars now work as expected (r. 2733748).

  • setEditable in JTextComponent doesn't work as expected. Fixed problem with selected text (r. 2733214).

  • JMenu can now hide the menu bar by setting the visible property (r. 2717182).

  • JInternalFrame.isPalette used to be the way to get palette style frames, now it's depricated in favor of JInternalFrame.frameType - normal, palette or optionDialog (r. 2716333).

  • JToolbar setMargin() now works as expected (r. 2709181).

  • Fixed bug where a zero-length string cannot be added to a JComboBox (r. 2708272).

  • A problem where text was being cut off instead of being displayed below the JProgressBar in calls to the setString method of JProgressBar has been corrected (r. 2700364).

  • The UIManager.getLookAndFeel().getID method now reports a standard ID code (r. 2694545).

  • A problem where JFileChooser was not passing directories to FileFilters has been corrected (r. 2689158).

Back to top


Back to top


The complete Mac OS X core operating system environment that includes Mach, BSD, the I/O Kit, file systems, and networking components.

BSD Kernel

BSD (Berkeley Software Distribution), Formerly known as the Berkeley version of UNIX, BSD is now simply called the BSD operating system. The BSD portion of the Mac OS X kernel is based on FreeBSD, a version of BSD.

  • Problems with the "%q" format designator in scanf have been fixed (r.1685258).

  • /dev/random is now implemented. It uses the Yarrow algorithm and is seeded automatically by the system. /dev/urandom is also implemented for compatibility with Linux/BSD (rr. 2288835, 2705720).

    NOTE: the man page for random that shipped with Mac OS X 10.1 was not updated in time to describe these features.

  • The issetugid system call was added (r. 2720059).

  • Cases where creating hard links to nonexistent or fifo files would panic the kernel have been corrected to report an error as "operation not supported" (r. 2668770).


In order to fix some serious and fundamental problems with select(2) on dual processor systems, it is necessary to introduce a binary incompatibility in a few KEXTs for Mac OS X 10.1. Only KEXTs that depend on BSD internal data structures are affected. Most just would need rebuild with the latest Mac OS X 10.1 header files. There is no impact on user level binaries at all.

The changes in the kernel that affect compatibility are:

  1. selinfo data structure has changed. It now includes wait_queue and a flag and all other previous fields are removed. This data structure is part of struct tty and struct sockbuf.

  2. fileops select function now takes an extra parameter which is a void *. This extra argument is passed to selrecord().

  3. Also the selrecord() now uses another argument which is a wait queue link to link the wait queue to its subordinate. This argument is passed to the fileop select function which in turn passes this to selrecord.

  4. Callers of sopoll from the kernel would need changes, they should refer to smb source, which has all the changes for this.

  5. Also the kext that declare dependency on should now have that dependency to be declared for version 1.1. Otherwise it will not load.

  6. Many networking data structures are padded and some macros are converted to functions to avoid breaking compatibility in future. So for this just need to rebuild the KEXT with latest Mac OS X 10.1 headers.

What the developers need to do:

  1. Most developers need to rebuild the kernel extensions with Mac OS X 10.1 or greater header files. Also declare dependency on to be 1.1.

  2. If you have calls to selrecord() in your code then please pass the extra argument you get passed in.

  3. if you are calling sopoll() in your code then refer to smb project available thru Darwin to see the changes you would need to do.

Back to top

Mach Kernel

The lowest level of the Mac OS X kernel. Mach provides such basic services and abstractions as threads, tasks, ports, IPC, scheduling, physical and virtual address space management, VM, and timers.

  • Several improvements to the virtual memory management logic have been implemented to improve stability under heavy virtual memory usage conditions (rr. 2770089, 2770089, 2682033, 2759791, 2668080).

  • New APIs have been added to mach/thread_policy.h that allow for additional control over task scheduling (r. 2729073, 2720253).

  • A number of performance improvements have been implemented that speed up boot time, real-time threads, thread management, cache flushing, and premption handling (rr. 2722814, 2709447, 2693798, 2614992, 2730178).

  • A problem where, under certain conditions, the trunc function was not returning the correct value have been corrected return incorrect value (r. 2704147).

  • The command line tools uptime and w are now more accurate (r. 2685211).

  • Process quantum calculations now use higher resolution time units than before (r. 2418966)

Back to top

Launch Services

Launch Services provides APIs applications can use for launching other applications.

  • A new finder flag, LSInfo, has been defined in Finder.h that can be used to determine if an item has a hidden file name extension (r. 2575312).

  • The LSGetApplications routine has been replaced by a new routine, _LSCopyAllApplicationURLs, that provides better error checking (r. 2499328).


Back to top


LoginWindow provides login facilities at system startup time and between user login sessions.

  • Previously if an application was killed via terminal or some other method you would sometimes get the message from loginwindow indicating that the 'application unexpectedly quit'. This problem was fixed by not reporting the error when the termination of the application is due to a kill (SIGTERM/SIGKILL) (r. 2728153).

  • In some cases logout would fail because certain applications were taking too long to shutdown rather than the logout being cancelled. This was fixed by setting logout timeout for each application to 45 seconds (rr. 2652139,2672680).

Back to top


This section discusses changes and new features in the networking services provided in Mac OS X.


AppleTalk is a built-in network protocol that supports communications over AppleTalk networks.

  • A problem where AppleTalk could corrupt data in ATP responses has been corrected (rr.2703163, 2701926).

  • A problem where the AppleTalk routine SPRegister could return an error when passed valid parameters has been corrected (r. 2746200).

  • Timeout and retry settings for PAP connections have been adjusted for better compatibility with LaserWriter printers (r. 2704409).

  • A problem where AppleTalk was demultiplexing DDP packets incorrectly has been corrected (r. 2498601).

  • Previously the number of 'interfaces' AppleTalk could accommodate simultaneously was limited to a fixed number (about 30). This was unnecessary and very limiting. This was fixed so now AppleTalk will now work with an arbitrarily large number of interfaces (r. 2655223).

Back to top


DHCP and BOOTP servers provide automated network address configuration services. This section discusses changes in Mac OS X's facilities for accessing DHCP and BOOTP servers.

  • Facilities have been provided that allow developers to ask Mac OS X to request specific DHCP options when requesting a network configuration, and to get the values of those options after the interface has been configured (r. 2684631).

  • Improved compatibility with DHCP servers that don't support DHCP INFORM (r. 2767372).

Back to top

Directory Services

Directory Services provides an abstraction layer designed to isolate clients of the Directory Services programming interface from the actual implementation of a directory system.

  • In searching for standard type user records via dsGetRecordList, using the NetInfo plug-in, the native record name types that will searched against are now first "name" and then next "realname" (r. 2690932).

  • If a custom authentication search path is configured using Directory Setup, lookupd will now consult that Directory Service search path. LDAP servers configured and added to the custom search path are then available to clients using BSD APIs such as getpwnam to access user, group, and mount information (r. 2441856).

  • Added new standard types to support integration between lookupd and Directory Services:

    • Two new standard types, kDS1AttrNFSHomeDirectory which is used for locating a NFS home directory and kDS1AttrPasswordPlus which is a password key, were added. Plug-in developers should map kDS1AttrPasswordPlus to either the crypt password if available or "********" to indicate that the plug-in requires a direct API call into dsDoDirNodeAuth (r. 2695911).

    • New standard types, kDS1AttrVFSType, kDS1AttrVFSPassNo, kDS1AttrVFSDumpFreq, kDS1AttrVFSLinkDir, kDS1AttrChange, and kDS1AttrExpire, were added to accommodate NFS mounts using Directory Service (r. 2692274).

  • Now DirectoryService always checks if the Windows Authentication Manager (tim process) is running and properly enabled before attempting to use it to set or change passwords (r. 2715067).

  • The DirectoryService API call dsGetRecordEntry now returns the proper errors when invalid buffer formats are detected (r. 2710260).

  • Any NetInfo nodes that are opened by a client call to dsOpenDirNode are now automatically placed in the registered list. This is important for search policy nodes (r. 2703669).

  • DirectoryService now supports parsing the results of dsGetRecordList, dsDoAttributeValueSearch, and dsDoAttributeValueSearchWithData entirely within the framework instead of requiring mach message traffic for each parsing API call. This change greatly improves performance when parsing large buffers with many records (r. 2649626).


Back to top

Internet Config

Internet Config provides an API to access and manage Internet-related preferences.

  • The ICLaunchURL routine now provides better handling of poorly formed URLs (rr. 2631099, 2691027).

  • Internet Config no longer has a default value for the LanguagePrefs key. This corrects a problem where the web browser's default language is always set to English (r. 2637703).

  • A problem where the ICLaunchURL routine could trigger a GURL Apple event storm when the application set as the preferred helper application does not have a GURL Apple event handler (r. 2650711).

  • Internet Config now includes a system-wide handler for the 'syso'/'gurl' Apple event. This allows scripts to access the default system GURL Apple event handler rather than go through an application's GURL handler (r. 2652051).

  • Updated a number of entries in the helper and file types database (rr. 2657695, 2701098, 2720875, 2736928, 2737450, 2751027, 2751714, 2751714).

  • Miscellaneous performance and stability improvements have been implemented (rr. 2642736, 2695396, 2734868).


Back to top

LDAP Plug-in

The LDAP plug-in provides the interface to allow Directory Services access to multiple LDAP Directory Servers.

  • Added default standard type mappings for new record and attribute types to the LDAP plug-in configuration that support lookupd. For example, mount record type was added to support NFS mounts (rr. 2738093, 2737923).

  • DirectoryService attribute searches using the LDAP plug-in with standard attribute types that mapped to multiple native types now use all of the mapped native types for the search instead of only the first native map (r. 2735224).

  • The newly added password plus attribute is now returned with calls with xxxAttributesAll (r. 2725498).

  • Previously the LDAP plug-in was incompatible with the rest of the system with regards to authentication (e.g. getpwnam). This was corrected by making the LDAP plug-in return the crypt password when available (r. 2695918).

  • Any passwords in the LDAP plug-in configuration file are now properly encrypted and the file is only readable by root (rr. 2685396, 2684378).

Back to top


PPP is a network link layer plug-in that provides access to TCP/IP networks via Point-to-Point Protocol. It supports both PPP over serial and PPP over Ethernet (PPPoE).

  • In order to be compatible with certain ISPs, PPP now supports the ability to disable modem error correction and data compression (r. 2650756).

  • The OT/PPP API implementation now supports the OPT_ALERTENABLE option (rr. 2706455, 2708164).

  • PPP now supports the Berkeley Packet Filter (BPF) so that you can use packet analysis tools (for example, tcpdump) with PPP Connections (r. 2711360). Refer to the bpf(4) manual page for more information about BPF.

  • PPP can now present dialogs in various circumstances (for example, to ask the user for a password) even when the Internet Connect application is not running (rr. 2563925, 2618282, 2642901, 2654889, 2699228, 2730051).

  • The CCL command CHRDELAY now works properly (r. 2633622).

  • The pppd command now loads the PPP kernel extension if it isn't already loaded (such as when you run pppd directly from the command line) (r. 2509083).

  • Added some new modem CCLs (rr. 2652691, 2696830, 2697851).

  • Improved compatibility with some third party PPPoE implementations (rr. 2643004, 2697540, 2711551).

  • Fixed a number of user interface problems with the PPP miniterminal (r. 2691178, 2682180).

  • To avoid potential conflicts with other system components, PPP now uses the PF_PPP protocol family to communicate between its kernel space and user space systems (r. 2692958).

  • Changes to better support PPP over alternative transport mechanisms (for example, ssh) have been implemented (r. 2720068).

  • Miscellaneous performance and stability improvements have been implemented (rr. 2649995, 2662388, 2658031, 2672347, 2686636, 2692876, 2720279).

Back to top

URL Access

The URL Access Manager provides application support for downloading data from or uploading data to a Universal Resource Locator (URL), with support for automatic decompression of compressed files.

  • Fixed a bug where calling URLDisposeReference would cause a crash on Mac OS 10.0.4 (r. 2691455).

  • Fixed a bug where URL Access wasn't working with file:/// URLs (rr. 2664474, 2568588).

  • Fixed a problem where URL Access API calls could hang on Dual Processor machines (r. 2649553).

  • Fixed a bug where URLGetURLAccessVersion was returning the wrong version number (r. 2641384).

  • Fixed a problem where trying to download data from certain secure web sites was returning error -6996 when it should not have (r. 2640163).

  • Fixed a bug where repeated FTP uploads could hang the machine (r. 2623244).

  • Fixed the problem where file downloads weren't given the proper file type and creator codes as specified by Internet Config (r. 2591369).

Back to top


Authentication, authorization, and cryptographic services on Mac OS X.


The Authorization API lets developers write code to perform system-level tasks, such as installation of files, without requiring root access or special knowledge of the access privilege model in use.

  • AuthorizationCopyInfo with NULL tag no longer crashes (r. 2665498).

  • Authorization API is now configurable via the property list file /etc/authorization (r. 2611107).

  • Authorization.framework implementation has moved to Security.framework (r. 2608545).

  • Canceling the Authorization panel could return the wrong error code errAuthorizationInternal (-60008). It now returns errAuthorizationCanceled as expected (r. 2665791).

Back to top


Cryptographic Service Providers (CSP) modules are part of the Common Data Security Architecture (CDSA). A CSP provides encryption capabilities for the system. CSP's are either hardware-based (PC add-in card, smart card, etc.), software-based, or a combination of both. A CSP typically provides data encryption and decryption, digital signatures, cryptographic hashing, key generation, random number generation, and secure persistent storage of private keys.

  • Fixed an output length error when specifying an encrypt mode with no padding (r. 2668887).

Back to top


The Keychain provides a secure repository for passwords. Developers can use the Keychain to store or retrieve sensitive data (such as passwords and PINs) when authenticating to services on the user's behalf.

  • Fixed a number of problems when displaying or editing keychain items with non-Roman names (r. 2754310, 2745966, 2636246, 2743257, 2721818, 2647584, 2641203, 2632327).

  • Keychain Access did not always update correctly when items were added to or removed from a keychain. Now it does (r. 2742442, 2745264).

  • KCMakeKCRefFromFSSpec now returns the correct error (errKCNoSuchKeychain) if a nonexisting file in an existing directory is specified (r. 2610473).

  • KCGetData now returns paramErr if a required parameter is NULL (r. 2397162).

  • The error -25300 was being returned from high level Keychain calls when no keychains existed. Now, a user interface is presented to create a keychain instead (r. 2701995).

  • Fixed a problem where user interface could be presented even after calling KCSetInteractionAllowed(false) (r. 2664401).

  • KCDeleteItem now works if the item to be deleted is in a keychain other than the default keychain (r. 2626780).

Back to top

Security Framework

The framework including CDSA and Authorization APIs.

  • Added calls to allow SSL to connect to servers with unknown root certificates (r. 2682603).

  • SecurityServer now seeds entropy to /dev/random (r. 2705720).

  • Fixed a number of memory leaks in Security.framework (r. 2618895).

Back to top


This section provides an overview of the changes and improvements provided in Apple's development tools for Mac OS X 10.1.

  • A new command line tool, uuidgen, that generates UUIDs has been added. This tool is provided as a convenience tool for developers creating plugins (rr. 2661967, 2660758).


gdb is the low level debugger for Mac OS X 10.1.

  • gdb's attach command now allows you to specify a numeric IP address: before the attach command would only accept dns host names (r. 2499453).

  • The high four bits of addresses were being stripped from addresses displayed in gdb when memory translation was turned off (kdp_trans_off = 1). This has been corrected (r. 2655351)


Back to top


gcc is the C, C++, and Objective C compiler for Mac OS X.

  • The compiler now respects the -Wno-long-double when compiling C++ code (r. 2612261).

  • Problems that could occur when declaring default arguments using extern const variables have been corrected (r. 2489427).

  • A problem that could occur when running nmedit -s symbols.exp on a dylib that could result in a non-working, non-debuggable binaries has been corrected (r. 2676317).

  • A problem where C++ inlining could conflict with exception cleanup resulting in the compiler generating incorrect code in some rare circumstances has been corrected (r. 2599278).


Back to top

Interface Builder

Interface Builder (included on the Mac OS X Developer Tools CD) is Apple's graphical editor for designing user interface components for both Carbon and Cocoa applications. Interface Builder makes creating an application's user interface easier by allowing developers to use its graphical editing environment to manage virtually every aspect of creating a well designed user interface that adheres to the Aqua user interface guidelines.

  • Fixed size drawers can now be created in Interface Builder (r. 2743883).

  • NSTextViews can now be created without visible scrollbars in Interface Builder (r. 2724292).

  • The default menu item can now be selected for controls with menus (r. 2723011).

  • The inspector for menu items in Carbon nibs now gives you more Carbon Event choices (r. 2715165).

  • You can now make connections from custom views inside of scroll views (r. 2712464).

  • You can now set the menu title for a standalone menu in a Carbon nib (r. 2708979).

  • You can now set command IDs on menu dividers in Carbon nibs (r. 2708810).

  • Interface Builder now allows arrow-only popup buttons (r. 2708010).

  • IBInspector's -isResizable method is now public (r. 2707985).

  • Interface Builder now supports the kPlainWindowClass and kAltPlainWindowClass Carbon window types (r. 2705627).

  • Interface Builder now supports the small control version of NSScroller (r. 2689920).

  • IBViewResourceDragging.h is now public. These APIs provide better support for dragging items into other items when using custom palettes (r. 2688073).

  • The small control option is now available for Carbon nibs (r. 2682534).

  • Interface Builder now sets a default menu item for menus on Carbon bevel buttons (r. 2669684).


Back to top

Objective C Runtime

Objective C programs utilize runtime symbol lookup for method calls. This section discusses changes and improvements to these facilities.

  • Performance of runtime symbol lookup has been improved and additional routines have been provided for symbol lookup. The new routines include NSAddImage, NSLookupSymbolInInmage, and NSIsSymbolNameDefinedInImage.


Back to top

Performance Tools

This section provides an overview of new features and changes provided in the performance tools provided with Mac OS X.

  • MallocDebug now permits copying backtraces and other information out of the application - - useful for pasting results into a mail message or document.

  • MallocDebug raises a diagnostic dialog when an application crashes, providing hints about what's happened and why.

  • Thread Viewer tool has been added to Mac OS X 10.1.

  • Sampler now works better when profiling CFM applications.

  • The accuracy of stack backtraces reported by Sampler, sample, and Crash Reporter has been improved.


Back to top

Project Builder

Project Builder is Apple's integrated development environment (IDE) for Mac OS X. It is designed to fully support all of the major platform initiatives of Mac OS X, such as the Carbon and Cocoa frameworks, Java, and the new application packaging mechanisms. Project Builder provides project editing, search, and navigation, file editing, project building, and debugging facilities for all types of Mac OS X software projects, including applications, tools, frameworks, libraries, plug-in bundles, and kernel extensions and device drivers. It supports the use of C, C++, Objective-C, and Java.

  • Class Browser: The Classes tab is now populated with symbols from the indexing information.

  • Integrated Documentation Viewing.

  • Extended and Improved Symbol Popup: Now uses a quick scanner instead of indexing information.

  • Indexing Improvements: Indexing is now on by default, happens during builds, and includes symbols from Java class files and class archives included in the project.

  • Optimization level setting has been simplified, a setting is available to control prebinding, two-level name spaces are now supported by the linker, Objective-C++ can now be compiled, by default targets are linked to have a single module.

  • Breakpoints are no longer displaced by file editing, startup performance has been improved, CF type and Objective-C object descriptions can now be printed.


Back to top


Apple's Mac OS X Developer Documentation Collection on the web.

Technical Note TN2025, "Mac OS X: versions 10.0.1 through 10.0.4"

Back to top


Acrobat gif

Acrobat version of this Note (120K)


Back to top

Technical Notes by Date | Number | Technology | Title
Developer Documentation | Technical Q&As | Development Kits | Sample Code

Gray line

Contact ADC |  ADC Site Map |  ADC Advanced Search
For information about Apple Products, please visit
Contact Apple | Privacy Notice
Copyright © 2002 Apple Computer, Inc. All rights reserved.