Обновление Ruby расширяет поддержку WebAssembly

автор vadim


Предстоящий выпуск языка Ruby расширяет возможности WebAssembly, широко разрекламированного двоичного формата, предназначенного для повышения производительности веб-приложений.

Представленная 3 апреля Ruby 3.2.0 Preview 1 предлагает начальный порт поддержки WebAssembly на основе WASI (системный интерфейс WebAssembly). Это позволяет двоичному файлу CRuby выполняться в веб-браузерах, бессерверных пограничных средах и других средствах внедрения WASI. Поддержка WASI побуждает разработчиков использовать CRuby в среде WebAssembly. Примером использования является поддержка CRuby в игровой площадке TryRuby.

Предварительную версию Ruby 3.2.0 можно загрузить с веб-сайта языка Ruby.

Говоря о поддержке WebAssembly, разработчики Ruby рассказали, что WebAssembly, или Wasm, изначально был создан для безопасного и быстрого запуска программ в браузерах. Но его цель — эффективное и безопасное выполнение программ в различных средах — преследуется не только Интернетом, но и приложениями общего назначения. WASI предназначен для таких случаев использования. Хотя многим приложениям необходимо взаимодействовать с операционными системами, WebAssembly работает на виртуальной машине, не имеющей системного интерфейса. WASI стандартизирует этот интерфейс.

Разработчики Ruby предупредили, что в WASI и WebAssembly в настоящее время отсутствуют функции для реализации Fiber, исключений и сбора мусора из-за продолжающейся эволюции и проблем безопасности. CRuby заполняет этот пробел, используя Asyncify, метод двоичного преобразования, используемый для управления выполнением. Разработчики Ruby также создали уровень виртуальной файловой системы поверх WASI, чтобы упаковать приложения Ruby в один файл .wasm, упрощая распространение приложений Ruby.

Собственные усилия Ruby по созданию WebAssembly последовали за разработкой Wasmer Ruby, среды выполнения WebAssembly для Ruby на основе Wasmer, которая предоставляет серверные возможности для WebAssembly.

Ruby 3.2.0 также повышает производительность, выводит шаблон поиска из экспериментальной стадии и представляет функцию тайм-аута для сопоставления регулярных выражений. Функция тайм-аута предназначена для обеспечения безопасности в случаях, когда сопоставление регулярных выражений занимает много времени. Если код попытается сопоставить возможно неэффективное регулярное выражение с ненадежным вводом, злоумышленник может воспользоваться этим, что приведет к отказу в обслуживании.

Related Posts

Оставить комментарий