Altivec Intelligence: A containerized cross-compiler for retro Mac apps

Started by jeffburg, Mar 25, 2026, 04:00 AM

Previous topic - Next topic

jeffburg

Hey folks, you may or may not remember my development saga with MathEdit for OpenStep. This is where I built an OpenStep app and then upgraded through every version of OS X until it worked on modern Apple Silicon Macs. It was quite a chore because I had to maintain an army of virtual machines to build OpenStep in every single one at a time. Every binary was different and only ran on some systems.

So for my future retro software projects, I wanted to NOT do that again. Also since then, AI has happened. So I have been working to build a cross-compile environment that can build for every version of Mac OS X and create ONE mach-o fat binary that runs on EVERY Mac. Now I haven't gotten there quite yet, currently it supports 10.4+ PPC, x86, x64, and Apple Silicon... and I will probably leave it there because supporting 10.3 and lower would be quite difficult. But its fully containerized in Docker (does not need a Mac to compile the binaries) and it uses different SDK's for each Mach-O binary slice so you have the full breadth of capabilities if you want to make an app that is smart about which features are available given the host OS.

And I built in GEMINI CLI for AI Assisted (Vibecoding) support. This makes it much easier to program old, NeXT style Objective-C that does not have ARC, Properties, Blocks, etc. I built it into the Docker container because I don't trust AI to run on my computer, so I always run it in Docker and in YOLO mode. That way it can't read any files on my computer, only the files in the Docker container. Of course the AI use is totally optional and there is a great discussion thread happening on TinkerDifferent about how we should feel about AI usage in retro tech communities. You should check it out if you are not sure how you feel about it.

But anyway, I call it Altivec Intelligence, and if you have any interest in making old Mac or iPhone apps, you should check it out. Especially if you have experience programming in say web technologies, but have never touched Objective-C... I think the AI will really be able to help you make cool apps for your retro Macs. And of course, I am always open to suggestions. I am also open to figuring out how to make a Fork of this that works on really legacy systems like building real NeXT (x86, m68k) Apps and Mac OS X 10.0-10.3.

https://github.com/jeffreybergier/AltivecIntelligence
Grab my app, MathEdit for OpenStep - https://github.com/jeffreybergier/MathEdit
Follow me on Mastodon for Retro Mac Adventures - https://jeffburg.social/@jeff

jeffburg

I almost forgot. I recorded a little demo of using this thing. The video is a little out of date... the toolchain has improved since then, but it gives you an idea of what its like to develop retro apps with real retro Macs and real retro iPhones as target devices

https://drive.google.com/file/d/1zoKvXYlIwuIURbKpKqM127y-H_g4DB7N
Grab my app, MathEdit for OpenStep - https://github.com/jeffreybergier/MathEdit
Follow me on Mastodon for Retro Mac Adventures - https://jeffburg.social/@jeff

ZombiePhysicist

Wow thats really amazing. It would be great if you get to the one-binary-to-rule-them-all place. It would simplify distribution for anyone. What an amazing contribution! Kudos!

jeffburg

Thanks yeah! I was a little disappointed I couldn't target Panther. According to the AI, Apple switched the linker in Tiger to prepare for the Objective-C 2.0 switch. I can only assume that 10.0-10.3 used the original OPENSTEP linking system, but I have not confirmed. I don't have Panther installed on any of my machines. I am only interested because it means the apps could support almost all Macs made after like 1998 which would be pretty incredible.

That said, targeting lower than Panther is putting yourself (as a developer) in a world of hurt. Jaguar and lower are missing a lot of fundamental classes in Foundation including such basics as NSError. But anyway, I digress.

Right now, my goal is to get libcurl to compile for all of the slices and link it to the apps. That's the secret sauce to enabling legacy development. If your app can do modern tls 1.2 networking, then your app can connect to the modern internet. So far, it's fully working on the iPhone builds and partially working on the Mac builds. Its curl-7.88.1 and openssl-1.1.1 so its not super modern, but it can do tls 1.2.
Grab my app, MathEdit for OpenStep - https://github.com/jeffreybergier/MathEdit
Follow me on Mastodon for Retro Mac Adventures - https://jeffburg.social/@jeff

jeffburg

libcurl is working!!! Even on PowerPC Tiger and even on iOS6 iPhone 5! Now these super universal apps are ready to do some advanced TLS 1.2+ networking!😎
Grab my app, MathEdit for OpenStep - https://github.com/jeffreybergier/MathEdit
Follow me on Mastodon for Retro Mac Adventures - https://jeffburg.social/@jeff