URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 116955
[ Назад ]

Исходное сообщение
"Представлен Lucet, компилятор для WebAssembly"

Отправлено opennews , 29-Мрт-19 21:17 
Следом за технологией WASI (https://www.opennet.ru/opennews/art.shtml?num=50406) (WebAssembly System Interface), нацеленной на использование WebAssembly вне браузера, представлен (https://www.fastly.com/blog/announcing-lucet-fastly-native-w...) проект Lucet (https://github.com/fastly/lucet), предлагающий компилятор lucetc и runtime для выполнения программ в формате WebAssembly. Lucet позволяет скомпилировать модули в псевдокоде WebAssembly (.wasm или .wat) в машинный код, пригодный прямого исполнения. Результат сохраняется в виде разделяемой библиотеки или объектных файлов, которые можно связать с приложениями на языках Си или Rust. Код проекта написан на языке Rust и распространяется (https://github.com/fastly/lucet) под лицензией Apache 2.0.


Основной задачей проекта является предоставление возможности безопасного исполнения сторонних программ на WebAssembly внутри других приложений (например, для реализации плагинов). Исходные приложения для встраивания могут быть написаны на языках Си (компилируется в  WebAssembly при помощи clang), Rust и AssemblyScript (https://github.com/AssemblyScript/assemblyscript) (TypeScript). Для использования в окружении WebAssembly предлагается Си-библиотека lucet-builtins, предоставляющая базовые функции libc.

Проектом поставляется  runtime для модулей, скомпилированных при помощи lucetc. Указанный runtime предоставляет функции для загрузки модулей из объектных файлов, их активации и организации вызова функций из базового приложения. Lucet-runtime также выполняет задачи по управлению ресурсами для каждого экземпляра  WebAssembly и обработке исключений, возникающих при сбоях.  Компонент может использоваться как crate-пакет для Rust  или как разделяемая библиотека для Си.


Дополнительно предлагается  Lucet-wasi, расширение к runtime с реализацией режима изоляции и системных прослоек WASI (https://www.opennet.ru/opennews/art.shtml?num=50406), позволяющих напрямую запускать WebAssembly-приложения с применение расширенных механизмов контроля доступа и с возможностью обращения к ресурсам системы (файлы, сокеты и т.п.). Lucet-wasi также может использоваться в виде библиотеки для интеграции поддержки  WASI в другие приложения. В настоящее время lucet-wasi пока поддерживает только запуск в Linux-системах на базе архитектуры x86-64.


Код открыт компанией Fastly, которая использует Lucet в качестве основы движка облачных вычислений, использующего WebAssembly для обработчиков. Так как модель "edge cloud" подразумевает запуск обработчика на каждый запрос, а запросов может быть десятки тысяч в секунду, проект изначально рассчитан на потребление минимальных ресурсов и очень быстрый запуск новых экземпляров окружений для выполнения WebAssembly. Запуск модуля WebAssembly  производится менее чем на 50 микросекунд, а дополнительное потребление памяти составляет всего несколько килобайт на каждый экземпляр (для сравнения движок  Chromium V8 требует для запуска  JavaScript или WebAssembly  5 миллисекунд и десятки мегабайт).


Для достижения подобного уровня производительности программы WebAssembly запускаются в рамках одного процесса  с изоляцией на уровне runtime, который предоставляет каждой программе WebAssembly доступ только к собственным ресурсам. В отличие от других окружений для выполнения WebAssembly, в Lucet используется не JIT, а полноценная упреждающая компиляция в машинный код (AOT, ahead-of-time).

URL: https://www.fastly.com/blog/announcing-lucet-fastly-native-w...
Новость: https://www.opennet.ru/opennews/art.shtml?num=50418


Содержание

Сообщения в этом обсуждении
"Представлен Lucet, компилятор для WebAssembly"
Отправлено grayich , 29-Мрт-19 21:17 
ожидаемо

а вообще всё плохо, а будет ещё хуже.. ага


"Представлен Lucet, компилятор для WebAssembly"
Отправлено Аноним , 29-Мрт-19 21:23 
А зачем городить лишние сущности?
В примерах берут код на Си, компилируют clang-ом в WebAssembly, а потом  WebAssembly компилируют в машинный код. Почему сразу в машинный код не скомпилить в shared-библиотеку, а для изоляции какой-нибудь готовый sandbox не использовать? Тот же Sandboxed API от Google о котором новость пару недель назад была https://www.opennet.ru/opennews/art.shtml?num=50349

"Представлен Lucet, компилятор для WebAssembly"
Отправлено имя , 29-Мрт-19 21:40 
Напрямую скомпилированный машинный код, во-первых, не переносим, во-вторых, не предотвращает фокусов вроде манипуляции указателями или прямого вызова сисколлов, а исполнять ведь предполагается засланный пользователем код. Да и си там, скорее, для примера взят, в большинстве своём люди всё равно будут компилировать из привычных им джаваскриптов.

Здесь скорее напрашивается вопрос о причинах NIH при наличии JVM/CLR.


"Представлен Lucet, компилятор для WebAssembly"
Отправлено Илья , 29-Мрт-19 21:58 
Зачем исплнять код, которому не доверяешь?

"Представлен Lucet, компилятор для WebAssembly"
Отправлено Аноним , 29-Мрт-19 22:16 
Чтобы деньги за это получать же.

"Представлен Lucet, компилятор для WebAssembly"
Отправлено Crazy Alex , 29-Мрт-19 22:47 
джаваскрипты в wasm? Где ж такое? Знаю си, плюсы, вроде go был... джаваскрипт в wasm совать - это вообще бессмвыслица какая-то

"Представлен Lucet, компилятор для WebAssembly"
Отправлено НяшМяш , 31-Мрт-19 17:30 
Наоборот, вебмакаки ликуют. Теперь, вместо изучения нормального языка для разработки нормальных приложений, достаточно будет в свой вебпук.жиэс поставить плагин, который будет компилять их творчество в васм. Вебмакаки целы и юзеры довольны производительности.

"Представлен Lucet, компилятор для WebAssembly"
Отправлено Аноним , 29-Мрт-19 21:39 
Я вот джва года жду транслятор wasm -> llvm.

"Представлен Lucet, компилятор для WebAssembly"
Отправлено Анон Анонов , 29-Мрт-19 22:05 
wasm это таргет llvm. Какой смысл обратно компилить, да ещё и с потерей информации?

"Представлен Lucet, компилятор для WebAssembly"
Отправлено Аноним , 29-Мрт-19 22:18 
>Какой смысл обратно компилить, да ещё и с потерей информации?

Очевидно же - когда нет исходника.


"Представлен Lucet, компилятор для WebAssembly"
Отправлено ig0r , 29-Мрт-19 22:53 
То есть вы планируете запускать код не имея исходников? присылайте мне wasm бинарник, я сконвертирую.

"Представлен Lucet, компилятор для WebAssembly"
Отправлено Аноним , 30-Мрт-19 09:08 
Смысл в том, чтобы почти похоронить пакеты, специфичные для архитектур. То есть я компилирую нейтив-код в васм, кладу васм-байткод в пакет. При установке васм преобразуется в llvm и компилируется в нативную библиотеку, с которой можно делать всё то, что и с нативной библиотекой, собранной из C++.

"Представлен Lucet, компилятор для WebAssembly"
Отправлено КО , 30-Мрт-19 10:34 
>Смысл в том, чтобы почти похоронить пакеты, специфичные для архитектур. То есть я компилирую нейтив-код в васм,

Не забываем, что wasm это фигня, которая по идейным соображениям безопасности не может взаимодействовать с оборудованием, а значит пользователем и сетью, зато переносимая. При таком подходе оно даже питон заменить не в силах.


"Представлен Lucet, компилятор для WebAssembly"
Отправлено Аноним , 30-Мрт-19 10:37 
> Смысл в том, чтобы почти похоронить пакеты, специфичные для архитектур.

Вот это дело! Тогда и необходимость в открытых исходниках пропадёт. ;-)


"Представлен Lucet, компилятор для WebAssembly"
Отправлено ig0r , 31-Мрт-19 08:50 
Если вы считаете, что открытые исходники нужны только для того, чтобы приложение можно было пересобрать для других архитектур, то это далеко не правда.

"Представлен Lucet, компилятор для WebAssembly"
Отправлено Аноним , 29-Мрт-19 22:19 
Представляю как браузер внутри себя будет делать сначала:
$ lucetc-wasi hello.wasm -o hello.so
а потом:
$ lucet-wasi hello.so.

"Представлен Lucet, компилятор для WebAssembly"
Отправлено Crazy Alex , 29-Мрт-19 22:49 
браузер wasm умеет исполнять прямо сейчас, никакие сторонние кмопиляторы ему для этого не нужны

"Представлен Lucet, компилятор для WebAssembly"
Отправлено Аноним , 30-Мрт-19 00:57 
Как следует из текста новости, сейчас он это умеет не слишком оптимально.

"Представлен Lucet, компилятор для WebAssembly"
Отправлено abc , 02-Апр-19 00:58 
идея как раз в том чтоб компилировать однажды исполнять wasi напрямую без компиляции

"Представлен Lucet, компилятор для WebAssembly"
Отправлено X4asd , 29-Мрт-19 22:39 
> Результат сохраняется в виде разделяемой библиотеки или объектных файлов, которые можно связать с приложениями на языках Си или Rust. [...] возможности безопасного исполнения сторонних программ на WebAssembly внутри других приложений

разбежались с "безопасным".

Спектр (который будут исправлять последущие 10 лет) не даст возможности так просто взять и "безопасно" исполнить


"Представлен Lucet, компилятор для WebAssembly"
Отправлено Crazy Alex , 29-Мрт-19 22:50 
поруби таймеры и будет счастье. Впрочем, что-то другое найдётся. Песочницы и недоверенный код - это всегда игры с огнём.

"Представлен Lucet, компилятор для WebAssembly"
Отправлено Аноним , 29-Мрт-19 23:23 
Одни и те же библиотеки для браузера и десктопа. Да еще и на любом компилируемом языке...
Разработчики молодцы, раньше о таком только и мечтать можно было.

"Представлен Lucet, компилятор для WebAssembly"
Отправлено Аноним , 30-Мрт-19 08:15 
Как Java-апплеты?

"Представлен Lucet, компилятор для WebAssembly"
Отправлено Аноним , 30-Мрт-19 09:10 
Как ActiveX + .Net или как Silverlight

"Представлен Lucet, компилятор для WebAssembly"
Отправлено КО , 30-Мрт-19 10:36 
Нет java апплеты нужны были для взаимодействия с оборудованием через песочницу. WASM чистая числодробилка.

"Представлен Lucet, компилятор для WebAssembly"
Отправлено Анонимчжан , 30-Мрт-19 22:27 
еще одно ненужно типа электрон.))

"Представлен Lucet, компилятор для WebAssembly"
Отправлено X4asd , 01-Апр-19 15:36 
> еще одно ненужно типа электрон.))

ну полезность электрона в том что он отвлёк на себя горе-программистов (js-обезъянок со своими реактами)


"Представлен Lucet, компилятор для WebAssembly"
Отправлено Аноним , 30-Мрт-19 00:31 
А чем это отличается от "программа на любом языке" которая общается с внешним миром через "безопасную" libc (ну например на rust) с изоляцией и контролем доступа?

"Представлен Lucet, компилятор для WebAssembly"
Отправлено Аноним , 30-Мрт-19 00:32 
А чем это отличается от "программа на любом языке" которая общается с внешним миром через "безопасную" libc (ну например на rust) с изоляцией и контролем доступа?

"Представлен Lucet, компилятор для WebAssembly"
Отправлено Иваныч , 30-Мрт-19 00:40 
Теперь таки можно будет написать язык программирования где целевое использование будет WebAssembly, а при желании можно в нативный код при помощи упомянутого инструмента. Зачем? Just for fun, конечно же. Как минимум вариация на тему WebAssembly Little C без оптимизаций и просто более читаемое представление того что будет уже в "ASM" от WebAssembly. Бесполезно, но интересно.

"Представлен Lucet, компилятор для WebAssembly"
Отправлено Аноним , 30-Мрт-19 10:41 
>  можно будет написать язык программирования где целевое использование будет WebAssembly

https://github.com/AssemblyScript/assemblyscript


"Представлен Lucet, компилятор для WebAssembly"
Отправлено Аноним , 30-Мрт-19 07:38 
замечательно - а есть pascal там поддерживается?

"Представлен Lucet, компилятор для WebAssembly"
Отправлено Аноним , 30-Мрт-19 08:03 
Вы вспоминаете свой любимый язык в каждой новости про программирование. Очевидно, Вам не дает покоя мысль, что давая Вам его в 90-х в школах РФ, Вас намеренно или по глупости заставили учить то, что никому не сдалось, особенно в остальной вселенной.  

"Представлен Lucet, компилятор для WebAssembly"
Отправлено Аноним , 30-Мрт-19 15:05 
> что давая Вам его в 90-х в школах РФ, Вас намеренно или по глупости заставили учить то, что никому не сдалось, особенно в остальной вселенной.

Специалиста-знатока по школам вне РФ, ненужности навыка написания чистого и структурированного кода и вообще, по целым вселенным, вижу я.
Отчего-то правда создается впечатление, что спицилист сугубо опеннетный, у которого от упоминания паскаля просто начинает подпекать.


"Представлен Lucet, компилятор для WebAssembly"
Отправлено аноним2019 , 31-Мрт-19 11:49 
просто оставлю это сдесь

https://lazarusccr.github.io/apps/


"Представлен Lucet, компилятор для WebAssembly"
Отправлено x3who , 01-Апр-19 11:03 
"37 apps in our registry" - странно что так мало, язык же действительно хороший.

"Представлен Lucet, компилятор для WebAssembly"
Отправлено НяшМяш , 31-Мрт-19 17:32 
Тебе нужно - напиши патч.

"Представлен Lucet, компилятор для WebAssembly"
Отправлено Брат Анон , 02-Апр-19 08:25 
Вася поверх Люси? Извращенцы какие-то))