Hacker News new | ask | show | jobs
by musicale 18 days ago
Lisa 2 was cheaper than many later Macs, but the Mac folks seemed to have little interest in convergent evolution for the platforms or in integrating Lisa features like memory protection into the Mac. The result was that Lisa died as the Macintosh XL (ex-Lisa), with a Mac compatibility environment (MacWorks, which looked terrible with the stock Lisa rectangular pixels but better with a "Screen Kit" square pixel upgrade) as a consolation prize, while Mac users had to wait until Mac OS X for memory protection. Ultimately the Lisa hardware was able to run 68K versions of Mac OS through 7.6.1 in 1997.
2 comments

Assuming the Mac folks had no interest in converging the platform in favour of the Lisa is somewhat unfair. While it sounds like some code was shared between the two platforms, the Lisa's operating system was quite different. It would have been difficult to make Lisa software operate under the Macintosh System Software. To my knowledge, there was virtually no software for the Lisa anyhow. Breaking software compatibility on the Macintosh to get the benefits of Lisa would have been a terrible business decision.

Aside from that, the MMU in the Lisa would have been a custom solution which Apple would have to support. When Motorola introduced an MMU, it was for 68020 generation machines. Apple should have been able to introduce memory protection at that point, but didn't. One of the reasons was that Apple struggled to make that next generation operating system while retaining compatibility with existing software (albeit, memory protection may have been only one of many problems). This was by no means a problem exclusive to Apple. Other platforms ran into similar issues.

Apple doesn't seem to have leveraged or combined work on (Lisa, Lisa Smalltalk, Lisa Xenix, Mac OS, A/UX, ...) as successfully as they might have. As you note, protected memory was deferred to multiple failed Mac OS successor projects (Pink/Taligent, Copland/NuKernel, etc.) Ultimately Apple gave up, acquired Steve Jobs and NeXT, and eventually successfully migrated the Mac platform to an OS with memory protection.

Since then however Apple's OS and hardware strategy has been much more coherent, with macOS, iOS, iPadOS, tvOS, watchOS etc. sharing code, and sharing SoC technology as well. Ironically this is similar to Microsoft's "Windows [NT] everywhere" strategy.

In addition to Xenix, there was apparently also a System V port for the Lisa.
That delay in shipping a memory-protected Mac was probably originally at least as much the result of upper-management politics as anything else. After Jobs left Apple Gassée cancelled Jobs’ pet project, the Big Mac which was intended to run Mac applications on a Unix base. Big Mac project leader Rich Page (and IIRC some other project members) rang Steve Jobs begging him to do something, and the rest is history.
Or fully embracing the Pascal programming model.

I think it was in one of the On the Metal interviews where one of the guests mentions MPW was a submarine project, from UNIX background engineers, to eventually replace Pascal with C++.

Well they did exactly that - rewriting the Finder in C++, etc.

But it's unfortunate that losing Pascal/Object Pascal also meant losing bounded strings and array bounds checking, even if people turned the latter off in the 1980s because they thought that the performance cost wasn't worth the reliability improvement. That was probably the wrong trade-off then (at least for most regular application code) and even more so today (especially for the vast amount of legacy C code.)

Most C++ frameworks always had ways to do bounds checking, but yeah disabling with profiling data has always been an issue.

Until governments and companies decided fixing CVEs was getting too expensive.

Then programming with straightjacket languages suddenly is the new future.

Until AI came to be, now it is a mess again.

> programming with straightjacket languages

I wish Ada had more high-quality open source compilers and libraries, since it seems easier to write than Rust.

> MPW was a submarine project, from UNIX background engineers, to eventually replace Pascal with C++.

According to Wikipedia, the first commercial C++ implementation came out in October of 1985, MPW was released in September of 1986, and MPW C was released in July of 1987.

C++ seems to have been added sometime in ~1988 (??)

Think C 4.0 (later Symantec C/C++) with (C++ like) object extensions seems to have been released for the Mac in 1989.

You missed the MacApp part for doing Mac OS development.

And the later collaboration with Metrowerks and the PowerPlant framework.

I mentioned the podcast, because Wikipedia is not the source of universal truth.

I was just trying to put the timeline together, as C++ doesn't seem to have been particularly production-ready when MPW was released (though I could imagine it had fans anyway.) Also Think C has been mentioned on HN a few times.

I looked at the intro to some of the MPW C++ documentation (before posting above, thank you internet) and I think it said that MacApp could be used via the C++ to Object Pascal bridge and that a native C++ framework would be forthcoming.

Yes, but that could be problematic given the memory constraints of that time:

https://www.folklore.org/Puzzle.html

To this day, one of my favourite word processors is WriteNow, which was ~100,000 lines of assembly.

Why is writing inline Assembly considered an advantage of C, a language extension even not part of ISO, and always used to point out issues when other languages make use of it?

Naturally there had to be a balance, until mid-90s what we consider AAA games, were mostly Assembly.

I didn't mention C.

The observation was that linking in the Pascal library was problematic when one was storing everything on a single 400KB Micro Floppy.

It was implied from my previous post, the story regarding size and the reference to Assembly.

Sorry if misunderstood.