PowerFox - new web browser for Leopard on PowerPC!

3lectr1c

Active Tinkerer
May 15, 2022
670
339
63
the United States
www.macdat.net
I can't believe it, but it's true! It looks like browsing the modern web on PowerPC isn't dead quite yet.


PowerFox is an FF-based browser released earlier this month with a target platform of Snow Leopard. Just a couple days ago though, they released a beta build for Leopard which runs on PowerPC G4 or G5 hardware. JIT isn't implemented (yet?) so I don't know how well it will perform compared to TFF. Since it's got a newer browser engine, it should at least be able to render websites which no longer work on TFF or InterWebPPC.

I'd love to try this out myself, but unfortunately I'm away at college until March and I didn't bring any PowerPC hardware with me. Curious to see how well it performs for y'all.
 

scj312

Tinkerer
Oct 29, 2021
80
88
18
It's a bit slow on my G5 without JIT, but it does work quite nicely!
 

phunguss

Active Tinkerer
Dec 24, 2023
576
485
63
57
Stillwater, MN
Great find! It does work slowly, but it does WORK.
Picture 1.png
 

ClassicHasClass

Tinkerer
Aug 30, 2022
424
246
43
www.floodgap.com
Because UXP's widget layer is not too different from TenFourFox's, it should be possible to port the rest of the 10.4 changes (and there are quite a few), and it should "just work" without a lot of fuss on Tiger.

The JIT is a different story. The basis would still transfer, but it would require a fair bit of additional programming, and the JavaScript compiler has advanced quite a bit since Fx45. This also doesn't include Wasm, which is inherently little-endian (there is some hacking to make asm.js look little-endian to the PowerPC in TenFourFox but not everything has an asm.js equivalent).
 
  • Like
Reactions: Jazzzny

Jazzzny

New Tinkerer
Feb 2, 2026
3
4
3
I want to ask, is there anything that needs major work for Tiger apart from widget code? I was hesitant to even attempt work on Tiger as some of your blog posts from ~10 years ago seemed to suggest major problems with a bunch of Mozilla's subsystems when building for Tiger.
 

ClassicHasClass

Tinkerer
Aug 30, 2022
424
246
43
www.floodgap.com
Good question. A large part of it was the compiler I was using, which was still gcc 4.8 (I was intentionally very conservative with the toolchain). You are using a much more advanced compiler, so you should have fewer problems.

Cursorily, if you wanted to do a Tiger build (from a Leopard toolchain), you'd need the following:

- For the front end, port the widget changes and some items in `gfx/`. If you're using Cairo all the way, which is simpler but slower, you won't need the CoreGraphics backend. You will need the font changes but I think you have most of those already.
- For the back end, port the `nspr/` changes. There are some functions that exist in 10.5 but not 10.4 and I rewrote these. You may also need some similar changes in `mfbt/` and `mozilla/` (I don't recall if UXP uses this).
- Provide `gcc` runtime libraries also built against the 10.4 SDK. People ran into problems building TenFourFox on Leopard with a `gcc` also built on Leopard, because even though the browser would be linked against the 10.4 SDK, `gcc` wasn't and its `libgcc`, `libatomic` and `libstdc++` were still linked against 10.5 -- and the browser wouldn't work. The simplest solution is to build on Tiger the whole way, though it is possible to build a cross-compiling `gcc` on Leopard and use that, and some people have done it. Alternatively, you could build just the compiler on Tiger, extract those libraries, and substitute them into the Tiger build when you package it up.
- Build against the 10.4 SDK.

I don't warrant that would be everything, and later incompatible bits may have snuck in, but getting it to 10.5 alone was most of the work. The above should get you nearly the rest of the way there.
 
  • Like
Reactions: Jazzzny

Jazzzny

New Tinkerer
Feb 2, 2026
3
4
3
Would there be any fundamental blockers if I used the 10.5 SDK? Obviously it would hide any symbol problems that arise, but I’d like to not compromise the 10.5 experience too much, as we’re able to use CoreUI and have OMTC there. Would probably be wise to get the browser off the ground using the 10.4 SDK, but after that I’d like to rely on the 10.5 SDK with minimum versioning set to 10.4 and OnLeopardOrLater in any conditional code. I’d rather not build for 10.4, 10.5, and 10.6 separately, as the PPC builds take around 2 hours each, yet I still want to keep the benefits for each target.

I guess this would probably require weakly linking CoreUI and using undefined symbol lookup at the very minimum?