Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Macintosh Programmer's Workshop
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Software development package for the Classic Mac OS}} {{Refimprove|date=October 2008}} {{Infobox Software | name = Macintosh Programmer's Workshop | logo = MPW Shell.png | screenshot =MPW Shell script.png | caption = An executable MPW Shell script | developer = [[Apple Computer]] | released = {{Start date and age|1986|09|24}} | latest_release_version = 3.6d7 | latest_release_date = | latest_preview_version = | latest_preview_date = | operating_system = [[Classic Mac OS]] | platform = | genre = [[Software development tool]] | license = closed-source freeware | website = {{webarchive |url=https://web.archive.org/web/20110514011858/http://developer.apple.com/tools/mpw-tools/ |date=May 14, 2011 |title=Official MPW website }} }} '''Macintosh Programmer's Workshop''' ('''MPW''') is a [[software]] development environment for the [[Classic Mac OS]] [[operating system]], written by [[Apple Computer]]. For [[Apple Macintosh|Macintosh]] developers, it was one of the primary tools for building applications for [[System 7|System 7.x]] and Mac OS 8.x and 9.x. Initially MPW was available for purchase as part of Apple's professional developers program, but Apple made it a free download after it was superseded by [[CodeWarrior]]. On [[Mac OS X]] it was replaced by the [[Project Builder]] [[Integrated development environment|IDE]], which eventually became [[Xcode]]. == Design == MPW provided a [[command-line interface|command line]] environment and tools, including [[68k]] and PowerPC [[Assembly language|assembler]]s as well as [[Pascal (programming language)|Pascal]], [[C (programming language)|C]] and [[C++]] [[compiler]]s. The shell environment is somewhat similar to [[Unix shell]]s in design, but is designed around the Macintosh's character set and [[graphical user interface|GUI]], replacing the usual terminal environment with a "worksheet" interface, allowing the user to select and run arbitrary sections of a shell script or to redo commands with no retyping. In addition, command line tools were commonly provided with a somewhat standardized graphical interface named Commando that provided limited access to the command line capabilities of the program. The [[debugger]]s were not integrated into MPW like most [[Integrated development environment|IDEs]] of today but the language compilers supported the symbolic debugging information file format used by the debugger. MPW supported a source-level debugger called '''SADE''' (Symbolic Application Debugging Environment). SADE was not an MPW Tool, but ran as a separate application with a user interface similar to MPW. Apple's compilers had some features that were not common on other platforms—for example, the Pascal compiler was object-oriented, while the C and C++ compilers included support for [[String_(computer_science)#Length-prefixed|length-prefixed strings]] (needed for Pascal-oriented APIs). Pascal was Apple's original preferred language for Macintosh software development,<ref name="webster198602">{{cite news | url=https://archive.org/stream/byte-magazine-1986-02/1986_02_BYTE_11-02_Text_Processing#page/n343/mode/2up | title=Programming Tool and the Atari ST | work=BYTE | date=February 1986 | accessdate=9 May 2015 | author=Webster, Bruce | pages=331}}</ref> and MPW was initially released with only Pascal support. A C compiler was released with MPW 2.0. The MPW C compiler was written under contract for Apple by [[Green Hills Software|Greenhills]], a Macintosh-variant of the Green Hills C compiler designed specially for Apple and which was similar to the version that was available for the Lisa Workshop.<ref name="MPWErrorMessages">{{cite web |last1=Lentz |first1=Robert |title=MPW C Error Messages |url=http://www.ralentz.com/old/mac/humor/mpw-c-errors.html |archive-url=https://web.archive.org/web/20150602084116/http://www.ralentz.com/old/mac/humor/mpw-c-errors.html |archive-date=June 2, 2015 |url-status=dead |date=May 15, 1994}}</ref><ref>{{cite web|url=https://www.drdobbs.com/architecture-and-design/the-macintosh-programmers-workshop/184408063|title=Dr Dobb's β The Macintosh Programmer's Workshop|date=1 January 1988|access-date=2021-02-21|author=Allen, Dan}}</ref> In addition, the original MPW C compiler was known for its casual and frequently humorous error messages ("we already did this function"),<ref name="MPWErrorMessages"/> as well as occasionally addressing users by name.<ref name="turnOffLights2014">{{cite web|url=http://lists.apple.com/archives/mpw-dev/2014/Jan/msg00007.html|title=Re: Will the last one to leave please turn off the lights?|access-date=2014-05-27|archive-url=https://web.archive.org/web/20140528010701/http://lists.apple.com/archives/mpw-dev/2014/Jan/msg00007.html|archive-date=2014-05-28|url-status=dead}}</ref> These quirks were not carried on after the PowerPC transition, when Apple replaced the originals with compilers written by Symantec. Pascal support was no longer provided by the mid-90s due to declining popularity of the language. MPW was always targeted to a professional audience and was seldom used by hobbyist developers due to the considerable price for the package; by the time it was made freeware it had long since been superseded by offerings from Symantec and [[Metrowerks]], as well as Apple's own development tools inherited from NeXT and distributed for free with OS X. It was also occasionally available as a wrapper environment for third-party compilers, a practice used by both Metrowerks and [[Absoft Fortran Compilers|Absoft]] among others. Apple has officially discontinued further development of MPW and the last version of OS X to run it is 10.4 'Tiger', the last one to support the Classic environment. Apple maintained a web site and [[Electronic mailing list|mailing lists]] that supported the software long after its discontinuation, but that site now redirects to the Xcode page. ==MPW Shell== The MPW Shell featured [[Redirection (computing)|redirection of output]] to files, as well as to windows. If a file was open, the output would go to the file and to the open window. This redirection of output required significant patching out of the file system calls so that tools need not do anything special to inherit this feature: the MPW Shell did all of the work. The MPW Shell command language was based on the Unix [[C shell|csh]] language, but was extended to support the main features of the Macintosh GUI. It had simple commands to create menus, dialogs (prompts), and new shell windows. The cursor could be controlled, and MPW scripts or tools could easily be attached to a menu item. Command key shortcuts could be specified. Window size and location could be controlled. These features were popular in commercial production environments, where complicated build and packaging processes were all controlled by elaborate scripts. The shell had some important differences from its Unix counterparts. For instance, the classic Mac OS had nothing comparable to Unix [[Fork (operating system)|fork()]], so MPW tools were effectively called as subroutines of the shell; only one could be running at any one time, and tools could not themselves run other tools. These limitations were the inspiration for the MacRelix project, a "Unix-like system" for classic Mac OS.<ref>{{cite web|url=http://www.metamage.com/text/relix/origins.html|title=MacRelix Origins}}</ref> ===Look and feel=== Functionally, a ''worksheet'' is a cross between a [[text editor]] document and an [[xterm]] window. Each worksheet window is persistently bound to a file. The user may type anything anywhere in the window, including commands, which can be executed via the keyboard's Enter key; command output appears at the insertion point. Unlike an xterm window, an MPW worksheet is always in visual editing mode and can be freely reorganized by its user. Hence a worksheet can be purely a command script or purely a text document or a mixture of the two—an integrated document describing the history, maintenance procedures and test results of a software project. The commercial [[BBEdit]] text editor retains a feature it calls "shell worksheets" on Mac OS X. The [[Emacs]] text editor provides shell buffers, a similar feature that works across platforms. ==Other tools== MPW included a version of [[make (software)|make]]. Its syntax was conceptually similar to that of Unix make, but used the [[MacRoman]] [[F with hook|long f]] character to indicate dependencies. More significantly, since the limitations of the shell precluded the make program from running tools itself, it had to work by composing a script of compile/link actions to be run, then delivering that to the shell for execution. While this was good enough most of the time, it precluded makefiles that could make on-the-fly decisions based on the results of a previous action. Although not implemented as MPW tools, the package also came with several source-level [[debugger]]s through its history; SourceBug and SADE (Symbolic Application Debugging Environment) were used on MC680x0 systems, while the Power Mac Debugger (known during development as R2Db<ref>Short for RISC 2-machine Debugger; {{Cite web| url=http://www.mactech.com/articles/develop/issue_17/Falk_Topping_final.html |title=Debugging on PowerPC |website=[[MacTech]] |first1=Dave |last1=Falkenburg |first2=Brian |last2=Topping}}</ref>) provided both local and remote debugging services for PowerPC systems, the latter by using a server program known as a "debugger nub" on the computer being debugged. ==Writing MPW tools== MPW included a set of standard C libraries sufficient for developers to build their own MPW tools. Many Unix utilities could be ported with little change. One point of difficulty was the Mac OS [[newline]] convention, which was different from Unix. Another was the [[Path (computing)|pathname separator]], ":" in Mac OS, but many Unix utilities assumed "/". Many Unix utilities also assumed pathnames would not have embedded spaces, a common practice on Macs. For a number of years, the [[GNU toolchain]] included portability support for MPW as part of [[libiberty]]. This was used to support MPW-hosted cross-compilers used by [[General Magic]] and several other developers. ==History== MPW was started in late 1985 by Rick Meyers, Jeff Parrish, and Dan Smith (now Dan Keller). It was going to be called the Macintosh Programmer's System, or MPS. (Notice that coincidentally the three last names start with MPS.) 'MPS ' has always been the [[creator signature]] of the MPW Shell as a result of this. Since MPW was to be the successor to the Lisa Workshop, they decided to rename it the Macintosh Programmer's Workshop. Before the arrival of MPW, Mac applications had to be cross-developed on a Lisa. The MPW Pascal compiler is descended from the Lisa Pascal compiler. Apple's [[Larry Tesler]] worked with [[Niklaus Wirth]] to come up with [[Object Pascal]] extensions which Ken Doyle incorporated in one of the last versions of the Lisa Pascal compiler. This enabled [[MacApp]]. Early contributors included Rick Meyers (project lead and MPW Shell command interpreter), Jeff Parrish (MPW Shell editor), Dan Smith (MPW Shell commands), Ira Ruben (assembler and many of the tools including Backup, PasMat, and more), Fred Forsman (Make, Print, SADE, and assembler macro processor), Al Hoffman (Pascal compiler) Roger Lawrence (Pascal and C compilers, including the error messages), Ken Friedenbach (linker), Johan Strandberg (Rez, DeRez, RezDet), Steve Hartwell (C libraries), and Dan Allen (MacsBug, editor). The Apple Numerics Group also contributed math libraries. MPW 1.0 was completed on September 24, 1986. A shell [[memory leak]] was fixed on October 10, 1986, and MPW 1.0.1 was born. MPW 2.0 was completed on July 20, 1987. MPW 3.0 was done November 30, 1988 and included a completely new C compiler.<ref>{{cite magazine |title=Developer Developments |journal=[[Macworld]] |date=April 1989 |volume=6 |issue=4 |page=93 |url=https://archive.org/details/MacWorld_8904_April_1989/page/n94/mode/1up |first=Lon |last=Poole}}</ref> Around the same time, the beta version of the [[C++]] compiler as well as [[MacApp]] 2.0 (for Object Pascal) were made available.<ref>{{cite magazine |title=C++ and MacApp 2.0 |journal=[[Macworld]] |date=April 1989 |volume=6 |issue=4 |page=91 |url=https://archive.org/details/MacWorld_8904_April_1989/page/n92/mode/1up |first=Lon |last=Poole}}</ref> MPW 3.1 and 3.2 came in the next few years, with MPW 3.3 released in May 1993, adding distributed tools support and incremental linking.<ref>{{cite magazine| magazine=[[MacWeek]]| date=24 May 1993| url=https://archive.org/details/MacWEEKV07N21/page/n11/mode/1up| page=12| title=MPW 3.3 release through APDA| first=Raines| last=Cohen| volume=7| issue=21}}</ref> MPW 3.4 was completed July 14, 1995, and MPW 3.5 was done December 17, 1999. MPW 3.6 was under development when work was halted in late 2001. During MPW's twilight years, Greg Branche supported MPW unofficially through the Apple MPW-dev mailing list. The list, and the lists.apple.com server that hosted it, was planned to be shut down January 17, 2014,<ref name="turnOffLights2014"/> a decision that was later reversed.<ref>{{cite web|url=http://lists.apple.com/archives/mpw-dev/2014/Jan/msg00014.html|title=Reprieve!|access-date=2014-05-27|archive-url=https://web.archive.org/web/20140214130934/http://lists.apple.com/archives/mpw-dev/2014/Jan/msg00014.html|archive-date=2014-02-14|url-status=dead}}</ref> ==Legacy== MPW can still be used to develop for [[Mac OS X]], but support is limited to [[Carbon (computing)|Carbon]] applications for [[PowerPC]]-based computers. To develop Mac OS X applications based on other technologies, one must use either [[Xcode]] or another OS X-compatible development environment. MPW also included a [[version control]] system called Projector; this has been superseded by modern [[version control systems]] and is no longer supported in Mac OS X. ==See also== *[[Jasik debugger]] *[[Comparison of computer shells]] ==References== {{reflist}} ==Further reading== *{{cite book | url = https://archive.org/details/Macintosh_Programmers_Workshop_missing_735736/mode/2up | title = Programming with Macintosh Programmer's Workshop | publisher = Bantam Books | date = November 1987 | first = Joel | last = West | isbn = 0-553-34436-6 }} *{{Cite book |title=On Macintosh Programming: Advanced Techniques |last=Allen |first=Daniel K. |publisher=Addison-Wesley |year=1989 |isbn=0-201-51737-X |edition=1st |location=Reading, MA}} Chapter six is about MPW. ==External links== *{{webarchive |url=https://web.archive.org/web/20110514011858/http://developer.apple.com/tools/mpw-tools/ |date=May 14, 2011 |title=Official MPW website }} {{Mac OS}} [[Category:Macintosh operating systems development]] [[Category:Classic Mac OS-only software made by Apple Inc.]] [[Category:C (programming language) compilers]] [[Category:Command shells]] [[Category:Classic Mac OS text editors]] [[Category:Discontinued development tools]] [[Category:Classic Mac OS programming tools]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Cite book
(
edit
)
Template:Cite magazine
(
edit
)
Template:Cite news
(
edit
)
Template:Cite web
(
edit
)
Template:Infobox Software
(
edit
)
Template:Mac OS
(
edit
)
Template:Refimprove
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)
Template:Webarchive
(
edit
)