Files
obsidian-vault/work/notes/webkit-macos-version-mapping.md
T

3.8 KiB
Raw Blame History

title, tags, created, source
title tags created source
WebKit release → macOS version mapping
webkit
safari
macos
reference
2026-10-06 ~/Downloads/WebKit_sparse (git checkout of github.com/WebKit/WebKit, main @ 99051d5d08)

WebKit release → macOS version mapping

TL;DR

Готовой опубликованной таблицы «релиз WebKit → macOS-релиз» не существует. Маппинг выводится из исходников — он в самом дереве WebKit, а не на сайте.

Механизм (ground truth)

AppleWebKit-версия в User-Agent собирается из двух частей:

AppleWebKit = SYSTEM_VERSION_PREFIX (зависит от macOS) + FULL_VERSION WebKit

1. macOS → SYSTEM_VERSION_PREFIX

Файл: Configurations/Version.xcconfig, строки 35–53.

macOS SYSTEM_VERSION_PREFIX
15 Sequoia 20
16 21
26 Tahoe 21
27 Golden Gate 22
28 23
29 24
30 25
(default) 22

2. FULL_VERSION WebKit (текущий main)

Configurations/Version.xcconfig:

  • MAJOR = 627, MINOR = 1, TINY = 2 → FULL_VERSION = 627.1.2

Пример сборки UA-токена

macOS prefix AppleWebKit/…
15 Sequoia 20 20627.1.2
16 21 21627.1.2
26 Tahoe 21 21627.1.2
27 Golden Gate 22 22627.1.2
30 25 25627.1.2

Примечание: префиксы 21 у macOS 16 и 26 — это одно и то же системное поколение нумерации, отсюда совпадение.

Что есть в дереве

Что Путь Содержимое
macOS → prefix + текущая версия Configurations/Version.xcconfig таблица префиксов + MAJOR/MINOR/TINY
macOS ↔ кодовые имена Tools/Scripts/webkitpy/common/version_name_map.py Leopard … Tahoe, Golden Gate
таймлайн релизов WebKit git log Configurations/Version.xcconfig коммиты «Versioning. WebKit-XXXX.Y.Z»
отгруженные релизы git ls-remote --heads origin 498 веток safari-XXXX-branch
генератор deployment target Configurations/Scripts/generate-deployment-target-xcconfig.py 6-значные minor-версии → semver

Чего в дереве НЕТ

Готовой таблицы «релиз WebKit → macOS-релиз». Она собирается из трёх источников:

  1. prefix-таблица (в дереве, Version.xcconfig);
  2. Apple Safari/iOS release notes — какая версия вошла в какой macOS;
  3. git log Configurations/Version.xcconfig — таймлайн бампов версии.

Источники (проверено)

  • Файл: ~/Downloads/WebKit_sparse/Configurations/Version.xcconfig — 76 строк, 3640 байт.
  • Строки 35–53 — таблица префиксов и SYSTEM_VERSION_PREFIX_macosx_*.
  • Строки 24–29 — MAJOR/MINOR/TINY/FULL.
  • Источник: рабочий чекаут Alex (WebKit_sparse), не внешний сайт.

Pitfalls

  • Префикс SYSTEM_VERSION_PREFIX_macosx_ (пустой) = 22 — это default для неизвестного macOS; не путать с реальным.
  • Version.xcconfig есть только в Configurations/ (один файл); вложенных копий в Source/ нет.
  • Sparse/shallow клоны содержат лишь ~10 последних бампов версии — полная история требует полного клона.
  • Ветки origin содержат integration/...safari-XXX-branch (мусор от CI) — фильтровать по чистому ^safari-[0-9.]*-branch$.