Bun даёт JavaScript настоящие потоки с общей памятью, а описание PR написал Claude
30 лет JavaScript был однопоточным по замыслу. Открытый pull request в Bun даёт ему настоящие потоки ОС, делящие одну кучу. И человек, который ещё в 2017-м доказал, что это возможно, зашёл в тред и признался: он впечатлён, что с этим справилась LLM.
`new Thread(fn)` запускает замыкание на другом потоке ОС внутри той же кучи: без postMessage, без structured clone, без SharedArrayBuffer. Это реализация дизайна 2017 года, который до сих пор никто не довёл до релиза.
В середине описания спрятано главное: сборщик мусора по-прежнему останавливает весь мир. Читатель, разбирающийся во внутренностях VM, указал, что именно эта строка убьёт tail latency. А создатель Bun заодно подтвердил: всё описание PR сгенерировал Claude.
Что этот PR на самом деле меняет в JavaScript
Pull request #249 к форку JavaScriptCore от Bun добавляет то, чего в языке не было никогда: настоящую многопоточность с общей памятью. Вы пишете new Thread(fn, …), и замыкание выполняется в отдельном потоке ОС внутри той же кучи: объекты доступны напрямую, без postMessage, без structured clone, без обходного SharedArrayBuffer.
Под капотом это реализация эссе Филипа Пизло 2017 года Concurrent JavaScript: It Can Work! — плоские butterflies с TID-тегами, локи на уровне ячейки каждого объекта, сегментированные butterflies при первой общей записи. Заявленная просадка на последовательном коде — 0,45% в худшем случае при пороге в 1%; на 64-ядерной машине реализация, по сообщениям, держит около 0,89× от пропускной способности потоков Java на 16 потоках.
Загвоздка в одном слове: синхронный
Заголовочные цифры выглядят бесплатными, пока не дочитаешь до середины поста. Читатель, который работает с виртуальными машинами, пошёл искать именно это:
«Я кое-что знаю о VM… „Никакой просадки в однопоточном случае? Да ну“. И я был прав. В середине поста спрятана деталь… Сборщик мусора, останавливающий весь мир, убьёт tail latency во многих сценариях» — комментатор, работающий с внутренностями VM
Это несущая оговорка. В v1 сборка синхронная и останавливает каждый поток; конкурентная маркировка отложена. Для нагрузки, обслуживающей запросы, пауза «остановить весь мир» — именно то, чего нельзя себе позволить.
В тред зашёл человек, чей это дизайн
Статью 2017 года, которую этот PR превращает в код, написал Филип Пизло, тогда руководивший JavaScriptCore. Он её прочитал:
«Штука очень сложная, но не невозможная. Я сильно впечатлён, что хоть какая-то LLM на это способна» — Филип Пизло, автор исходного дизайна конкурентного JavaScript
Эта деталь не случайна. Создатель Bun Джарред Самнер подтвердил в треде, что текст написала машина: «И да, описание PR целиком от Claude», и описал, чем рискует мерж:
«Я автор этого PR… Этот PR страшнее мержить, чем PR с переписыванием Bun на Rust… Будь у нас и потоки, и структуры, компилятор TypeScript, скорее всего, вообще не пришлось бы переписывать на Go» — Джарред Самнер, создатель Bun
Не все рады одностороннему расширению языка. Голос со стороны стандартов прямо сказал, как это ложится на тех, кто реально владеет спецификацией:
«Я прогнал ваши предложенные изменения через TC39, и их первая реакция была просто „нет“. Так что, Bun — это новый IE6?» — комментатор, отнёсший предложение в TC39
Почему «Bun — новый IE6» — самая острая фраза треда
Выпад про IE6 и есть настоящий аргумент. Рантайм может выпустить примитив Thread с общей кучей хоть завтра; орган стандартизации не может его отозвать. Если достаточно кода начнёт зависеть от потоков только-в-Bun, поведение станет фактическим стандартом, который каждому другому движку придётся либо копировать, либо ломать. Ровно эта динамика сделала IE6 проблемой на десятилетие. Инженерия здесь по-настоящему сложна и, по оценке самого автора дизайна, по-настоящему хороша. Но тред нервничает не из-за паузы GC, а из-за того, что один рантайм решает будущее общего языка мержем.
Получайте такие разборы каждый день
Главные истории Hacker News — на email, в Telegram или RSS.
Британия ввела возрастной ценз в соцсетях, дети ушли на VPN — теперь власти взялись за VPN
Министр сказала депутатам, что вернётся в июле с заявлением по VPN, потому что её «не устраивают доказательства». Тред мгновенно вынес вердикт по этой петле: запрети что-то, люди обойдут запрет, запрети обход, повтори.