Hacker News Digest

Тег: #exception-handling

Постов: 2

WASM 3.0 Completed (webassembly.org) 🔥 Горячее 💬 Длинная дискуссия

Завершена работа над Wasm 3.0

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

Сегодня мы рады объявить о выпуске Wasm 3.0 как нового действующего стандарта. Это крупное обновление включает несколько важных функций, разрабатывавшихся до восьми лет.

  • 64-битное адресное пространство. Память и таблицы теперь могут использовать i64 вместо i32, расширяя доступное пространство с 4 гигабайт до 16 эксабайт (теоретически). На вебе 64-битная память ограничена 16 гигабайтами, но для невеб-экосистем это открывает возможности для работы с огромными приложениями и наборами данных.

  • Множественная память. Теперь один модуль может объявлять и напрямую использовать несколько областей памяти, включая копирование данных между ними. Это позволяет инструментам вроде wasm-merge работать со всеми модулями Wasm и открывает новые возможности для безопасности, буферизации и инструментирования.

  • Сборка мусора. Wasm добавляет поддержку автоматически управляемого хранилища через сборщик мусора. Компиляторы могут объявлять layout структур данных через типы struct и array, а также нетипизированные целые числа — всё остальное, включая представление значений исходного языка, остаётся их ответственностью. Wasm предоставляет только базовые строительные блоки, избегая встроенных объектных систем.

  • Типизированные ссылки. Расширение системы типов теперь поддерживает богатые формы ссылок, описывающие форму значения в куче, что избегает дополнительных проверок во время выполнения. Эта система также доступна для ссылок на функции, позволяя безопасные косвенные вызовы без проверок типа или границ через инструкцию call_ref.

  • Хвостовые вызовы. Важный механизм для языковых реализаций, особенно функциональных языков и внутренних техник (например, заглушек). Вызовы полностью общие и работают как для статических, так и для динамических получателей.

  • Обработка исключений. Ранее не было эффективного способа компиляции обработки исключений в Wasm. Теперь исключения определяются через теги с данными, могут быть выброшены и перехвачены обработчиками — новым видом инструкций блока с диспетчеризацией по тегам.

  • Расслабленные векторные инструкции. (Описание сокращено)

by todsacerdoti • 17 сентября 2025 г. в 18:16 • 994 points

ОригиналHN

#webassembly#wasm-3.0#64-bit-addressing#garbage-collection#typed-references#tail-calls#exception-handling#vector-instructions#c##java

Комментарии (427)

  • Переход на 64-битную адресацию по умолчанию снимает ограничения для ресурсоёмких веб-приложений, таких как видеоредакторы.
  • Добавлена низкоуровневая поддержка сборки мусора (GC), позволяющая компиляторам управлять структурой данных.
  • Сообщество выражает разочарование отсутствием прямого доступа к DOM и JS-объектам из WebAssembly.
  • Множественные памяти и улучшенная типизация ссылок могут оптимизировать взаимодействие с API (например, WebGPU).
  • Разработчики отмечают проблемы с опытом использования (DX) и сложность компиляции в WASM.
  • Обсуждаются потенциальные применения новых возможностей для языков C#, Java, Go и Python.
  • Остаются нерешённые вопросы, такие как работа на микроконтроллерах и поддержка сокетов.

Things you can do with a debugger but not with print debugging (mahesh-hegde.github.io) 💬 Длинная дискуссия

  • Смотреть весь стек вызовов — мгновенно переходить к родительским фреймам и проверять переменные там.
  • Вычислять выражения на лету — вызывать функции и менять состояние без перезапуска.
  • Ловить исключения в точке броска — ставить брейкпоинт на throw и видеть, почему упало.
  • Менять ход выполнения — подменить URL, флаг или объект прямо в памяти, не трогая код.
  • Стандартизировать запуск — закоммитьте .vscode/launch.json, и новичку хватит одного клика, чтобы запустить сервер или CLI с нужными env и аргументами.

by never_inline • 07 сентября 2025 г. в 08:22 • 225 points

ОригиналHN

#debugging#vscode#launch.json#breakpoints#exception-handling#programming#development

Комментарии (199)

  • Отладчики полезны, но часто ограничены: сети, прод-среды, сторонние библиотеки, оптимизация под release.
  • Print-отладка универсальна: работает в любом языке, на удалёнке, в многопоточке и в kernel-space, не требует пересборки.
  • Условные точки останова тормозят или врут; многие ставят «if (x) print("")» и брякают на неё.
  • REPL, time-travel (rr/UndoDB), watch-точки на память и reverse-execution дают сверх-возможности, но доступны не везде.
  • Итог: хороший инженер владеет и отладчиком, и логами, и профилировщиком, и выбирает инструмент под задачу.