MacApp Release 13:
A Major Update

The tremendous effort put into the development of MacApp Release 13 has resulted in what could be considered the most significant enhancement of the MacApp framework since it was first introduced in 1985. The only previous change that perhaps comes close would be the switch from Object Pascal to C++ as the language in which MacApp was written.

The final version of MacApp Release 13 is a well-designed, modern, mature application framework that uses the most appropriate and modern programming technologies available. Here is a list of some of the major enhancements implemented in MacApp for delivery in Release 13:


"Modern" C++ Usage

"Modern" C++ usage provides many benefits to developers who use the MacApp application framework. Primarily, it allows far greater compatibility with third-party class libraries. It also takes advantage of the fact that programming skills have become more common in the industry. And further, it eases the transition to new and emerging OS technologies and to other popular operating systems.

Implementing "modern" C++ language features for Release 13 will include the following:


Modularization

The new modular version of MacApp enables developers to customize their applications, because they can have tighter control over what components of MacApp will be included in their applications. Previous versions of MacApp essentially forced the developer to use almost all of the framework, even when much of what was used was not necessary in the resulting application.

The modularization of MacApp consists of two basic activities: the removal of the TObject class, a base class from which all MacApp classes formerly descended; and the creation of a set of class suites called the Apple Class Suites, separate from MacApp, that provide a number of classes that can essentially stand on their own (that is, they can be used with or without the rest of MacApp).


Network Support Classes

One of Apple's stated objectives is to provide ubiquitous Internet and networking capabilities in its products. The implementation of network support classes in MacApp provides a solution to that objective that is easy and compelling for developers to use.

The new networking support is a provider-independent, asynchronous event and networking subsystem, complete with timers, transaction queues, state machines, and parsing, all with a scalable and simple, powerful, object-oriented API. The current release is aimed at making Internet-aware applications and will be shipped with support for TCP connections and Domain Name Resolution services, using either Open Transport or MacTCP. Future plans include high-level protocol support--such as support for FTP (File Transfer Protocol), SMTP (Simple Mail Transfer Protocol), POP (Post Office Protocol), and HTTP (Hypertext Transfer Protocol)--as well as support for other types of networking, such as AppleTalk.

The new suite of classes, called the ACS Network Suite, is one of the new Apple Class Suites.


Thread Support Classes

Built-in support for multithreaded processes is one of the MacApp features most frequently requested by developers. This new feature gives you support for cooperative and multiprocessor threading, allowing you to bring the power of the Thread Manager and multiprocessor support to your application with greater ease than ever before.

In MacApp Release 13, the thread-support features straightforward and consistent classes for creating Thread Manager threads and multiprocessor (MP) tasks, as well as an efficient, intuitive synchronization abstraction based on the monitors and conditions model.

Synchronization classes enable you to transparently synchronize between threads and MP tasks. In addition, these classes automatically handle many of the other challenging aspects of the thread and MP application programming interfaces (APIs). The basic abstractions of this suite were designed to be cross-platform and previously were implemented for the Mach microkernal. The ACS Thread Suite is one of the new Apple Class Suites, but basic support for providing time to threads is also built into MacApp, further simplifying development.


New and Improved View Classes

MacApp Release 13 adds several new view and view-related classes and improves existing view and view-related classes. The new Apple Platinum Appearance is the standard for Mac OS 8; a large number of newer Macintosh applications already attempt to follow this specification. Apple has licensed Trygve Isaacson's Gray Council classes and incorporated them into the ACS Appearance suite and MacApp Release 13. MacApp applications can seamlessly use the grayscale appearance in its standard view controls as well as in a number of new views (sliders, tab panels, and so on).

A number of core suites borrow code previously available only inside the MacApp framework and put it into a form that can now be used with any other framework. For example, the ACS Imaging Suite provides an initial subset of classes related to imaging. These include C++ abstractions for the following: short and long point and rect types, a region type, a temporary region type, an RGB color type, a graphics device iterator class, and temporary drawing environment classes. The ACS Imaging Suite defines QuickDraw-derived types but does not attempt to replace QuickDraw or any other imaging model.

Also, the ACS Files Suite provides a file and FSSpec class, along with some standard file type definitions and resource utilities. The ACS Toolbox Suite provides miscellaneous C++ abstractions for Toolbox types and APIs.


Improved Ad Lib View Editor

Apple acquired the Ad Lib view editing product early in 1997 so that we could make some major improvements in its feature set and stability. Ad Lib v2.6.4 should be released at the same time MacApp Release 13 is delivered. It provides many of the stability enhancements as well as new and improved palettes with many of the newer views.

More details on Ad Lib are available.


Debugging Aids

The new Apple Class Suites now includes TidyHeap, a tool for tracking and verifying dynamically allocated memory in C++ applications. TidyHeap started out as a quick-and-dirty way to keep track of undeleted objects in the MacApp framework and has evolved into a tool that you can easily use when writing application software in C++, regardless of what framework you're using. TidyHeap itself is a small library of C++ classes that intercept and track all allocations and deallocations that go through the "new" and "delete" global operators. It does this invisibly; you don't need to do anything but call the "new" and "delete" operators in the way you usually do.

Read the excellent MacTech article on TidyHeap for more details.


Other Fixes and Enhancements

Many bugs were fixed and numerous minor enhancements were added to MacApp and ACS. A few bugs were deferred so that this release could get out to you sooner. Review the Blemishes list to find out about the status of your favorite bug or enhancement request, and be sure to check Late breaking for any last minute problems found along with their workarounds.


Examples Galore

A number of new example applications demonstrating specific new features have been added to the A-Z folder, in addition to the venerable MacApp examples. You can review the examples and read their release notes from the examples page.


Quality Considerations

The MacApp team has thoroughly shaken out Release 13. We rely primarily on our examples and test suites for validating the product. Although we are proud that the quality of the product has clearly improved in some areas over prior releases, problems might have slipped through which our test suites fail to catch. There's nothing quite like putting a new release out into the hands of our developers for resetting our humility level.

So if you do encounter a problem please send a thorough description of the problem to us at mabugs@devtools.apple.com. Include steps to recreate and be sure to tell us the version number of MacApp.


Summary

While MacApp Release 13 will require modifications to existing MacApp applications, it goes a very long way to providing many of the new features that MacApp developers have requested. We hope you will use it and give us feedback on how it meets your needs; the best way to contact us is to send e-mail. Also, let us know what features you would like to see in future versions of MacApp.


Back to the Index



© Copyright 1997 by Apple Computer, Inc. -- Last Updated 7/31/97