Este artículo necesita citas adicionales para su verificación . ( junio de 2020 ) |
![]() | |
Paradigma | Orientado a objetos , estructurado , basado en prototipos , scripting |
---|---|
Diseñada por | Nicolas Cannasse |
Desarrollador | Motion Twin , Juegos de Shiro |
Apareció por primera vez | 2005 |
Lanzamiento estable | 2.3.0 / 24 de octubre de 2019 |
Disciplina de mecanografía | Dinámica |
Lenguaje de implementación | C , OCaml |
Plataforma | IA-32 , x86-64 |
SO | Windows , macOS , Linux |
Licencia | MIT |
Extensiones de nombre de archivo | .neko .n |
Sitio web | nekovm |
Implementaciones importantes | |
Neko, Haxe |
NekoVM es una máquina virtual desarrollada por Nicolas Cannasse como parte de los esfuerzos de investigación y desarrollo (I + D) en dos empresas independientes de videojuegos en Burdeos , Francia : primero en Motion Twin y luego en Shiro Games . El idioma nativo de NekoVM es el código de bytes para un lenguaje de programación de alto nivel escrito dinámicamente llamado Neko . Este emparejamiento permite que Neko se utilice directamente como un lenguaje de scripting integrado o apuntar a NekoVM compilando algún otro lenguaje (como Haxe ) en el código de bytes de NekoVM.
Neko tiene un compilador y una máquina virtual (VM) con recolección de basura . El compilador convierte un archivo .neko de origen en un archivo .n de código byte que se puede ejecutar con la máquina virtual. Dado que Neko se escribe dinámicamente sin clases fijas, un desarrollador solo necesita encontrar el mapeo de tiempo de ejecución adecuado (en contraste con el mapeo de tipos) para que el código se ejecute correctamente. Como dice la FAQ de Neko : "... es más fácil escribir un idioma nuevo o existente en el NekoVM que para el CLR / JVM , ya que no tiene que lidiar con un sistema de tipos de alto nivel. Además, esto significa que los lenguajes pueden interoperar más fácilmente ya que solo necesitan compartir las mismas estructuras de datos y no siempre los mismos tipos ".[1]
Neko requiere compilar antes de ejecutarse, como otros lenguajes de scripting como Apache Groovy . Dado que no es necesario interpretar Neko en tiempo de ejecución, se ejecuta más rápido. El lenguaje de programación Haxe puede compilarse en código Neko, entre otros objetivos.
La máquina virtual Neko se utiliza para ejecutar un archivo de código de bytes Neko, la VM también tiene la opción de convertir un archivo de código de bytes en un archivo ejecutable (la salida cambia según el sistema operativo de destino).
$ print ( "¡Hola mundo!" );
$ int ( "67,87" ); // Convierte la cadena "67.87" en un entero 67 $ float ( 12345 ); // Convierte el entero 12345 en flotante 12345.0000 $ string ( $ array ( 1 , 2 , 3 )); // Convierte la matriz [1,2,3] en la cadena "[1,2,3]"
o = $ nuevo ( nulo ); // nuevo objeto vacío o2 = $ nuevo ( o ); // hace una copia de o o2 = $ new ( 33 ); // si el parámetro no es un objeto, lanza una excepción o . campo = valor ; // establece el campo en el valor o . campo ; // devuelve el valor "campo" del objeto o
foo = función () { $ imprimir ( esto . x ); } o = $ nuevo ( nulo ); o . x = 3 ; o . barra = función () { foo (); }; o . bar (); // imprime 3
var x = 3 ; f = función () { $ imprimir ( x ); } x = 4 ; f (); // imprimir 3
var proto = $ nuevo ( nulo ); proto . foo = function () { $ print ( este . msg ) }var o = $ nuevo ( nulo ); o . msg = "hola" ; $ objsetproto ( o , proto ); o . foo (); // imprimir "hola"$ objsetproto ( o , nulo ); // eliminar proto o . foo (); // excepción
Neko incluye un módulo mod_neko para el servidor Apache . Como tal, puede procesar la entrada del usuario mediante solicitudes GET y POST:
get_params = $ loader . loadprim ( "mod_neko @ get_params" , 0 ); $ print ( "PARAMS =" + get_params ());