Exploring under the hood
While it doesn’t have the cool factor of things like Automator and Spotlight, the Unix plumbing in Mac OS X has gotten just as much attention in Mac OS X 10.4, and has as many changes in store for technical users as the user-interface improvements.
Tiger and Unix
The biggest change for casual command-line users is the compatibility of Unix tools like mv and cp, (move and copy) with HFS+ structures. So, if you need to move files with resource forks, such as Excel, or Mac OS 9 applications, you can do so without needing special apps, such as MvMac or CpMac.
According to Apple, these utilities now use the same APIs as Spotlight and other HFS+-friendly applications to work correctly with forked files. This will make writing Unix shell applications for OS X 10.4 easier, since forked file corruption will be less of an issue.
For anyone building Unix applications, OS X 10.4 ships with the GCC 4.0 compiler for (Objective) C(++) programming. GCC 4.0 adds a number of cool features such as autovectorization, for better AltiVec support. If you do build your own software, you’ll want to spend some time testing with GCC 4.0, as some projects may require changes to build correctly. In my own tests, I found that I had to set the default compiler back to GCC 3.3 to get some applications to build right. If you’re using a ports package, such as Darwinports or Fink, you’ll want to contact those respective sites to see what problems may occur with GCC 4.0.
Apple has finally upgraded the permissions setup in Mac OS X Server with ACLs, or Access Control Lists. ACLs are a superset of the traditional Unix permissions and allow you more control over permissions than before. For example, with traditional Unix permissions, if you had write access to a directory, you could delete files, add files, or add folders, it was all the same.
With ACLs in Mac OS X Server 10.4, you can differentiate between adding a file, adding a folder, and deleting a file/folder, so that permission to do one is not permission to do the other. You can have more than one group in ACL permissions, so that a given directory could have multiple groups, each with different permissions. Of importance to Mac admins in Windows environments, Tiger ACLs are compatible with Windows 2000/XP/2003 ACLs, helping to eliminate a rather vexing compatibility issue.
Speaking of Windows, there have been some important fixes in the Windows compatibility parts of Mac OS X Server. You can now use NTLMv2 and Kerberos security on Windows shares, improving on the mix of older NTLM and LANMAN security in Panther. Adding Kerberos to the mix allows the Windows functionality to be tied into single-signon in Mac OS X, and makes adding Mac OS X Servers to an Active Directory Domain work as well as it should.
The Windows integration in Mac OS X Server has improved to where using Mac OS X Server to host roaming profiles—the Windows equivalent of the new mobile accounts in Mac OS X Server—for Windows users who will never touch a Mac. This can be set up far faster and easier than allowed in Panther.
Other Changes of Note
The VPN services in Tiger are essentially unchanged, although the GUI for setting up the VPN server has been tweaked a bit to simplify things.
On the developer side, the new 64-bit support in Tiger, while not universal at all levels of the OS, does allow developers to implement 64-bit support at the Unix level. But what will that mean for end users?
In a nutshell, most of the 64-bit support in Tiger is aimed at the “engine” level, not the window level. So the core system libraries, like libsystem are 64-bit, but Cocoa/Carbon libraries and frameworks are not 64-bit. This is not a bad thing per se, since the initial need for 64-bit programming will be at the lower levels.
Tiger will allow developers to implement 64-bit code in the engines of their applications, and gradually introduce it to the higher levels of applications as Apple introduces 64-bit support at the Carbon/Cocoa level.
Java is essentially unchanged in Tiger, although it is expected that Apple will update the OS to support the J2SE 5.0 JDK as soon as possible.
The developer tools have gotten some critical new features, (and a new version—Xcode is up to 2.0 in Tiger) that make enterprise development on Mac OS X far more compelling than in Panther. In addition to GCC 4.0 and autovectorization, there’s support for seeing your code in a visual manner, so you can view the structure of your code outside of the code itself. This is most evident in the new Core Data features, that allow you to visually graph your database design, and have Xcode use that graph to create the database structures for you to use, without hand-editing XML files or code.
Another new feature of Core Data is the ability to drop a database entity that you create in Xcode onto Interface Builder, and Interface Builder will use that to create a prototype UI for you. Since Apple is embedding the SQLite database engine into Tiger, between that and Core Data, database developers will be looking at the Mac in a whole new light.
[ John C. Welch is a Unix/Open Systems Administrator for Kansas City Life Insurance, a regular speaker at Macworld Expo on IT issues, a columnist for MacTech Magazine , and a contributor to Your Mac Life, and any number of Web sites, including his own. ]