Shopify открывает Ruvy, инструментарий для создания Wasm-модулей из Ruby-кода
Ruvy от компании Spotify — это инструментарий WebAssembly, способный транслировать Ruby-код в модули Wasm, основанный на ruby.wasm. Ruvy реализован на языке Rust и содержит некоторые оптимизации для повышения производительности и упрощения выполнения Wasm-модулей.
просмотры 276🕑 5 мин. чтения
Ruvy от компании Spotify — это инструментарий WebAssembly, способный транслировать Ruby-код в модули Wasm, основанный на ruby.wasm. Ruvy реализован на языке Rust и содержит некоторые оптимизации для повышения производительности и упрощения выполнения Wasm-модулей.
Ruvy использует модуль интерпретатора Ruby, предоставляемый ruby.wasm виртуальной wasi-vfs файловой системой WASI, для упаковки его в один модуль вместе со всеми указанными исходными файлами Ruby. wasi-vfsсоздает виртуальную файловую систему, встроенную в двоичный файл .wasm, и предоставляет популярный механизм, позволяющий сделать исходные файлы Ruby доступными для чтения ruby.wasm без предоставления доступа к файловой системе хоста во время выполнения WebAssembly.
Именно здесь Ruvy обеспечивает повышение производительности за счет предварительной инициализации виртуальной машины Ruby при сборке модуля Wasm, в отличие от того, когда он загружается в память для выполнения, как это происходит по умолчанию с ruby.wasm/ wasi-vfs. Это повышает производительность во время выполнения на 20 %, — объясняет старший разработчик Shopify Wasm Джефф Чарльз.
Кроме того, объясняет Чарльз, Ruvy сокращает до 30% время, необходимое для компиляции Wasm в собственный код с помощью компилятора Cranelift.
Еще одним преимуществом использования Ruvy, благодаря тому, что он упаковывает все необходимые файлы вместе, является упрощение синтаксиса выполнения, поскольку не требуется путь к файлу в качестве аргумента WASI. Это особенно актуально, например, для различных служб периферийных вычислений, которые не позволяют предоставлять дополнительные аргументы WASI основной функции конечной точки.
На данный момент Ruvy доступен только в виде дистрибутива с исходным кодом, а это значит, что вам необходимо собрать его перед использованием. В принципе, процесс довольно прост, если вы установили все необходимые зависимости , включая rustup, wasm32-wasi, cmakeи Rosetta 2для хостов macOS. После этого вы просто запускаете makeи выполняете Ruvy, как показано в следующем примере, чтобы создать index.wasmмодуль из ruby_examples/hello_world.rbисходного кода:
$ cargo run --package=cli ruby_examples/hello_world.rb -o index.wasm
Ruvy использует модуль интерпретатора Ruby, предоставляемый ruby.wasmвиртуальной wasi-vfsфайловой системой WASI, для упаковки его в один модуль вместе со всеми указанными исходными файлами Ruby. wasi-vfsсоздает виртуальную файловую систему, встроенную в .wasmдвоичный файл, и предоставляет популярный механизм, позволяющий сделать исходные файлы Ruby доступными для чтения ruby.wasmбез предоставления доступа к файловой системе хоста во время выполнения WebAssembly.
Именно здесь Ruvy обеспечивает повышение производительности за счет предварительной инициализации виртуальной машины Ruby при сборке модуля Wasm, в отличие от того, когда он загружается в память для выполнения, как это происходит по умолчанию с ruby.wasm/ wasi-vfs. Это повышает производительность во время выполнения на 20 %, — объясняет старший разработчик Shopify Wasm Джефф Чарльз.
По словам Чарльза, Ruvy сокращает до 30% время, которое необходимо для компиляции Wasm в собственный код с помощью компилятора Cranelift.
Еще одно преимущество использования Ruvy: он упаковывает все необходимые файлы вместе, и является упрощением синтаксиса выполнения, поскольку не требуется путь к файлу в качестве аргумента WASI. Это особенно актуально, например, для различных служб периферийных вычислений, которые не позволяют предоставлять дополнительные аргументы WASI основной функции конечной точки.
На данный момент Ruvy доступен только в виде дистрибутива с исходным кодом, а это значит, что вам необходимо собрать его перед использованием. В принципе, процесс довольно прост, если вы установили все необходимые зависимости , включая rustup, wasm32-wasi, cmakeи Rosetta 2 для хостов macOS. После этого вы просто запускаете make и выполняете Ruvy, как показано в следующем примере, чтобы создать index.wasm модуль из ruby_examples/hello_world.rbисходного кода:
$ cargo run --package=cli ruby_examples/hello_world.rb -o index.wasm
Как упоминалось выше, вы можете использовать --preloadфлаг командной строки, чтобы указать каталог, содержащий файлы Ruby, которые следует передать в виртуальную машину Ruby.
Чарльз подчеркивает, что в настоящее время Ruvy может выполнять только простые Ruby-программы. В частности, он пока не может требовать Ruby gems, что делает недоступными значительные части стандартной библиотеки Ruby. В будущем планируется включить загрузку кода из стандартной библиотеки, а также неродных сторонних гемов, чтобы снять это ограничение.
В июне 1974 года состоялся первый выпуск языка SQL. Он был разработан Дональдом Д. Чемберлином и Раймондом Ф. Бойсом в IBM, основываясь на реляционной модели, предложенной Э.Ф. Коддом. SQL, что расшифровывается как Structured Query Language, стал наиболее распространенным языком для работы с базами данных, и до сих пор имеет множество диалектов, последний из которых — SQL 2023.
JetBrains запустила Writerside для документирования
Проекты создаются на базе HTML-проектов, которые можно развернуть как статические веб-сайты или опубликовать как GitHub Pages, GitLab или TeamCity Cloud.