[2026-10-06] eagle: work/notes/webkit-macos-version-mapping.md
This commit is contained in:
1 parent
930bc0395b
commit
aef519de98
1 file changed
+80
@@ -0,0 +1,80 @@
|
||||
---
|
||||
title: WebKit release → macOS version mapping
|
||||
tags: [webkit, safari, macos, reference]
|
||||
created: 2026-10-06
|
||||
source: ~/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$`.
|
||||
Reference in new issue
Block a user