Acabo de mirar brevemente el proyecto de hoy y estoy muy interesado en usarlo en el trabajo de desarrollo general.
Sin embargo, si el resultado final significa que un usuario final que ejecuta wasm en el navegador de su cliente puede acceder a un código legible por humanos, esta es una oportunidad perdida.
No hay ninguna razón para proporcionar al usuario final esta función: un desarrollador puede tener acceso a ella a través de archivos de mapas o algún mecanismo similar que requiera la fuente original.
Si bien es imposible disuadir al determinado de descompilar/revertir la ingeniería de un producto, es útil tener cualquier elemento disuasorio (si desea regalarlo, incluya la fuente/un enlace). Si el esfuerzo/riesgo de robar supera el costo de la licencia legal. etc etc etc
El elemento adicional de seguridad IP al no proporcionar legibilidad probablemente fomentaría una adopción más amplia/rápida (para mí es una completa obviedad).
Por otro lado, si no hay ningún beneficio de seguridad... entonces con motores hw/js más rápidos con el tiempo, volver a C/C++ y mantener un conjunto de habilidades ampliado no parece tan atractivo.
Considere NO proporcionar un mecanismo para hacer que la codificación binaria wasm sea legible. Alguien más lo hará eventualmente de todos modos; mientras tanto, use los recursos en otro lugar y déjenos disfrutar de una corta era de código del lado del cliente ininteligible.
Beto.
Las versiones más recientes de Chrome ya son capaces de convertir WASM binario en un formato de texto.
¿Estás diciendo que puedo ir desde (siguiendo tomado de la entrada de wikipedia)
20 00
42 00
51
04 7e
42 01
05
20 00
20 00
42 01
7d
10 00
7e
0b
para
int factorial(int n) {
si (n == 0)
devolver 1;
demás
devuelve n * factorial(n-1);
}
o reconocible como tal usando cromo como está?
No, devuelve el formato "WAST" aún no especificado formalmente que se describe aquí: 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 está optimizado para un formato binario pequeño, fácil y rápido de analizar. No retiene suficiente información para recuperar completamente la sintaxis original. Cuanto más grande y compleja sea la función, menos reconocible será la descompilación. Esto es especialmente cierto si observa cómo se manejan las estructuras, las clases, las plantillas y otras características de nivel superior.
Excelente (Esa es la "representación intermedia" que figura en el artículo de wikipedia). Pensé que estabas sugiriendo que ya podría "embellecerse" aún más. Preferiría que no pudiera ser (listo para usar).
Y preferiría que todo estuviera hecho/no hecho y diseñado para que siga siendo así.
(Tuve la impresión de que había un plan para finalmente poder traducirlo de nuevo a un pseudocódigo razonable, aunque sin identificadores significativos, en el navegador).
Prohibir binario a alguna forma de fuente legible por humanos no es algo que WebAssembly pueda prohibir. Cualquiera puede implementar lo suyo, por bonito/legible que sea. En cambio, el grupo se preocupa por especificar un formato portátil, eficiente en tamaño y tiempo de carga, adecuado para la compilación en la web.
También nos preocupa hacer que algo se pueda usar, por lo que estamos especificando un formato de texto de bajo nivel y probablemente trabajaremos en las capacidades de depuración.
No es un objetivo garantizar ninguna protección legal a favor o en contra de la descompilación, la ingeniería inversa u otras preocupaciones no técnicas. Esto se deja en manos de sus propios abogados, e insto a los que no son abogados a evitar la especulación. No queremos estar en el negocio de brindar asesoramiento legal.
¿Parece que la discusión previa aborda su pregunta? Cerraré, siéntase libre de reabrir o continuar discutiendo si no.
¿Alguna idea sobre cómo desensamblar este archivo .wast al código fuente original?
Comentario más útil
Prohibir binario a alguna forma de fuente legible por humanos no es algo que WebAssembly pueda prohibir. Cualquiera puede implementar lo suyo, por bonito/legible que sea. En cambio, el grupo se preocupa por especificar un formato portátil, eficiente en tamaño y tiempo de carga, adecuado para la compilación en la web.
También nos preocupa hacer que algo se pueda usar, por lo que estamos especificando un formato de texto de bajo nivel y probablemente trabajaremos en las capacidades de depuración.
No es un objetivo garantizar ninguna protección legal a favor o en contra de la descompilación, la ingeniería inversa u otras preocupaciones no técnicas. Esto se deja en manos de sus propios abogados, e insto a los que no son abogados a evitar la especulación. No queremos estar en el negocio de brindar asesoramiento legal.
¿Parece que la discusión previa aborda su pregunta? Cerraré, siéntase libre de reabrir o continuar discutiendo si no.