Snusmumriken
На самом деле, для этого не надо ничего делать, кроме как создать пустой файл. Исходного кода нет — можно вывести "ничего". Кстати, забавная тема, надо попробовать нормальный куайн.
Snusmumriken
Ну технически, это программа. Это в сишке обязательно должна присутствовать функция main, поэтому в любом случае придётся изгаляться. А тут — программа вполне "исполняется" и в таком виде.
Lucky
Утро, чятик!
Lucky
Кто что думает о fengari? https://fengari.io
Maxim
Кто что думает о fengari? https://fengari.io
Думаю что это ахуенная штука! корутины в браузере это то что нехватает в js! один yield чего стоит! вот это поворот!
Maxim
не очень понимаю, ирония это или нет
с одной стороны - это круто, с другой стороны если внимательно прочитать описание библитеки ... в любом случае автор заморочился и это плюс ему в карму, уверен что вы со мной согласитесь в этом суждении
Anonymous
По поводу фенгари и коротин. В джаваскрипте современном, по моему и так есть асинк / авейт. Так что это не киллерфича. А вот нормальный язык прлграммирования для браузера это да. Но поздно, щас эти сраные фреймворки везде, так что в продукшн такой код никто не пустит
Anonymous
Асинк в определении функции, а авейт это и есть коротине.йиелд()
Pavel
написал на lua, cскомпилил. запустил в браузере.
mva
ребят - а webasembly разве не про это?
https://hackernoon.com/why-we-rewrote-lua-in-js-a66529a8278d
mva
начинай читать с Existing ways of using Lua in the browser
mva
особенно интересно, что автор lua.vm.js - является соавтором fengari ;)
Pavel
и? ну то есть вопрос скорее - вам нужно писать для браузера прямо счас и на луа? Почему не дождаться вменяемой поддержки webasembly ?
Snusmumriken
написал на lua, cскомпилил. запустил в браузере.
На самом деле, примерно так и есть. Правда, все либы надо писать на pure lua, и мутить кучу биндингов/врапперов, чтобы тестировать и в PUC LUA, и в браузере.
Lucky
Ну, я например очень рад, что можно писать на луа прям сейчас, не дожидаясь webasembly
Lucky
например для вот таких штук https://instead-hub.github.io/instead-js/
Lucky
и вот таких штук https://technix.github.io/instead-playground/
Snusmumriken
Вот тут неплохо описаны последствия неуёмного использования webassembly. Со стёбом над жаваскриптом, но тем не менее. https://www.destroyallsoftware.com/talks/the-birth-and-death-of-javascript
Pavel
Вот тут неплохо описаны последствия неуёмного использования webassembly. Со стёбом над жаваскриптом, но тем не менее. https://www.destroyallsoftware.com/talks/the-birth-and-death-of-javascript
а крутко расскажешь? нет времни смотреть….. а как показывает практика…закладки смотрятся примерно...никогда
Pavel
это что? виртуальные машины ? Wine - вроде транслятор
Saphire
Ну
Saphire
Это в файрфоксе
Saphire
Запустили хром
Saphire
Там запустили иксы
Saphire
Вайн
Saphire
И гимп
Snusmumriken
это что? виртуальные машины ? Wine - вроде транслятор
Это webassembly гимп, который запущен в webassembly wine, который запущен на webassembly x-window, который запущен на сишном ядре (линукс), скомпилированном asm.js, который запущен в хроме. Но постойте, хром — тоже написан на сишке, поэтому его тоже можно собрать для webassembly, и запустить на webassembly-coco(cacao), который будет работать в webassembly-сишном окружении вм (яблоко), скомпилированном asm.js и запущенном уже в фаерфоксе. Стоять, фаерфокс тоже написан на сишке! Можно продолжить запускать уже его, продолжая цепочку.
Snusmumriken
Карочи, суть в том, что при попытке портирования чего-то под webassembly, мы наблюдаем чудовищные провалы производительности, если в зависимости у твоей программы есть ОС — придётся компилировать и эту ОС, чтобы запустить в ней сию программу (или дописывать под вызов "нативных браузерных" методов/лепления заглушек, а ведь ещё могут быть io-операции, с которыми у браузера туго). А потом пересылать это всё браузеру, чтобы он запустил. Даже докер оказывается эффективнее, как ни странно ))
Pavel
а что не так с докером?
Pavel
По сравнению с ностоящими виртуалкам он реально быстрее_)
Snusmumriken
Ну он виртуализирует, жрёт больше памяти чем при нативном запуске и забирает на виртуализацию системных вызовов ~20% производительности машины.
Snusmumriken
Что с ним не так? Он _медленнее_ нативного, и кушает поболее. Электричество прожигается впустую, всё такое.
Pavel
он работает поверх cgroups
Pavel
он медленее нативного. он кушает больше но оверхед далеко не 20%
Lucky
сжечь еретиков
Saphire
Насчёт докера и ВМ - это болезнь именно не линуксового докера. На линуксе у него очень маленький memory footprint (ну кроме прог самих) НА винде его все хотят в топку и реку утопить.
Saphire
...докер, но на винде
Pavel
...докер, но на винде
Так он внутри вируалки
Saphire
Только там жуткий 3.14здец
Pavel
и на маках внутри виртуалки
Saphire
Ну да, потому и 3.14
Saphire
Так снус кажется про этот случай и говорил?
Pavel
А. просто я бы не назвал докер внутри виртуалки докером. он же только для девелоперов. не для продакшн
Pavel
Или есть кейсы? 0_0
Snusmumriken
> Так снус кажется про этот случай и говорил? Ну примерно. Энивей, даже то что ОС - виртуализирует память у программ — это кошмарный оверхед. И деление на уровни-кольца вызовов — тоже кошмарный костыль, который жрёт больше чем возможно. Карочи, наши компы гораздо, гораздо быстрее чем кажутся. Можно загружать ОС за пол секунды с момента нажатия на кнопку включения ПК, если нормально написать внутрянку, и можно производить холодный запуск гугл-хрома с тысячей вкладок ещё до того момента, как у мышки отожмётся клавиша после дабл-клика на иконке. Правда, этим никто не будет заниматься, для этого нужно много "рокстаров" : ) Но webassembly — даёт замечательную возможность сделать всё в миллиард раз медленнее, жручее и неоптимальнее.
Lucky
Думается, кто-то из линупсов всё же да
Saphire
.______. Если ты против виртуализации памяти, то простите, но что за *****
Snusmumriken
.______. Если ты против виртуализации памяти, то простите, но что за *****
Это лишний слой абстракции, который замедляет процесс. Твой комплюхтер, за день, набирает несколько минут реального времени на трансляцию.
Pavel
> Так снус кажется про этот случай и говорил? Ну примерно. Энивей, даже то что ОС - виртуализирует память у программ — это кошмарный оверхед. И деление на уровни-кольца вызовов — тоже кошмарный костыль, который жрёт больше чем возможно. Карочи, наши компы гораздо, гораздо быстрее чем кажутся. Можно загружать ОС за пол секунды с момента нажатия на кнопку включения ПК, если нормально написать внутрянку, и можно производить холодный запуск гугл-хрома с тысячей вкладок ещё до того момента, как у мышки отожмётся клавиша после дабл-клика на иконке. Правда, этим никто не будет заниматься, для этого нужно много "рокстаров" : ) Но webassembly — даёт замечательную возможность сделать всё в миллиард раз медленнее, жручее и неоптимальнее.
эм……вируализация памяти даст тебе повышение расхода памяти. но скорости операций это почти не сказываетсяї
Snusmumriken
Лишняя операция трансляции. Превращаем 0x123123 адреса "в приложении" в 0x531413415114 адреса "у плашки памяти".
Pavel
про cpu - виртуализация поддерживается на уровне процессорных инструкций
Pavel
и как следствие - получаем крайне маленький оверхед
Pavel
ты преувеличиваешь влияние вируализации.
Saphire
Виртуализация памяти это очень старая и отточенная технология. Она ещё в мейнфреймов 60-70х годов у нас. Этим процессом заведует MMU. Это схема наверняка делает это быстрее чем проц может обратиться к памяти.
Snusmumriken
Карочи, если бы в программисты пускали только "профессоров", которые сначала на бумажке отлаживают прогу в машинных кодах а потом её пишут, у нас возможно была бы куда более уязвимая техника, но отлично работающая )) А ещё, не было бы игрушек и кнопочек с формочками, и луёв тоже.
Snusmumriken
собственно да. это как миниму делает работу памяти более безопасной. сендбоксы наше все
Это очевидно. Я просто показываю обратную крайность webassembly. Что можно выжать из железа, если отказаться от бесконечных слоёв виртуализаций/трансляций/перезаписывания сто тыщ раз в наносекунду одного и того же, и "нормально писать".
Saphire
Дело в том, что MMU это уже просто неотемлимая часть платформы x86 и x64. И таки там куча режимов самого проца. Сейчас думаю, с трудом, но можно запустить древний дос на современной машине.
Snusmumriken
Дело в том, что MMU это уже просто неотемлимая часть платформы x86 и x64. И таки там куча режимов самого проца. Сейчас думаю, с трудом, но можно запустить древний дос на современной машине.
На самом деле довольно легко. Инструкции поддерживаются — и норм. Вот когда начнут отказываться от "старых инструкций" — тогда да, но !потеря обратной совместимости!. Мой ноут изначально поставлялся с досом. Относительно современным, но тем не менее. В qemu я ещё запускал разные древности.
Saphire
Ну... прикол с "обратной совместимостию" в том, что даже современные программы это поддерживают Если я не ошибаюсь, то на самом деле древние команды x86 сейчас по сути ВМка на современном проце?
Snusmumriken
Современные программы — не железо. Они крутятся в окружении других программ. И если апи ОС меняется — перестаёт работать и программа.
Snusmumriken
А от 32-битных инструкций, помнится, ещё никто не отказывался, хе. 16-битные — да, в виде "вм".
Saphire
...а ты теперь заставь абсолютно всех перекомпилировать их программы под новую архитектуру процессоров. Всем п-й к сожалению, и такова реальность. А насчёт 32 бит - вините винду и их крах с вистой. Именно в ней они хотели мейнстримнуть 64 бита, но... они не дописали абстракцию и совместимость для 32 бит. И у них Замечательные Решения были насчёт 32 и 64 битных лицензий на которые они позже забили и теперь ключ просто от редакции а не битный. Они конечно это потом пофиксили, но.. осадок остался. И компиляторы тоже больно кусаются на винде. Так что рядовой разработчик под винду не задумается не то что бы там писать под линукс, писать под АРМ... Он не задумается даже на 64 бита написать! Но таки да, благодаря окошечкам, у нас тепер зоопарк 32битных прог в 64х битном мире. Даже на том же линуксе, где 64 бита это сцуко стандарт, ТОТ ЖЕ СТИМ ТРЕБУЕТ КОПИЮ ВСЕЙ ОПЕРАЦИОНКИ В 32 БИТНЫХ ЛИБАХ ибо винда же
Saphire
Вот поэтому просто так взять и портировать всю современную экосистему с x86 и обратной совместимости очень очень проблематично. Также, всё ещё в использовании чисто 32х битные процессоры интел в некоторых устройствах. Да, у них были (или даже до сих пор есть) 32х битные современные процессоры как минимум 2008го года производства. ---- Ага: Intel Atom - линейка маломощных встраиваемых процессоров которая получила поддержку AMD64 ажжжж в... 2008 и 2010 году. Это для полноразмерных компов и мобильных (т.е. переносных) устройств
Dika
Давай портируем её на webassembly : )
уже портировали емнип
Saphire
уже портировали емнип
http://example.qt.io/qt-webassembly/widgets/richtext/textedit/textedit.html
Anonymous
Сегментация и кольца защиты не несут оверхеда, т.к. весь код выполняется в плоской модели памяти сейчас , ну и в лонг моде
Anonymous
Виртуальную память надо выпилить , да. Как и программирование на с/с++