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

81 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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$`.