by Пол Крилл
Editor at Large
Команда Rust предупреждает об изменении WebAssembly
news
7 апр. 2026 г. 3 мин.
Предстоящее удаление флага —allow-undefined для wasm-ld может привести к поломке существующих проектов.
Credit: Тоей Анданте/Shutterstock
WebAssembly для Rust вскоре ждёт изменение, которое может привести к поломке существующих проектов, согласно сообщению от 4 апреля в официальном блоге Rust. В сообщении отмечается, что все цели WebAssembly в Rust связывались с использованием флага --allow-undefined для wasm-ld, но этот флаг будет удалён.
Удаление --allow-undefined для целей wasm выполняется в rust-lang/rust#149868. Ожидается, что это изменение скоро попадёт в ночные сборки и будет выпущено в Rust 1.96 2026-05-28. В сообщении поясняется, что все бинарные файлы WebAssembly в Rust создаются путём линковки с помощью wasm-ld, выполняющего схожую роль с ld, lld и mold. С момента первого появления целей WebAssembly в Rust флаг --allow-undefined передавался wasm-ld.
Однако, передавая --allow-undefined для всех целей WebAssembly, rustc вводит различающееся поведение между другими платформами и WebAssembly, говорится в сообщении. Основной риск --allow-undefined заключается в том, что из-за неправильной настройки или ошибок сборки могут быть созданы неработоспособные модули WebAssembly вместо ошибок компиляции. В сообщении приводятся следующие примеры проблемных ситуаций:
- Если
mylibrary_initпо ошибке было набрано какmylibraryinit, то итоговый бинарный файл импортировал бы символmylibraryinitвместо вызова связанного C-символаmylibrary_init. - Если
mylibraryпо ошибке не был скомпилирован и подключён к итоговому приложению, то символmylibrary_initоказался бы импортированным вместо выдачи ошибки линковщика о том, что он не определён. - Если для обработки модуля WebAssembly используются внешние инструменты, такие как
wasm-bindgenилиwasm-tools component new, они, вероятно, выдадут сообщение об ошибке, которое не будет явно связано с исходным кодом, из которого были импортированы символы. - Веб-ошибки вида
Uncaught TypeError: Failed to resolve module specifier "env". Relative references must start with either "/", "./", or "../".могут означать, что"env"неожиданно попал в конечный модуль, а настоящая ошибка — это ошибка неопределённого символа, а не отсутствие предоставленных элементов"env".
По умолчанию на всех нативных платформах неопределённые символы считаются ошибкой. Поэтому, передавая --allow-undefined, rustc вводит неожиданное поведение для целей WebAssembly. Цель изменения — убрать эту неожиданность, чтобы WebAssembly вел себя больше как нативные платформы, говорится в сообщении.
В теории, однако, не ожидается, что это изменение что-то сильно поломает, заключает сообщение. Если итоговый бинарный файл WebAssembly импортирует неожиданные символы, то, скорее всего, он не будет запускаться в нужной среде встраивания, поскольку эта среда, вероятно, не предоставляет символ как определение. Поэтому большую часть времени это изменение не будет ломать пользователей, а вместо этого обеспечит более качественную диагностику.
Языки программированияRustРазработка ПОWebAssembly
by
Пол Крилл
Editor at Large
-
Подписаться на Пола Крилла в X
Пол Крилл — главный редактор InfoWorld. Пол освещает компьютерные технологии как новостной и специальный репортёр уже более 35 лет, включая 30 лет в InfoWorld. С 1990-х годов он специализируется на освещении инструментов и технологий разработки ПО и продолжает руководить новостным освещением InfoWorld платформ разработки ПО, включая Java и .NET, а также языков программирования, включая JavaScript, TypeScript, PHP, Python, Ruby, Rust и Go. Давно заслуживший доверие как репортёр, который ставит во главу угла точность, честность и интересы читателей, Пол востребован технологическими компаниями и отраслевыми организациями, которые хотят выйти на аудиторию InfoWorld из числа разработчиков ПО и других специалистов в сфере информационных технологий. Пол получил награду IDG «Лучшее освещение технологических новостей».
Ещё от этого автора
Показать ещё
news
Команда Rust предупреждает об изменении WebAssembly
By Paul KrillApr 7, 20263 mins
Языки программированияRustWebAssembly

news
Databricks запускает многоагентный ИИ AiChemy для поиска лекарств
By Anirban GhoshalApr 6, 20263 mins
Искусственный интеллектУправление даннымиБазы данных

feature
27 вопросов, которые стоит задать при выборе LLM
By Peter WaynerApr 6, 202612 mins
Искусственный интеллектГенеративный ИИРазработка ПО

video
Новый тип frozendict в Python
Apr 2, 20264 mins
Python
![]()
video
Как повысить производительность приложения с помощью ленивого импорта Python 3.15
Mar 31, 20266 mins
Python
![]()
video
Как запустить свой маленький локальный Claude Code (ну, почти!)
Mar 26, 20267 mins
Python
![]()
Материал — перевод статьи с английского.
Оригинал: Rust team warns of WebAssembly change