Консорциум W3C объявил о готовности спецификации, стандартизирующей промежуточный код WebAssembly 3.0 и связанный с ним API, позволяющий создавать высокопроизводительные приложения, переносимые между браузерами и аппаратными платформами. WebAssembly предоставляет не зависящий от браузера универсальный низкоуровневый промежуточный код для выполнения приложений, скомпилированных из различных языков программирования...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=63899
хоспаде, оно ещё нигде не используется, а они уже два раза обратную
совместимость сломали
То есть совместимость надо ломать, когда ей уже пользуются вовсю? Л - Логика.
Оглянись вокруг - везде так делают.
Так лучше пусть сейчас ломают, чем потом
Потом тоже сломают, не переживайте.
Опыт ПитоноПерлоРастов показывает, что так можно делать.
Ну и сишники с плюсовиками тоже это делают, просто не так жёстко.
Не то что бы это хорошо. . .
Это не хорошо и не плохо.
Это неизбежно.Когда читаешь статьи по C++ в которых челны комитета жалуются "нам нужно сломать АБИ, тогда мы получим ускорение некоторых функций до 3 раз, но сообщество будет недовольно и поэтому оно откладывается"...
Старое нужно выбрасывать и главное вовремя.
Без этого старого они нафиг никому не нужны. Это их конек. Иначе проигрывает Rust по всем статьям. То есть совместимость сломаешь, но выигрышь локальный. А чтобы починить все - это уже новый язык
(не проигрывает)
В расте гавно обработка ошибок с детскими болячками.Нет перегрузок.
Нет шаблонов, а они мощнее генериков раста. + никто не хочет дублировать логику и в интерфейсе и в теле, а раст заставляет.
Енамы в язык зачем та притащили. Хотя лучше былоб студ вариант как в плюсах.
Про паттерн матчинг и говорить не стоит.
Эта "безопасность" не безопасность и опытным разработчикам не нужна. Она была бы норм если бы компилятор сам проставлял это все, но он этого не делает.
Ну и ещё проблем куча но мне уже лень
Ну хоть с дин трейтами и синтаксисом там приятно всо и лучше плюсов. Но этого недостаточно.
> В расте гавно обработка ошибок с детскими болячками.Пруфы или примеры увидеть бы.
А то косплеете лебедева)> Нет шаблонов, а они мощнее генериков раста. + никто не хочет дублировать логику и в интерфейсе и в теле, а раст заставляет.
Ты про темплейты от которых хочется рыгать и плакать?
Наверное одна из самых убогих "фич".> Енамы в язык зачем та притащили. Хотя лучше былоб студ вариант как в плюсах.
Вкусовщина.
> Про паттерн матчинг и говорить не стоит.
Ага.
В дыряшке даже нельзя сделать банальный
let foo = match { ... }
может они это исправили, но сомневаюсь.> Эта "безопасность" не безопасность и опытным разработчикам не нужна.
Ну так покажи мне этих "опытных".
Пока плюсы ничем не лучше сишки, в плане типичных дыр.
Тот же гугл его признал безнадежным и новый код старается писать на хрусте.> Ну хоть с дин трейтами и синтаксисом там приятно всо и лучше плюсов. Но этого недостаточно.
Проверка заимствований и лайфтвймов это не фича?))
>Пруфы или примеры увидеть бы.А то косплеете лебедева)
Пример 1. Функция A вызывает функции B и C. Функция B как ошибку возвращает целочисленное число, а C - строку. Функция A ещё может вернуть число с плавающей точкой в качестве ошибки. Но чтобы создать такую функцию A, нужно будет создавать новый енам, в котором перечислять ошибки B, ошибки C, да ещё и новые добавлять. Есть Anyhow, но это костыль, который стирает типы вообще и информация теряется. В плюсах, впрочем, она тоже теряется. Но там есть пропозал и даже готовые реализации, где эта проблема исправлена. В расте реализации с исправлением этого уже есть?И ещё один пример. Есть диапазон A, допустим, это std::ranges::transform_view, я могу без проблем закинуть его в fold_left, в котором могу выбросить свои ошибки, при этом внутри transform ошибки тоже могут быть свои. И при этом все будет работать и не нужно ничего дублировать и специально про ошибки писать. В расте так делается? А далают так разработчики библиотек?
>Ты про темплейты от которых хочется рыгать и плакать?
>Наверное одна из самых убогих "фич".
>> Нет шаблонов, а они мощнее генериков раста. + никто не хочет дублировать логику и в интерфейсе и в теле, а раст заставляет.
> Ты про темплейты от которых хочется рыгать и плакать?
> Наверное одна из самых убогих "фич".Ага, про них. И это не просто фича, это киллер фича плюсов. В расте ничего на уровне с ними нет. Только макросами костылят то что в плюсах делается на уровне типов.
>> Енамы в язык зачем та притащили. Хотя лучше былоб студ вариант как в плюсах.
> Вкусовщина.Не вкусовщина. Языковые фичи труднее разрабатывать и поддерживать в языке, когда библиотеку править легко. И зачем плодить костыль, когда можно было бы добавить новые более общие фичи, на которых бы выражалось вот это. То что там есть это костыли.
>> Про паттерн матчинг и говорить не стоит.
> Ага.
> В дыряшке даже нельзя сделать банальный
> let foo = match { ... }
> может они это исправили, но сомневаюсь.К паттерн матчингу те же претензии что и к енамам. Костыль.
>> Эта "безопасность" не безопасность и опытным разработчикам не нужна.
> Ну так покажи мне этих "опытных".
> Пока плюсы ничем не лучше сишки, в плане типичных дыр.
> Тот же гугл его признал безнадежным и новый код старается писать на
> хрусте.Те кто в комитете стандартизации C++ сидят. Вот эти они опытные. Уже достаточно?
>> Ну хоть с дин трейтами и синтаксисом там приятно всо и лучше плюсов. Но этого недостаточно.
> Проверка заимствований и лайфтвймов это не фича?))Не фича т.к. нужно явно всю эту говну прописывать. Делал бы это компилятор, проблем бы не было, опять же. Но он так не делает.
>> Ты про темплейты от которых хочется рыгать и плакать?
> Ага, про них. И это не просто фича, это киллер фича плюсов.Настолько киллер что от них отказываются крупные игроки (те кто могут себе это позволить))
В темплейтах "очень удобно" разбирать ошибки, дебажить, особенно если туда попало что-то
not constrained в параметрах.> К паттерн матчингу те же претензии что и к енамам. Костыль.
Не буду спорить, кажется это бесполезно.
Как ты по другому сделаешь ветвление в зависимости от условного енама с ассоциативными значениями?> Те кто в комитете стандартизации C++ сидят. Вот эти они опытные. Уже достаточно?
Это те кто почти порвался на две части на вопросе "как делать Safe C++"?
Зачем вообще Опытным™ добавлять какой-то Safe?> Не фича т.к. нужно явно всю эту говну прописывать.
Да, тут я соглашусь.
Всю дыряшчную г0внину рано или поздно придется переписать.
>>> Ты про темплейты от которых хочется рыгать и плакать?
>> Ага, про них. И это не просто фича, это киллер фича плюсов.
> Настолько киллер что от них отказываются крупные игроки (те кто могут себе
> это позволить))Те кто отказываются, возможно, имеют у себя недостаточно опытных и умелых разработчиков на плюсах.
> В темплейтах "очень удобно" разбирать ошибки, дебажить, особенно если туда попало что-то
> not constrained в параметрах.Ну это skill issue называется. С опытом навык разбирать там ошибки приходит.
>> К паттерн матчингу те же претензии что и к енамам. Костыль.
> Не буду спорить, кажется это бесполезно.
> Как ты по другому сделаешь ветвление в зависимости от условного енама с
> ассоциативными значениями?ифчейн с std::get_if, да std::visit. Можно использовать родные перегрузки языка и реализовать паттерн Overloaded. Если нужно пробрасывать ретурны, эту фичу можно было бы добавить отдельно и переиспользовать.
>> Те кто в комитете стандартизации C++ сидят. Вот эти они опытные. Уже достаточно?
> Это те кто почти порвался на две части на вопросе "как делать
> Safe C++"?
> Зачем вообще Опытным™ добавлять какой-то Safe?Потому что на C++ пишут не только опытные. А разбирают фичи они не только для себя, а для компании, от кого они в комитет и пришли. Опытным не нужно.
>> Не фича т.к. нужно явно всю эту говну прописывать.
> Да, тут я соглашусь.
> Всю дыряшчную г0внину рано или поздно придется переписать.А может нормальный ответ дадите?
>>> Эта "безопасность" не безопасность и опытным разработчикам не нужна.
>> В кои то веки конструктивная критика раста
> Да, очень конструктивно. Даже добавить нечего. 🤣И что же тут неконструктивного? Полной безопасности в Rust нет. Вы так же можете отстрелить себе колени не притронувшись к unsafe вообще. Т.е. он просто уменьшает кол-во ошибок. Да, он делает это чуть лучше чем плюсы. Только плюсы не требуют везде расставлять лайфтаймы. А когда работаешь на C++ долго, про все ногострелы становится понятно и ошибок конкретно с памятью становится меньше.
> Полной безопасности в Rust нет.О "полной" говорят только воины против Раста вроде вас. Сами чушь придумали - сами разоблачаете.
Есть полная безопасность при работе с памятью.
> А когда работаешь на C++ долго, про все ногострелы становится понятно и ошибок конкретно с памятью становится меньше
Ну да: "чтобы не было ошибок, просто не делайте ошибки". Гениально простое решение! Как де раньше до этого не додумались?
>> Полной безопасности в Rust нет.
> О "полной" говорят только воины против Раста вроде вас. Сами чушь придумали
> - сами разоблачаете.
> Есть полная безопасность при работе с памятью.Про безопасность при работе с памятью и речь. Её нету.
>> А когда работаешь на C++ долго, про все ногострелы становится понятно и ошибок конкретно с памятью становится меньше
> Ну да: "чтобы не было ошибок, просто не делайте ошибки". Гениально простое
> решение! Как де раньше до этого не додумались?Так опытные их и не делают. Точнее делают сильно меньше чем думают пропагандисты раста.
>> Есть полная безопасность при работе с памятью.
> Про безопасность при работе с памятью и речь. Её нету.Что значит нету?
Код который не в unsafe получает гарантии.
Не очень понятно? что значит "её нету". Мысль стоит развернуть.> Так опытные их и не делают. Точнее делают сильно меньше чем думают пропагандисты раста.
Ну так клонируйте опытных.
От того что где-то есть шумахер - это не повод разрешать в городе ездить на 100км/ч.
Поэтому был сделан раст. Чтобы не тратить бесполезно усилия для ручного управления и отслеживания кто-кого-когда и можно ли делать free.ps по поводу "опытные их и не делают"
думаешь все дыры в ядре написали васяны-смузихлебы?
Не, там диды по 20+ лет опыта разработки.
А ошибки такие же.
>>> Есть полная безопасность при работе с памятью.
>> Про безопасность при работе с памятью и речь. Её нету.
> Что значит нету?
> Код который не в unsafe получает гарантии.
> Не очень понятно? что значит "её нету". Мысль стоит развернуть.Ну то и значит. Что можно в коде на 100% без unsafe получить сегфолт.
>> Так опытные их и не делают. Точнее делают сильно меньше чем думают пропагандисты раста.
> Ну так клонируйте опытных.
> От того что где-то есть шумахер - это не повод разрешать в
> городе ездить на 100км/ч.
> Поэтому был сделан раст. Чтобы не тратить бесполезно усилия для ручного управления
> и отслеживания кто-кого-когда и можно ли делать free.Поэтому тратят усилия на еблю с лайфтаймами везде, да. А чем больше опыта, тем меньше усилий на это тратится.
> ps по поводу "опытные их и не делают"
> думаешь все дыры в ядре написали васяны-смузихлебы?
> Не, там диды по 20+ лет опыта разработки.
> А ошибки такие же.А в ядре и не плюсы и ошибку допустить легче.
> в коде на 100% без unsafe получить сегфолт.А можно пример или ссылку на обсуждение или баг?
Интересно посмотреть что там.> Поэтому тратят усилия на еблю с лайфтаймами везде, да. А чем больше опыта, тем меньше усилий на это тратится.
Слава богу в других правильных™ ЯП это не нужно.
Ну значит перейдем на эти крутые языки.
Если они существуют.
>> в коде на 100% без unsafe получить сегфолт.
> А можно пример или ссылку на обсуждение или баг?
> Интересно посмотреть что там.https://github.com/Speykious/cve-rs
> https://github.com/Speykious/cve-rsА... любимая игрушка растохейтеров.
Чуваки всего неделю целым консилиумом ломали раст.
github.com/Speykious/cve-rs/issues/4
Напили свой null_mute используя transmute...
И только тогда получили ошибку.Извини, такой "серьезный аргумент" будет только для умственно отсталых.
Я уже молчу про то, что не все так хорошо с этим примером
https://github.com/Speykious/cve-rs/issues/3
We've been defeated by Miri.
> Про безопасность при работе с памятью и речь. Её нету.Та самая мощная аргументация. Ну, что тут сказать?..
> Точнее делают сильно меньше чем думают пропагандисты раста.
То-то я каждую неделю читаю тут про CVE с типичными use-after-free, вызодами за пределы буфера и т.п.
>> Про безопасность при работе с памятью и речь. Её нету.
> Та самая мощная аргументация. Ну, что тут сказать?..
>> Точнее делают сильно меньше чем думают пропагандисты раста.
> То-то я каждую неделю читаю тут про CVE с типичными use-after-free, вызодами
> за пределы буфера и т.п.Много где там модерн плюсы? А не Си или Си с классами
>> Про безопасность при работе с памятью и речь. Её нету.
> Та самая мощная аргументация. Ну, что тут сказать?..Выссказывайте претензии нормально. В Rust нет полностью безопасной работы с памятью. Даже если в проекте нет ни строчки с unsafe, как и сторонних библиотек.
> Выссказывайте претензии нормально. В Rust нет полностью безопасной работы с памятью.Ну так высказывай нормально. Начни с пруфа на это утверждение.
>> Выссказывайте претензии нормально. В Rust нет полностью безопасной работы с памятью.
> Ну так высказывай нормально. Начни с пруфа на это утверждение.```
pub trait __ {
type __<L, R>: __<__<L, ()> = R>;
fn transmute<R>(self) -> R;
}
impl<T> __ for T {
type __<L: __<__<<R::__<R, L> as __>::__<R, ()>, ()> = R>, R: __> = L;
fn transmute<R: __>(self) -> <R::__<R, Self> as __>::__<R, ()> {
self
}
}fn main() {
let s: String = vec![65_u8, 66, 67].transmute();
println!("{}", s); // prints "ABC"
}```
Ты бы хоть ссылку приложил /_-
github.com/rust-lang/rust/issues/135011В кратце: если специально написать полотно кода, то можно вызвать баг компилятора.
Что собственно ты и показал в своем примере.Случайно написать такое весьма сложно)
Думаю это стоит почининить когда-нибудь.Но оно весьма отличается от дыряшки или плюсов, по сложности исполнения:
int main() {
int *ptr = (int *)malloc(sizeof(int));
*ptr = 42;
free(ptr);printf("%d\n", *ptr);
return 0;
}
>[оверквотинг удален]
> Случайно написать такое весьма сложно)
> Думаю это стоит почининить когда-нибудь.
> Но оно весьма отличается от дыряшки или плюсов, по сложности исполнения:
> int main() {
> int *ptr = (int *)malloc(sizeof(int));
> *ptr = 42;
> free(ptr);
> printf("%d\n", *ptr);
> return 0;
> }А опытные такие проблемы и не допускают. Да и есть -fanalyzer у gcc.
> А опытные такие проблемы и не допускают. Да и есть -fanalyzer у gcc.Да уже скажи где я могу увидеть эти "опытных"??!
Хотя бы глазком посмотреть.Вон проводили аудит LLVM.
opennet.ru/opennews/art.shtml?num=60707
Реально сложный проект, который обмазан автотестами, санитайзерами, фаззингом
"С 1.1 до 2.4 млн строк кода увеличен охват кодовой базы, вовлечённой в fuzzing-тестирование. Также был расширен используемый для fuzzing-тестирования инструментарий, а число применяемых для проверки fuzzing-движков увеличено с 12 до 15"И что?
А все равно "удалось выявить 12 новых проблем, из которых 8 были вызваны ошибками, приводящими к повреждению памяти. 6 выявленных уязвимостей приводили к переполнению буфера, 2 к обращению к уже освобождённой памяти, 3 - к разыменованию нулевых уязазателей и 1 к чтению из области вне выделенного буфера"
Ты еще https://github.com/Speykious/cve-rs на серьезных щах упомяни, лол.
> Эта "безопасность" не безопасность и опытным разработчикам не нужна. Она была бы норм если бы компилятор сам проставлял это все, но он этого не делает.В смысле "не деалает"? А borrow checker что, не в компиляторе?
>> Эта "безопасность" не безопасность и опытным разработчикам не нужна. Она была бы норм если бы компилятор сам проставлял это все, но он этого не делает.
> В смысле "не деалает"? А borrow checker что, не в компиляторе?Как раз таки borrow checker это то что пользуется лайфтаймами и прочим, что руками расставил программист. Расставлялись бы лайфтаймы автоматически и было бы нормально.
> Расставлялись бы лайфтаймы автоматически и было бы нормальноСорян, но компилятор твои мысли не может читать.
>> Расставлялись бы лайфтаймы автоматически и было бы нормально
> Сорян, но компилятор твои мысли не может читать.Только gcc почему-то научился и прикрутил -fanalyzer для сишки чтобы как раз таки заменять ручное просставление лайфтаймов мощным статическим анализом.
> Только gcc почему-то научился и прикрутил -fanalyzer для сишкиАж в GCC 10.
> таки заменять ручное просставление лайфтаймов мощным статическим анализом.Настолько мощным, что ошибки никуда не делись.
Возможно Настоящие Програмисты™ его даже не запускают.
Зачем? Они же и так профи.Оно будет работать тогда, когда станет обязательным, хотя бы по умолчанию.
>> Только gcc почему-то научился и прикрутил -fanalyzer для сишки
> Аж в GCC 10.
>> таки заменять ручное просставление лайфтаймов мощным статическим анализом.
> Настолько мощным, что ошибки никуда не делись.ССЗБ что не применяют. Это их проблемы, а не проблемы языка.
> ССЗБ что не применяют. Это их проблемы, а не проблемы языкаЕсли на язык не позволяет безопасно работать с памятью, не обмазавшись для этого кучей левых анализаторов - это как раз таки проблема языка. Причем проблема, заботливо прописаная дидами в стандартах.
> Только gcc почему-то научился и прикрутил -fanalyzer для сишки чтобы как раз таки заменять ручное просставление лайфтаймов мощным статическим анализом.Ты не поверишь, но программисты юзали статические анализаторы для C и C++ десятками лет до того, как оно появилось в GCC. Вот это поворот, да? 😧
Еще большим шоком для тебя будет то, что все эти анализаторы так и не искоренили типичные ошибки. И уже точно не заменили (и не заменят) ручное расставление лайфтаймов.
Ну и контрольным выстрелом для тебя цитата из мануала GCC по -fanalyser:
It is neither sound nor complete: it can have false positives and false negatives. It is a bug-finding tool, rather than a tool for proving program correctness.
В общем, чел, твои претензии и аргументы с потрохами выдают из тебя гордого писателя хеэлоуворлдов в одно лицо, который ни в одном реальном коммерческом проекте не участвовал, и, вероятно, даже ВУЗа по специальности не заканчивал. Последнее очевидно из твоих фантащий про "автоматическую расстановку лайфтаймов", то есть про "Проблему остановки" ты не слыхал.
>> Только gcc почему-то научился и прикрутил -fanalyzer для сишки чтобы как раз таки заменять ручное просставление лайфтаймов мощным статическим анализом.
> Ты не поверишь, но программисты юзали статические анализаторы для C и C++
> десятками лет до того, как оно появилось в GCC. Вот это
> поворот, да? 😧До gcc таких продвинутых не было.
>[оверквотинг удален]
> не заменят) ручное расставление лайфтаймов.
> Ну и контрольным выстрелом для тебя цитата из мануала GCC по -fanalyser:
> It is neither sound nor complete: it can have false positives and
> false negatives. It is a bug-finding tool, rather than a tool
> for proving program correctness.
> В общем, чел, твои претензии и аргументы с потрохами выдают из тебя
> гордого писателя хеэлоуворлдов в одно лицо, который ни в одном реальном
> коммерческом проекте не участвовал, и, вероятно, даже ВУЗа по специальности не
> заканчивал. Последнее очевидно из твоих фантащий про "автоматическую расстановку лайфтаймов",
> то есть про "Проблему остановки" ты не слыхал.Только вот у раста тоже есть false negatives. Никакой полноты в сфере безопасности у раста не было. Можно получить сегфолт без unsafe кода. И да, быть может оно не найдёт некоторые ошибки, но большинство ошибок в коде найдёт при развитии этого далее.
> До gcc таких продвинутых не былоНу теперь заживем!
"It is neither sound nor complete"
"The analyzer is only suitable for use on C code in this release."...а, нет, не заживем - придется ждать, пока "такой продвинутый" продвинется дальше. 😭
> Только вот у раста тоже есть false negatives.
> Никакой полноты в сфере безопасности у раста не было.
> Можно получить сегфолт без unsafe кодаНи одной ссылки в доказательство этих утверждений ты, конечно же, не приведешь.
> Ни одной ссылки в доказательство этих утверждений ты, конечно же, не приведешь.Зачем сразу ссылки. Могу прямо кодом дать.
pub trait __ {
type __<L, R>: __<__<L, ()> = R>;
fn transmute<R>(self) -> R;
}
impl<T> __ for T {
type __<L: __<__<<R::__<R, L> as __>::__<R, ()>, ()> = R>, R: __> = L;
fn transmute<R: __>(self) -> <R::__<R, Self> as __>::__<R, ()> {
self
}
}fn main() {
let s: String = vec![65_u8, 66, 67].transmute();
println!("{}", s); // prints "ABC"
}
> Зачем сразу ссылки. Могу прямо кодом дать.То есть ты нашел в инете ссылку на баг компилятора, который воспроизводится через акробатику с transmute() - и преподносишь это как доказательство отсутствия гарантий в языке? Я все правильно понял?
А еще более жалкий аргумент ты не мог придумать? Уважающие себя воины против Раста в таких случаях дают ссылку на https://github.com/Speykious/cve-rs Учись у братьев по оружию!
> В расте гавно обработка ошибок с детскими болячками.А что за детские болячки-то?
И, главное: а как правильно надо?
>> В расте гавно обработка ошибок с детскими болячками.
> А что за детские болячки-то?Пример 1. Функция A вызывает функции B и C. Функция B как ошибку возвращает целочисленное число, а C - строку. Функция A ещё может вернуть число с плавающей точкой в качестве ошибки. Но чтобы создать такую функцию A, нужно будет создавать новый енам, в котором перечислять ошибки B, ошибки C, да ещё и новые добавлять. Есть Anyhow, но это костыль, который стирает типы вообще и информация теряется. В плюсах, впрочем, она тоже теряется. Но там есть пропозал и даже готовые реализации, где эта проблема исправлена. В расте реализации с исправлением этого уже есть?
Пример 2. Есть диапазон A, допустим, это std::ranges::transform_view, я могу без проблем закинуть его в fold_left, в котором могу выбросить свои ошибки, при этом внутри transform ошибки тоже могут быть свои. fold_left нужно прекратить выполнение сразу после возникновения ошибки в рейндже и пробросить её дальше. И при этом все будет работать и не нужно ничего дублировать и специально про ошибки писать. В расте так делается? А далают так разработчики библиотек? Спойлер: делается но идеология раста против использования паник как замены исключений.
> И, главное: а как правильно надо?
Исключения как в C++, но с автоматически выводимыми из тела типами выбрасываемых исключений. И научить компилятор в оптимизацию исключений если исключения выбрасываются часто. Ну и сахарка бы навернуть.
> В плюсах, впрочем, она тоже теряется. Но там есть пропозал и даже готовые реализации, где эта проблема исправлена. В расте реализации с исправлением этого уже есть?Реализации в стандарте?
Или ты предлагаешь пользоваться васнолибами, тк в стандарт оно попадет лет через 10?> Спойлер: делается но идеология раста против использования паник как замены исключений.
Преимущества exceptionʼов над panic'ами не доказано.
И тот и другой подход имеет как достоинства так и недостатки.>> И, главное: а как правильно надо?
> Исключения как в C++,С которым уже есть куча проблем?
И от которых отказались многие крупные проекты типа хромиума (chromium.org/chromium-os/build/c-exception-support/)Проблеми известна, обсуждается, но пока не видно хороших решений.
Дабы не быть голословным:
www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0709r4.pdfP2544R0 C++ exceptions are becoming more and more problematic
open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2544r0.html#biblio-p0709r4> но с автоматически выводимыми из тела типами выбрасываемых исключений.
Не уверен что в любой момент времени будут все нужные данные для такого автоматического вывода.
> И научить компилятор в оптимизацию исключений если исключения выбрасываются часто. Ну и сахарка бы навернуть.
А... т.е типичное "мышки станьте ежиками"?
>> В плюсах, впрочем, она тоже теряется. Но там есть пропозал и даже готовые реализации, где эта проблема исправлена. В расте реализации с исправлением этого уже есть?
> Реализации в стандарте?
> Или ты предлагаешь пользоваться васнолибами, тк в стандарт оно попадет лет через
> 10?Реализации в компиляторе. В расте и этого нет и есть только Anyhow, который решает не все проблемы и имеет те же проблемы что и исключения.
>> Спойлер: делается но идеология раста против использования паник как замены исключений.
> Преимущества exceptionʼов над panic'ами не доказано.
> И тот и другой подход имеет как достоинства так и недостатки.Так исключения и развёртывающие стек типизированные паники это одно и тоже.
>[оверквотинг удален]
> С которым уже есть куча проблем?
> И от которых отказались многие крупные проекты типа хромиума (chromium.org/chromium-os/build/c-exception-support/)
> Проблеми известна, обсуждается, но пока не видно хороших решений.
> Дабы не быть голословным:
> www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0709r4.pdf
> P2544R0 C++ exceptions are becoming more and more problematic
> open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2544r0.html#biblio-p0709r4
>> но с автоматически выводимыми из тела типами выбрасываемых исключений.
> Не уверен что в любой момент времени будут все нужные данные для
> такого автоматического вывода.Для того чтобы данных было больше в плюсах уже есть модули. Чтобы не делать интерфейс отдельно в хедере а реализацию в .cpp. А со старыми проектами можно руками писать throw(int, float, std::string)
>> И научить компилятор в оптимизацию исключений если исключения выбрасываются часто. Ну и сахарка бы навернуть.
> А... т.е типичное "мышки станьте ежиками"?https://isocpp.org/files/papers/P3166R0.html Работы от автора по оптимизации исключений этого уже пропозала ведутся.
> Для того чтобы данных было больше в плюсах уже есть модули. Чтобы не делать интерфейс отдельно в хедере а реализацию в .cpp. А со старыми проектами можно руками писать throw(int, float, std::string)Т.е не получится взять старый проект и "всё заработало"?
И придется поковырать код.> https://isocpp.org/files/papers/P3166R0.html Работы от автора по оптимизации исключений этого уже пропозала ведутся.
Выглядит интересно.
Как закончат посмотрим.
Как внесут в стандарт - поговорим.
А пока - это не часть С++.
>> Для того чтобы данных было больше в плюсах уже есть модули. Чтобы не делать интерфейс отдельно в хедере а реализацию в .cpp. А со старыми проектами можно руками писать throw(int, float, std::string)
> Т.е не получится взять старый проект и "всё заработало"?
> И придется поковырать код.
>> https://isocpp.org/files/papers/P3166R0.html Работы от автора по оптимизации исключений этого уже пропозала ведутся.
> Выглядит интересно.
> Как закончат посмотрим.
> Как внесут в стандарт - поговорим.
> А пока - это не часть С++.У раста нет даже этого, опять же. Да и речь шла как правильно. То что в плюсах не совсем правильно это уже другое.
> Функция A вызывает функции B и C. Функция B как ошибку возвращает целочисленное число, а C - строку.Число в качестве ошибки? Строка в качестве ошибки? Ты извини, но до такого гениального дизайна АПИ даже джуны не додумываются. Обсуждать дальше смысла нет.
> прекратить выполнение сразу после возникновения ошибки в рейндже и пробросить её дальше. И при этом все будет работать и не нужно ничего дублировать и специально про ошибки писать
> делается но идеология раста против использования паникНу так ты определись: ты собираешься ошибку обрабатывать (и тогда писать про ошибки придется), или тебе на нее плевать (и при панике получиться то же самое, что и при необработанном исключении в C++).
>> Функция A вызывает функции B и C. Функция B как ошибку возвращает целочисленное число, а C - строку.
> Число в качестве ошибки? Строка в качестве ошибки? Ты извини, но до
> такого гениального дизайна АПИ даже джуны не додумываются. Обсуждать дальше смысла
> нет.Это не реальный код, а синтетический пример. Вместо этих типов там могли быть любые другие. Смысл обсуждать дальше есть.
>> прекратить выполнение сразу после возникновения ошибки в рейндже и пробросить её дальше. И при этом все будет работать и не нужно ничего дублировать и специально про ошибки писать
>> делается но идеология раста против использования паник
> Ну так ты определись: ты собираешься ошибку обрабатывать (и тогда писать про
> ошибки придется), или тебе на нее плевать (и при панике получиться
> то же самое, что и при необработанном исключении в C++).Обрабатывать, но не сейчас, а в родительской функции родительской функции.
> Это не реальный код, а синтетический пример
> Смысл обсуждать дальше есть.Обсуждать дальше будет иметь смысл только после того, как ты приведешь адекватный пример проблемы.
> Обрабатывать, но не сейчас, а в родительской функции родительской функции.
В "родительской функции родительской функции" ты уже ничего обработать нормально не сможешь, потому что у тебя потеряно 2 уровня контекста. Ты бы еще единственный try-catch в main() в прммер привел.
В общем, ни одной "детской проблемы" с обоаботкой ошибок в Расте ты пока привести так и не смог.
> Когда читаешь статьи по C++ в которых челны комитета жалуются "нам нужно сломать АБИСтандарт C++ ABI вообще не регламентирует. О чем ты? Может, API?
> Стандарт C++ ABI вообще не регламентирует.*опа есть, а слова нет (с)
В стандарте С тоже нет описания ABI)> О чем ты? Может, API?
Я про "соглашения" которые принимает WG21.
Если интересно вот несколько старых статей
cor3ntin.github.io/posts/abi/Вот
open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1863r0.pdf
More critically, there is a non-trivial amount of performance that we cannot recoup because of ABI concerns. We cannot remove runtime overhead involved in passing unique_ptr by value , nor can we change std::hash or class layout for unordered_map, without forcing a recompile everywhere.Hash performance has been extensively researched for years now, and between table lookup optimizations and hash improvements, we believe we could provide an API-compatible unordered_map/std::hash implementation that improves existing performance by 200-300% on average. This is disallowed by ABI constraints.
> оно ещё нигде не используетсяЛожь.
> обратную совместимость сломали
Ложь.
истина оба раза, а у тебя как раз ложь
А я с ним согласен. В каком месте они сломали совместимость? Наведите пример где будет не работать то что работало ранее. Как-раз таки выглядит новый стандарт от w3c впечатляюще и решает те проблемы, которые ранее было тяжело решить и из-за этого сложно применять web assembly. В частности выполнение кода из скрипта.
у меня вопрос, выкинет ли оно реакт на помойку в отдаленной перспективе?
В отдаленной - да, выкинет. Вы ведь понимаете что дело то в IDE. Когда код вам удобно набирать тегами и скриптом, то различные фреймворки естественно востребованы. Когда появляется IDE типа Macromedia Flash или Blend для VS, рисующая то что ранее требовало существенного труда, то пользователю уже становится не так важно что там под капотом. А когда ещё это рисуется каким-нибудь AI, которое делает почти то что надо - так вообще сказка! А в ассемблер для браузера можно превратить и код на других ЯП.
> хоспаде, оно ещё нигде не используетсяВот это новости! Уважаемый эксперт не слышал о Emscripten?
слышал, конечно, но нигде ни разу не видел. у меня вся эта шняга отключена и ни единого разрыва
немножко экстраполяции - и получается истина в последней инстанции
В любых веб-играх используется. В юнити, в годоте, в анриле - все это компилируется в васм при экспорте под веб. Поиграть можешь на итче или в том же вк.
из app.cadbase.rs не согласны с этим утверждением, там wasm - исходник gitlab.com/cadbase/cdbs-app
Ну почему же нигде, Blazor есть на WASM, числодробилки онлайн, всякие фильтры, обработка картинок и прочее
> Отмечается, что в новой версии стандарта значительно улучшена поддержка компиляции в WebAssembly высокоуровневых языков. Например, реализована возможность компиляции в WebAssembly проектов на языках Java, OCaml, Scala, Kotlin, Scheme и Dart.то есть С у веб-синьоров уже не язык высокого уровня?
В С уже завезли sum types и безопасную работу с памятью?
Си вродиж ни когда высокоуровневым не былжеш. Тут о компиляторе разговор, тип теперь можете писать вот на том и на том а работать пудет шо ракета ибо все превварится в webassembly.
Товарищ, всё что не является ассемблером (без макросов) и хекс-кодами - это высокоуровневый язык. Даже пресловутый Forth, потому что далеко не каждая машина оперирует исключительно стеком.
Сишная модель памяти НЕ ЯВЛЯЕТСЯ ОТОБРАЖЕНИЕМ РЕАЛЬНОСТИ. Иначе бы не пришлось в стандарт 1999 года вводить бы пресловутое словечко "restrict" для указателей, чтобы "самый быстрый язык в мире" смог приблизиться к Фортрану. И подобных нюансов - вагон и маленькая тележка.
Все стандартные сишные аллокаторы работают через сисколлы операционки, прямо как любой высокоуровневый язык. Чтобы писать под эмбед без ОС, приходится выкидывать половину стандартной библиотеки.
> всё что не является ассемблером и хекс-кодами - не является низкоуровневым языковпоправил, не благодари
Но то что язык не низкоуровневый не значит что он высокоуровневый))
Сишка невероятна убога по системе типов.Вот такой уродливый "переносимый ассемблер" их 70х, который и в низкоуровневость уже не может, и до высокоуровневости как до луны ползком.
Товарищ, за лекбез отдельное вам спасибо.
Представление было, что есть машинный код, выше ассемблер, а дальше низкоуровневые типа сишечки, высокоуровневые которы можут в си код компилироваться типа питонов жсов и т.д.
Так это те языки, что добавтли в третьей версии. А C, С++ были и в предыдущей.
Чушь собачья, все эти языки были и раньше там.Вебассембли вообще ничего про языки не говорит, что скомпилируешь в него, то и будет работать.
Доброе утро! Вопрос к специалистам: эта штуковина в будущем заменит JS или нет?
Не заменит, пока не добавят zero-copy интеграцию с веб апи. Сейчас васм годится только для очень узкого класса задач -- таких задач, где ты ровно один раз формируешь аргументы, ровно один раз вызываешь васм-код, он там начинает шуршать CPU минуту-две, занимаясь сложными вычислениями, а потом он ровно один раз выдает результат. Очевидно, что обычный обработчик UI на таком писать неразумно.
а запустить это в отдельном потоке нельзя что ли, и неспешно перекидываться сообщениями?
1. В яваскрипте нет потоков.
2. Обработка UI в яваскрипте значительно быстрее, чем обработка UI в яваскрипте-и-васм (нет, совсем без яваскрипта не получится, так как у васма нет доступа к веб апи).
В яваскрипте нет, а вот в web api есть воркеры
Тоже верно. Не отменяет факта дичайших тормозов, когда данные пересекают границу яваскрипт <===> васм.
> Не отменяет факта дичайших тормозов, когда данные пересекают границу яваскрипт <===> васм.Насколько эти тормоза "дичайшие"?
Может проблема какая-то архитектурная?
Ну типа данные туда-сюда избыточно часто гоняются?
Не замерял. Но тебе должно быть достаточно вот какого факта: функция аля toUpperCase, написанная целиком на яваскрипте, будет намного быстрее васмовского, потому что при васме тебе надо скодировать WTF-16 строку в UTF-8, скопировать в буфер для васма, вызвать васм, васм поработает, далее копируешь из васма себе, декодируешь из UTF-8 в WTF-16 и наконец получаешь результат. А прикинь такую фигню при любом событии типа on mouse move. Игру на васме не напишешь: будет слайдшоу вместо игры. Васм дает выигрышь только в долгих ЦПУ-интенсив операциях типа "скодировать видео с одного формата в другой".
> при васме тебе надо скодировать WTF-16 строку в UTF-8, скопировать в буфер для васмаТеперь не надо, в новости написано ж.
> Игру на васме не напишешь
А зачем игре вагон строк конвертировать? Обычные игровые данные можно передавать через числовые массивы, выделенные на стороне JS и заполняемые в wasm.
> скодировать видео с одного формата в другой
Для этого вебкодек апи есть с аппаратным ускорением.
> Игру на васме не напишешь: будет слайдшоу вместо игры.Я написал небольшую игрушку на васме лет десять назад, чтобы посмотреть на то, что этот васм из себя представляет. И скажу я тебе, что ты не прав совершенно.
wasm-код запросто может хранить состояние игры, обновлять его, и рендерить. js нужен для того, чтобы прокидывать туда события ввода, и это довольно простая прослойка. Для передачи событий ввода нет никакой нужды перекодировать строки.
Ситуация может быть сложнее, если вывод графики ты делаешь через DOM, а не webgl, поскольку с DOM wasm не может общаться напрямую, но если так, то встаёт вопрос: о какой производительности может идти речь, если вывод графики через DOM?
> Васм дает выигрышь только в долгих ЦПУ-интенсив операциях
Звучит так, будто "слышал звон, да не знаю где он".
Игру на васме не пишут.
Игру пишут на c++ или берут уже написанную и компилируют с помощью Emscripten.
Полученный васм работает в окне браузера.
Правильная игра даже не догадывается где она и как работает.
И никаких тормозов с toUpperCase
Плевать на производительность. Любая производительность на ТВОЁМ железе лучше, чем твоя возможность понять, чем занимается это выполняемое дерьмо.
Ну и зачем это писать если вы вебом не занимаетесь?
Не соглашусь. Имею за поясом пару приложений формата "интерактивный визуализатор больших (>RAM) данных", которые прекрасно используют WASM для:
1. Распаковки (zstd) данных на лету по мере необходимости
2. Быстрого поиска в массивчиках (напомню, что WASM может в SIMD)
3. Per-frame генерации level of detail на N потокахРаботает не идеально (см. то же ограничение по памяти), но вполне юзабельно. Мои аппликухи спокойно кушают per-frame сгенериованные WASM-ом данные и рисуют их на 240hz дисплее. Штраф за копирование данных решается использованием SharedArrayBuffer.
Проще говоря, дорогу осилит идущий.
Да, я считаю что в итоге заменит. Поисковым система всё-равно что там на скрипте, им нужна разметка. Пользователям всё-равно, лишь бы быстро работало. Вот и ради быстрой работы все и перейдут на web assembly. Потом браузер превратится что-то вроде однопрограммной ОС на вкладку, во что оно уже в целом превратилось. И конторы по написанию антивирусов будут чесать репу - как так получилось что Сказочные Штаты превратились в мирового полицейского опять и чего запретить то в таком случае? Появится суверенный браузер на основе исходных кодов того что есть, при этом не дающий ничего нового - просто появится отвечающая голова за безопасность использования браузера. А на опеннете, если он доживёт будет очередное нытье и непонимание зачем создавать технологии?
Также я думаю что будет развитие какого-нибудь строгого режима TypeScript который и даст возможность компиляции в web-assembly, что в принципе в некоторых технологиях уже частично реализовано. Соответственно сайты которые будут придерживаться строгой типизации смогут почувствовать не только проверку ошибок во время этапа трансляции, но и потихоньку рост производительности кода.
а какая разница, всё-равно сравнение js идёт с высокоровневыми языками скорее, которые в wasm компилятся, а не с самим - нравится что-то из них - пиши
Нам теперь этот ваш электрон н... ненужОн? Не?
https://browserbench.org/Speedometer3.1/
Как сделать java которая не java или стрип от xckd про 15 стандартов
У нас уже была жава в браузерах. Назывались "ява-апплеты". Тормозили безбожно. Да и безопасность текла.
Зато не дотнет. Героически подебили злобный сервелат (причём сами гаврики из мс), лол.
ты путаешь курицу с яйцом в обоих случаях
Я помню те времена. Кругом ie, немного лисы и опера. Живой ещё флэш — и достаточно капризный на тот момент, даже если забыть про дыры. Сайты начинают тяжелеть, превращаясь в приложения — и тут выходит мс с сервелатом, который быстрее флэша (который сам по себе был быстрее тогдашнего js). Всё хорошо, всё прекрасно, скоро будут приложения вместо сайтов, всё компактное и бинарное и в отличие от ява-апплетов даже кому-то нужное. Выходит сервелат для симбиана, потом целая мобильная платформа. Всё идёт замечательно, появляется мунлайт, впереди открытие сервелата и стандартизация байткода. HTML/JS/CSS должен остаться уделом простых сайтов, для всего тяжелее будет байткод, хорошо поддающийся JIT/AOT-компиляции на клиенте.Потом внутри мс что-то случается и локомотив технологического развития налетает не то на агрессивный костяк жадных манагеров, не то на анклав индусов — и всё объявляется НЕПРАВИЛЬНЫМ.
Мобилка, со скрипом съехавшая с Win32 на сервелат добивается переводом на какую-то хтонь в лице WinRT, на десктоп выкатывается недоделанная пятая версия, а всем обещают ультрабыстрое будущее с WASM. В реальности обещанное тотальное WASM-будущее так и не наступает, зато превращается в зависимость веба от Chromium/V8, а оверхэд компенсируется ростом системных требований.Скажите, что всё это не взаимосвязано — ну чисто случайно одни выбрасывают хорошую технологию на пике развития, чтобы не мешать другим подмять рынок, который до этого не могли захватить третьи.
"скоро будут приложения вместо сайтов" вы же понимаете что у сайтов есть куча преимуществ? Интроспекция верстки (для девтулзов, скринридеров, e2e тестов, ИИ, резалок рекламы), возможность добавлять свои скрипты и стили (расширение возможностей сайтов, например wanikani, github и прочее, исправление проблем, улучшение удобства под себя), возможности для оптимизации (css анимации на видеокарте, режим для чтения, ускорение типичных паттернов веб фреймворков. Вы же хотите зоопарк как сейчас в нативном гуи происходит когда то что перечислено выше или завязывается на конкретные фреймворки, или не работает, или работает сильно по разному.
WASM как раз и взлетает потому что расширяет возможности веба, а не заменяет весь текущий стэк.
Локомотив технологического развития налетает на выход IPhone. Где Джобс объявляет что HTML5 лучше.
> Героически подебили злобный сервелатДа с ним никто и не влевал - он сам издох.
У Васьма будет лучше?
Нет. Он не решает никаких проблем. Разве только переносимость кода с других языков.
Сейчас столько библиотек, что быстрее заюзать JS версию чем тра...тить время на порттирование.
> Как сделать java которая не javaА у Java когда-то была производительность, близкая к нативному коду? Опеннетная экспертиза как всегда поражает...
Всегда почти была
Так и запишем: интерпертируемый язык со слоями абстракций и динамическими аллокациями на каждый чих почти всегда имеет почти такую же производительность, как и нативный код.Еще экспертные мнения будут? Гулять так гулять! 🤣
Вам бы матчасть поучить...
> Вам бы матчасть поучить...Вам бы что-то содержательное по теме сказать...
>Вам бы матчасть поучить...Что из себя на нативном уровне представляет массив Integer?
В плюсах абстракций уже не меньше чем в яве наворочено. А если в точных числах производительности, то вот, ява уступила C++ на 0.1%.
https://www.techempower.com/benchmarks/#section=data-r23
may-minihttp 100.0% rust
h2o 92.4% C
drogon-core 78.5% C++
vertx-postgres 78.4% Java
> А если в точных числах производительности, то вот, ява уступила C++ на 0.1%.
> drogon-core 78.5% C++
> vertx-postgres 78.4% JavaГоворит про точные числа производительности языков, сравнивая время работы разных веб фреймворков. 🤦
Что ж, парад опеннетной экспертизы продолжается!
О, а тут настоящий взаправдошный кексперт нарисовался что ли? Тогда ответь, почему топовый с++ фреймворк с «зеро кост абсракшонс» медленнее дидовой сишки, и на уровне энтерпрайзной жавы с абстрактными фабриками абстрактных фабрик? Другие C++ фреймворки ещё, например, яндексовый, который активно пиарят, ещё медленнее.
> Тогда ответь, почему топовый с++ фреймворк с «зеро кост абсракшонс» медленнее дидовой сишкиКакой ты от меня ответ хочешь получить? Ты что, не соображаешь, что это абсолютно разные кодовые базы, где различаются не только языки, но и алгоритмы, архитектура и т.д.?
Господи...
Просто признай что типичный код на C++ примерно как ява по скорости. Понятно что кодовые базы разные, но в среднем кодер пишет так как принято в его области, так что правильнее сравнивать не сферические хэлоуворды в вакууме а реальные проекты.
> типичный кодИтак, опеннетные эксперты сравнивают скорость языков по:
* Работе веб-фреймворков
* По абстрактному "типичному коду" в вакуумеЭкспрты приведут еще более экспертные методы замера скорости, или максимальное дно уже достигнуто?
У языка нет скорости, кексперт. Есть у кода который на нем написан, что и сравнивается в одинаковой задаче.
> У языка нет скорости, кексперт.Спасибо, кэп! Главное, что она есть у веб-фреймворков. Так и померяли...
> Есть у кода который на нем написан, что и сравнивается в одинаковой задаче.
А, ну значит Python в 10 раз быстрее C++:
https://stackoverflow.com/questions/9371238/why-is-reading-l...
И "задача одинаковая" (как экспертно заявил ты), и "код типичный" (как писал эксперт выше).
Дно на сегодня уже домтигнуто, или будем пробивать дальше?
>Так и запишем: интерпертируемый языкJava - не интерпретируемый язык! - по тоеме?
Так и запишем - про java'у анонимный эксперт(ТМ) знает вот ровно "ничего", "но в ГЛАВНОМ-то он прав!"
> производительность, близкая к нативному кодуне может сочетаться с
> Виртуальная машина с +100500 слоями абстракций
Когда вы это уже поймёте, гуглолюбы?
Жава может работать быстрее си++, потому что память освобождает когда-то потом, тогда как C++ сразу. Но потом начинет микрофиризить из-за сборщика мусора
> Жава может работать быстрее си++, потому что память освобождает когда-то потом, тогда как C++ сразуА, ну да, софт же тормозит из-за освобождения памяти... 🤦
То-то сишники до сих пор рожают аллокаторы, у каждого свой велосипед.
>А, ну да, софт же тормозит из-за освобождения памяти... 🤦Представь себя да, malloc и free это ОЧЕНЬ медленные функции. Код писать надо так, чтобы число вызовов этих функций было минимальным. Самый производительным видом кода, являются рекурсивные функции, сборка мусора в которых даже быстрее чем языках с GC. К сожалению многие современные учебники по программированию прямо учат тому, что код нужно писать как будто бы это художественное произведение для людей, а не более удобный способ записи байт-кода.
> К сожалению многие современные учебники по программированию прямо учат тому, что код нужно писать как будто бы это художественное произведение для людей, а не более удобный способ записи байт-кода.Потому что, когда проект разрастается до сотен тысяч строк кода, а в худших случаях и миллионов, этот "удобный способ" попробуй поддержать.
> Жава может работать быстрее си++, потому что память освобождает когда-то потом, тогда как C++ сразуНет, не может, потому что там, где в Java без альтернатив дергает динамические аллокации, в C++ в большинстве случаев можно просто юзать стек.
> можно просто юзать стекНа плюсах можно писать безопасный софт, но придумали раст.
Мастерское приплетание Раста!
Кто-то не вдуплил между "можно" и "будут"
Там где можно использовать стек, ява его и использует давным давно.
C++ работает с освобождением памяти - как напишешь. Более того, можно и не жрать память из кучи в критичных местах, а использовать статически, и ничего не выделять и не освобожать. И промежуточные варианты, с освобождение в некритичные моменты времени, то есть управляемо.>Жава может работать быстрее си++
Только если на С++ целенаправленно писать г@внокод и компилировать без оптимизации.
Ява (и с# тоже) может приблизиться по быстродействию к нативному коду, но неизбежны затраты на компиляцию, будут лаги при запуске, ну, чудес же не бывает.
Значительные издержки будут при активном вводе/выводе, ибо Ява то - в виртуальной машине, что в принципе не увеличивает быстродействие.
Кроме того большое потребление памяти, которая типа дешевая, и что её экономить.. но, чтобы мусолить значительный объём памяти кучи, на это тоже расходуются ресурсы процессора. Кэши у процессоров не резиновые, а если критичный код выполняется из кэшей, то работает быстрее, как и работа с данными.
Так же, и злоупотребление обектным стилем может весьма просадить быстродействие. А ява не располагает к написанию критичных мест в "дубовом" стиле.
> реализована возможность компиляции в WebAssembly проектов на языках Java, OCaml, Scala, Kotlin, Scheme и Dartчто это за старье, если не появится поддержка современных языков, не взлетит
Вы про раст опять? Так-то java, kotlin вполне современны
ну так-то сейчас без этого никуда. В ядро завозят, убунта вон тоже начинает везде внедрять. Молодежь не хочет в "дидовских" языках разбираться, говорит что очень сложно и не безопасно. А сабж на кого рассчитан? Вот и мне приходится мысль свою разжевывать. То-то и оно.
Вот та "молодёжь"-то и не взлетит...
Тут давиче публиковался рейтинг яп, так вот, некоторые дидовские языки неожиданно поднялись в рейтингах.
Вилами по воде писано. Ты видел хоть одного перловика? Такого, чтобы он использовал перл настолько часто, что это бы подняло перл на 10 место в рейтинге.
В данный момент, возможно, и даже у питона были взлеты и падения особенно 2я версия, а 3 взлетела. Может в компилятор си вошьют проверку памяти или чего там, и она может начать набирать популярность. Странно что этого небыло реализовано раньше, а сделали целый новый язык.
Хотя для си кажется создано что-то подобное, но реализовано модулем, но это не точно.
> у питона были взлеты и падения особенно 2я версия, а 3 взлетела.Вторая тоже была популярная.
Да потом был неприятный переиод перехода, но это не помешало языку развиваться.> Может в компилятор си вошьют проверку памяти или чего там, и она может начать набирать популярность.
Уже есть попытки.
Fil-C - компилятор для языков C и C++, гарантирующий безопасную работу с памятью
opennet.ru/opennews/art.shtml?num=62241Проект TrapC развивает Си-подобный язык, безопасно работающий с памятью
opennet.ru/opennews/art.shtml?num=62224К сожалению эти потуги, скорее всего, обречены на провал по двум причинам:
- слом обратной совместимости - священная корова для СИшников. (хотя все рассказы "я скомпилял код С89 в современной версии и все заработало" зачастую правдивы только для хеллоуворлдов).
- потеря производительности:
"собираемые в Fil-C программы медленнее примерно в 1.5-5 раз, по сравнению со сборкой обычными компиляторами" - это фиаско> Странно что этого небыло реализовано раньше, а сделали целый новый язык.
Потому что всем было пофиг.
Диды привыкли лабать овнокод абыкак. Главное побыстрее. На корректность и безопасность забивали.
Это было норм для времени когда интернет был по телефонным карточкам.
Но сейчас уязвимость в либе шрифтов может позволить получить рут и украсть твои денежки с банковского приложения телефона.Времена поменялись, диды адаптироваться не хотят. Зато усиленно копротивляются.
В каких рейтингах?
Если ты про Тиобе - то он составляется, упрощенно, про кол-ву запросов в гугл.Вот вышла на ру-сайтах новость про Perl-Conf.Ru/25 - молодежь полезла искать, что это за перл и зачем делать сьезд пенсионеров.
В гугле куча поисковых запросов - язык пошел вверх в рейтинге.
> kotlin вполне современныНет такого языка.
А чего не хватает?
Особенно с учётом того, что C/C++/Go/Rust уже поддерживаются.
Kotlin и Dart не современные?
Подскажите как из сишки скомпилировать код через Webaasembly чтобы он выполнился внутри браузера?
гугли emscripten
А что, поискать нельзя?
Cheerp (formerly Duetto): Compiles C++ applications to both binary code and JavaScript, integrated with the LLVM/clang infrastructure.
Clue: A C language compiler capable of targeting various runtimes, including JavaScript.
Mandreel: Converts C++ and Objective-C applications based on OpenGL ES to JavaScript or ActionScript 3 web applications.
Bonsai-C: Focuses on converting C code to asm.js.И это только первое что найдено.
Не С++ а Си. Подходящие GNU компиляторы есть?
Там, если не путаю, через байткод LLVM
Т.е вначале сишка компилится любым компилятором с поддержкой «выхлопа» в байткод
Далее, байт-код скармливается в тот же Emscripten
По крайней мере ранее так былоЗа счёт подобного подхода в васм преобразовывались многие ЯП, для которых был компилятор с поддержкой выдачи результата в байткоде
Поддержка 64-бит адресов? Ну всё, теперь ваш браузер сожрёт больше памяти чем вы сможете купить!
Это началось ещё в 2008 с монополизацией хрома путём неконкурентных способов продвижения.
> путём неконкурентных способов продвиженияЭто какие интересно?
Вы про то, что у них были деньги рекламировать хром?
И что в этом нечестного?
Подкупать файрфокс, и заставить их ломать обратную совместимость аддонов.
Ох уж эти консперологи... Firefox просто плохой браузер! Даже сейчас они переставляют кровати в интерфейсе.
Ломать обратную совместимость веб-стандартов - так, из очевидного.Ломать свои ресурсы для отображения в Firefox.
Замедлять выполнение скриптов своих ресурсов под Firefox.
Автоустановка хрома при любом чихе и пуке. Не только при скачивании и установке софта. Даже при банальном скачивании pdf-файлов. А тихая автозагрузка, включенная по умолчанию в затем установленном хроме это повод для отдельного котла ИБшников.
А из того, за что сейчас почему-то ругают Firefox - вымаливание скачать и установить хром на любом ресурсе, принадлежащем хрому с грёбаным перекрытием основного UI, пока ты не скачаешь или не найдёшь полупрозрачный крестик.
А, ну и "на правах" монополиста интернет-рекламы - пропихивание своего поделия на примерно 99,99999% сайтов, где есть хотя бы Google Analytics.
Наверное не просто так компанию иронично много лет называли "корпорация добра"? Дыма без огня не бывает.
Это я ещё не коснулся Android, в продвижении которого все эти уловки использовали, имея за плечами опыт хрома.
При этом для всех вселенское зло почему-то Microsoft, который пытается впарить Edge и Windows 11. И для людей почему-то новость, когда эти способы применяются. Хотя Microsoft ничего не изобретал - все эти способы много лет как придуманы, использованы и наверное даже устарели в недрах гугла.
"...(при выполнении в браузере выставлено ограничение в 16 ГБ)"А вообще, зависит от сайтов/задач и количества открытых вкладок (как и сейчас). Если Вы там веб-фотошопы и автокады будете пачками открывать - то конечно подраздуется.
И чем им ява-апплеты не нравились? Героически рожают то, что уже было в яве.
Ага, и Adobe Flash, чтобы вообще хорошо было.
> Ага, и Adobe Flash, чтобы вообще хорошо было.Adobe Flash - это не хорошо, совсем не хорошо!
Согласен, хорошо было когда оно было Macromedia Flash
Кстати, никто так до сих пор и не ответил, чем это было нехорошо.
> Кстати, никто так до сих пор и не ответил, чем это было
> нехорошо.Тормозами и вендорлоком.
> Кстати, никто так до сих пор и не ответил, чем это было нехорошо.Это был сговор проклятых корпораций. Правду от нас до сих пор скрывают, поэтому ответа мы не получим.
> Кстати, никто так до сих пор и не ответил, чем это было нехорошо.Так вроде понятно - Flash был дырявым.
Постоянные проблемы в браузере где люди часто делятся чувствительной инфой.В этом он кажется внебрачным братом С и С++.
CVE-2018-5002 - выполнение произвольного кода в результате ошибки переполнения буфера
CVE-2020-9633 - use after free vulnerability... could lead to arbitrary code executionПричем это 10 из 10)
И их там просто дофига.Достаточно посмотреть на эти графики
cvedetails.com/product/6761/Adobe-Flash-Player.html?vendor_id=53
и станет ясно что такое днище нужно закапывать.
Глубоко и навсегда)
И хоть бы раз кто на эти дырки лично напоролся?
Сейчас-то всё не дырявое, конечно.
В общем, жаба-плагин образца 90-х записали за кривизну и дырявость, чтобы заполнить примерно то же самое.
*запинали
> В общем, жаба-плагин образца 90-х записали за кривизну и дырявость, чтобы заполнить
> примерно то же самое.Сравните кривизну и дырявость WebAssembly с таковыми в Java Applets. Тема не раскрыта.
Нет, код web assembly в общем-то доступен, при желании можно разобрать, а вот у ActiveX компонентов это были проприетарные технологии, закрытые от мира.
Так и ActiveX был ничем иным, как бинарниками для х86
Ну так разница в контроле. Те кому надо теперь могут контролировать процессы. А ActiveX можно было и свой написать. Вот из-за последнего факта начались проблемы с безопасностью. По крайней мере такие мнения писали в нете. Причем безопасность предоставляет тот кто создает движок для веб-асма и какие там могут быть недокументированные возможности - кто знает? А учитывая тот факт что релиз некоторые делают чуть ли не каждые 2 недели, то могут как появится, так и исчезнуть. Но не сторонний сможет этим воспользоваться.
Манипулировать DOM всё так же нельзя? А нахрена оно такое тогда нужно? Лобби жабоскрипт обезьянок не пускает WebAssembly в DOM?
> Ранее строки JavaScript можно было передавать в WebAssembly только как внешние ссылки, а теперь можно напрямую обращаться к строкам и манипулировать ими внутри WebAssembly.т.к. "манипуляции" в js это всегда было просто редактирование стрингов, то похоже теперь и со стороны wasm можно. но это не точно.
> Манипулировать DOM всё так же нельзя? А нахрена оно такое тогда нужно?Лол. А зечем тебе манипулировать DOM через WebAssembly?
> А зечем тебе манипулировать DOM через WebAssembly?Для того, чтобы не иметь дело с JS. Например Go можно компилировать в WebAssembly.
> Для того, чтобы не иметь дело с JSА в чем проблема манипулироания DOMом через JS? Через Go было бы удобнее, или что?
Ну потенциально это может быть быстрее, и думаю некоторым компаниям проще нанять одного веб программиста который им wasm+go настроит чем заменять всю команду go на веб разработчиков
> А в чем проблема манипулироания DOMом через JS? Через Go было бы
> удобнее, или что?Проблема в том, что сейчас это можно делать только при помощи JS. Но не всем он подходит и не все хотят переводить разработку на него и переучиваться.
> Проблема в том, что сейчас это можно делать только при помощи JS.Это вообще не проблема. К тому же, сейчас есть TypeScript и т.п.
> Но не всем он подходит
Оно подходит уже 30 лет всем, кто пишет фронтенд. Ты такой особенный, или что?
> не все хотят переводить разработку на него
С чего переводить, лол? Фронт всегда был на JS.
> и переучиваться
Ну если ты хочешь работать на фронтенде, но не способен выучить стандартный для него язык, то я не знаю, что тебе сказать...
>> Проблема в том, что сейчас это можно делать только при помощи JS.
> Это вообще не проблема. К тому же, сейчас есть TypeScript и т.п.Это проблема, потому что JS - это убогий язычок с динамической типизацией для обезьянок. Ну а TypeScript просто не поддерживается браузерами напряму, поэтому мимо.
>> Но не всем он подходит
> Оно подходит уже 30 лет всем, кто пишет фронтенд. Ты такой особенный,
> или что?Можно подумать у обезьянок есть выбор языков или они пишут качественный код. JS только и делает, что тормозит браузер.
>> не все хотят переводить разработку на него
> С чего переводить, лол? Фронт всегда был на JS.У обезьянок какой-то ограниченный ум и они не знают, что JS - это не только веб? Нода - это что? Электрон - это что? Ты профнепригоден или как?
>> и переучиваться
> Ну если ты хочешь работать на фронтенде, но не способен выучить стандартный
> для него язык, то я не знаю, что тебе сказать...Боже упаси, я не хочу становиться таким как вы. Лучше перечитай ответ выше.
> Это проблема, потому что JS - это убогий язычок с динамической типизациейНу да, это очень важно для манипулирования DOM.
>> Оно подходит уже 30 лет всем, кто пишет фронтенд
> Можно подумать у обезьянок есть выбор языков или они пишут качественный код.Ну сейчас придет мессия в виде zionist и покажет, как писать качественный код манипулирования DOM.
>> Фронт всегда был на JS
> JS - это не только веб?Да что ты? Ты уже забыл, что собирался манипулироаать DOM? Но не на вебе, да...
> Нода - это что?
Что-то, не содержит DOM, которым ты собирался манипулировать.
> ограниченный ум и они не знают, что JS - это не только веб?
>> Электрон - это что?Ни капли не веб! Браузерный DOM есть, но веба нет!
> Боже упаси, я не хочу становиться таким как вы.
Я хз, кем ты хочешь становится, если ноду с электроном ты хочешь, но JS при этом не хочешь. Совсем запутался, бедняга!
>> Это проблема, потому что JS - это убогий язычок с динамической типизацией
> Ну да, это очень важно для манипулирования DOM.Это важно при написании программы, которая не только DOM-ом манипулирует.
>>> Оно подходит уже 30 лет всем, кто пишет фронтенд
>> Можно подумать у обезьянок есть выбор языков или они пишут качественный код.
> Ну сейчас придет мессия в виде zionist и покажет, как писать качественный
> код манипулирования DOM.Ты глухой? Нет никакой альтернативы JS, её просто нет. И сделано это совершенно искусственно.
>>> Фронт всегда был на JS
>> JS - это не только веб?
> Да что ты? Ты уже забыл, что собирался манипулироаать DOM? Но не
> на вебе, да...Ну а как по твоему работают приложения в Electron?
>> Нода - это что?
> Что-то, не содержит DOM, которым ты собирался манипулировать.Но что-то, что может работать в связке с DOM.
>> ограниченный ум и они не знают, что JS - это не только веб?
>>> Электрон - это что?
> Ни капли не веб! Браузерный DOM есть, но веба нет!У тебя галлюцинации.
>> Боже упаси, я не хочу становиться таким как вы.
> Я хз, кем ты хочешь становится, если ноду с электроном ты хочешь,
> но JS при этом не хочешь. Совсем запутался, бедняга!Кончай тупить. Я хочу платформу, подобную электрону, но без обязательного JS. Для этого WebAssembly должен иметь доступ ко всему тому, к чему сейчас имеет доступ JS.
чтобы очевидно не пользоваться мерзким js
дотнет в васм все ещё не умеет? вроде пару лет назад было что-то о нём на сайте майков
Умеет.Прчём в нескольких реализациях:
Как минимум:
Blazor
Uno Platform
я одного понять не могу, что им мешает пихнуть нативное исполнение в браузер? Это что за самообман, сначала жЫЭс, теперь вебъассембли, дальше что?
> я одного понять не могу, что им мешает пихнуть нативное исполнение в
> браузер? Это что за самообман, сначала жЫЭс, теперь вебъассембли, дальше что?А вообще, оно было. ActiveX, npm - вот это вот все.
> npm - вот это вот все.*npapi
ну вот было ведь пихнули ведь, в чем проблема?
>ну вот было ведь пихнули ведь, в чем проблема?В красногазиках. Адепты OpenSource категорически против даже LLVM, не говоря уже о машинном. А WASM это такой бинарный вариант asm.js, его можно без проблем декомпилировать в asm.js. Так его и протолкнули красноглазикам. Тут другой вопрос: что мешало добавить в браузер язык со статической типизацией? <script language="C#"></script>. Открытый код, безопасные бинарники, которым не нужна виртуальная машина, все было бы замечательно. Не нравится C#? Придумайте свой безопасный язык со статической типизацией. В конце концов JS был придуман, как способ проверки форм перед их отправкой, что немного ускоряло интернет, когда он работал через медленные версии Dial-Up.
Так C# работает на уровне рантайма. Это не скриптовый язык на подобии JS, Python, Lua.Ofc, такое может случится, но только в случае когда-то кто-то сможет написать хороший интерпретатор, сравнимый по скорости с JS.
C# изначально создавался с иным подходом к написанию программ. JS создавался как скриптовый язык, а точнее как обертка над ECMAScript. Смысла в статической типизации на уровне рантайма интерпретатора - бесмыслена. Это уже проблема кодера, что пишет скрипты (ну или код, если выражаться по модному).
> Так C# работает на уровне рантайма. Это не скриптовый язык на подобии
> JS, Python, Lua.Web-приложениям и не нужен скриптовый язык.
> Ofc, такое может случится, но только в случае когда-то кто-то сможет написать
> хороший интерпретатор, сравнимый по скорости с JS.Интерпретатор опять же нужен лишь скриптовым языкам, а компилятор для C# сделать куда проще чем для JS с его непредсказуемой типизацией.
> C# изначально создавался с иным подходом к написанию программ. JS создавался как
> скриптовый язык, а точнее как обертка над ECMAScript. Смысла в статической
> типизации на уровне рантайма интерпретатора - бесмыслена. Это уже проблема кодера,
> что пишет скрипты (ну или код, если выражаться по модному).JS создавался когда стандарта ECMAScript и в проекте не было. ECMAScript это попытка стандартизации всего того хлама, что уже был написан. Статическая типизация нужна не интерпретаторам, а компиляторам. В браузерах кстати стоят JIT-компиляторы JS, а не интерпретаторы. Потому, что интерпретаторы работают ОЧЕНЬ медленно.
>я одного понять не могу, что им мешает пихнуть нативное исполнение в браузер? Это что за самообман, сначала жЫЭс, теперь вебъассембли, дальше что?"нативное исполнение в браузер" - это чё? Под какую архитектуру исполнение? Это когда браузет знает твою платформу и запрашивает с сервера уже собранный би6нарник под неё? А где взять сервер с программами под все архитектуры и окружения?
> сервер с программами под все архитектуры и окружения?х86 достаточно.
>х86 достаточно.х86 и майкрософт виндовс... достаточно конечно если не вдумываться в детали или если рассматривать какого то конкретного васю и его нокнкреный пк, а не то что есть сейчас.
А что сейчас? x86 под виндой на десктопе и жаба ВМ под ведроидом - на мобилах.
> Под какую архитектуру исполнение?а под какую архитектуру у вас браузер и вирт. машина в нем? вот под эту же архитектуру и исполняем нативно код с помощью браузера.
> Это когда браузет знает твою платформу и запрашивает с сервера уже собранный би6нарник под неё?
ну да, ты же хочешь, что попало без твоего ведома, чтобы исполнялось на твоей машине. Бинарников много? по-моему уже давным-давно х64 всюду. А в чем проблема то? Вон любой другой софт разве не предлагает вам отдельные исполняемые файлы разных архитектур для скачивания? То что у вас в винде условно PE, а в линухе ELF это не архитектуры если че.
> А где взять сервер с программами под все архитектуры и окружения?
У хостера, у кого же еще? Ты хостеру исходник, а он тебе скопилит под необходимые архитектуры, а че? - бизнесс идея для амазона, им же главное деньги заработать, им это даже на руку будет.
А у нас так много сейчас архитектур?
> я одного понять не могу, что им мешает пихнуть нативное исполнение в
> браузер? Это что за самообман, сначала жЫЭс, теперь вебъассембли, дальше что?Браузер - это пожалуй единственная платформа, на которой в 2025 году оправдано использование виртуальной машины и принципа "написано один раз - работает везде". Нигде более этот принцип уже не оправдан. Например изначально это было одной из основных фишек Java, но сейчас это уже давно совершенно бесполезная фишка. Тем более после смерти апплетов в браузере. Серверная Java работает почти исключительно и только под Linux - либо на x86, либо на ARM. Но пихать нативное исполнение в браузер - это от небольшого ума. Разумеется речь не про JIT.
> Браузер - это пожалуй единственная платформа, на которой в 2025 году оправдано использование виртуальной машины и принципа "написано один раз - работает везде".зачем мне браузер? если вирт машине нет необходимости в браузере, та же вирт. машина джавы чем не подходит?
> Тем более после смерти апплетов в браузере
И чем ваши джава аплеты от вэбассэмбли отличаются? Да ничем, "шампунь и мыло". Так зачем оно вообще?
> Но пихать нативное исполнение в браузер - это от небольшого ума.
Ага пихать исполняемое в браузер я смотрю - гениальность. Вот и говорю, зачем так скромничать, пихайте нативно, куда быстрее будут чем ваши все вирт. машины. Абсурд ей Богу.
> Разумеется речь не про JIT.
Еще каких граблей надо понапридумывать?
пс: мы хотим получить удовольствие как от е*ли в опу, но п*дарасы быть не хотим!
>> Браузер - это пожалуй единственная платформа, на которой в 2025 году оправдано использование виртуальной машины и принципа "написано один раз - работает везде".
> зачем мне браузер? если вирт машине нет необходимости в браузере, та же
> вирт. машина джавы чем не подходит?Ты не знаешь для чего нужен веб браузер? Ты и читать не умеешь? Я ведь прямым текстом сказал, что браузер - это единственная платформа, на которой оправдано использование виртуальной машины. Виртуальная машина нужна там для платформонезависимого исполнения кода, необходимого для работы веб приложения на стороне браузера. Java апплеты были явным костылём и совершенно чужеродной (иными словами ненативной) добавкой от сторонней корпорации Солнца. Виртуальная машина, как и в Java, должна предоставлять лишь следующие возможности - исполнение байткода с опициональной поддержкой JIT, сборка мусора, стандартная библиотека. Всё остальное там совершенно лишнее - например поддержка конкретного языка программирования. Таким образом мы приходим к WebAssembly и к необходимости доступа из WebAssembly ко всему, к чему сейчас имеет доступ JS.
>> Тем более после смерти апплетов в браузере
> И чем ваши джава аплеты от вэбассэмбли отличаются? Да ничем, "шампунь и
> мыло". Так зачем оно вообще?Они не были нативными. Java изначально проектировалась вовсе не для браузеров и эти апплеты были просто костылём.
>> Но пихать нативное исполнение в браузер - это от небольшого ума.
> Ага пихать исполняемое в браузер я смотрю - гениальность. Вот и говорю,
> зачем так скромничать, пихайте нативно, куда быстрее будут чем ваши все
> вирт. машины. Абсурд ей Богу.Вовсе не абсурд. Мультиплатформенность в браузере реально нужна. Изоляция, то есть песочница - так же крайне необходима. Но ты не переживай, V8 и так докомпилирует весь JS в машинный код.
>> Разумеется речь не про JIT.
> Еще каких граблей надо понапридумывать?В каком месте тут грабли?
> пс: мы хотим получить удовольствие как от е*ли в опу, но п*дарасы
> быть не хотим!Интересная аналогия. Наверное именно так рождалась нода.
> Виртуальная машина нужна там для платформонезависимого исполнения кода, необходимого для работы веб приложения на стороне браузера.какая на х*ен платформенная независимость, если помимо разных аппаратных платформ есть куча и ОС, все тот же самый бардак как и с нативными приложениями, нет и не будет никакой кроссплатформенности без гемора, всегда будет один файл для винды другой для линуха, третий для мака.
> Java апплеты были явным костылём и совершенно чужеродной (иными словами ненативной) добавкой от сторонней корпорации Солнца.
Чем костыль на джаве отличается от костыля вебассембли? Такая же машина, такой же байткод.
> Виртуальная машина, как и в Java, должна предоставлять лишь следующие возможности - исполнение байткода с опициональной поддержкой JIT, сборка мусора, стандартная библиотека.
Стандартная библиотека - скомпилированный байткод, и никакого отношения к вирт машине не имеет.
> Всё остальное там совершенно лишнее - например поддержка конкретного языка программирования.
Какая поддержка, какого языка? Джава машина знать не знает ничего о джава коде, ей на вход подается байткод. Мало других языков которые генерят джава байткод?
> Таким образом мы приходим к WebAssembly и к необходимости доступа из WebAssembly ко
> всему, к чему сейчас имеет доступ JS.Нет никакой необходимости в вебассембли когда уже есть и джава и нет и прочие виртю машины. Просто джава это оракл, а гугэль это гугэль.
Свой велосипед, свое колесо, как хочу так и верчу!!!
> Они не были нативными. Java изначально проектировалась вовсе не для браузеров и
> эти апплеты были просто костылём.Потому-что в те времена понимали, что додиком надо быть исполнять код прямо в браузере без спросу.
> Вовсе не абсурд. Мультиплатформенность в браузере реально нужна. Изоляция, то есть песочница
Какая изоляция? в гробу видел я вашу изоляцию, открой багтрекер гугловый и посмотри сколько там так называемых сендбокс эскейпингов :)
> Но ты не переживай, V8 и
> так докомпилирует весь JS в машинный код.Я его отключил если че. И давно уже пора вводить уголовную ответственность за исполнения кода без спросу пользователя, а то если мой айпишник в логах пентагона засветился, так это уже основания, что я хакир и можно описывать мой комп и 48 часов допрашивать, и доказывать придется мне, что это не я ломал пентагон, а проходящий мимо чел, который подключился к моему вайфай.
> В каком месте тут грабли?
грабли - всякие джит спрейи, а так нативно бы все исполнялось бы и все.
> Интересная аналогия. Наверное именно так рождалась нода.
А как иначе донести, что всякие вирт машины и не нативное исполнение это "е*ля в опу".
пс: Никакая программа программными средствами от другой программы изолирована быть не может! Чтобы изолировать исполнения двух программ, необходимо аппаратная изоляция - и точка!!!
>> Виртуальная машина нужна там для платформонезависимого исполнения кода, необходимого для работы веб приложения на стороне браузера.
> какая на х*ен платформенная независимость, если помимо разных аппаратных платформ есть
> куча и ОС, все тот же самый бардак как и с
> нативными приложениями, нет и не будет никакой кроссплатформенности без гемора, всегда
> будет один файл для винды другой для линуха, третий для мака.Речь шла о платформах в целом, то есть не исключительно об аппаратных платформах. Научись читать и понимать прочитанное.
>> Java апплеты были явным костылём и совершенно чужеродной (иными словами ненативной) добавкой от сторонней корпорации Солнца.
> Чем костыль на джаве отличается от костыля вебассембли? Такая же машина, такой
> же байткод.WebAssmbly - это часть браузерного движка, а Java плагин - это инопланетная хрень, которая ещё и не сразу запускалась.
>> Виртуальная машина, как и в Java, должна предоставлять лишь следующие возможности - исполнение байткода с опициональной поддержкой JIT, сборка мусора, стандартная библиотека.
> Стандартная библиотека - скомпилированный байткод, и никакого отношения к вирт машине не
> имеет.Стандартная библиотека выполняется в виртуальной машине и поэтому отношение к ней имеет самое непосредственное.
>> Всё остальное там совершенно лишнее - например поддержка конкретного языка программирования.
> Какая поддержка, какого языка? Джава машина знать не знает ничего о джава
> коде, ей на вход подается байткод. Мало других языков которые генерят
> джава байткод?Не тупи. Речь шла о виртуальной машине JS внутри браузера.
>> Таким образом мы приходим к WebAssembly и к необходимости доступа из WebAssembly ко
>> всему, к чему сейчас имеет доступ JS.
> Нет никакой необходимости в вебассембли когда уже есть и джава и нет
> и прочие виртю машины. Просто джава это оракл, а гугэль это
> гугэль.Джавы в браузерах нет, она там умерла. Забудь, смирись, выйди на улицу и проветрись.
> Свой велосипед, свое колесо, как хочу так и верчу!!!
Корпорация добра, да да.
>> Они не были нативными. Java изначально проектировалась вовсе не для браузеров и
>> эти апплеты были просто костылём.
> Потому-что в те времена понимали, что додиком надо быть исполнять код прямо
> в браузере без спросу.Нет, потому что в процессе рождения Java браузеров ещё не было.
>> Вовсе не абсурд. Мультиплатформенность в браузере реально нужна. Изоляция, то есть песочница
> Какая изоляция? в гробу видел я вашу изоляцию, открой багтрекер гугловый и
> посмотри сколько там так называемых сендбокс эскейпингов :)В гробу? Ты согласен запускать код всяких васянов с доступом ко всей системе?
>> Но ты не переживай, V8 и
>> так докомпилирует весь JS в машинный код.
> Я его отключил если че. И давно уже пора вводить уголовную ответственность
> за исполнения кода без спросу пользователя, а то если мой айпишник
> в логах пентагона засветился, так это уже основания, что я хакир
> и можно описывать мой комп и 48 часов допрашивать, и доказывать
> придется мне, что это не я ломал пентагон, а проходящий мимо
> чел, который подключился к моему вайфай.Твоя фамилия Столяров? Фольга в магазине закончилась, а успокоительное в аптеку не завезли?
>> В каком месте тут грабли?
> грабли - всякие джит спрейи, а так нативно бы все исполнялось бы
> и все.То есть ты просто предлагаешь упростить жизнь атакующим и дать им возможность запускать любой их код без необходимост взламывать и пропихивать их код через jit spraying? Какая-то шизофреническая логика.
>> Интересная аналогия. Наверное именно так рождалась нода.
> А как иначе донести, что всякие вирт машины и не нативное исполнение
> это "е*ля в опу".Шел скрипты - это тоже в опу? А Jit - это ненативное исполнение?
> пс: Никакая программа программными средствами от другой программы изолирована быть не может!
> Чтобы изолировать исполнения двух программ, необходимо аппаратная изоляция - и точка!!!Смена контекста - это аппаратная изоляция или програмная?
> Речь шла о платформах в целом, то есть не исключительно об аппаратных
> платформах. Научись читать и понимать прочитанное."будет один файл для винды другой для линуха, третий для мака."
что в данном предложении говорит об аппаратных платформах?
> WebAssmbly - это часть браузерного движка, а Java плагин - это инопланетная
> хрень, которая ещё и не сразу запускалась.Что мешало jvm сунуть в браузер? Зачем щас суют такую же вирт. машину?
> Стандартная библиотека выполняется в виртуальной машине и поэтому отношение к ней имеет
> самое непосредственное.стандартная библиотека выполняется ровно также как и обычный байт код приложения, и никакого отношение к самой виртуальной машине иметь не может. Билтины (built-in) это не стандартная библиотека.
> Не тупи. Речь шла о виртуальной машине JS внутри браузера.
А чем байткод машина для JS отличается от JVM? Ничем.
//medium.com/dailyjs/understanding-v8s-bytecode-317d46c94775
//habr.com/ru/companies/ruvds/articles/336294/> Джавы в браузерах нет, она там умерла. Забудь, смирись, выйди на улицу
> и проветрись.Всего хорошего.
> Корпорация добра, да да.
Трижды да.
> Нет, потому что в процессе рождения Java браузеров ещё не было.
Джава тут не причем, речь о процессе рождения самого браузера.
> В гробу? Ты согласен запускать код всяких васянов с доступом ко всей
> системе?Я уже согласился использовать ОС, которая плюет на понятие безопасТность. Да согласен, так как я запускаю и с моего это ведома, в отличии от запуска всякой хрени прилетевшей по сети. В соседней новости про всякие РоуХаммеры (ИксХамстеры) писали где достаточно запустить код на джаваскрипте через браузер и вуаля. А это что значит? - Достаточно зайти на ОпенНет.
> Твоя фамилия Столяров? Фольга в магазине закончилась, а успокоительное в аптеку не
> завезли?А твоя фамилия Куколд? Шаришся супругой с соседом?
> То есть ты просто предлагаешь упростить жизнь атакующим и дать им возможность
> запускать любой их код без необходимост взламывать и пропихивать их код
> через jit spraying? Какая-то шизофреническая логика.А ты просто не понял сарказма "я одного понять не могу, что им мешает пихнуть нативное исполнение в браузер".
Ты понимаешь, что любое неконтролируемое исполнение - недопустимо с точки зрения элементарной безопасТности. Вот и я предложил, раз вы согласны на такое исполнение, то почему так заморачиваетесь со всякими велосипедами, сделайте все нативно и делов то.
> Шел скрипты - это тоже в опу? А Jit - это ненативное
> исполнение?Шелл скрипт запускаю я. Джаваскрипт прилетевший с васяновского сайта - не я.
> Смена контекста - это аппаратная изоляция или програмная?
какого контекста? изоляция она так и называется изоляцией, а не контекстом каким то. Контекст это энвайромент, окружение.
>> Речь шла о платформах в целом, то есть не исключительно об аппаратных
>> платформах. Научись читать и понимать прочитанное.
> "будет один файл для винды другой для линуха, третий для мака."Будет несколько файлов для каждой из этих систем.
> что в данном предложении говорит об аппаратных платформах?
Аппаратные платформы принёс ты, вот ты и ответь.
>> WebAssmbly - это часть браузерного движка, а Java плагин - это инопланетная
>> хрень, которая ещё и не сразу запускалась.
> Что мешало jvm сунуть в браузер? Зачем щас суют такую же вирт.
> машину?Виртуальная машина общего пользования мало подходит для узкоспециализированного применения. Вероятнее всего причина была в этом, плюс JVM разрабатывалась в рамках совершенно другого проекта. Лучше расскажи, почему ты так настаиваешь именно на JVM? Разве других виртуальных машин не было? Разве JavaScript выполняется не в одной из них?
>> Стандартная библиотека выполняется в виртуальной машине и поэтому отношение к ней имеет
>> самое непосредственное.
> стандартная библиотека выполняется ровно также как и обычный байт код приложения, и
> никакого отношение к самой виртуальной машине иметь не может. Билтины (built-in)
> это не стандартная библиотека.Стандартная библиотека Java - это например реализация System.out.println() и она выполняется в виртуальной машине. Частью виртуальной машины она является просто по факту наличия этого кода в виртуальной машине. У тебя какая-то дислексия при чтении простых текстов?
>> Не тупи. Речь шла о виртуальной машине JS внутри браузера.
> А чем байткод машина для JS отличается от JVM? Ничем.
>
> //medium.com/dailyjs/understanding-v8s-bytecode-317d46c94775
> //habr.com/ru/companies/ruvds/articles/336294/Одна стековая, другая регистровая. Одна статически типизирована, другая не полностью статическая и расчитана на динамически типизированный JS. Ну и там куча других нюансов. Кроме того V8 - далеко не единственная VM для JS, а в начале пути (ранний Netscape) там скорее всего был просто медленный интерпретатор. Почитай так же про invokedynamic в JVM 7, как этот байткод улучшили в JVM 9 и как это связано с поддержкой других языков.
>> Джавы в браузерах нет, она там умерла. Забудь, смирись, выйди на улицу
>> и проветрись.
> Всего хорошего.Шапку надень, а то простудишься.
>> Корпорация добра, да да.
> Трижды да.А что толку? Пока Столяровы пишут бесполезные книжки корпорация добра захватывает наши компьютеры.
>> Нет, потому что в процессе рождения Java браузеров ещё не было.
> Джава тут не причем, речь о процессе рождения самого браузера.Ну вот в "процессе рождения самого браузера" появился свой нативный WebAssembly. На первый взгляд - хорошая вещь, но её зачем-то искусственно ограничили. А ты, непонятно почему, продолжаешь ностальгировать по Java.
>> В гробу? Ты согласен запускать код всяких васянов с доступом ко всей
>> системе?
> Я уже согласился использовать ОС, которая плюет на понятие безопасТность. Да согласен,
> так как я запускаю и с моего это ведома, в отличии
> от запуска всякой хрени прилетевшей по сети.Так нативный код от вебо васянов, который ты так хочешь запускать у себя - это и есть всякая хрень, прилетевшая по сети. Определись уже.
> В соседней новости про
> всякие РоуХаммеры (ИксХамстеры) писали где достаточно запустить код на джаваскрипте через
> браузер и вуаля. А это что значит? - Достаточно зайти на
> ОпенНет.
>> Твоя фамилия Столяров? Фольга в магазине закончилась, а успокоительное в аптеку не
>> завезли?
> А твоя фамилия Куколд? Шаришся супругой с соседом?Столяров, а морду тебе за такие оскорбления в реальной жизни давно не били? Это потому что в реальной жизни ты можешь лишь фигу в кармане держать, а язык в ж-пе.
>> То есть ты просто предлагаешь упростить жизнь атакующим и дать им возможность
>> запускать любой их код без необходимост взламывать и пропихивать их код
>> через jit spraying? Какая-то шизофреническая логика.
> А ты просто не понял сарказма "я одного понять не могу, что
> им мешает пихнуть нативное исполнение в браузер".
>
> Ты понимаешь, что любое неконтролируемое исполнение - недопустимо с точки зрения элементарной
> безопасТности. Вот и я предложил, раз вы согласны на такое исполнение,
> то почему так заморачиваетесь со всякими велосипедами, сделайте все нативно и
> делов то.Почему ты решил, что оно неконтролируемое? Потому что путаешь архитектуру с наличием ошибок в её реализации?
>> Шел скрипты - это тоже в опу? А Jit - это ненативное
>> исполнение?
> Шелл скрипт запускаю я. Джаваскрипт прилетевший с васяновского сайта - не я.Ты уверен, что все шелл скрипты запускаешь лишь ты сам? Всё таки прими успокоительное, потому что реальность тебя сильно испугает.
>> Смена контекста - это аппаратная изоляция или програмная?
> какого контекста? изоляция она так и называется изоляцией, а не контекстом каким
> то. Контекст это энвайромент, окружение.Контекста исполнения. Поинтересуйся сколько всего делает операционная система программно, чтобы изолировать один процесс от другого.
> Будет несколько файлов для каждой из этих систем.Вот она какая крослатформенность, где-то я об этом уже слышал.
> Аппаратные платформы принёс ты, вот ты и ответь.
То есть в контексте кросплатформенности мы должны заби(не Ы)ть на аппаратную платформу?
> Виртуальная машина общего пользования мало подходит для узкоспециализированного применения.
кофеварки - узкоспециализированное направление или такое себе общего пользования?
> Вероятнее всего причина была в этом, плюс JVM разрабатывалась в рамках
> совершенно другого проекта.А так и есть, ясен пень, что гугэль (фуфэль) дел с jvm иметь не будет.
> Лучше расскажи, почему ты так настаиваешь именно на
> JVM? Разве других виртуальных машин не было? Разве JavaScript выполняется не
> в одной из них?Ты понимаешь? что в браузере парсится исходный код javascript-а. Они хотят избавить браузер от парсинга, и исполнять (интерпретировать) байт код (скомпилированный). Мне пох*р на jvm, ты до сих пор не понял, что я противник любого исполнения кода в браузере!!! А комент мой начальный про нативное исполнение это сарказм, зачем такой геморой с вирт машинами если можно нативно исполнять. А мне в ответ - кросплатформенность, мать её.
> Стандартная библиотека Java - это например реализация System.out.println() и она выполняется
> в виртуальной машине. Частью виртуальной машины она является просто по факту
> наличия этого кода в виртуальной машине.Байткод стандартной библиотеки поставляется вместе с вирт машиной и внутри самой вирт машины его нет.
//en.wikipedia.org/wiki/Java_bytecode
//docs.oracle.com/javase/specs/jvms/se9/html/jvms-6.html#jvms-6.5.invokevirtualЧто непонятно будет - спрашивай, если тебе чатгпт не помог.
> Одна стековая, другая регистровая. Одна статически типизирована, другая не полностью статическая и расчитана на динамически типизированный JS. Ну и там куча других
> нюансов.Допустим избавились от js vm и пихнули jvm, что изменится?
> Шапку надень, а то простудишься.
Часто ты такое слышал? Иди погуляй, а батька в очередной командировки? Понятно.
> А что толку? Пока Столяровы пишут бесполезные книжки корпорация добра захватывает наши
> компьютеры.Да знать не знаю этого Столярова, если он пишет, что в браузере исполнять код бесконтрольно это идиотизм, то я с ним полностью согласен.
> Ну вот в "процессе рождения самого браузера" появился свой нативный WebAssembly. На
> первый взгляд - хорошая вещь, но её зачем-то искусственно ограничили. А
> ты, непонятно почему, продолжаешь ностальгировать по Java.А ты видать не родился тогда, когда ровно также из каждой щели хайповала джава в каждой кофеварке. Вебассембли это шаг от избавления от парсинга джаваскрипта и привязки к одному ЯП. Замени вебассембли на любую другую вирт машину, ничего не изменится.
> Так нативный код от вебо васянов, который ты так хочешь запускать у
> себя - это и есть всякая хрень, прилетевшая по сети. Определись
> уже.Так до тебя еще не дошло, если я "хочу" (тебе пояснить что значит "хочу в кавычках"?) запускать все подряд прилетающее из сети, на кой мне твоя вирт машина если можно сделать это нативно?
> Столяров, а морду тебе за такие оскорбления в реальной жизни давно не
> били?Не родился еще тот, а если родился, то точно от соседа!!! Хочешь мне набить морду?
Где ты там оскорбления увидел? Я задал тебе вопрос - "ты куколд?" Ты не понял к чему эта аналогия была? Ты же спросил у меня Столяров ли у меня фамилия. Мне считать это за оскорбление или все таки за аналогию?
> Это потому что в реальной жизни ты можешь лишь фигу
> в кармане держать, а язык в ж-пе.Ты хочешь проверить, что у меня в кармане лежит, сынок? Ты мне тут за вирт машину пояснить не можешь, ты мне за жизнь, думаешь пояснишь? Солей объелся?
> Почему ты решил, что оно неконтролируемое? Потому что путаешь архитектуру с наличием
> ошибок в её реализации?Тебе по сети прилетает вот такая байда, на каждый запрос ты ее проверяешь?
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-123449-1', 'auto');
ga('send', 'pageview');
</script>И ты говоришь, что ты контролируешь любое исполнение в браузере?
> Ты уверен, что все шелл скрипты запускаешь лишь ты сам? Всё таки
> прими успокоительное, потому что реальность тебя сильно испугает.Детский треп, давай по существу.
> Контекста исполнения. Поинтересуйся сколько всего делает операционная система программно, чтобы изолировать один процесс от другого.
Я смотрю ты поинтересовался, ну так приведи хотя бы цитату того, что прочел. Расскажи мне, незнайке, как там устроена программная изоляция процессов, будь добр.
пс: за место трепа про "фольгу" поинтересовался бы за EMSEC.
>> Будет несколько файлов для каждой из этих систем.
> Вот она какая крослатформенность, где-то я об этом уже слышал.Теперь ты говоришь загадками и скорее всего сам с собой. Потому что что ты слышал и какую таблетку забыл принять сегодня знаешь лишь ты.
>> Аппаратные платформы принёс ты, вот ты и ответь.
> То есть в контексте кросплатформенности мы должны заби(не Ы)ть на аппаратную платформу?Нет, в контексте кросплатформенности мы должны учитывать как аппаратные особенности платформы, так и программные.
>> Виртуальная машина общего пользования мало подходит для узкоспециализированного применения.
> кофеварки - узкоспециализированное направление или такое себе общего пользования?Для приготовления чая или варки супа они мало подходят. А для чего ты уже который раз задаёшь детские вопросы?
>> Вероятнее всего причина была в этом, плюс JVM разрабатывалась в рамках
>> совершенно другого проекта.
> А так и есть, ясен пень, что гугэль (фуфэль) дел с jvm
> иметь не будет.Причём тут Google? JavaScript в браузере придумали, реализовали и распространили вовсе не гуглеры.
>> Лучше расскажи, почему ты так настаиваешь именно на
>> JVM? Разве других виртуальных машин не было? Разве JavaScript выполняется не
>> в одной из них?
> Ты понимаешь? что в браузере парсится исходный код javascript-а. Они хотят избавить
> браузер от парсинга, и исполнять (интерпретировать) байт код (скомпилированный).Разумеется он там парсится, но вот избавлять браузер от парсинга они совсем не хотят. Иначе WebAssmebly имел бы полный доступ ко всему тому же, к чему имеет доступ JavaScript.
> Мне пох*р на jvm, ты до сих пор не понял, что я противник
> любого исполнения кода в браузере!!! А комент мой начальный про нативное
> исполнение это сарказм, зачем такой геморой с вирт машинами если можно
> нативно исполнять. А мне в ответ - кросплатформенность, мать её.Ну да и кросплатформенность и изолированность. То есть глупый у тебя получился сарказм - технически безграмотный.
>> Стандартная библиотека Java - это например реализация System.out.println() и она выполняется
>> в виртуальной машине. Частью виртуальной машины она является просто по факту
>> наличия этого кода в виртуальной машине.
> Байткод стандартной библиотеки поставляется вместе с вирт машиной и внутри самой вирт
> машины его нет.Есть, причём уже в прескомпилированном виде и некоторые вещи из стандартной библиотеки в прикладном коде (то есть если ты напишешь их сам и точно так же) работать не будут. Ты какой-то буквоед. Внутри, не внутри, на 3 см внутри... Какая разница? Стандартная библиотека - это часть виртуальной машины и в каких именно файлах она сидит большой роли не играет.
> //en.wikipedia.org/wiki/Java_bytecode
> //docs.oracle.com/javase/specs/jvms/se9/html/jvms-6.html#jvms-6.5.invokevirtual
>
> Что непонятно будет - спрашивай, если тебе чатгпт не помог.Учись, студент.
>> Одна стековая, другая регистровая. Одна статически типизирована, другая не полностью статическая и расчитана на динамически типизированный JS. Ну и там куча других
>> нюансов.
> Допустим избавились от js vm и пихнули jvm, что изменится?Как минимум JavaScript перестанет работать или его новая реализация будет очень тормозной.
>> Шапку надень, а то простудишься.
> Часто ты такое слышал? Иди погуляй, а батька в очередной командировки? Понятно.Это один из известных мемов, а у тебя видать гулящая мать была, раз сразу такие ассоциации и уже не в первый раз.
>> А что толку? Пока Столяровы пишут бесполезные книжки корпорация добра захватывает наши
>> компьютеры.
> Да знать не знаю этого Столярова, если он пишет, что в браузере
> исполнять код бесконтрольно это идиотизм, то я с ним полностью согласен.Ну раз согласен, то предложи и реализуй что-то лучше. А то уже надоело твоё бесконечное нытьё.
>> Ну вот в "процессе рождения самого браузера" появился свой нативный WebAssembly. На
>> первый взгляд - хорошая вещь, но её зачем-то искусственно ограничили. А
>> ты, непонятно почему, продолжаешь ностальгировать по Java.
> А ты видать не родился тогда, когда ровно также из каждой щели
> хайповала джава в каждой кофеварке. Вебассембли это шаг от избавления от
> парсинга джаваскрипта и привязки к одному ЯП. Замени вебассембли на любую
> другую вирт машину, ничего не изменится.JavaScript парсится вовсе не в WebAssembly и, как я уже говорил выше, никто от его парсинга избавляться не собирается. Это просто факт. Ну а привязка к одному языку программирования в браузере - это действительно зло.
>> Так нативный код от вебо васянов, который ты так хочешь запускать у
>> себя - это и есть всякая хрень, прилетевшая по сети. Определись
>> уже.
> Так до тебя еще не дошло, если я "хочу" (тебе пояснить что
> значит "хочу в кавычках"?) запускать все подряд прилетающее из сети, на
> кой мне твоя вирт машина если можно сделать это нативно?Специально для Столяровых с завышенным ЧСВ повторяю - твой сарказм совершенно глупый и технически безграмотный.
>> Столяров, а морду тебе за такие оскорбления в реальной жизни давно не
>> били?
> Не родился еще тот, а если родился, то точно от соседа!!! Хочешь
> мне набить морду?Слова слова... Нарвёшься как нибудь в реальной жизни на кого-то, кто проекции твоих детских воспоминаний о родителях не оценит и будешь битый.
> Где ты там оскорбления увидел? Я задал тебе вопрос - "ты куколд?"
> Ты не понял к чему эта аналогия была? Ты же спросил
> у меня Столяров ли у меня фамилия. Мне считать это за
> оскорбление или все таки за аналогию?Ты сам не понял что спорсил? Может быть ты болен на голову?
>> Это потому что в реальной жизни ты можешь лишь фигу
>> в кармане держать, а язык в ж-пе.
> Ты хочешь проверить, что у меня в кармане лежит, сынок? Ты мне
> тут за вирт машину пояснить не можешь, ты мне за жизнь,
> думаешь пояснишь? Солей объелся?Делать мне больше нечего, пояснять тебе за жизнь, болезному. Я лишь сказал, что в реальной жизни ты себя так по-хамски не ведёшь. Потому что знает, что иначе люлей огрести можешь довольно быстро.
>[оверквотинг удален]
> <script>
> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
> (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
> m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
> })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
> ga('create', 'UA-123449-1', 'auto');
> ga('send', 'pageview');
> </script>
>
> И ты говоришь, что ты контролируешь любое исполнение в браузере?Зачем мне это проверять? Код выполняется в песочнице и реальной угрозы не несёт. Если он меня сильно напряжёт, я просто заблокирую www.google-analytics.com
>> Ты уверен, что все шелл скрипты запускаешь лишь ты сам? Всё таки
>> прими успокоительное, потому что реальность тебя сильно испугает.
> Детский треп, давай по существу.Детский трёп у тебя, если ты считаешь, что все шелл скрипты запускаются лично тобой и что их код всегда ясен и понятен с полувзгляда.
>> Контекста исполнения. Поинтересуйся сколько всего делает операционная система программно, чтобы изолировать один процесс от другого.
> Я смотрю ты поинтересовался, ну так приведи хотя бы цитату того, что
> прочел. Расскажи мне, незнайке, как там устроена программная изоляция процессов, будь
> добр.Ну вот помню в процессорах AMD какой-то баг нашли, он какие-то регистры после смены контекста не чистил и в коде ядра FreeBSD это сделали руками. А рядом с этим кодом был другой код, который так же что-то изменял в регистрах в этот момент.
> пс: за место трепа про "фольгу" поинтересовался бы за EMSEC.
EMSEC на пользовательском компьютере через JavaScript в браузере? Тебе таки нужна фольга головы, сожалею.
> Теперь ты говоришь загадками и скорее всего сам с собой. Потому что
> что ты слышал и какую таблетку забыл принять сегодня знаешь лишь
> ты.Не ты ли рецепт выписал? Понять не можешь, что сам же накалялкал? Водички попей, солевой ты наш.
> Нет, в контексте кросплатформенности мы должны учитывать как аппаратные особенности платформы,
> так и программные.Отлично, берем на заметку.
> Для приготовления чая или варки супа они мало подходят. А для чего
> ты уже который раз задаёшь детские вопросы?Лакмус на рожденных не раньше нулевых :)
> Разумеется он там парсится, но вот избавлять браузер от парсинга они совсем
> не хотят. Иначе WebAssmebly имел бы полный доступ ко всему тому
> же, к чему имеет доступ JavaScript.Будет иметь, не за горами.
> Ну да и кросплатформенность и изолированность. То есть глупый у тебя получился
> сарказм - технически безграмотный.:) книжек читай больше
> Есть, причём уже в прескомпилированном виде и некоторые вещи из стандартной библиотеки
> в прикладном коде (то есть если ты напишешь их сам и
> точно так же) работать не будут. Ты какой-то буквоед. Внутри, не
> внутри, на 3 см внутри... Какая разница? Стандартная библиотека - это
> часть виртуальной машины и в каких именно файлах она сидит большой
> роли не играет.картинки будет достаточно
//docs.oracle.com/javase/8/docs/
//ddc-java.github.io/jre-jdk/jcl.html> Учись, студент.
Учу!
> Как минимум JavaScript перестанет работать или его новая реализация будет очень тормозной.
ясно, завтра с родителя в школу.
> Это один из известных мемов, а у тебя видать гулящая мать была,
> раз сразу такие ассоциации и уже не в первый раз.а ты по ходу уши на морозе отморозил? надень шапочку из спас одеяла :)
> Ну раз согласен, то предложи и реализуй что-то лучше. А то уже
> надоело твоё бесконечное нытьё.С какого перепугу? Тебе предлагать да еще делать что-то лучшее? Пока существуют га*ноеды, будут существовать и га*ноделы и никак не наоборот. Я думаю ты уже понял из каких будешь ты.
> JavaScript парсится вовсе не в WebAssembly и, как я уже говорил выше,
> никто от его парсинга избавляться не собирается. Это просто факт. Ну
> а привязка к одному языку программирования в браузере - это действительно
> зло.Вебассембли это избавление от джаваскрипта!
> Специально для Столяровых с завышенным ЧСВ повторяю - твой сарказм совершенно глупый
> и технически безграмотный.Глупости свои мне повторять не надо. Про технически я тут даже разговор с вами вести не буду, вам лень даже по ссылкам пройтись и прочитать интереса ради. Вывод - либо вы солевой, либо бот.
> Слова слова...
Проверить хочешь?
> Ты сам не понял что спорсил? Может быть ты болен на голову?
Ты куколд? Вопрос ясен или разжевать?
> Делать мне больше нечего, пояснять тебе за жизнь, болезному. Я лишь сказал,
> что в реальной жизни ты себя так по-хамски не ведёшь. Потому
> что знает, что иначе люлей огрести можешь довольно быстро.Повторяю - не родился, а если и родился, то точно от соседа, а с такими не церемонятся.
Перечитай коменты, хамишь тут только ты.> Зачем мне это проверять?
Вот на такой вопрос я и задал тебе по-еврейски вопрос - ты куколд?, выходит да.
> Детский трёп у тебя, если ты считаешь, что все шелл скрипты запускаются
> лично тобой и что их код всегда ясен и понятен с
> полувзгляда.Короче, иди в школу там с пацанами базарь.
> EMSEC на пользовательском компьютере через JavaScript в браузере? Тебе таки нужна фольга
> головы, сожалею.Повторю, ты куколд?
пс: если не ясна аналогия с куколдом просто скажи, поясню.
>>пихать нативное исполнение в браузер - это от небольшого ума.Если в контейнере/виртуалке запуск, то никаких проблем.
А нативный код, это не только быстродействие, но и мгновенный запуск, без предварительного преобразования байт кода.
А разных архитектур, раз, два и обчёлся.
>>>пихать нативное исполнение в браузер - это от небольшого ума.
> Если в контейнере/виртуалке запуск, то никаких проблем.Это и есть идея песочницы.
> А нативный код, это не только быстродействие, но и мгновенный запуск, без
> предварительного преобразования байт кода.Да, но в случае с JS всё ещё хуже, потому что код там не байтовый, а исходный и его ещё скомпилировать надо.
> А разных архитектур, раз, два и обчёлся.
Борис, ты не прав. Посмотри на зоопарк мибильных устройств. Раз два и обчёлся - это разве что на серверах или в крайнем случае на персональных компьютерах. Но веб используется далеко не только на них.
> с JS всё ещё хуже, .. ещё скомпилировать надо.Так и webassembly или надо компилировать, или интерпретировать. И в даже если компилировать, код будет плохой, не использующий фичи архитектуры.
>> Зоопарк мибильных устройств.
Ну, они на ARM.
Кто старый, нестандартный, кривой, и прочие неактуальные - могут перекомпилировать сами.> на серверах
Там мощности другие, перекомпилирует что угодно, и не заметит
>> с JS всё ещё хуже, .. ещё скомпилировать надо.
> Так и webassembly или надо компилировать, или интерпретировать. И в даже если
> компилировать, код будет плохой, не использующий фичи архитектуры.WebAssembly работает вовсе не с исходным кодом, поэтому компилировать там нечего. Ему надо лишь задействовать JIT для трансляции байт кода в машинный, ну или интерпретировать байт код, пока JIT не закончил свою работу. Именно так это работает в JVM.
>>> Зоопарк мибильных устройств.
> Ну, они на ARM.
> Кто старый, нестандартный, кривой, и прочие неактуальные - могут перекомпилировать сами.На очень разных ARM и на очень разных OS.
>> на серверах
> Там мощности другие, перекомпилирует что угодно, и не заметитНе скажи. Проблема холодного старта существует и там. Это одна из причин (хотя далеко не единственная) постепенного перехода с Java на Go.
>Ему надо лишь задействовать JIT для трансляции байт кода в машинный, ну или интерпретировать байт код, пока JIT не закончил свою работу. Именно так это работает в JVM.Угу, только произвести оптимизирующую трансляцию с учётом взаимодействия тысяч функций между собой. Мелочь. </sarcasm>Именно компиляция(разбор исходников на ключевые слова) дело плёвое, самый ад начинается после.
>На очень разных ARM и на очень разных OS.
ARMv7 и ARMv8 и всё. В качестве ОС выступает браузер, а он один и тот же. Виндовые приложения могут запускаться под Windows, wine + Linux, wine + FreeBSD. Более того, трансляция в другие архитектуры процессора тоже не исключена. Вроде такие разные архитектуры, а COFF бинарники даже не подозревают о том, что запущенны не на винде.
JIT - это условно бэкэнд обычного компилятора. Но в отличии от обычного компилятора оптимизация машинного кода в JIT может быть динамической, то есть с учётом конкретного использования кода. Другой частью обычного компилятора является фронтэнд и его работа не такая уж плёвая. Лексер и парсер - это далеко не всё, что есть во фронтэнде компилятора.
> JIT - это условно бэкэнд обычного компилятора. Но в отличии от обычного
> компилятора оптимизация машинного кода в JIT может быть динамической, то есть
> с учётом конкретного использования кода. Другой частью обычного компилятора является фронтэнд
> и его работа не такая уж плёвая. Лексер и парсер -
> это далеко не всё, что есть во фронтэнде компилятора.В WASM нет никакой динамической компиляции, это подаётся как преимущество перед asm.js. Никаких внезапных затупов в процессе работы не будет. Во фронтенде компилятора ещё есть макросы, но они есть далеко не в каждом языке.
>> JIT - это условно бэкэнд обычного компилятора. Но в отличии от обычного
>> компилятора оптимизация машинного кода в JIT может быть динамической, то есть
>> с учётом конкретного использования кода. Другой частью обычного компилятора является фронтэнд
>> и его работа не такая уж плёвая. Лексер и парсер -
>> это далеко не всё, что есть во фронтэнде компилятора.
> В WASM нет никакой динамической компиляции, это подаётся как преимущество перед asm.js.
> Никаких внезапных затупов в процессе работы не будет. Во фронтенде компилятора
> ещё есть макросы, но они есть далеко не в каждом языке.Цитата из Википедии: WebAssembly implementations generally use either ahead-of-time (AOT) or just-in-time (JIT) compilation, though some may also use an interpreter. While the first implementations appeared in web browsers, there are now many non-browser implementations for general-purpose use.
Что касается фронтэнда обычных компиляторов, то там тоже есть свои оптимизации кода. А макросами занимается вообще препроцессор до компилятора.
> WebAssembly работает вовсе не с исходным кодом, поэтому компилировать там нечего. Ему
> надо лишь задействовать JITТак всё равно не мгновенный запуск, а лишняя трансляция из некого кода в нативный.
А ведь можно вместо астрактногг кода использовать сразу нативный.
Для массовых архитектур сервер мог бы сразу выдать готовый код.
А нестандартным архитектурам не все ли равно какой код транслировать в нативный. Научились же х86 игры запускать и на Маках и на Андроидах.
Кстати, Ява и С# могли б ерундой не занимаиться, а тоже создавать сразу нативные бинарники, вон, на Маках Свифт может же.
> на очень разных OS.В браузере не все ли равно в какой он ОS?
> Не скажи. Проблема холодного старта существует и там.Это если б сервер на каждый запрос перекомпилировал, а если там лежит все готовое, то и нагрузки нет.
> Кстати, Ява и С# могли б ерундой не занимаиться, а тоже создавать
> сразу нативные бинарники, вон, на Маках Свифт может же..net core и генерит сразу машинные коды, от JIT они отказались. Ну, а Java это старый, неповоротливый корпоративный монстр. Особых изменений от них ждать не стоит. Кому очень надо быстро запускать Яву, те специальный процессор для неё сделают.
> .net core и генерит сразу машинные коды, от JIT они отказались.С чего ты взял? Там есть JIT. Ты можешь использовать Native AOT или NGEN и тогда JIT использоваться не буедт, но это не является поведением по-умолчанию, то есть полностью от JIT никто не отказывался.
> С чего ты взял?С того, что я смотрел на внутренности бинарника. Там машинный код, а не IL.
>> С чего ты взял?
> С того, что я смотрел на внутренности бинарника. Там машинный код, а
> не IL.Плохо смотрел. По-умолчанию машинный код там - это всего лишь bootstrap.
Никто не мешает. У гугла были NaCl и PNaCl (как wasm, только сделанное инженерами). Но оно оказалось недостаточно кривым. В вебе же как - продвигают самый кривой стандарт.
> В вебе же как - продвигают самый кривой стандарт.То есть вы согласны с тем, что продвигают идею бесконтрольного исполнения ПО на вашей машине?
> То есть вы согласны с тем, что продвигают идею бесконтрольного исполнения ПО
> на вашей машине?В смысле безконтрольного? Этот код у них исполнялся внутри виртуальной машины, как и JS с WASM. Просто компиляция больше не нужна, только проверка кода на возможность выхода за пределы буферов. Работа в QEMU это тоже по Вашему запуск беcконтрольного кода? Я Вам страшный секрет сейчас скажу, ActiveX тоже можно было запускать в изоляции.
> В смысле безконтрольного?Этот код прилетает вам по сети, что тут не ясного?
> Работа в QEMU это тоже по Вашему запуск беcконтрольного кода?
Вам код для куэму по сети прилетает с каждым запросом?
> Этот код прилетает вам по сети, что тут не ясного?Как и CSS. И если Вы думаете, что CSS это не язык программирования, то заблуждаетесь. Вообще любые данные из сети провоцируют запуск какого-то кода. Например интерпретатор brainfuck имполняет код или просто реагирует на данные? Не имеет значения будет ли отображён контент страницы при помощи каких-то специально отформатированных данных или при помощи кода пришедшего для отрисовки контента. Код от данных отличается лишь точкой зрения. Вы боитесь, что этот код начнёт беспределить? Но для этого и нужны песочницы.
> Вам код для куэму по сети прилетает с каждым запросом?
Не с каждым запросом, но код приходит именно из сети. И никакой возможности проконтролировать содержимое этого кода у меня нет.
> Код от данных отличается лишь точкой зрения.конечно, по Фон Нейману так и есть, картинка в полне может содержать исполняемый код.
> Вы боитесь, что этот код начнёт беспределить? Но для этого и нужны песочницы.
Тут главное ответить на вопрос, по отношению к кому? Одно гнилое яблоко в корзине так же беспределит по отношению к остальным. Зачем класть гнилое яблоко в корзину? Должны контролировать? Да, а если яблоки попадают бесконтрольно, что тогда? Каждое яблоко в медицинский пакетик заворачивать или каждое в свою корзинку складывать? Вы и так обречены с текущей вычислительной архитектурой и дальше себя обременяете очередным гемором.
> Не с каждым запросом, но код приходит именно из сети.
Ок, вы его один раз проверяете и запускаете, а что с js? В любой запрос вам прилетит не то, что вы ожидаете.
> И никакой возможности проконтролировать содержимое этого кода у меня нет.
как это нет? вы не знаете какие инструкции будет исполнять процессор?
> Тут главное ответить на вопрос, по отношению к кому? Одно гнилое яблоко
> в корзине так же беспределит по отношению к остальным. Зачем класть
> гнилое яблоко в корзину? Должны контролировать? Да, а если яблоки попадают
> бесконтрольно, что тогда? Каждое яблоко в медицинский пакетик заворачивать или каждое
> в свою корзинку складывать? Вы и так обречены с текущей вычислительной
> архитектурой и дальше себя обременяете очередным гемором.Вы все свои программы прямо в ядре ОС запускаете или предпочитаете всё запускать в изоляции с виртуальной памятью и полным запретом на прямой доступ к железу? Политика нулевого доверия коду и данным стала нормой после того как в мире расплодились хакеры.
> Ок, вы его один раз проверяете и запускаете, а что с js?
> В любой запрос вам прилетит не то, что вы ожидаете.Проверяю? Как я его должен проверить? Хэш iso-файла сравнить? Но это только доказывает, что я получил именно то, что доверенный разработчик выложил. Но это никак мне не поможет, если доверенный разработчик заложил троян.
> как это нет? вы не знаете какие инструкции будет исполнять процессор?
Все какие у него есть? Сложение, вычитание, умножение и деление, а так же доступ к памяти. Всё тоже самое есть в каждом WASM-модуле. Именно правильная комбинация инструкций приводит к пользе или вреду, а знать какая именно комбинация в бинарнике перед Вами Вы не можете пока его не запустите и не увидите результат.
> Вы все свои программы прямо в ядре ОС запускаете или предпочитаете всё запускать в изоляции с виртуальной памятью и полным запретом на прямой доступ к железу?Курам на смех любая программно-реализуемая изоляция на Фон Неймановской архитектуре!!!
> Политика нулевого доверия коду и данным стала нормой после того как в мире расплодились хакеры.
До вашего "зиротраст", мужики делают "ред-блек" сепарацию, не надо мне рассказывать за "секур бай дезинг".
> Проверяю? Как я его должен проверить? Хэш iso-файла сравнить?
Вы о чем щас, о джаваскрипте или исошке? если исошке - распакуй и проверь, в чем проблема, делается один раз после скачки (исошку то мы точно знаем, что качаем (запрашиваем по сети) ради исполнения), а вот джаваскрипт у вас качается каждым запросом, разницу понимаем? у вас с каждым запросом из сети прилетает исполняемый файл, а вы то вовсе не собирались что-либо исполнять, а тупо новости на опеннете почитать решили.
> Но это никак мне не поможет, если доверенный разработчик заложил троян.
Когда я говорю проверить и контроллировать, это означает, что у меня на это есть необходимость, то есть мне нужно запустить код из сети (скачать исошку, экзешку - неважно), и есть все средства для проверки (хеш сумма, подпись, исходный код, дизассемблер и т.д. - неважно), то есть я могу контролировать, то что хочу исполнить. В случае с джаваскриптом, у меня нет необходимости при чтении новостей исполнять код, тем более который при каждом запросе прилетает. Я не могу котролировать каждый такой запуск, в любой момент прилетит все что угодно. С исошкой тоже прилетит что угодно, но исошку качаем по необходимости и осознанно и перед каждым запуском (сами запускаем) имеем возможность проверить.
> Именно правильная комбинация инструкций приводит к пользе или вреду, а знать какая именно комбинация в бинарнике перед Вами Вы не можете пока его не запустите и не увидите результат.
Стоп, я не кота в мешке запускаю на реальной системе, а как по вашему отладку динамическую делают? Для этих целей есть отладочные станции на который запускают тестируемый софт. Я скачал исошку сел за отладочную рабочую станцию, запустил отладчик и втыкаю проверки. В случае с джаваскриптом, он бесконтрольно запускается без необходимости на реальной рабочей станции. Вы просто стрелки не в ту сторону уводите, мы же не обсуждаем методы проверок и т.д. Мы не определяем щас какие инструкции полезны, какие вредны. Речь идет о проверке и контролируемым запуском софта прилетевшем по сети, то есть софт к которому нет доверия до проверки.
пс: даже обычные вирт. маши в которых можно запустить для отладки софт к которому нет доверия грешат багами позволяющие выходить зловреду из гостевого окружения в хостовое, вот вам и изоляция. Это разве изоляцией называется? Курам на смех, в пример всякие фуфэль хромные сендбокс эскейпинги.
> кодирования видео, обработки звука, манипуляции с графикой и 3D, разработки игр, криптографических операций и математических вычислений
> можно добиться уровня производительности близкого к нативному кодуАга, можно, только это будет производительность уровня нативного кода на коре дуба, т.к. simd в wasm только 128 битный завезли, и то ограниченное подмножество, инструкции ускорения aes например вряд ли есть.
>Ага, можно, только это будет производительность уровня нативного кода на коре дуба, т.к. simd в wasm только 128 битный завезли, и то ограниченное подмножество, инструкции ускорения aes например вряд ли есть.На "кору дуба" SIMD вообще никакой в WASM не завезли. Потому что мозилла ленивая.
Ждем в ядре? А то от ebpf бздёвым душком тянет.
в ядре уже раст, а ebpf заменят питоном переписанным на раст
откровенно вредительский стандарт, производящий разбухшие и тормознутые приложения для десктопа, зато оказывающий незаменимую услугу веб-разработчикам - они могут писать вредоносное ПО, которое хрен разреверсишь, и одновременно дискриминировать против пользователей с камнями ниже Nehalem.
> производящий разбухшие и тормознутые приложения для десктопакоторые на порядки быстрее чем обычный JS
> которое хрен разреверсишь,
а вы старайтесь лучше
> одновременно дискриминировать против пользователей с камнями ниже Nehalem.
Nehalem релизнулся в 2008 году...
А у таких 6оmжей есть доступ в интернет? Их не дискриминировать нужно, а просто завершать работу аппы со словами "мусор не поддерживается".
>которые на порядки быстрее чем обычный JSА не надо в JS впихивать Crysis.
> А не надо в JS впихивать Crysis.А не надо указывать что надо, а что не надо.
Если заказчику нужна веб аппа, то ему нужна веб аппа.
WebAssembly отлично позволяет сделать то, что нельзя было сделать раньше.
>А не надо указывать что надо, а что не надо.Так ведь навязывальщики васма именно это и делают.
>Если заказчику нужна веб аппа, то ему нужна веб аппа.
А наёмнику-наймиту заказчика нужно бабло заработать.
>WebAssembly отлично позволяет сделать то, что нельзя было сделать раньше.
Напр. навязать его скоту, и производить им акты скотоложества во все щели во всех нужных позициях.
> Так ведь навязывальщики васма именно это и делают.Ничего они вам не указывают. У вас есть отличный выбор не пользоваться таким продуктом!
Открывайте на своем дилло сайты которые его поддерживают.А вот как раз ВЫ пытаетесь указать заказчику/разработчику как ему делать ЕГО продукт.
Как будто ваше мнение более значимое чем их.
Хотя по факту они - делают продукт, а вы обычная потре...дь.> А наёмнику-наймиту заказчика нужно бабло заработать.
Да, внезапно разработчики хотят кушать.
Не все могут рубить бабло танцуя в костюме антилопы.> Напр. навязать его скоту, и производить им акты скотоложества во все щели
> во всех нужных позициях.Это у вас опыт такой?)) Какие только люди на опенке не встречаются!
Сочувствую, сочувствую...
> откровенно вредительский стандарт,Хм, а кто это решает?
> производящий разбухшие и тормознутые приложения для десктопа,
Но которые ты не напишешь на существующих технологиях.
Попробуй написать какую-то фигму в вебе без WebAssembly> зато оказывающий незаменимую услугу веб-разработчикам - они могут писать вредоносное ПО,
Вредноносность нужно доказать. Без доказательсва это просто куkapeku.
И кстати на других ЯП тоже можно писать вредноносное ПО, маскируя под "ну вышли за пределы буфера, с кем не бывает"Но, всегда можно выкладывать сорцы в опенсорс.
Можешь стать первым таким веб-разрабом))> которое хрен разреверсишь,
Это уже не проблемы разработчиков.
> и одновременно дискриминировать против пользователей с камнями ниже Nehalem.
А ты уже подписал петицию о возврате А72 на заправки?
Ведь бедные дедушки на копейках не могут заправить свое ведро!
>Но которые ты не напишешь на существующих технологиях.Отлично пишутся на C++.
>Вредноносность нужно доказать. Без доказательсва это просто куkapeku.
Открываешь Zoom с WASM отключённым, идёшь на фиг, вот и всё доказательство. Нет никакого обоснования, чтобы Zoom требовал wasm и WebGL, кроме "защиты" "авторских прав" создателей сервиса.
> Отлично пишутся на C++Да ну. И их можно просто взять и открыть в браузере?
Или нужно будет прдлиться с установкой, распространением, проблемами с зависимостями в разных дистрах и т.д?> Открываешь Zoom с WASM отключённым, идёшь на фиг, вот и всё доказательство.
Ахаха! Мда... я думал, что там реально будут какие-то доказтельства, но оказалось что собеседник очередной клован. Ты еще пожалуйся что без js сайт не открывается!
Обоснование есть - авторы так захотели. Ты или пользуешься, или идешь на хурд.
> кроме "защиты" "авторских прав" создателей сервиса
В современном мире это очень важно.
>И их можно просто взять и открыть в браузере?Да, можно. Не совсем просто - ну так и васм не совсем просто. На самом деле даже проще, чем с васмом. Долботни на порядки меньше. Чтобы скомпилить прогу под васм чтобы в браузере шла мне либо весь жирнющий emscripten toolchain тащить, либо альтернативный тулчейн собирать от одного васяна, который с ванильным clangом работает ... только этот альтернативный тулчейн маленько протух и я настолько задолбался его фиксить, что забил на это дело. В файрфоксе же вопрос решается одним аддоном на чистом JavaScript с несколькими строчками кода, дёргающими API, огороженное от быдла. И обычной shared-библиотекой для обычного linux, рабоающей с нативной производительностью на нативном процессоре.
>авторы так захотели
Так и запишем: вредоносные авторы захотели вредоносного.
>В современном мире это очень важно.
Кому важно - тот поражён вредоносным червём.
> Так и запишем: вредоносные авторы захотели вредоносного.Так и запишем: неадекватная белка-истеричка в очередной раз огульно обвиняет авторов.
> Кому важно - тот поражён вредоносным червём.
Обратитесь к доктору, у вас возможно тяжелое повреждение мозга.
> Отлично пишутся на C++.Как Calligra? Кстати, как она там?
> откровенно вредительский стандартСогласен. Критерий может быть таким: если ты не владеешь и не видишь, чем пользуешься - вредно для потребителя.
> Согласен. Критерий может быть таким: если ты не владеешь и не видишь, чем пользуешься - вредно для потребителя.Владеешь ли ты автобусом или поездом метро?
Понимаешь что там внутри?
Мог бы изготовить дома замену шатуну или электродвигателю?
Но пользуешься)ps есть такое классное "обсессивно-компульсивное расстройство личности".
Выражается в частности, в желании контроллировать всё до чего пациент может дотянуться.
Если Вы человек умный, то понимаете, что аргументик так себе.
- Я вижу(осязаю) обстановку в транспорте.
- Я могу выразить претензию эксплуатанту по определенным каналам.
> - Я вижу(осязаю) обстановку в транспорте.Ну так и фронтенд веб-приложения Вы видите.
> - Я могу выразить претензию эксплуатанту по определенным каналам.
И Вы тоже можете написать претензию владельцам кода, но они очевидно будут проигнорированы, как и в случае с транспортом.
- В первом случае я воспринимаю реальность, во втором виртуальность - пиксели, аватары. Это как играть в компьютеров в карты - у тебя свои карты у него все остальные, а на экране показано, что у него ограниченное количество.
- Разница есть - Эксплуатант ближе и в обязанностях написано не допускать претензий. Есть надзирающие органы и гензаказчик.
Простите. *с компьютером
> Предоставлена возможность одновременного использования в одном WebAssembly-модуле нескольких объектов памяти и работы с разными адресными пространствами.Это первые шаги в объектно-ориентированность? А что было до этого?
Ещё вопрос: Вот эти 4 подсистемы можно использовать по-отдельности, а то последняя в списке статьи очень подозрительно выглядит?
> Это первые шаги в объектно-ориентированность? А что было до этого?А до этого была чистая числодробилка, способная работать только с одним выделенным массивом чисел, который нужно считать всей существующей памятью. И даже изменять количество этой памяти изнутри было нельзя. WASM без API на JS абсолютно нежизнеспособен, но при этом переходы изнутри наружу работают крайне медленно. Ах да, стек при этом у него от JS, поэтому получить адрес возврата невозможно и соответственно невозможна раскрутка стека при исключениях без участия js, так же невозможно получить ссылку на что-либо в этом стеке. Все переменные сложнее одного числа и все переменные на которые нужно сформировать ссылку, должны быть выделены из того самого единственного массива.
Последнее просто разрешило хранить в этом недостеке ещё и строки и вызывать соответствующий API. Теперь WASM функция может принять строку, вернуть строку и передать строку в импортируемую из js функцию. Осталось добавить API для работы с массивами и объектами, но маловероятно, что мы это когда-либо увидим, ведь это сделает JS ненужным. Наверняка даже насчёт строк велись жаркие споры.
> А до этого была чистая числодробилка, способная работать только с одним выделенным
> массивом чисел, который нужно считать всей существующей памятью.Первая ступень самостоятельно-вычислительной машины. Ну там же были jсс, cmp, mov, math instructions? Цель - инкапсулярно вычислить без накладных расходов.
>инкапсулярно вычислить без накладных расходов.Это нонсенс. Вы когда-нибудь запускали Android для архитектуры ARM на обычном x86-64? Знаете как он лагает? Ситуация там идентичная WASM в браузере. Есть код с нулевым доверием и регулярными обращениями к памяти, ни одно из которых не должно обойти песочницу. Плюс трансляция байт-кода одной архитектуры в другую с оптимизацией под эту другую архитектуру.
Старается занять нишу java, но java проверена временем и неоднократно "шпинялась" на безопасность, а это неизвестный новичок.
> Старается занять нишу java, но java проверена временем и неоднократно "шпинялась" на
> безопасность, а это неизвестный новичок.Разработчики стандарта больше всего боятся сделать его полноценной заменой JS, так, что он всегда будет безопаснее JS. Нормального доступа к памяти у WASM нет, доступ есть только к типизированным массивам из JS. Что до Java см. CVE-2025-21587
Решил спросить китайских товарищей о причинах урезания доступа WebAssembly к DOM. Интересный диалог получился:https://chat.qwen.ai/s/2ba20e04-99b1-4f24-a17e-058acf53226d?...
Среди прочего особенно понравилось следующее:
> It wasn't technical necessity - it was a business/political decision.
И что? Технически (аппаратно) железо потянет. Озабоченность пролегает на линии этики, политики, приватности.
> И что? Технически (аппаратно) железо потянет. Озабоченность пролегает на линии этики, политики,
> приватности.Поясни про этику, политику и приватность в контексте данной темы.
...активно эксплуатируемая хакерами уязвимость в Хроме: CVE-2025-10585 - ошибка путаницы типов в движке V8 — JavaScript и WebAssembly. Это может привести к выполнению произвольного кода при помощи вредоносной HTML-страницы.
Выыод: Не юзайте Хром.