Pull to refresh

Comments 19

UFO just landed and posted this here

Проблема в том, что Linux kernel мы любим за то, что оно умеет запускать бинарники. То есть всё равно упираемся в эмуляцию процессора. Или вы имеете в виду, чтобы в бинарниках для этой архитектуры тоже лежал JavaScript? Хотя, если к получившемуся ядру прикрутить Qemu в user-mode (или как оно называется) — эмуляцию процессора в пределах одного процесса… :) Да и с возможностью собрать Linux не с помощью gcc могут быть проблемы.

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

Да, нужно будет посмотреть. А то 30-40Мб страничка — это перебор.

> UPD: надо будет отдать в апстрим Emscripten свои немногочисленные наработки и баг-репорты, как это делали предыдущие портировщики Qemu и других проектов. Спасибо им за то, что была возможность неявно пользоваться их вкладом в Emscripten в рамках своей задачи

Можно поподробнее?

Если я правильно понял, то я у себя дома не смогу повторить эксперимент, потому что мне нужен патченный вашими патчами Emscripten?

Другими словами, было бы очень не плохо увидеть инструкцию по повторению всей сборки.

P.S. Я могу взяться помочь с проталкиванием и ревью патчей в Emscripten. (Уже делал это ранее).

Ещё раз спасибо. На самом деле, кое-какая инструкция есть, просто придётся подцепить изменения из моего форка репозитория Emscripten.

К тому же, например, у меня есть некая реализация системного вызова pipe2, которой, вроде, хватило, чтобы заработали всякие wakeup-ы. Но я видел обсуждение того, как правильно это реализовать — когда они это доделают "по науке", мой костыль будет не нужен, а пока пользуюсь своей реализацией.

Это где и у кого надо учиться, чтобы делать такие вещи?)

По-моему это только самообразование. А для его успешности необходимо упорство.

Зайди на Хабр, почувствуй себя тупым неучем!
Чем в итоге закончилась попытка сделать qemu.js? Статьёй на хабре?

Теоретически, она должна была закончиться второй статьёй и финальной (точнее, стабильной и замороженной) версией, но она ещё не готова — вечно находится что-нибудь более интересное и перспективное. На данный момент многие мелкие доделки запуллреквесчены в Emscripten и есть прототип с трансляцией уже в WASM (и честным TCG-бекендом) — он, вроде, существенно отзывчивее и весит поменьше, но есть один маленький нюанс: отсутствует поддержка блочных устройств. Дело в том, что они в QEMU традиционно делаются через корутины, а корутины поддержать в JS или WASM проблематично (нет низкоуровневых манипуляций стеком и с потоками некоторые проблемы), поэтому они делаются через предоставленный Emscripten-ом интерпретатор (Emterpreter). Заставить компилятор разделить код на интерпретируемую и "нативно" запускаемую часть в этот раз, увы, не получилось. Нужно ещё попробовать.

Мне кажется, это вполне тянет на статью, т.к. я мало что понял из описанного :)

Если интересно, вот здесь есть обсуждение реализации Binaryen TCG Backend. Здесь — прототип, но в Хроме от него быстро падает вкладка (не готовы они к тому, что будет больше ~1000 WASM-модулей), ну и с лицензией у него есть некие шероховатости — QEMU как целое распространяется под GPLv2, а Binaryen — под Apache 2.0. Они говорят, что есть надежда это как-то "починить".

Sign up to leave a comment.

Articles