
클래식 Mac OS 9 PowerPC용 현대적 웹 브라우저. 실제 CSS3, ES5 JavaScript, 네이티브 HTTPS. Carbon API에서 CodeWarrior로 제작됨.
25년 된 Mac에서 만나는 현대 웹.
MacSurf는 Classic Mac OS 9 PowerPC용 웹 브라우저입니다. CSS3, ES5 JavaScript, 알파 채널 PNG — G3 iMac에서 실행됩니다.
MacSurf는 전업(풀타임) 프로젝트입니다. 이 프로젝트가 당신의 올드 Mac을 다시 웹에 연결해 주었다면, 모든 도움이 개발을 계속하는 데 큰 힘이 됩니다. Patreon에서 개발 로그와 함께 진행 상황을 팔로우해 주세요.[!NOTE] 초기 알파 버전 — 233MHz G3에서 네이티브로 실행·렌더링·TLS 1.3 통신이 가능하지만, 아직 대부분의 현대 웹사이트는 작동하지 않습니다. 직접 제작한 페이지, 레트로 스타일 사이트, PowerPC에서 ES5 JavaScript가 돌아가는 묘한 짜릿함을 기대하세요. 임의의 현대 사이트에서의 부드러운 브라우징, 동영상, React 계열을 기대하지 마세요.
Power Mac G3 또는 G4가 주변에 있다면 올려서 무엇이 깨지는지 확인해 보세요 — 버그 리포트와 실제 하드웨어 스크린샷이 바로 이 프로젝트가 필요로 하는 것입니다. 현재 작업 목록은 docs/status.md를 참조하세요.
웹은 20년 전에 이미 Classic Mac OS를 앞질렀습니다. 현대 HTTPS는 2016년경에 그걸 완전히 끝장냈습니다. 오늘 옷장에서 G3나 G4를 꺼내면 살아있는 웹사이트 하나에 겨우 접속할 수 있을까 말까입니다.
MacSurf는 그 문제를 기기 자체에서 해결하려는 시도입니다 — 스크린샷 프록시도, 원격 터미널 트릭도 없습니다. 플랫폼에 이미 있던 도구들로 만든 네이티브 브라우저: CodeWarrior, Carbon, QuickDraw, Open Transport. 실제 CSS3 레이아웃과 실제 JavaScript가 1999년 iMac의 64MB 메모리 한계 안에서 실행됩니다. 2026년 5월 말부터 macTLS를 통해 현대 웹과 직접 TLS 1.2로 통신합니다. macTLS는 BearSSL 기반 스택으로, 브라우저 바이너리 안에 Mozilla CA 번들의 121개 신뢰 앵커와 함께 내장되어 있습니다. 더 이상 프록시가 필요 없습니다.
우리가 아는 한, 이것은 Classic Mac OS로의 최초의 진지한 NetSurf 포트이며, 네이티브 CSS Grid, CSS 사용자 정의 속성(custom properties), ES5 JavaScript를 탑재한 Mac OS 9용 최초의 브라우저입니다.
각 스크린샷은 Mac OS 9를 실행하는 Power Macintosh G3에서 캡처한 실제 이정표입니다. 수정 번호 주석은 이 저장소의 커밋 기록과 일치합니다.
최신 버전은 MacSurf 1.68 — "macQJS" (2026-07-07)입니다: JavaScript 엔진이 교체되었습니다 — Duktape(ES5) → macQJS(QuickJS, ES2023), 이제 현대 JavaScript가 Mac OS 9에서 네이티브로 실행됩니다. 그 외에도 작동하는 텍스트 입력(캐럿 / 선택 / Tab), 유지되는 로그인, 북마크 메뉴 + 다운로드 관리자, 분할 스크롤바 렌더링 수정, 다운로드 가능한 웹 폰트 아이콘 글리프, 그리고 대대적인 성능 개선(거의 즉각적인 시작, 이미지/폰트 디스크 캐시, 뷰포트 지연(lazy) 이미지 로딩)이 포함됩니다. 이 주기를 이끈 커뮤니티 **68kmla.org**를 기리기 위해 이름을 붙였습니다. 전체 노트: release-notes/MacSurf-1.68.md.
이전 버전 MacSurf v1.4 — Open House (2026-06-01): JavaScript 마라톤 종료. 23개의 JS 브리지 이슈가 한 번의 릴리스에서 열림(open)에서 닫힘(closed)으로 전환되었습니다 — setTimeout / setInterval / requestAnimationFrame, window.location, window.history, URL, URLSearchParams, classList, style, Event 생성자, MutationObserver, DOMParser, FormData, localStorage, , / 이벤트, 그리고 / 토글까지. 새로운 프로브 스위트는 G3 iMac에서 를 기록했습니다. 진단 페이지도 살아 있습니다: , , , 모두 실제 카운터를 렌더링합니다. View Source는 인라인으로 렌더링되고, 페이지 내 찾기(Find-in-page)는 실제 Carbon 대화상자를 엽니다. 이전 버전 는 멀티커브 TLS 1.3을 탑재했고, 는 Classic Mac OS 최초의 네이티브 TLS 1.3이었으며, 는 엔트로피 구멍을 막았고, 는 크롬 재설계 릴리스였으며, 는 콜드 로드 속도 개선(mactrove.com 30+s → ~2-3s)이었습니다. 첫 번째 번호가 붙은 알파는 입니다.
browser/netsurf/frontends/macos9/MacSurf.mcp를 열고 Build를 선택하세요. v1.3.1 워크스페이스에서 v1.4를 빌드하는 경우 프로젝트에 하나의 새 소스 파일을 추가해야 합니다: browser/netsurf/desktop/search.c (새 Find 대화상자용 browser_window_search를 제공하며 content/textsearch.c는 이미 포함되어 있습니다). macTLS는 v1.3.1과 동일합니다. v1.2 워크스페이스에서 v1.3을 빌드하는 경우 TLS 1.3용 macTLS 파일 4개를 추가해야 합니다: bearssl/src/ec/ec_c25519_m15.c, os9/ostls_tls13_keysched.c, os9/ostls_tls13_record.c, os9/ostls_tls13_handshake.c. 1.0 워크스페이스에서 v1.2를 빌드하는 경우 desktop/download.c가 필요합니다. 가장 초기 릴리스에는 CW8 프로젝트가 미리 연결된 BuildPack.sit 스냅샷이 포함되어 있지만, 현재 빌드는 새 클론에서 바로 작동합니다.컨텍스트가 필요하다면 이전 알파 노트: docs/release-notes/MacSurf-0.1a1.md.
브라우저 빌드MacSurf는 CodeWarrior 8 Pro(8.3 업데이트)로 Mac OS 9에서 빌드됩니다. 소스는 Retro68 PowerPC GCC에 대해 크로스 컴파일이 깨끗하게 되며, 이를 통해 Linux 쪽에서 빠른 구문 검사를 수행합니다. |
![]() v0.2: Mac OS 9에서의 JavaScript 최초의 실제 JS 사용 페이지. Duktape 2.7.0 ES5가 실시간으로 평가: Math.sqrt, JSON, ES5 배열 메서드.
|
![]() fixes73: CSS 변형(transforms) 네이티브 transform: rotate() / scale() / translate() 지원. 정수 Q15 sin/cos 테이블, FPU 의존성 없음, QuickDraw에서 임의 각도 렌더링.
|
![]() fixes74d: 방사형 그라데이션 동심원 PaintOval 스택을 통한 2-스톱 방사형 그라데이션. 디코딩 시 16레벨 스미어. 형태 + 위치 키워드 파싱.
|
![]() fixes77: CSS 애니메이션 fixes73 회전 위에 구축된 선형 핑퐁 애니메이션 플레이어. 흔들기, 스윙, 0°→359° 전체 회전. |
![]() fixes79b: PNG 투명도 QuickTime Graphics Importer가 NetSurf 이미지 콘텐츠 핸들러에 공급. PNG + GIF + BMP, 모두 실제 투명도 지원. |
![]() fixes136: word-break / overflow-wrap word-break: break-all, keep-all, white-space: nowrap, 레거시 word-wrap: break-word. URL 스타일의 공격적 줄바꿈.
|
![]() fixes147: 쌓임 맥락(stacking contexts) CSS 2.1 페인팅 순서. opacity, 변형, 명시적 z-index 모두 새로운 쌓임 맥락을 생성하며 실제 하드웨어에서 올바르게 페인팅됩니다.
|
![]() fixes151: CSS Grid 컬럼 배치 grid-column: span N, 1 / -1 전체 행 히어로, 위치 기반 start / end, span + 자동 줄바꿈. OS 9에서의 실제 Grid 레이아웃.
|
![]() v1.0: 쇼케이스 새로운 툴벨트 도구 모음, 선명한 URL 필드, 매트 처리된 아이콘으로 OS 9.2.2를 실행하는 G3 iMac에서 home.macsurf.org를 렌더링합니다. macTLS를 통한 네이티브 HTTPS는 오리진에 직접 연결되며, 서버 렌더링 포털, 엔드투엔드 트루컬러 이미지를 제공합니다. | |
| 구성 요소 | 언어 | 용도 |
|---|---|---|
browser/ | C (C89, CW8) | NetSurf 포크에 macos9 프런트엔드. UI는 Carbon, 그리기는 QuickDraw, 네트워킹은 Open Transport, JS는 Duktape. |
proxy/ | Go (stdlib only) | 기존 TLS 제거 HTTP 프록시. macTLS가 네이티브로 동작하면서 대부분 은퇴했지만, 폴백 또는 CarbonLib가 없는 머신에서 여전히 유용합니다. Mac은 일반 HTTP를 보내고 프록시는 HTTPS로 가져온 뒤 일반 HTTP로 반환합니다. |
macTLSsibling repo | C (CW8) | OS 9용 네이티브 TLS 1.2 라이브러리 — Mac에서 직접 현대 HTTPS에 연결, 프록시 불필요. 내부는 BearSSL, 121개 신뢰 앵커 내장. |
|
렌더링 파이프라인
CSS — 레이아웃에 사용되는 약 150개 속성
|
JavaScript — Duktape 2.7.0, 전체 ES5
이미지 — 다섯 가지 형식 모두
네트워킹
브라우저 UI(chrome)
|
fetchloadDOMContentLoaded<details><summary>JS 19/19 통과, 0 실패about:cacheabout:memoryabout:configabout:perf