Changes in Leopard Since 9A343 Spotlight - Performance optimizations - More powerful search queries iSync Plug-in Maker - Fixed Package format : Installer packages created with a prior version must be regenerated with this new version of iSync Plug-in Maker. - Added support for Modem Script bundles : A new pane has been added to edit the Modem Script settings of a phone. The export options now allow to export a Modem Script bundle along with an iSync Phone Plugin. (Limitation: exported Modem Script bundles are not yet supported by Leopard) Miscellaneous - Address Book enhancements for taking pictures - Safari compatibility for rich text editing - Updated Sharing Preference Pane with additional options for sharepoints and access controls. Shares are acessible through the Shared icon in the Finder Sidebar What's New (since Xcode 3.0 Developer Preview 5) Xcode When you select Help -> Xcode News a new dialog box appears. The content for this dialog box is drawn from the ADR website and shows current developer-related news and information. A check box allows you to prevent the dialog from reopening on subsequent launches. To prevent it from opening at all for Xcode 3.0: defaults write com.apple.Xcode XCSuppressSplashForBuild -array 3.0 When creating a new file or adding a file to a project, Xcode will no longer automatically add that file to a Copy Files build phase when instructed to add that file to a particular target. Instead, files must be added to Copy Files build phases using drag-drop. (Exception: When adding a file to a target which contains only a single Copy Files build phase - and no other build phases other than Shell Script build phases, i.e. the target's whole purpose is to copy files to that one location - then files added to that target will be added to the sole build phase.) This fixes a scenario in which files (such as private header files) can incorrectly end up being built into a product in an improper location. A significant problem was fixed that involved a failure to close Xcode projects when their project windows closed. The project objects would remain in memory, increasing memory usage and causing problems if the project were to be reopened. New projects created from the Xcode C++ templates have a default setting in their targets' debug configuration that activates the libstdc++ debug mode. The libstdc++ debug mode provides extensive run time error checking of the C++ library use. This does negatively impact both code size and run time and thus is not recommended for release targets. To deactivate this feature for debug targets, remove _GLIBCXX_DEBUG=1and _GLIBCXX_DEBUG_PEDANTIC=1 from the Preprocessor Macros setting in the debug target info preprocessing settings. Command-line tool to open a file in the editor: A command line tool /usr/bin/xed allows you to open existing files, create new untitled or named files, and pipe text from standard input into Xcode's editor. You can use this as your EDITOR shell variable for command-line operations on text. See man xed for details. Open Quickly: Open Quickly now will find symbols (at the point of definition) as well as files: command-shift-D and type a symbol name, and you'll go there. When searching for files, Open Quickly now correctly searches the User Header Search Paths. You can now duplicate Targets and Executables. Inspector windows will now successfully close in response to command-W. Document Management We are now taking advantage of new Cocoa default behavior and underlying support. Text documents are auto-saved so changes are not lost if Xcode crashes; this may cause interesting interactions with tools that change the backing text files on disk while they are open in Xcode. Files deleted from a project are now moved to the Trash rather than being deleted outright. When deleting items from a project, Xcode will no longer offer to delete system frameworks, libraries, headers, or any other files outside your project root. Workspace The Workspace now allows you to perform Build, Clean, and other arbitrary Actions on directories in the Workspace. You define the actions in a sheet invoked from the Workspace toolbar icons. Results of the actions are shown in standard Xcode build result windows. This allows the Workspace with its embedded (or separate) editor to be used as a development environment for makefile-based, script-language, or HTML- based projects. Automator workflows are now available in the Xcode menu; they will migrate elsewhere in the next seed. Refactoring There is a top-level Edit menu command to modernize your code to new Objective C 2.0 features. Refactoring allows you to accept or reject offered refactorings on a file-by-file basis. The Extract Function / Method transformation will have the newly generated functions return values where appropriate. Renaming: Refactoring now supports renaming typedef type identifiers. Refactorings that rename classes also now rename categories and protocols associated with those classes. Refactorings that rename files now reflect the file name changes properly in the SCM repository. A new checkbox in the Move Up refactoring allows you to move up instance variables and their accessor methods. A new "Move Down" refactoring has been added. Snapshots The Snapshot backing store is now mounted in /tmp due to restrictions on the overall path length of mount points, which caused mounting to fail for users with usernames greater than 8 characters. Snapshots are now stored in a dynamically-created sparse disk image, which by default is located in a cache in the user's home directory but which can be relocated at will. The user can add password protection to the snapshot cache as desired for data security, and mark Spotlight to not index the mounted volume. Project Find RegEx find now finds multiple matches on the same line. Project Find for Symbols is working again. Find Definition searches now supports Ends With. Debugging Arrays and STL data types visible during debugging: C arrays, NSArray types, and STL containers can now be viewed directly in the debugger Variables view and in Data Tips. The first 10 elements are shown, and buttons allow you to see the next, previous, and last 10 items. The Run Log menu item has been removed from Windows > Tools. The unified log in the Debugger now acts as a Run Log, the gdb console, and standard IO window. Text Editor Inter-word movement is improved in identifiers. Code Completion: - Now completes the most likely completion inline, like Mail, Terminal, and other applications. Accept the offered completion with Tab, or invoke the classic completion menu with Option-Escape. Keys to cycle through completions and jump to the next argument placeholder are detailed in the Edit menu. Code completion works for filenames in #include statements and build settings in .xcconfig files. - Now prefers certain case-sensitive completions more favorably, which should allow you to, for example, enter 'nsarr' and have it completed to NSArray and also have "Fl" complete to a local variable 'Floatation' rather than 'float.' - Code completion of functions with multiple parameters now adds a space after the comma separating parameter - Auto-completed text is now all drawn in gray (rather than some gray, some black, some selected, some not). This makes the behavior when cancelling a completion more intuitive. - When using 'Next Completion', the inserted text is colored as plain text, rather than gray. This should help imply that the test is in no way temporary. Additional editing operations cause the text to be colored according to your syntax coloring preferences. Syntax Coloring: - The Xcode Default color theme is much more readable than in previous versions, and there are a number of new themes. Both uncolored and syntax-colored text are placed on the Pasteboard for copy and text drag operations. - The source editor's word selection and navigation algorithms have been tied to syntax coloring, so wrapping will not break identifiers. - Comments in preprocessor macros are now colored as comments. - C syntax appearing in preprocessor macros is now colored appropriately. Indexer Objective-C 2.0 @property syntax is now scanned by the indexer, and properties are registered in the index for refactoring, navigation, modeling, and searching. Source Code Importer Common language keywords are now excluded from the Spotlight index for source files, so searching for common English words like "while" and "for" will not hit every C source file. Documentation Viewer The documentation window has a new user interface for searching, which is inspired by Mail. In place of the status view that displayed the current search criteria is a button bar that contains four groups of search options: search type (API, Book Title, Full-Text), doc set scope (All Doc Sets or Selected Doc Sets), language filter (All Languages or a user-defined set of languages), and match type (Starts With or Contains). Placing all of the search options in one control clarifies what the current search criteria is and makes it easy to change search options. Selecting a different search criterion refreshes the search results, expect when searching in Full-Text mode. In Full-Text mode, with the cursor in the search field, press return to initiate the search. The control for switching to TOC browse mode is now a toolbar item. When in TOC browse mode, the search criteria bar fades away as none of the search options apply to TOC browse mode. Documentation Sets for Xcode's Documentation Viewer are now updated via an RSS feed. Xcode's Documentation Preferences allows you to specify additional locations for Xcode to search to find and load documentation sets. The Documentation window has a new pop-up menu (in the lower left corner) that gives access to commands that act on documentation sets. It also includes a New Subscription... command to let you subscribe to documentation RSS/Atom feeds. A 'Get Documentation Set Info' command has been added to the action menu at the bottom left of the documentation window. It displays name, identifier, copyright, feed URL, and other information about the selected documentation set. Using the action menu at the bottom-left of the documentation window, you can set the frequency that documentation set subscriptions will be checked for changes. In the documentation viewer, selecting a class in the class navigator pop-up that doesn't have documentation opens the source file of that class in an editor window. Before this change, selecting a class that doesn't have documentation has no effect. Research Assistant The Research Assistant now handles all C APIs in the Unix man pages, section 3. The Research Assistant shows more complete availability information, showing the OS versions an API was available per architecture (ppc, i386, ppc64, and x86_64. In the case of deprecation, it also provides information on substitute API or technologies. The Research Assistant now shows more information on deprecation and availability for 64-bit APIs. Build System The Build Results window finally has a horizontal scrollbar for the viewing of long errors, warnings, and pathnames. Build Settings Inspector Parallel Target Builds: A checkbox in the Project Inspector allows all aggregate targets in the project to build their dependent targets in parallel when possible. This means that you can build a short command-line tool while preprocessing your header files for your main application. This is especially useful on multiprocessor machines and while using Distributed Network Builds or distcc. NOTE: Using parallel target builds may reveal implicit dependencies that have been masked by the serial building of targets. Turning on parallel target builds may result in intermittent and hard-to-reproduce build failures due to one target needing the outout of another that has not yet been built. Inspect your project carefully and ensure that each target has its Direct Dependents set correctly before enabling Parallel Target builds. Unit Testing Support 32-bit/64-bit Unit Tests: Unit Tests now run as many architectures as posible on the build machine. Unit tests on Intel will attempt to run the 32-bit PowerPC unit tests in Rosetta, and tests on 64-bit machines will run both 64-bit and 32-bit architectures. otest and CPlusTestRig are now four-way Universal executables. Source Code Management SCM comparison operations are now done in a split view editor in Xcode itself, rather than in FileMerge. CVS repositories with broken symlinks in the repository itself would cause Xcode to be unable to perform any SCM operations in the repository. The CVS errors from such broken symlinks are now being ignored. Core Data Mapping Model The Core Data Mapping Model now has a tab to connect your data model directly to SyncServices. In the Core Data Mapping Model you may now set a relationship as its own inverse. Linker There is a new static linker (ld) based on ld64. - It is used for all four architectures. - The new linker verifies all Objective-C code was compiled with the same garbage collection settings. - The new linker supports wild cards in -exported_symbols_list files. - The new linker synthesizes branch islands for final linked images (dylibs, bundles, and main executables). In those cases, the compiler option -mlong-branch (aka -mlongcall) is no longer needed. kexts are not final linked images and may still need to be compiled with - mlong-branch. - There is a new option -why_live that can be used to determine why a symbol was not dead code eliminated. - There is a new -rpath option for embedding search paths in linked images. - There is a linker option -classic_linker which forces the old linker to be used. CHUD There is an updated version of CHUD in this seed.