LINUX.ORG.RU

Релиз Wasmer 1.0

 , wasmer, ,


1

1

Выпущен Wasmer 1.0 — среда выполнения WebAssembly (сокр. Wasm), написанная на Rust. Wasm автоматически помещает приложения в песочницу для безопасного выполнения, защищая хост от ошибок и уязвимостей в них. Wasm также предоставляет экономичную среду выполнения, позволяющую контейнерам Wasmer работать там, где контейнеры Docker слишком громоздки.

Особенности выпуска:

  • Параллельная компиляция в разы уменьшила время компиляции программ.
  • Компиляторы на выбор: Singlepass (упор на быстроту компиляции), Cranelift, LLVM (упор на оптимизацию кода).
  • Появление кросс-компиляции, возможность скомпилировать Wasm для aarch64 архитектуры с x86_64 машины и наоборот.
  • Поддержка Apple Silicon.

>>> Подробности

★★★★

Проверено: Shaman007 ()
Ответ на: комментарий от anonymous

А можешь оспорить или подтвердить тезис о том, что с wasm-only будет сложнее блокировать рекламу?

Если wasm-приложение будет самостоятельно рендерить и выдавать в браузер картинку, то из неё рекламу не вырежешь.

static_lab ★★★★★
()
Ответ на: комментарий от anonymous

Такой поступью они все скриптовые языки вытеснят.

Однако при наличии компилируемых языков скриптовые всё-таки изобрели и никуда их выбрасывать никто не спешит даже не в вебе.

static_lab ★★★★★
()
Ответ на: комментарий от static_lab

Однако при наличии компилируемых языков скриптовые всё-таки изобрели и никуда их выбрасывать никто не спешит даже не в вебе.

Это да, но многие скриптовые языки медленно работают.
Не исключено, что по мере взросления этой технологии, потихонечку из WASM а-ля .Net сделают.

Владимир

anonymous
()
Ответ на: комментарий от anonymous

А можешь оспорить или подтвердить тезис о том, что с wasm-only будет сложнее блокировать рекламу?

У WebAssembly нету своего графического API, все равно нужно использовать DOM, img, video, canvas через JavaScript.

Конечно если взять canvas на весь экран, сделать там приложение и в него воткнуть рекламу, то бороться будет сложно. Но ведь такое же безумие можно делать с помощью JavaScript.

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

vertexua ★★★★★
()
Ответ на: комментарий от static_lab

Оптимизированный

обфусцированный

Обработка машиной не предполагает человекочитаемость, особенно если цель обработки иная. Машина может генерировать бред из человеческих слов.

которые классами и объектами умеют оперировать

всего-то дополнительная пара-тройка поддерживаемых типов данных. А так и wasm, и jvm - стековые машины.

anonymous
()
Ответ на: комментарий от vertexua

Конечно если взять canvas на весь экран, сделать там приложение и в него воткнуть рекламу, то бороться будет сложно. Но ведь такое же безумие можно делать с помощью JavaScript.

Да, но кажется, что с wasm это будет делать проще, чем js, потому что можно будет компилировать свою гуи-либу в wasm. Сразу и кроссплатформенность…

anonymous
()
Ответ на: комментарий от RazrFalcon

Заветных 4-е буквы делают своё дело?

UPD Ан нет, пока только просто ветка с анонимусом.

WatchCat ★★★★★
()
Последнее исправление: WatchCat (всего исправлений: 1)
Ответ на: комментарий от anonymous

Да успокойтесь вы уже со своими блокировщиками. Те кто обмазались блокировщиками ненавидят рекламу и на нее не нажимают. Никто не будет пытаться им в горло впихнуть новую стиральную машину. Реклама для тех, кто ей пользуется (прикинь). За пруфами в квартальный отчет профитов Гугла.

vertexua ★★★★★
()
Ответ на: комментарий от vertexua

Я не против доверять США или Австрии

Это сугубо лично твоё дело, кому доверять, а кому нет.

Ты же сам написал в Релиз Wasmer 1.0 (комментарий), что

в беспощадная, не основаная на здравом смысле и реальной безопасности сертификация финансового софта в банановых государствах.

Я и привёл пример, что Swift и один из банков Австрии использовали апплеты, в частности из-за криптографии.

Следовательно, из твоего изначального утверждения получается, что Swift и Австрия - банановые государства. Ну ok.

Надо понять замену какой фичи, которую ты упорно не называешь

Об одной из фич я писал вот тут Релиз Wasmer 1.0 (комментарий), которую ты упорно игнорируешь.

Например, какую замену для https://csrc.nist.gov/CSRC/media/projects/cryptographic-module-validation-program/documents/security-policies/140sp3505.pdf или https://www.ibm.com/support/knowledgecenter/SSYKE2_8.0.0/com.ibm.java.security.component.80.doc/security-component/JCEFIPSDocs/ibmjcefips.html можно использовать сегодня?

Или другой вариант, есть только браузер, как кроссплатформенно (заказчик используется тонкие клиенты на базе Linux, Windows) подписать pdf, docx, odt файлы с помощью того же yubi key без установки стороннего ПО на клиенте (т. е. всяких adobe acrobat pro или ms office отсутствуют)?

Я не утверждаю, что апплеты гениальны и нужны, в своё время они позволяли делать то, что нельзя сделать с помощью html/javascript. Дело в другом, их выкинули, а на замену ничего нет.

ma1uta ★★★
()
Ответ на: комментарий от anonymous

Никакого противостояния wasm vs applets нет, вторых уже по факту нет, а первый не дотягивает по фичам до вторых. Вот так и живём.

ma1uta ★★★
()
Ответ на: комментарий от vertexua

И я не понял, откуда там противостояние, когда его нет, апплеты уже никто не использует.

ma1uta ★★★
()
Ответ на: комментарий от vertexua

Если вы компилируете все в JS, то почему вы едите ложкой, а не ножкой от стула, а?

В цитатник!

Хоть распечатай и над столом повесь)

Twissel ★★★★★
()
Ответ на: комментарий от ma1uta

Следовательно

Ух ты какой. Главное доказать что кто-то негодяй, если не можешь в агрументы. «Докажу что мой оппонент настолько дурак что думает что США - банановая республика, что и требовалось доказать! Мама, мама, я выгирал спор?». Выпей чаю с ромашкой, успокойся чувак.

Теперь возвращаемся к джаве. То что я там вижу - это какой-то закон. Значит закон можно раз - и поменять. Например, если такой модуль есть для Java, у меня вопрос - есть ли такой модуль на С или C++? Можно ли делать ту же операцию с помощью OpenSSL? Если да, то оно вполне кросскомпилируется в WebAssebly.

yubi key

Тут уже интересно. Чтобы это работало я так понимаю нужен доступ к устройству.

В какой-то мере это работает, например описано вот тут https://developers.yubico.com/U2F/Libraries/Using_a_library.html. Значит какой-то доступ есть. Можно ли вместо этого challenge использовать файл? Надо узнать.

Благодарю за возвращение к конструктиву.

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 1)
Ответ на: комментарий от vertexua

Ух ты какой. Главное доказать что кто-то негодяй, если не можешь в агрументы.

Главное выдумать что-то, если не можешь в аргументы. Успокойся, чувак, я же уже писал, что это твоё дело кому верить, а кому нет. Я никому ничего не пытался даже доказывать, не надо придумывать что-то, выдыхай ;)

Теперь возвращаемся к джаве. То что я там вижу - это какой-то закон. Значит закон можно раз - и поменять. Например, если такой модуль есть для Java, у меня вопрос - есть ли такой модуль на С или C++? Можно ли делать ту же операцию с помощью OpenSSL? Если да, то оно вполне кросскомпилируется в WebAssebly.

https://en.wikipedia.org/wiki/Comparison_of_cryptography_libraries#FIPS_140_Validation

Можно ли делать ту же операцию с помощью OpenSSL? Нет, нельзя.

Итак, что же на замену использовать? Чтобы в браузере взять pdf/odt/docs-файл, токен от пользователя (не важно, yubikey, smart token или что-то ещё) и подписать этот файл?

И чтобы была поддержка следующих стандартов https://tools.ietf.org/html/rfc5126, https://www.w3.org/Signature/ и https://www.w3.org/TR/XAdES/ .

Конечно, в конечном счёте из г***а и палок с помощью чей-то матери можно будет соорудить нечто, что позволит это сделать, но это будет боль и страдания.

ma1uta ★★★
()
Ответ на: комментарий от ma1uta

Итак, что же на замену использовать?

Конпеляйте всю сертифицированую жаву emscriptenом и дёргайте webusb. Это будет боль и страдания, ага. Вангую, что до 30 года что нибудь вменяемое и сертифицированое в браузерах опять появится.

А в этих ваших апплетах каждый месяц полдюжины уязвимостей фиксили. Имейте совесть, нормальные люди тем же браузерам порнуху качают.

anonymous
()
Ответ на: комментарий от anonymous

Да, но кажется, что с wasm это будет делать проще, чем js, потому что можно будет компилировать свою гуи-либу в wasm. Сразу и кроссплатформенность…

https://lyceum-allotments.github.io/2016/06/emscripten-and-sdl-2-tutorial-part-1/

Технология давно готова и не зависит от wasm. Разве что он сделает её более популярной.

anonymous
()

вот и настали времена когда вместо ассемблера начали продавать поделки на расте

bernd ★★★★★
()
Ответ на: комментарий от anonymous

всего-то дополнительная пара-тройка поддерживаемых типов данных

Не просто типов. Нужно, чтобы компиляторы могли использовать эти сущности, а для этого нужно придумать универсальную семантику. Не думаю, что это в принципе возможно. С другой стороны, разработчикам WASM необходимо обеспечить возможность работать с DOM и другими API браузера, но скорее всего их ABI будет сишного вида.

static_lab ★★★★★
()
Ответ на: комментарий от bernd

вот и настали времена когда вместо ассемблера начали продавать поделки на расте

asmjs пропустил?

anonymous
()
Ответ на: комментарий от anonymous

человекочитаемостью

цитата с этой страницы(вырезал большую часть первой строки, чтобы не сильно злить всех). Это человекочитаемость???

var hljs=new function(){function q(a){return a.replace(/&/gm,"&amp;").replace(/</gm,"&lt;").replace(/>/gm,"&gt;")}function A(a){for(var b=a.firstChild;b;b=b.nextSibling){if(b.nodeName.toUpperCase()=="CODE"){return b}if(!(b.nodeType==3&&b.nodeValue.match(/\s+/))){break}}}function u(a,b){return Array.prototype.map.call(a.childNodes,function(c){if(c.nodeType==3){return b?c.nodeValue.replace(/\n/g,""):c.nodeValue}if(c.nodeName.toUpperCase()=="BR"){return"\n"}return u(c,b)}).join("")}function B(a){var b=(a.className+" "+(a.parentNode?a.parentNode.className:"")).split(/\s+/);b=b.map(function(d){return d.replace(/^language-/,"")});for(var c=0;c<b.length;c++){if(x[b[c]]||b[c]=="no-...(hljs);hljs.LANGUAGES.scala=function(e){var f={cN:"annotation",b:"@[A-Za-z]+"};var d={cN:"string",b:'u?r?"""',e:'"""',r:10};return{k:"type yield lazy override def with val var false true sealed abstract private trait object null if for while throw finally protected extends import final return else break new catch super class case package default try this match continue throws",c:[{cN:"javadoc",b:"/\\*\\*",e:"\\*/",c:[{cN:"javadoctag",b:"@[A-Za-z]+"}],r:10},e.CLCM,e.CBLCLM,d,e.ASM,e.QSM,{cN:"class",b:"((case )?class |object |trait )",e:"({|$)",i:":",k:"case class trait object",c:[{bWK:true,k:"extends with",r:10},{cN:"title",b:e.UIR},{cN:"params",b:"\\(",e:"\\)",c:[e.ASM,e.QSM,d,f]}]},e.CNM,f]}}(hljs);hljs.LANGUAGES.smalltalk=function(f){var e="[a-z][a-zA-Z0-9_]*";var g={cN:"char",b:"\\$.{1}"};var h={cN:"symbol",b:"#"+f.UIR};return{k:"self super nil true false thisContext",c:[{cN:"comment",b:'"',e:'"',r:0},f.ASM,{cN:"class",b:"\\b[A-Z][A-Za-z0-9_]*",r:0},{cN:"method",b:e+":"},f.CNM,h,g,{cN:"localvars",b:"\\|\\s*"+e+"(\\s+"+e+")*\\s*\\|"},{cN:"array",b:"\\#\\(",e:"\\)",c:[f.ASM,g,f.CNM,h]}]}}(hljs);hljs.LANGUAGES.sql=function(b){return{cI:true,c:[{cN:"operator",b:"(begin|end|start|commit|rollback|savepoint|lock|alter|create|drop|rename|call|delete|do|handler|insert|load|replace|select|truncate|update|set|show|pragma|grant)\\b(?!:)",e:";",eW:true,k:{keyword:"all partial global month current_timestamp using go revoke smallint indicator end-exec disconnect zone with character assertion to add current_user usage input local alter match collate real then rollback get read timestamp session_user not integer bit unique day minute desc insert execute like ilike|2 level decimal drop continue isolation found where constraints domain right national some module transaction relative second connect escape close system_user for deferred section cast current sqlstate allocate intersect deallocate numeric public preserve full goto initially asc no key output collation group by union session both last language constraint column of space foreign deferrable prior connection unknown action commit view or first into float year primary cascaded except restrict set references names table outer open select size are rows from prepare distinct leading create only next inner authorization schema corresponding option declare precision immediate else timezone_minute external varying translation true case exception join hour default double scroll value cursor descriptor values dec fetch procedure delete and false int is describe char as at in varchar null trailing any absolute current_time end grant privileges when cross check write current_date pad begin temporary exec time update catalog user sql date on identity timezone_hour natural whenever interval work order cascade diagnostics nchar having left call do handler load replace truncate start lock show pragma exists number trigger if before after each row",aggregate:"count sum min max avg"},c:[{cN:"string",b:"'",e:"'",c:[b.BE,{b:"''"}],r:0},{cN:"string",b:'"',e:'"',c:[b.BE,{b:'""'}],r:0},{cN:"string",b:"`",e:"`",c:[b.BE]},b.CNM]},b.CBLCLM,{cN:"comment",b:"--",e:"$"}]}}(hljs);hljs.LANGUAGES.tex=function(f){var g={cN:"command",b:"\\\\[a-zA-Zа-яА-я]+[\\*]?"};var h={cN:"command",b:"\\\\[^a-zA-Zа-яА-я0-9]"};var e={cN:"special",b:"[{}\\[\\]\\&#~]",r:0};return{c:[{b:"\\\\[a-zA-Zа-яА-я]+[\\*]? *= *-?\\d*\\.?\\d+(pt|pc|mm|cm|in|dd|cc|ex|em)?",rB:true,c:[g,h,{cN:"number",b:" *=",e:"-?\\d*\\.?\\d+(pt|pc|mm|cm|in|dd|cc|ex|em)?",eB:true}],r:10},g,h,e,{cN:"formula",b:"\\$\\$",e:"\\$\\$",c:[g,h,e],r:0},{cN:"formula",b:"\\$",e:"\\$",c:[g,h,e],r:0},{cN:"comment",b:"%",e:"$",r:0}]}}(hljs);hljs.LANGUAGES.vala=function(b){return{k:{keyword:"char uchar unichar int uint long ulong short ushort int8 int16 int32 int64 uint8 uint16 uint32 uint64 float double bool struct enum string void weak unowned owned async signal static abstract interface override while do for foreach else switch case break default return try catch public private protected internal using new this get set const stdout stdin stderr var",built_in:"DBus GLib CCode Gee Object",literal:"false true null"},c:[{cN:"class",bWK:true,e:"{",k:"class interface delegate namespace",i:"[^,:\\n\\s\\.]",c:[{cN:"title",b:b.UIR}]},b.CLCM,b.CBLCLM,{cN:"string",b:'"""',e:'"""',r:5},b.ASM,b.QSM,b.CNM,{cN:"preprocessor",b:"^#",e:"$",r:2},{cN:"constant",b:" [A-Z_]+ ",r:0}]}}(hljs);hljs.LANGUAGES.xml=function(e){var f="[A-Za-z0-9\\._:-]+";var d={eW:true,r:0,c:[{cN:"attribute",b:f,r:0},{b:'="',rB:true,e:'"',c:[{cN:"value",b:'"',eW:true}]},{b:"='",rB:true,e:"'",c:[{cN:"value",b:"'",eW:true}]},{b:"=",c:[{cN:"value",b:"[^\\s/>]+"}]}]};return{cI:true,c:[{cN:"pi",b:"<\\?",e:"\\?>",r:10},{cN:"doctype",b:"<!DOCTYPE",e:">",r:10,c:[{b:"\\[",e:"\\]"}]},{cN:"comment",b:"<!--",e:"-->",r:10},{cN:"cdata",b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{cN:"tag",b:"<style(?=\\s|>|$)",e:">",k:{title:"style"},c:[d],starts:{e:"</style>",rE:true,sL:"css"}},{cN:"tag",b:"<script(?=\\s|>|$)",e:">",k:{title:"script"},c:[d],starts:{e:"<\/script>",rE:true,sL:"javascript"}},{b:"<%",e:"%>",sL:"vbscript"},{cN:"tag",b:"</?",e:"/?>",r:0,c:[{cN:"title",b:"[^ /><]+"},d]}]}}(hljs);
DonkeyHot ★★★★★
()

Когда-то был сайт такой wasm.ru (с замечательным фольклором, например про 1 нехвативший байт), странно осознавать себя старпёром, который в слово wasm вкладывает совершенно другой смысл.

nikitos ★★★
()
Ответ на: комментарий от vertexua

Имхо, главная проблема JVM это неправильная архитектура песочницы. Я не берусь судить, как надо было сделать, но сам факт того, что в Java находили CVE постоянно, в то время как в куда более распространённом хроме протекший JS движок это практически сенсация, говорит о том, что в браузерах песочница лучше. Ну а wasm это придаток к браузеру и наследует все плюсы браузерной песочницы.

Насчёт этого wasmer, правда, не знаю. По-мне правильней было бы выковырять движок из хрома, как это сделал node и его использовать. Там код понадёжней.

Legioner ★★★★★
()
Последнее исправление: Legioner (всего исправлений: 2)
Ответ на: комментарий от ma1uta

wasm в браузере это вообще ничему не замена. Всё, что он позволяет, это запускать код с более предсказуемой производительностью. По сути это всё можно делать и на JS, но писать код на JS, который не будет дёргать GC и будет компилироваться в высокопроизводительный машинный код это очень нетривиальная задача (но решаемая, ту же криптографию на JS писали и она работает быстро). В случае wasm такой код писать это как раз тривиальная задача. Т.е. если забыть про производительность, то C++-код Emscripten-ом в JS компилировать можно было сто лет назад и оно прекрасно работало, но людям хотелось чуть быстрей. Firefox пробовал asm.js, который предполагал совместимость с JS, но в итоге всё же взлетел wasm.

В плане доступа к чему-либо wasm не просто ничего не добавляет, у него вообще почти весь доступ наружу идёт через JS-обвязку. Впрочем обычно это не является проблемой.

Legioner ★★★★★
()
Последнее исправление: Legioner (всего исправлений: 2)
Ответ на: комментарий от vertexua

Я в курсе, про что он говорит. Подписанный Java-апплет имел полный доступ к системе, в том числе к USB-криптотокену с кастомным протоколом. JavaScript к такому очевидно никак доступ получить не может по определению.

Современный браузер вроде даёт WebUSB, это самое близкое, но там всё мутно. Произвольный девайс поддерживать нельзя, только те, которые умеют в нужные протоколы, то бишь когда у населения на руках сотни тысяч этих крипто-токенов и прочих читалок смарт-карт, которые в WebUSB не умеют, это не замена. В нашем государстве сделали максимально просто: ставится программка (на Java, лол), которая слушает websocket на локалхосте и сайт уже общается с этой программкой через обычное API, открывая коннект на wss://127.0.0.1:1234/ Способ на самом деле мутный и не удивлюсь, если его когда-нибудь прикроют. Правильный способ это использовать дополнение в браузере, которые будет через Native Messaging общаться с внешней программой (а сайт уже будет общаться с дополнением). Ну а программа уже будет общаться с крипто-девайсом. Ну или разрабатывать новые девайсы с поддержкой WebUSB, это, конечно, в идеале.

Из плюсов Java апплетов - они были довольно таки кросс-платформенны. А эти программки, ну понятно, что линукс там идёт лесом. Ну и ещё один плюс - апплет был довольно минимальный, а программа запускает томкат, который запускает спринговое приложение, в общем эта вся фантасмагория запускается с минуту после запуска компьютера и отжирает гигабайт оперативы. Но это, конечно, проблема сверхразумов, которые её писали.

Хотя, возможно, я не совсем прав про то, что нужно новые девайсы разрабатывать. Нужно разбираться. Насколько я знаю, те криптотокены работают как usb serial устройства, а я тут как раз нагуглил Web Serial API который, конечно, драфт, но может быть когда-нибудь заработает, по крайней мере в хроме его активно пилят и можно даже пощупать, включив экспериментальный флаг.

Legioner ★★★★★
()
Последнее исправление: Legioner (всего исправлений: 8)
Ответ на: комментарий от Legioner

Firefox пробовал asm.js, который предполагал совместимость с JS, но в итоге всё же взлетел wasm.

А гугл пилил nacl и pnacl. wasm взлетел всё-таки не вопреки asm.js, а как наследник этого зоопарка.

anonymous
()
Ответ на: комментарий от vertexua

Например, апплеты умели полноценный доступ к сети - не через http. То есть (например) чтобы написать vnc/ssh клиент для браузера, не надо обмазываться вебсуксовыми проксями. Про доступ к файловой системе и к локальным ресурсам уже упоминали.

Nastishka ★★★★★
()
Ответ на: комментарий от Legioner

Нет, они USB CCID и USB HID, serial тут вообще ни при чем.

Nastishka ★★★★★
()
Ответ на: комментарий от Nastishka

Вот за это их и убили. Зашёл человек на вебсайт, в вебсайт имеет доступ и к сети и к фс и ко всему остальному.

anonymous
()
Ответ на: комментарий от anonymous

А еще перед этим пользователь должен был дать разрешение на соответствующие действия. Точно так же как с нынешними телефонами.

Nastishka ★★★★★
()
Ответ на: комментарий от Nastishka

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

anonymous
()
Ответ на: комментарий от anonymous

Во первых не так же, телефоны делали с уже набитым на апплетах опытом и защищают некомпетентного пользователя от отстрела ног.

«Мы хотим доступ к вашей камере, микрофону, контактам, смс, фотографиям, геолокации, истории звонков, управлению вызовами, управлению электропитанием, работу в фоне, доступ к файловой системе и интернету. И обещаем быть хорошими, честно-честно». Примерно так выглядит запрос привилегий современных мобильных приложений

А во вторых пользователь должен был не забыть вовремя обновиться от очередного решета в безопасности.

И поэтому телефоны такие «безопасные» что на них каждые полтора-два месяца секуритиапдейты приходят, обнаруживаются SMS-of-death и прочее. Впрочем и браузеры ничем не лучше - https://www.cvedetails.com/vulnerability-list/vendor_id-1224/product_id-15031/opec-1/Google-Chrome.html

Апплеты убили потому, что они позволяли избежать тивоизации и фактически запускать полноценные standalone приложения которые не контролируются вендором устройства/операционной системы. А сделали это под предлогом «защиты о приватности и безопасности». Ну и владелец Java здесь поднасрал - оракл хотел стричь бабло, поэтому массовый но беспрофитный рынок «java на десктопе» был в общем то закрыт.

Nastishka ★★★★★
()
Ответ на: комментарий от Nastishka

«Мы хотим доступ к вашей камере, микрофону, контактам, смс, фотографиям, геолокации, истории звонков, управлению вызовами, управлению электропитанием, работу в фоне, доступ к файловой системе и интернету. И обещаем быть хорошими, честно-честно». Примерно так выглядит запрос привилегий современных мобильных приложений

А апплеты спросили бы доступ к фс и через него получили бы доступ и к контактам, и к фотографиям и алиас на sudo в bashrc прописали бы.

И поэтому телефоны такие «безопасные» что на них каждые полтора-два месяца секуритиапдейты приходят, обнаруживаются SMS-of-death и прочее. Впрочем и браузеры ничем не лучше - https://www.cvedetails.com/vulnerability-list/vendor_id-1224/product_id-15031/opec-1/Google-Chrome.html

Ссылку на список cve в апплетах принесёшь, чтобы количество сравнить?

Апплеты убили потому, что они позволяли избежать тивоизации

Апплеты емнип померли ещё на «свободной» венде. Всякий smart* появился уже после.

anonymous
()
Ответ на: комментарий от Nastishka

К файловой системе браузеры уже давно имеют доступ с разрешения пользователя. И не ко всей разом, а только туда, куда разрешил. При чем в определенные места, например на системные диски, доступ получить нельзя.

anonymous
()
Ответ на: человекочитаемостью от DonkeyHot

Это приводится в человекочитаемый вид одним нажатием хоткея.

var hljs = new function() {
        function q(a) {
            return a.replace(/&/gm, "&amp;").replace(/</gm, "&lt;").replace(/>/gm, "&gt;")
        }

        function A(a) {
            for (var b = a.firstChild; b; b = b.nextSibling) {
                if (b.nodeName.toUpperCase() == "CODE") {
                    return b
                }
                if (!(b.nodeType == 3 && b.nodeValue.match(/\s+/))) {
                    break
                }
            }
        }

        function u(a, b) {
            return Array.prototype.map.call(a.childNodes, function(c) {
                if (c.nodeType == 3) {
                    return b ? c.nodeValue.replace(/\n/g, "") : c.nodeValue
                }
                if (c.nodeName.toUpperCase() == "BR") {
                    return "\n"
                }
                return u(c, b)
            }).join("")
        }
anonymous
()

WASM != Java Applets

Этот тред слишком много говорит о том что «Зачем нам WASM, когда есть JWM». Нет, это совершенно две разные вещи и технологии, Java Applets уже давно ушел и его JS заменил. WASM позволяет делать веб приложения совершенно на другом уровне, вспомните веб, эдак года 2012-го и сразу поймете в чем преимущество такого подхода, всякие там .net, jwm, erlang vm в вебе не нужны, конечный пользователь может юзать что угодно! Как их вообще поддерживать тут, как следить за доступностью пользователя? Если с ДЖС все смирились, то множить такую боль - не надо!

Neko_Kun
()

Новость про раст, а где же царь?)))

metaprog
()
Ответ на: комментарий от anonymous

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

DonkeyHot ★★★★★
()
Ответ на: комментарий от anonymous

Какая разница? Есть нечитаемый файл, который можно пеобразовать в немножкочитаемый специальной программой.

DonkeyHot ★★★★★
()

Опять этот раст, мода что ли новая.

acroobat
()
Ответ на: комментарий от vertexua

Сборщик мусора - это был подход, который родился давно как ответ на сегфолты. Сейчас есть вещи посовременнее, которые обходятся без GC при разумной эргономике.

Какие? Чем конкретно заменяется сборщик мусора сейчас? Линтеры и «просто правильно работать с памятью вручную» это не замена, если что.

alienclaster ★★★
()
Ответ на: комментарий от anonymous

Нет, указанием владения. Потом компилятор сам вычисляет где поставить free. Счетчик ссылок тоде будет, но только в том случае где мы указали несколько owners. Иногда еще лайфтаймы если хочется прямо очень точно все указать.

И это != «управление памятью вручную»

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 1)
Ответ на: комментарий от vertexua

компилятор сам вычисляет где поставить

Это и есть счетчик ссылок.

Считать что-либо необязательно в рантайме.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.