返回更新列表
新发布Sep 20, 2026

macsurf v2.3

适用于经典 Mac OS 9 PowerPC 的现代网页浏览器。真正的 CSS3、ES5 JavaScript、原生 HTTPS。使用 CodeWarrior 基于 Carbon API 构建。

分享

MacSurf

现代网络,运行在 25 年前的 Mac 上。

一款面向 Carbon 时代的原生浏览器,支持 Mac OS 8.6 至 Mac OS X 10.6:真正的 CSS、现代 JavaScript,以及直接在 Mac 本机上运行的 HTTPS。无需代理,无需第二台机器。

MacSurf 2.0.5 在 Power Macintosh G3 iMac 上渲染 hackaday.com
MacSurf 2.0.5 在 Power Mac G3 iMac 上,通过原生 HTTPS 以完整桌面宽度渲染 hackaday.com


🆓 每月免费稳定版

macsurf.org 上发布的经过测试的构建版本,对所有人免费,背后有真实的硬件测试。

最新稳定版:MacSurf 2.3 "OPEN TABS"

⭐ 每周版,面向支持者

开发中的构建版本每周都会进入 Beta-Box,领先于每一个稳定版发布,并附带开发笔记。

成为支持者 →

每个项目都以源码形式保持免费。你可以自行构建,永远不需要 Beta-Box。你付费购买的是构建版本和更新节奏,而不是访问权限。

支持开发

Support on Ko-fi   Support on Patreon   Sponsor on GitHub

关注我们

Join our Discord   Follow on Bluesky

感谢我们的支持者:
Ko-Fi:Chris Marks, Rogue, Turuun, kilgeist
Patreon:Mack Chamberlain, Lucas, Joseph Mulvaney, Shlooom


[!NOTE] 2.3 "OPEN TABS" 是自 2.0 以来 MacSurf 最大的一次发布。标签页终于启用,在一个原生 Mac 窗口中拥有独立的页面、滚动、历史、渲染和 JavaScript 状态。其底层是一次重大的动态页面/生命周期重写、更大的浏览器 API 覆盖面、更多的 CSS 和图像/SVG 支持、重建的原生管理器、更强的网络与安全,以及一场由硬件驱动的长期稳定性攻坚。MacSurf 仍然是诚实的、开发中的软件;一些非常繁重的现代应用仍会暴露出布局和 API 的缺口。详情请参阅 2.3 发布说明docs/status.md

为什么会有这个项目

网络在二十年前就超出了 Classic Mac OS 的能力范围,而现代 HTTPS 在 2016 年前后彻底终结了它。今天从壁橱里翻出一台 G3 或 G4,它几乎无法访问任何一个在线网站。

MacSurf 在机器本身上解决了这个问题,没有截图代理,也没有远程终端技巧。它是一款用该平台上原生的工具构建的原生浏览器:CodeWarrior、Carbon、QuickDraw、Open Transport。它通过 macTLS 直接与现代网络进行 TLS 1.3 通信——这是一个基于 BearSSL 的协议栈,内置完整的 Mozilla CA 证书包,并编译进二进制文件;它还通过 macQJS 运行现代 JavaScript——这是 QuickJS 移植到 Mac OS 9 的版本。

据我们所知,这是第一个认真移植到 Classic Mac OS 的 NetSurf,也是第一个具备原生 CSS Grid、CSS 自定义属性和设备端现代 JavaScript 引擎的 Mac OS 9 浏览器。

真实网站,真实硬件

下面的每一张截图都是实时网站,在运行 Mac OS 9.2.2 的 Power Mac G3 上使用 MacSurf 2.0.5 截取。它们作为硬件基线保留在此;MacSurf 2.3 已经大幅超越了这些图片中展示的浏览器。

hackaday.com
hackaday.com
一个现代的、重度依赖 JavaScript 的新闻网站,以完整桌面宽度呈现。
68kmla.org forum
68kmla.org
一个完整的 XenForo 论坛:已登录、全宽、正确的文字大小。
macintoshgarden.org
macintoshgarden.org
图片密集且样式完整,通过原生 HTTPS。
Hacker News
news.ycombinator.com
Hacker News:登录页和首页,没有幽灵框。

2.3 新增内容

标签页。 一个原生 Mac 窗口现在可以承载多个独立的浏览器页面。Command-T 打开一个标签页;Command-W 关闭当前标签页。后台标签页保留自己的 JavaScript 领域、标题、URL、内容和滚动状态,而不会接管前台界面。

此版本还带来了重大的动态页面和 JavaScript 兼容性改进;更深入的 DOM 重建安全性;CSS 数学、尺寸、Grid、变量和绘制改进;原生 WebP 和更强的 SVG;重建的下载窗口;改进的偏好设置、书签和历史记录;更严格的 HTTPS/安全行为;以及大量崩溃和生命周期修复。

MacSurf 2.3 支持 Mac OS 8.6 至 Mac OS X 10.6。在 Intel Mac 上,PowerPC 构建版本在可用时通过 Rosetta 运行。

完整的 2.3 说明 →

2.0.5 新增内容

头条是 hackaday.com 以完整桌面宽度渲染(如上所示):正确的字体、文章卡片和图片各就各位。

其下包括:文本以真实设备像素测量(作者设置的 font-size 不再绘制得小 25%)、一次大规模的现代 CSS 改进(两端对齐文本、软连字符、逻辑属性、盒对齐简写、网格自动尺寸)、一个能力更强的 JavaScript 引擎(真正的 fetch/XHR、解析 Promise 链、DOM 遍历、document.cookie),以及跟踪器/广告网络拦截。完整的 2.0.5 说明 →

2.0 新增内容

Type-ahead address bar
输入即提示地址栏
输入时基于历史记录和书签提供建议。
History manager
历史记录管理器
按天分组、可搜索、可清除。一个真正的窗口。
Bookmark manager
书签管理器
保存、整理,并直接从菜单跳转。
早期截图:相同网站在之前构建版本上的表现
68kmla.org forum
68kmla.org
Macintosh Garden
macintoshgarden.org
Macintosh Repository
macintoshrepository.org
Mac Hut
machut.net
Lobsters thread about MacSurf
lobste.rs
DuckDuckGo search
DuckDuckGo
它是如何走到今天的:几个早期里程碑
JavaScript on Mac OS 9
v0.2:Mac OS 9 上的 JavaScript
第一个带 JS 的页面在设备端实时求值。
CSS Grid on Mac OS 9
CSS Grid
真正的 Grid 布局:跨列、整行主视觉、自动换行。

组成部分

组件语言用途
browser/C (C89, CW8)NetSurf 分支,带有 macos9 前端。UI 使用 Carbon,绘制使用 QuickDraw,网络使用 Open Transport,JavaScript 使用 macQJS。
macTLS
同级仓库
C (CW8)面向 OS 9 的原生 TLS 1.3(回退到 1.2):直接从 Mac 进行 HTTPS。底层为 BearSSL,内置完整的 Mozilla CA 证书包。
macQJS
同级仓库
C (CW8)QuickJS 移植到 Classic Mac OS:在 PowerPC 上运行现代 ES2023 JavaScript。

目前可用的功能

渲染与 CSS

  • 完整的 NetSurf 获取、解析、层叠、布局和 QuickDraw 绘制流水线
  • CSS 自定义属性,支持选择器/媒体作用域、特异性、继承和延迟 var() 解析
  • Flexbox 和 CSS Grid,包括更强的自动轨道尺寸、minmax()justify-self、行/列间距和拉伸行为
  • CSS 数学与尺寸:calc()min()max()clamp()、min/max/fit-content 和视口相对尺寸
  • 渐变、border-radiusbox-shadow、不透明度、变换、z-index 堆叠以及改进的背景裁剪/原点
  • PNG、GIF、JPEG、BMP、TIFF 和原生 WebP,包括动画 WebP 机制
  • 大幅增强的内联/外部 SVG:尺寸、viewBox、宽高比模式、形状、变换、填充/描边和嵌入的栅格图像
  • 可下载的网页字体,包括 WOFF2/Brotli 修复

完整的 2.3 发布说明 →

JavaScript、macQJS(QuickJS / ES2023)

  • 现代语言特性以及 ES 模块
  • fetch / XHR、Headers、Request、Response、AbortController / AbortSignal 和原生取消
  • Promise、微任务、定时器、requestAnimationFrame、持久化 localStoragesendBeacon
  • MutationObserver、ResizeObserver 和 IntersectionObserver
  • 更强的 DOM 遍历/选择器、克隆/替换、反射属性、事件和原型关系
  • Canvas 2D 兼容层,支持原生字体 measureText()
  • crypto.getRandomValues()randomUUID()

网络与安全

  • HTTP/1.1:分块传输、keep-alive、重定向、连接池、缓存重新验证和 gzip 响应
  • 通过 macTLS 实现 HTTPS:TLS 1.3 并回退到 TLS 1.2,以及 Mozilla CA 证书包
  • 证书拒绝时安全失败;脚本发起的 HTTPS 请求无法静默降级为 HTTP
  • 持久化 cookie/登录、更严格的 referrer 处理和跟踪器拦截

浏览器界面

  • 标签页浏览,具有独立的页面、历史、滚动、渲染和 JavaScript 状态
  • 地址栏、后退 / 前进 / 重新加载 / 主页和输入即提示建议
  • 重建的下载窗口,具有进度、速度、预计剩余时间、取消、打开和在 Finder 中显示
  • 原生偏好设置、书签和历史记录管理器
  • 文本输入、选择、剪贴板命令、键盘导航和原生表单控件

支持的系统

MacSurf 2.3 支持 Mac OS 8.6 至 Mac OS X 10.6 Snow Leopard

  • PowerPC Mac 直接运行 MacSurf。
  • Intel Mac 在可用时可以通过 Rosetta 运行 PowerPC 构建版本。
  • Mac OS 9 仍然是主要目标,也是在原始硬件上测试最深入的环境。
  • 推荐内存:最低 128 MB推荐 256 MB最重的 JavaScript 网站需要 384 MB

稳定性与诊断

2.3 的很大一部分工作是你本不该注意到的:更强的页面/运行时所有权、更安全的 DOM 重建、受保护的延迟回调、缓存/内容生命周期修复、重新转换时的图像复用、TLS 边界检查以及标签页隔离。

MacSurf 现在还拥有一个深入得多的内置诊断系统,用于关联导航、文档、框架、网络请求、JavaScript 任务、定时器、变更、XHR/fetch、Promise 拒绝、布局、绘制和兼容性缺口。最终的 Tiger 多标签页压力测试完成了 20/20 轮循环,零崩溃、零挂起,随后在 Mac OS 9.2.2 硬件上进行了测试。

下载

MacSurf 2.3 "OPEN TABS"(2026-09-19)。查看完整的 2.3 发布说明 →了解变更内容。

  • 下载 MacSurf →:用 StuffIt Expander 解压并双击。MacSurf 支持 Mac OS 8.6 至 Mac OS X 10.6;在 Intel Mac 上,PowerPC 构建版本在可用时通过 Rosetta 运行。无需安装程序。
  • 已经在 Mac OS 9 机器上?从纯 HTTP 的 macsurf.org 获取,因为 GitHub 目前还无法在设备端渲染。
  • 所有版本 →

想要版本之间的构建?每周的开发中构建会进入 Beta-Box,面向支持者,领先于每一个稳定版发布。

构建

MacSurf 在 Mac OS 9 上使用 CodeWarrior 8 Pro(8.3 更新)构建。源代码对 Retro68 PowerPC GCC 交叉编译无警告,我们用它来进行 Linux 端的快速语法检查。


原生 HTTPS 通过 macTLS · JavaScript 通过 macQJS · 基于 NetSurf 构建 · 介绍视频


献给 Gary 和 Kaija

分类