Перейти к содержимому

Глоссарий

Движок JavaScript V8

Любая проверка отпечатка, о которой вы читали, написана на JavaScript, и исполняет её именно он. Часть чисел про собственную память он отдаёт странице, и они обязаны сходиться с машиной, которой представляется профиль.

V8 это движок JavaScript внутри Chromium, и он исполняет каждый сценарий, которым сайт спрашивает про вашу машину.

Что делает движок JavaScript

V8 собирает и исполняет сценарий страницы и тот WebAssembly, который страница приносит с собой. Ему же принадлежит куча, где эти сценарии заводят объекты, и сборщик, который её чистит.

Две его части видны отпечатку. Часть про языки и страны отвечает про пояс и наречие, а одно число про память отдаётся странице напрямую.

  • Сборка и исполнение

    Сценарий и WebAssembly приходят сюда, поэтому проверка на любом из них попадает в одно место.

  • Куча и её сборщик

    Объекты страницы живут в куче, потолок которой выводится из памяти самой машины.

  • Пояс и вид записи

    Даты, числа и разрешённый часовой пояс, которые читает страница, оформляет этот движок.

Часовой пояс и язык прямо сейчас

Пояс и язык ниже оформлены этим движком в том браузере, в котором вы читаете. Строка про память это то число, с которым обязан сходиться его потолок кучи.

Ваша машина прямо сейчас

Часовой пояс
измеряем на вашей машине
Сдвиг в часах
измеряем на вашей машине
Язык
измеряем на вашей машине
Память устройства
измеряем на вашей машине

Прочитано в вашем браузере и показано здесь. Никуда не отправляется.

Один предел кучи виден странице

Страница вправе спросить потолок кучи сценариев. Он выводится из настоящей памяти машины, и потому это показание про железо, а не про сценарий.

Значит, он обязан сходиться с памятью, которую объявляет профиль. Профиль, называющий одну величину и отдающий потолок от машины с другой, расходится сам с собой в одну строку.

  • Выводится из памяти машины

    Старшее поколение это постоянная доля от того, что есть у машины, зажатая между полом и потолком.

  • Два законных вида

    Оно приходит точным, когда процесс закреплён за одним сайтом, и ступенью лестницы, когда нет.

  • У телефона правило своё

    Доля на телефоне другая, поэтому телефонный профиль считается по телефонному правилу.

Чего наша правка не касается

Сборка кладёт свои заплаты в заданном порядке, и вместе они называют каждый затронутый файл. Ни один из этих файлов не принадлежит движку JavaScript, и сценарий идёт ровно так же, как в обычной сборке.

Это решение, а не забывчивость. Менять округление арифметики или ход времени значило бы завести различие, которого нет ни у одной настоящей машины.

Где выправляется потолок кучи

Число профиля считается в программе по правилу самого движка, снятому из исходников этого дерева, и едет вместе с остальным семенем.

Поправка накладывается там, где страница читает значение, и больше нигде. Когда объявленная память и настоящая уже сходятся, значение не трогают вовсе.

  1. 1

    Программа считает число

    Она идёт по тому же правилу, что и движок, вместе с полом и потолком, к которым оно жмётся.

  2. 2

    Семя везёт его при запуске

    Оно едет рядом с рассказом про устройство и потому не расходится с объявленной памятью.

  3. 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 замеров, и зелёные, и красные.