Только что кратко рассмотрел проект сегодня и очень заинтересован в использовании его в общей работе по разработке.
Однако, если конечный результат означает, что конечный пользователь, запускающий wasm в своем клиентском браузере, может получить доступ к удобочитаемому коду, это упущенная возможность.
Нет причин предоставлять конечному пользователю эту возможность - разработчик может получить к ней доступ через файлы карты или какой-либо аналогичный механизм, требующий исходного кода.
Хотя невозможно удержать детерминированного от декомпиляции/обратной разработки продукта, полезно иметь любой сдерживающий фактор (если вы хотите раздать его, включите источник/ссылку на него). Если усилия/риск кражи перевешивают стоимость легального лицензирования. и т.д. и т.п.
Дополнительный элемент безопасности ip, не обеспечивающий удобочитаемости, вероятно, будет способствовать более широкому/быстрому внедрению (для меня это совершенно не проблема).
С другой стороны, если нет преимущества в плане безопасности... тогда с более быстрыми механизмами hw/js со временем переход обратно на C/C++ и поддержание дальнейшего расширенного набора навыков не выглядит столь привлекательным.
Пожалуйста, рассмотрите возможность НЕ предоставлять механизм, делающий двоичную кодировку wasm читаемой. Кто-то другой все равно сделает это в конце концов - а пока используйте ресурсы в другом месте и дайте нам насладиться короткой эрой непонятного кода на стороне клиента.
Боб.
Новейшие версии Chrome уже способны преобразовывать двоичный WASM в текстовый формат.
Вы говорите, что я могу уйти (следующее взято из статьи в Википедии)
20 00
42 00
51
04 7е
42 01
05
20 00
20 00
42 01
7д
10 00
7е
0b
к
интервал факториал (int n) {
если (n == 0)
вернуть 1;
еще
вернуть n * факториал (n-1);
}
или узнаваемый как таковой с использованием хрома в его нынешнем виде?
Нет, он возвращает еще не совсем формально указанный формат "WAST", описанный здесь: http://webassembly.org/docs/text-format/ .
get_local 0
i64.const 0
i64.eq
if i64
i64.const 1
else
get_local 0
get_local 0
i64.const 1
i64.sub
call 0
i64.mul
end
Web Assembly оптимизирована для небольшого, простого и быстрого для анализа двоичного формата. Он не сохраняет достаточно информации для полного восстановления исходного синтаксиса. Чем больше и сложнее функция, тем менее узнаваемой будет декомпиляция. Это особенно верно, если вы посмотрите, как обрабатываются структуры, классы, шаблоны и другие функции более высокого уровня.
Отлично (это «промежуточное представление», указанное в статье в Википедии) - я думал, вы предлагаете, чтобы его уже можно было «улучшить» дальше - я бы предпочел, чтобы это не могло быть (из коробки).
И я бы предпочел, чтобы все было сделано/не сделано и задумано, чтобы так и оставалось.
(У меня сложилось впечатление, что в конечном итоге планировалось преобразовать его обратно в разумный псевдокод, хотя и без значимых идентификаторов, в браузере.)
WebAssembly не может запретить использование двоичного кода в какой-либо форме удобочитаемого источника. Любой может реализовать свою собственную вещь, однако красивую/читабельную. Вместо этого группа занимается определением переносимого, эффективного по размеру и времени загрузки формата, подходящего для компиляции в Интернете.
Мы также заинтересованы в том, чтобы сделать что-то пригодным для использования, поэтому мы указываем низкоуровневый текстовый формат и, вероятно, будем работать над возможностями отладки.
Гарантировать какую-либо юридическую защиту от декомпиляции, обратного проектирования или других нетехнических проблем не является целью. Это остается на усмотрение ваших собственных юристов, и я призываю неюристов избегать спекуляций. Мы не хотим заниматься предоставлением юридических консультаций.
Похоже, предварительное обсуждение касается вашего вопроса? Я закрою, не стесняйтесь открыть снова или продолжить обсуждение, если нет.
Любая идея о том, как разобрать этот файл .wast на исходный код?
Самый полезный комментарий
WebAssembly не может запретить использование двоичного кода в какой-либо форме удобочитаемого источника. Любой может реализовать свою собственную вещь, однако красивую/читабельную. Вместо этого группа занимается определением переносимого, эффективного по размеру и времени загрузки формата, подходящего для компиляции в Интернете.
Мы также заинтересованы в том, чтобы сделать что-то пригодным для использования, поэтому мы указываем низкоуровневый текстовый формат и, вероятно, будем работать над возможностями отладки.
Гарантировать какую-либо юридическую защиту от декомпиляции, обратного проектирования или других нетехнических проблем не является целью. Это остается на усмотрение ваших собственных юристов, и я призываю неюристов избегать спекуляций. Мы не хотим заниматься предоставлением юридических консультаций.
Похоже, предварительное обсуждение касается вашего вопроса? Я закрою, не стесняйтесь открыть снова или продолжить обсуждение, если нет.