2012-04-03 6 views
6

Si compilo un archivo normal .lua con luac, ¿se puede ejecutar el resultado sin tener instalada la biblioteca o el intérprete Lua?¿Puede el bytecode producido por luac usarse en computadoras sin biblioteca Lua?

+0

He tratado de mejorar la pregunta con mi edición (ciertamente pesada) para reflejar lo que creo que el OP realmente estaba pidiendo. Si me equivoco, ¡siéntete libre de corregirme audazmente! En cualquier caso, creo que esta pregunta refleja una confusión ocasional vista por los nuevos usuarios de Lua, y vale la pena preservarla. – RBerteig

Respuesta

7

No. Puede ejecutarlo en una versión de Lua que se haya creado sin el compilador, pero aún necesita el intérprete de Lua para ejecutar el código.

Dicho sea de paso, el bytecode compilado de Lua también es específico de la máquina; es decir, no puede compilar en una arquitectura y luego ejecutar esa salida en otra arquitectura a menos que comprenda las sutilezas (endianness, tamaños de tipos, etc.).

+0

¡Gracias por la explicación! – user1309306

+0

¡Por favor descarta mi edición pendiente! Estaba totalmente equivocado. Resulta que la portabilidad del bytecode de Lua es cuestionable, algo que encontré con muy poca investigación. Mis disculpas. – Deco

1

Si su código no utiliza ninguna función dinámica basada en carga (eso es loadtring, loadfile, require, etc.) puede despojar a la biblioteca Lua de solo una VM, porque lo que el compilador emite es código para ejecutar en este virtual máquina. Esto puede cortar fácilmente Lua ya pequeña huella a 1/3 fracción del original.

Sin embargo, dado que este NO es un código binario nativo para ninguna arquitectura existente actualmente, aún NO PUEDE ejecutarlo directamente sin la asistencia de VM.

Cuestiones relacionadas