Bun 1.4.2: разбор сборки Elysia и утечки AsyncLocalStorage, 2026
Официальный блог Bun 5 сентября: v1.4.2 закрывает регрессии v1.4.1, ломавшие сборки Elysia и протекавшие в AsyncLocalStorage. CMYK JPEG и скачок WebKit на той же странице.
5 сентября 2026 официальный блог Bun выпустил v1.4.2. Первое предложение называет две регрессии из v1.4.1: столкновение имён в bun build, из‑за которого ломался Elysia, и утечку AsyncLocalStorage. Та же страница пишет о зависании @discordjs/ws, декодировании CMYK JPEG в Bun.Image, редком падении JIT и падении GC на musl.
Поисковый термин — номер патча. Официально: обновлять через bun upgrade. Этот текст сверяет только тот блог. Это не руководство по установке и не августовская история перевода 1.4.0 с Zig на Rust.
Что печатают открытые тексты
| Пункт | Публичная формулировка | Граница |
|---|---|---|
| Сборка | bun build переименовал вложенный var в let того же блока | Сборки с import Elysia не загружались |
| Память | Таймеры в exit / вложенном run держали внешний store | getStore() оставался верным; росла только память |
| Worker | online шёл не первым; @discordjs/ws терял первое сообщение | Порядок теперь как у Node.js |
| Движок | Около 350 вышестоящих коммитов WebKit | Не новый продукт рантайма |
Как читать этот выпуск
- 1
Это патч к 1.4.1
Официальный заход ставит обе регрессии в первое предложение. Это не повторная поставка перевода 1.4.0 с Zig на Rust и не новый фреймворк.
- 2
У сбоя сборки есть напечатанная ошибка
Блог печатает сломанный вывод: var exports2 = exports2. Ошибка — SyntaxError: Cannot declare a var variable that shadows a let/const/class variable. Тот же дефект мог дать let имя параметра или привязки catch и посчитать неверные значения.
- 3
Утечка не меняет getStore()
Таймер, immediate или незавершённый промис, созданный в store.exit() или во вложенном store.run(), держал внешний store, пока жил этот дескриптор. Официально: возвращаемое значение было верным; удерживалась только память.
- 4
Картинки и движок на одной странице
Bun.Image теперь декодирует четырёхкомпонентные CMYK и YCCK JPEG и переводит их в RGB; раньше было Image: decode failed. Та же страница пишет около 350 коммитов WebKit: Intl, TypedArray, падение Proxy, более дешёвые Date.
Что ещё на той же странице
Ошибки JSON как у JSON.parse
.json() у Response, Blob, Bun.file() или proc.stdout больше не отвергает неверный JSON только текстом Failed to parse JSON. Теперь это текст SyntaxError от JSON.parse.
Установка и Alpine
bun install и bun add могли упасть в panic, если bun.lockb или кэшированный манифест хранил хеш имени пакета, не совпадающий с именем. На musl (Alpine) splice, shift или укорочение length у массива объектов могли уронить поток GC или зависнуть на этапе пометки.
Файловые дескрипторы Linux
Если регистрация FileSink из Bun.file().writer() в epoll не удалась (например, исчерпан fs.epoll.max_user_watches), дескриптор могли закрыть дважды.
Границы
Официальная страница не датирует 1.4.3. Дальше — bun.com/blog/bun-v1.4.2. Для короткой встречи без стены аккаунта wbstorm — это ID комнаты; см. создать или войти в комнату и основы доски.
# Sources
# bun.com/blog/bun-v1.4.2
# 2026-09-05Это перевод с Zig на Rust?
Нет. Этот текст — патч v1.4.2. История переписывания 1.4.0 — август, не дата этой страницы.
Elysia сама выпустила ошибку?
Официальный текст: bun build в v1.4.1 переименовал вложенный var в let того же блока. Сборки с import Elysia после этого не загружались. Это не заметки выпуска Elysia.
Это инструкция по продукту?
Нет. Этот текст сверяет только блог Bun от 5 сентября. Это не руководство bun upgrade.