js-engine
Внутренности движка JavaScript
Как V8 исполняет твой код — парсинг, байткод, скрытые классы, JIT, сборка мусора и как оставаться быстрым.
Начать трек →С нуля
Что такое движок JS и почему его внутренности решают скорость приложения.Как исполняется JS
Исходник → AST → байткод, который исполняет интерпретатор, ещё до JIT.Значения и память
Как движок упаковывает числа, указатели и объекты в машинные слова.Скрытые классы и IC
Объекты одной формы делят скрытый класс — это и ускоряет доступ к свойствам.JIT
Движок спекулирует на типах, компилирует горячий код и деоптимизирует при ошибке.Замыкания и область видимости
Замыкания захватывают область в heap-контексты — с реальной ценой.Сборка мусора
Поколенческий GC ставит на то, что объекты умирают молодыми — невидим, пока не станет проблемой.Async вглубь
Event loop, микрозадачи и внутренности промисов, решающие порядок исполнения.Замеры и оптимизация
Используй трейсы движка, чтобы держать код мономорфным и дружелюбным к JIT.Собираем вместе
Профилируй и оптимизируй реальный hot path со знанием движка.Проекты по этому треку
Guided-проекты, которые закрепляют изученное здесь.
Лаборатория профилирования горячего пути
Возьми заведомо медленный кусок JavaScript и преврати его в управляемый эксперимент. Ты соберёшь микробенчмарк, которому действительно можно верить, отпрофилируешь горячий путь так, чтобы суметь назвать, что именно делает движок, и применишь оптимизации с учётом устройства движка — мономорфизм, устранение мегаморфных точек вызова, сокращение аллокаций — доказывая каждый выигрыш цифрами, а не ощущениями. Это вся дисциплина работы над производительностью в миниатюре: измерь, выдвини гипотезу о движке, измени одну вещь, измерь снова.
JSON-парсер с нуля
Напиши рекурсивно-нисходящий парсер JSON по спецификации — токенизатор, диспетчер значений, обработчик escape-последовательностей, декодер чисел — и наблюдай, как каждый крайний случай RFC 8259 превращается в конкретный путь в коде.
Движок регулярных выражений
Собери движок регулярных выражений с нуля через конструкцию Томпсона и симуляцию подмножества состояний — тот же метод, что делает grep и re2 иммунными к катастрофическому обратному ходу.
Мини-сигналы
Собери реактивную библиотеку сигналов примерно в 100 строк (signal/computed/effect) с автоматическим отслеживанием зависимостей и безглючными батч-обновлениями — та же модель, что лежит в основе Solid, Preact Signals и Vue 3.
Текстовый diff — алгоритм Майерса
Реализуй алгоритм diff Майерса с нуля: вычисли наибольшую общую подпоследовательность, построй edit script обратным ходом, докажи минимальность и применяй патчи так, чтобы любой round-trip был побайтово точным.
Система типов TypeScript вглубь
От структурной типизации до программирования на типах — дженерики, условные и отображённые типы, типизация реальных систем.