MacSurf — a real NetSurf-based browser for Mac OS 9 (CSS3, ES5 JS, native HTTPS)

For the Altivec acceleration, I remember TenFourFox once made a point of advertising that it had used it in a _lot_ of places, including some you just described as not amenable to vectorization, which makes me wonder how that was done. I don't know how relevant or useful this observation may be, but I believe its source code is still public if you want to see the details. For that matter, I think the author (Cameron Kaiser of Floodgap Systems, if memory serves) still posts here sometimes, though I don't remember his username if so (the one I thought he uses doesn't come up in autocomplete).
Fair, I oversimplified that one. The thing is you don't really vectorize the JS engine or the cascade themselves, those are too branchy, but they lean on a ton of little string and memory routines underneath and those vectorize fine. Copying memory around, scanning a buffer for a character, UTF-8 to UTF-16 conversion, lowercasing, that sort of thing. A browser hits those constantly while parsing a page, so speeding them up ends up touching basically everything, which is probably why AltiVec looked like it was everywhere in TenFourFox even though the engine itself never was.
 
I was here before "Surf better. Now with integrated AI!!!". /s

This is awesome, can't wait to see how this evolves.
 
I was here before "Surf better. Now with integrated AI!!!". /s

This is awesome, can't wait to see how this evolves.
Unfortunately after you start the app and enter the URL you want to visit it just says "That's a great idea!" And "amazing insight, that's a fun website!" And never loads :(
 
Unfortunately after you start the app and enter the URL you want to visit it just says "That's a great idea!" And "amazing insight, that's a fun website!" And never loads :(
You forgot "Sure! Here you go!" followed by the URL text you entered and "would you like me to display the results to your screen?" where any response results in a response of "Oh, my mistake. You are insightful and correct to want the resulting rendered output. Here you go!" followed by a variation on the same.
 
Bong. Yeah, all that.

I do wish it was as easy as vibecoding a simple website and I'm not saying I'm doing something impressive it just took a little more work than that.
 
IMG_20260601_220715350_HDR.jpg

Working on a PowerMac 6500 with a 400mhz G3 accelerator card. It doesn't look like everyone else's. and google gives me a white page. So far so good.
 
You have the last release? I see macintoshgarden and I did a little bit of targeting fixes on these so it should load properly for the most part.
 
CW8 miscompiles the pure integer version on PPC
How can a compiler miscompile pure integer code? Floating point should only happen when there's a floating point variable, or a floating point literal (a number with a decimal point) or a function call that takes or returns floating point variables.
 
That's great, because a few of my favorite machines I have run 8.6. Anything sub 500Mhz seems to run 9 poorly, so I avoid it.

FWIW I’ve developed a TLS proxy and web browser combo known as CherryBrowse and TLS Bomber. These focus on readability rather than trying to support modern HTML5, JavaScript and CSS.

This project is exciting as it aims to go beyond that. Also it's being developed rapidly so hopefully there's things I can learn from the code/methods used. TLS 1.3 is particularly exciting.

Three quick reflections, noting that I’m overseas right now and haven’t yet had a chance to try this browser:
  • In my experience, a 266 MHz G3 (Wallstreet/PDQ) is plenty fast for my browser and OS 9. I have 256 MB RAM and am using a CF card as the hard drive, but that’s all. IMO all G3s are capable of running OS 9 quite well.
  • Most of the speed gains I found came from optimising the “pumps” rather than raw CPU performance. Open Transport and cooperative multitasking are where the real challenges lie. A few inefficient waits or poorly handled edge cases can make a browser feel painfully slow, or even freeze the machine, long before CPU speed becomes the bottleneck.
  • Agree with OP on the usage of AI. I mostly use it to drill through old libraries and learn about how quirky OS 9 is to build for. IMO if you’re not using it for this sort of project then you’re crippling yourself (unless you’re a coding guru from the 90s with a lot of time on your hands… but that person hasn’t magically appeared yet).
 
I have tried MacSurf and it is very promising! Well done @ptricky that is an amazing effort! I have just loaded a few websites and I was impress by the current status of the CSS and images handling. That's pretty nice!

I am using a 9500 with a G3 500MHz and TLS loading time is pretty decent. The main issue I went through is scrolling. Long clicking on the scrollbar arrows only triggered a single event. It didn't loop. It was also pretty slow as well.

I have done optimizations of QuickDraw rendering on C projects and what I would suggest for a smooth scrolling experience, is to render your entire web page on an off-screen port. You can then quickly render any part of your screen from that off-screen port. When scrolling, you just shift the existing view Rect to the amount of pixels (this is very fast), then you copy the missing bits at the top or bottom out of your off-screen port. The only time you would have to reload your off-screen port is when the page is resized.

With more than 100MB of RAM used by the app by default, you have plenty of room for this behavior. You could even use those off-screen ports in your cache and display previously loaded pages in an instant.
 
Back
Top