The experiments using the original CFront 2.1 sources to buid a working C++
compiler unfortunately failed at least for now, memory management in the old days simply worked
differently. Assignments to the this
pointer are a bit too unconventional for a modern compiler.
On the other hand, there have been a bunch of development during this year which make that effort obsolete: First, Paul Guyot picked off where I left in 2007 (again a reference to the ancient past!) and came up with a method and tools to use a modern C++ compiler to produce binaries the Apple Newton can use. This allowed him to fill a huge gap in the functionality needed to connect to the modern internet by porting mbed TLS to the Newton.
Matthias Melcher and Paul also updated Einstein, getting it to the point where either mosrun or GCC can be used easily to compile custom ROM extensions. This allowed me to implement a simple bridge to native serial ports to test … Blunt of course :) The bridge is not nicely integrated yet into Einstein, I’m waiting to Paul and Matthias to consolidate their respective changes.
Having a native way to generate binaries still leaves the NewtonScript part uncovered, traditionally this would either require a MacOS Classic capable machine, or Basilisk II. But with NEWT/0 now finally 64 bit enabled (again thanks to Paul), I was able to update tntk to allow adding native modules to a Newton package!
There hasn’t been such a flurry of activies in the Newton world for quite a while, this feels pretty amazing (and this is not even talking about the excellent WONC conference).
As I hinted a while ago, there was another yak which was shaved, very relevant to the Apple Newton: In an interesting twist of fate, my former employer Nokia got hold of Alcatel, which got hold of Lucent, which owned Bell Labs… which was the birthplace of Unix. And Unix shipped with another Bell Labs invention, C++.
So when Nokia decided to release the source of Research Unix, I dug in to see whether I could find the missing sources for CFront 2.1. And behold, this archive contains what I was missing nearly thirteen years ago!
Getting the sources to compile was another story though. It is again astonishing how little C has aged (for better or worse), and how compatible the supporting tools lex and yacc have stayed, but C++ itself has changed substantially. I initially feared that I had to bootstrap compilation with CFront 1.0, but that was not necessary, and after a couple of days, I was able to pipe C++ sources through cfront, happy to see a /* <<AT&T C++ Translator 2.1.0+ 04/01/90>> */
at the very beginning of the output :)
I have not yet started on putting everything together to actually compile a Newton C++ program into a binary, but how hard can that be ;)
The other open issue is how to distribute the compiler, even though the sources contain a statement that copyright will not be enforced for non-commercial use, it might be safest to just distibute a patch set.