Глоссарий
Движок JavaScript V8
V8 это движок JavaScript внутри Chromium, и он исполняет каждый сценарий, которым сайт спрашивает про вашу машину.
Что делает движок JavaScript
V8 собирает и исполняет сценарий страницы и тот WebAssembly, который страница приносит с собой. Ему же принадлежит куча, где эти сценарии заводят объекты, и сборщик, который её чистит.
Две его части видны отпечатку. Часть про языки и страны отвечает про пояс и наречие, а одно число про память отдаётся странице напрямую.
Сборка и исполнение
Сценарий и WebAssembly приходят сюда, поэтому проверка на любом из них попадает в одно место.
Куча и её сборщик
Объекты страницы живут в куче, потолок которой выводится из памяти самой машины.
Пояс и вид записи
Даты, числа и разрешённый часовой пояс, которые читает страница, оформляет этот движок.
Часовой пояс и язык прямо сейчас
Пояс и язык ниже оформлены этим движком в том браузере, в котором вы читаете. Строка про память это то число, с которым обязан сходиться его потолок кучи.
Ваша машина прямо сейчас
- Часовой пояс
- измеряем на вашей машине
- Сдвиг в часах
- измеряем на вашей машине
- Язык
- измеряем на вашей машине
- Память устройства
- измеряем на вашей машине
Прочитано в вашем браузере и показано здесь. Никуда не отправляется.
Один предел кучи виден странице
Страница вправе спросить потолок кучи сценариев. Он выводится из настоящей памяти машины, и потому это показание про железо, а не про сценарий.
Значит, он обязан сходиться с памятью, которую объявляет профиль. Профиль, называющий одну величину и отдающий потолок от машины с другой, расходится сам с собой в одну строку.
Выводится из памяти машины
Старшее поколение это постоянная доля от того, что есть у машины, зажатая между полом и потолком.
Два законных вида
Оно приходит точным, когда процесс закреплён за одним сайтом, и ступенью лестницы, когда нет.
У телефона правило своё
Доля на телефоне другая, поэтому телефонный профиль считается по телефонному правилу.
Чего наша правка не касается
Сборка кладёт свои заплаты в заданном порядке, и вместе они называют каждый затронутый файл. Ни один из этих файлов не принадлежит движку JavaScript, и сценарий идёт ровно так же, как в обычной сборке.
Это решение, а не забывчивость. Менять округление арифметики или ход времени значило бы завести различие, которого нет ни у одной настоящей машины.
Где выправляется потолок кучи
Число профиля считается в программе по правилу самого движка, снятому из исходников этого дерева, и едет вместе с остальным семенем.
Поправка накладывается там, где страница читает значение, и больше нигде. Когда объявленная память и настоящая уже сходятся, значение не трогают вовсе.
- 1
Программа считает число
Она идёт по тому же правилу, что и движок, вместе с полом и потолком, к которым оно жмётся.
- 2
Семя везёт его при запуске
Оно едет рядом с рассказом про устройство и потому не расходится с объявленной памятью.
- 3
Показание правится один раз
Заменяется только та доля, что пришла от машины, а остальная часть числа остаётся своей.
Часто путают с этим
JavaScript
Сам язык. Это одно из его воплощений, а воплощения расходятся в округлении и в тексте ошибок.
Blink
Движок отрисовки рядом. Тот отвечает на имена, которые спрашивает сценарий, а этот исполняет сам сценарий.
WebAssembly
Вторая форма, которую исполняет этот движок. Она приходит собранной, и проверка на ней попадает туда же.
Чего это не делает
- Мы ничего не меняем в том, как исполняется сценарий. Ни дрожи во времени, ни другой арифметики, ни замедленных кругов.
- Это не прячет того, что сценарий работает. Страница вправе замерить собственный код и посчитать собственную работу, и здесь этого никто не трогает.
- Потолок кучи приводится в согласие с профилем, и только. Он не занимает память и не меняет того, сколько профилю можно взять.
- У него нет мнения о том, с какого адреса вы пришли и что за история у аккаунта, в который вы входите.
Проверить
Каждая строка выше это файл, который можно открыть.
- Правило кучи, снятое из исходников этого дерева
- packages/shared/src/index.js
- Поправка ложится там, где страница читает значение
- engine/patches/armanos-fp-0014-memory.diff
- Самопроверка меряет потолок в настоящем браузере
- apps/desktop/src/lib/fpAudit.js · apps/desktop/test/fp-audit.js
- Каждая заплата сборки и её место в очереди
- engine/patches/series
Вопросы
- V8 это то же самое, что JavaScript?
- Нет. JavaScript это язык, а это один из движков, которые его воплощают. У других браузеров воплощения свои.
- Работа против опознания идёт в движке JavaScript?
- Нет. Каждый файл, который правит наша сборка, принадлежит движку отрисовки и двум слоям над ним, и сами заплаты открыты для чтения.
- Страница может узнать, сколько памяти у моего компьютера?
- Она может прочитать потолок кучи сценариев, а он выводится из настоящей памяти. Поэтому это число обязано сходиться с памятью, которую объявил профиль.
- Он исполняет и WebAssembly?
- Да. Обе формы приходят в один движок, поэтому перенос проверки в WebAssembly ничего не меняет в том, куда она попадёт.
- Стоит ли браузеру врать о своей скорости?
- Нет. Скорость, не сходящаяся с остальной машиной, сама по себе примета, и страница меряет её кругом, который ничего не стоит.
Посмотрите, что ваш профиль отвечает про память
Самопроверка идёт внутри профиля и показывает все 29 замеров, и зелёные, и красные.