The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Проект Browsix развивает окружение для запуска Unix-программ в браузере

12.12.2016 19:07

В рамках проекта Browsix развивается фреймворк для обеспечения работы обычных Unix-приложений в web-браузере. Особенностью разработки является то, что немодифицированные программы запускаются как процессы в специальном Unix-подобном окружении, транслирующем средства для работы с процессами, ФС, сигналами и сокетами в браузерное Web API. Исходные тексты проекта написаны на языке TypeScript и распространяются под лицензией MIT.

Поддерживается запуск программ, написанных на C, C++, Go и Node.js. Например, успешно продемонстрировано выполнение в браузере LaTeX, GNU Make, HTTP-серверов на языке Go и shell-скриптов. Основу Browsix составляет ядро, написанное на TypeScript и реализующее базовые системные вызовы и возможности Unix-систем. Ядро обеспечивает запуск процессов, собранных с использованием подготовленных для разных языков программирования runtime-библиотек. Процессы выполняются параллельно, не блокируя работу со страницей. Выполнение процессов координируется встроенным планировщиком задач.

Низкоуровневые примитивы Unix зеркалируются в существующие браузерные API, что позволяет огранизовать выполнение в изолированном браузерном окружении немодифицированных приложений, пересобранных в представление на JavaScript со специальным runtime. Для компиляции программ C/C++ применяется модифицированный Emscripten, а для Go - GopherJS. Управление работой программ производится по аналогии с процессами в Unix - вначале загружаются базовые компоненты Browsix, инициализируется дерево ФС и запускаются процессы. Пользователи могут подключиться к предоставляемому Browsix TCP-порту и создавать обработчики событий, таких как запись в стандартный выходной поток или завершение процесса. Реализация файловой системы основана на наработках проекта BrowserFS.

Работа с процессами реализована на базе API Web Workers, через которой в том числе эмулируются системные вызовы fork, spawn, exec, и wait. Программам также предоставляются сигналы, обработчики сигналов, совместно используемая несколькими процессами файловая система, неименованные и именованные каналы (pipe), сокеты (можно создавать серверные и клиентские TCP-соединения). В качестве демонстрации возможностей Browsix подготовлено POSIX-подобное окружение командной строки, предлагающее shell и типовые утилиты, такие как cat, tee, echo, sha1sum и т.п.



  1. Главная ссылка к новости (https://browsix.org/...)
  2. OpenNews: Доступен язык TypeScript 2.0, продвигаемый Microsoft в качестве дополнения к JavaScript
  3. OpenNews: В написанном на JavaScript эмуляторе ПК появилась поддержка постоянного хранилища
  4. OpenNews: Представлен Cheerp 1.2, компилятор C++ в JavaScript
  5. OpenNews: Ядро и драйверы NetBSD скомпилированы в JavaScript для запуска в web-браузере
  6. OpenNews: jor1k - эмулятор OpenRISC 1000 на JavaScript, способный выполнять Linux, X и Wayland
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/45665-browsix
Ключевые слова: browsix
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (32) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Ivan_83 (ok), 19:19, 12/12/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +29 +/
    Очередная игрушка.
    Лучше бы повыкидывали с браузеров мусор не нужный чтобы они быстрее пахали и жрали меньше.
     
     
  • 2.2, A.Stahl (ok), 19:45, 12/12/2016 [^] [^^] [^^^] [ответить]  
  • +6 +/
    И куда потом девать 6 млн яваскриптистов? С таки вещами нельзя торопиться...
     
     
  • 3.17, Кот Летова (?), 22:11, 12/12/2016 [^] [^^] [^^^] [ответить]  
  • +16 +/
    Не выдержав нагрузки, сломался завод по сжиганию яваскриптщиков.
     
     
  • 4.20, solomon243 (ok), 22:19, 12/12/2016 [^] [^^] [^^^] [ответить]  
  • +/
    В этом трудно признаться, трудно поверить, но...
     
  • 2.11, анонимус (??), 21:27, 12/12/2016 [^] [^^] [^^^] [ответить]  
  • –7 +/
    >Лучше бы повыкидывали с браузеров мусор не нужный чтобы они быстрее пахали и жрали меньше.
    >Лучше бы

    Кому лучше? 99% пользователей браузера, которым браузер по сути заменил большую часть софта благодаря своим мультимедийным возможностям и прочим наворотам? Почему бы нетерпеливым (кому медленно) и бедным (у кого компьютер 10 летней давности) не решить эту проблему для себя, создав, наконец, браузер мечты?

     
     
  • 3.15, Ivan_83 (ok), 21:51, 12/12/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    У меня как раз коредуо е8400 почти десятилетней давности, и мне хватает.
    Покупать комп по мощнее - так раз ты такой умный подкинь мне и всем остальным страждущим деньжат.

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

     
     
  • 4.22, анонимус (??), 23:02, 12/12/2016 [^] [^^] [^^^] [ответить]  
  • –6 +/
    >>Покупать комп по мощнее - так раз ты такой умный подкинь мне и всем остальным страждущим деньжат.

    Умный я, а подкидывать деньжат должен тебе? Интересная "логика".
    То большинство должно подстраиваться под меньшинство, то деньжат тебе подкинуть. А может все-таки страждущие сделают себе сами, что им надо, а не будут требовать удовлетворения своих странных запросов за чужой счет? Реалии конца 2016 года таковы, что браузер - это не просто просмотрщик гипертекста, он заменяет кучу когда-то дескоптного софта. Lynx из интернета никто не удалял.

     
     
  • 5.30, Ivan_83 (ok), 03:02, 13/12/2016 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Раз денег нет то не стоило и начинать.
    Со своими мегаидеями и тормозным говнокодом и такими уродскими сайтами лучше сидеть дома и дальше греть воздух в квартире а не шлятся по инетам принуждая других к преждевременным апгрейдам и бессмысленным тратам на железо.
     
  • 5.41, Sen (?), 17:33, 14/12/2016 [^] [^^] [^^^] [ответить]  
  • +/
    зачем нужно заменять кучу быстрого и хорошо работающего софта на непроворотливое *авно? Ведь в браузер пихают всё что ни лень. Да оно кажется удобным, но на самом деле оно тормозит развитие технологий. Вместо того чтобы писать хорошие и быстрые программы выжимая из железа всё, теперь горе программисты сидят и ноют, что Intel никак не может создать быстрого процессора для их гореидей, хотя напиши это всё на нормальном языке, с процессорной оптимизацией и, о чудо, всё летало бы и сверкало... А так... тьфу... JS для недоучек...
     
  • 4.25, анонимус (??), 23:36, 12/12/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Полный маразм пытаться запускать виртуалки, бинарники и прочее в браузере, он не
    > для этого и затачивать его для этого это тупость несусветная, один
    > хер он никогда не приблизится ни к куему/виртуалбоксу ни реальному железу
    > по скорости выполнения.

    Я отвечал на вполне конкретную реплику из твоего комментария, по поводу этих виртуальных браузерных машин я не сказал ничего. Я лишь задал вопрос: для кого это будет лучше, по твоим словам, если из браузера выкинут лишнее, сделав их быстрыми и маложрущими, с учетом того, что в возможностях они при этом тоже значительно потеряют.

     
     
  • 5.31, Ivan_83 (ok), 03:14, 13/12/2016 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Практика показывает что большое разнообразие часто идёт во вред.
    Современный веб с кучей тэгов в хтмл, цсс, жабаскриптом и прочими вещами стал невероятно громозгим и глючным.
    Если посмотреть на тот же фф лет 8 назад то он был (на мой взгляд обычного читателя-смотрителя веба) ничем не хуже.
    Из доступных мне примеров: си и си++. Первый простой и могучий, где всё что нужно реализуется в либах или ручками самостоятельно, второй мостр у которого всё тянут внутрь и которого в итоге мало кто знает и понимает.
     
     
  • 6.39, анонимус (??), 20:53, 13/12/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >Практика показывает что большое разнообразие часто идёт во вред.

    Кому во вред? Подавляющему большинству простых пользователей это исключительно на пользу, т.к. новые rich web applications позволяют им делать львиную долю своих дел, не выходя из браузера. Исключительным уникумам, вроде тех, кто посылает себе html на почту ничего не мешает продолжать в том же духе. А еще лучше быть хардкорными технарями не только на словах, а и на деле тоже - собраться и запилить браузер мечты.

    >>Современный веб с кучей тэгов в хтмл, цсс, жабаскриптом и прочими вещами стал невероятно громозгим и глючным.

    Если посмотреть на тот же фф лет 8 назад то он был (на мой взгляд обычного читателя-смотрителя веба) ничем не хуже.

    Для чистоты эксперимента стоит это делать так же на сайтах 8 летней давности. Не замечаю никаких тормозов на сайтах, сделанных с умом или на раритетах 10+ летней давности. Опеннет тому пример. Дело не в браузере, дело в сайте.

     
  • 4.38, azure (ok), 18:25, 13/12/2016 [^] [^^] [^^^] [ответить]  
  • +/
    А для чего, простите, браузер?
    Браузер - это не просмотрщик видео. Выпилить поддержку видео?
    Браузер - это не аудиоплеер. Выпилить поддержку аудио?
    Браузер - это не редактор документов. Запретить гуглдоки!
    Так, по-вашему, получается?
     

  • 1.5, Васёк (?), 20:26, 12/12/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Ос идёт в браузер… Не круто
     
  • 1.7, Аноним84701 (ok), 20:32, 12/12/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Я так понимаю, HyperTerm (терминал на JS) был не достаточно хипстотен )

    Демку я не осилил:
    https://unix.bpowers.net/
    [CODE]
    $ ls
    Error while executing undefined: SyntaxError: Invalid character: '''
    $ cd ~
    /usr/bin/cd: command not found
    $ echo 1
    Error while executing undefined: SyntaxError: Invalid character: '''
    [/CODE]
    Ну и как ему передавать таб, ^D ^Z ^C и т.д. тоже не очень понятно. Разве что патчить браузер или перекостыливать на что-то другое.

    > Низкоуровневые примитивы Unix зеркалируются в существующие браузерные API, что позволяет огранизовать выполнение в изолированном браузерном окружении немодифицированных приложений, пересобранных в представление на JavaScript со
    > специальным runtime.

    Угу, только  по ресурсам, а заодно и отзывчивости (не говоря уж о качестве эмуляции) проще запустить с дюжину полноценных виртуалок, чем одно такое "окружение".

     
     
  • 2.10, Вадик (??), 21:08, 12/12/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    $ ls
    README
    bin
    boot
    index.json
    usr
    $
     
     
  • 3.40, Урри (?), 16:01, 14/12/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Но cd все равно не пашет.

    $ ls
    README
    bin
    boot
    index.json
    usr
    $ cd /
    /usr/bin/cd: command not found
    $ ls -l
    README
    bin
    boot
    index.json
    usr
    $ cd
    /usr/bin/cd: command not found
    $

     
     
  • 4.42, Аноним (-), 20:38, 14/12/2016 [^] [^^] [^^^] [ответить]  
  • +/
    $ ls usr/bin/
    cat
    cp
    curl
    echo
    exec
    grep
    head
    ld
    ls
    mkdir
    nice
    node
    rm
    rmdir
    sh
    sha1sum
    sort
    stat
    tail
    tee
    touch
    wc
    xargs
    $
     

  • 1.12, Michael Shigorin (ok), 21:34, 12/12/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    А links там работает, или опять по сети телнетом шариться?
     
  • 1.14, paulus (ok), 21:49, 12/12/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Рассчитано в основном скорее только для хромос, не более. imho
     
  • 1.16, Pahanivo (ok), 22:01, 12/12/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +7 +/
    Чето я перестаю понимать этот мир ...
     
  • 1.18, Аноним (-), 22:15, 12/12/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Им даже до Wine или Darling не дотянуть.
    Про второй тут даже не слышали никогда, вопрос почему?
    Потому что нет денег на эпплы, ясное дело.
     
     
  • 2.36, Аноним (-), 11:52, 13/12/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Сначала запусти под дарлингом графло, а потом уже расскажешь про деньги. Кстати, а что за железяка тут у меня лежит?
     

  • 1.19, Андрей (??), 22:18, 12/12/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Те, которые не участвуют в конкурсах по запутанному программированию на Си, идут запутывать весь мир в браузер.
     
  • 1.21, Аноним (-), 22:28, 12/12/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Я категорически против этой проруби в безопасности.
     
  • 1.24, Аноним (-), 23:21, 12/12/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Вот когда виртуалку с виндой и коллофдюти можно будет запустить внутри фаерфокса, запущенного внутри хрома, тогда и поговорим.
     
     
  • 2.26, user (??), 23:44, 12/12/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Главный вопрос - в какой слой засунут DRM и прочую эмуляцию ненужного телевизора.
     
     
  • 3.29, Аноним (-), 00:36, 13/12/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    DRM и виртуализация на всех уровнях, ессно.
     

  • 1.27, Аноним (-), 00:04, 13/12/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Осталось прикрутить xterm.js и можно запускать программы на *curses.
     
  • 1.28, Аноним (-), 00:35, 13/12/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ждем клиент Skype на базе Electron, запущенный в браузере. Для пущего эффекта.
     
     
  • 2.37, ram_scan (?), 16:03, 13/12/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Ждем клиент Skype на базе Electron, запущенный в браузере. Для пущего эффекта.

    Так skype4web от производителя же. Не через электрон, но типа вполне уже.

     

  • 1.33, Sfinx (ok), 06:06, 13/12/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Белларда им не перплюнуть http://bellard.org/jslinux/
     
     
  • 2.34, 1 (??), 08:52, 13/12/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Там принцип другой, эмуляция х86, а тут перекомпиляция чем-то типа эмскриптена плюс эмуляция сисколлов
     

  • 1.35, Бутират (?), 09:46, 13/12/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Наконец-то можно выкинуть богомерзкий js и писать клиент/сервер на баше
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру