NekoVM
This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these messages)
|
| NekoVM | |
|---|---|
| Original author | Nicolas Cannasse |
| Developers |
|
| Initial release | 2005 |
| Stable release | 2.3.0
/ October 24, 2019 |
| Written in | C |
| Operating system | Windows, macOS, Linux |
| Platform | IA-32, x86-64 |
| License | MIT |
| Website | nekovm |
| Repository | |
NekoVM is a virtual machine developed by Nicolas Cannasse as part of research and development (R&D) efforts at two independent video game developers in Bordeaux, France: first at Motion Twin and then at Shiro Games. NekoVM's native language is the bytecode for a high-level dynamically typed programming language called Neko. This pairing allows Neko to be used directly as an embedded scripting language, or to target NekoVM by compiling another language (such as Haxe) to NekoVM bytecode.
Concept
Neko has a compiler and a virtual machine (VM) with garbage collection. The compiler converts a source .neko file into a bytecode .n file that can be executed with the VM. Since Neko is dynamically typed with no fixed classes, a developer only needs to find the proper runtime mapping (in contrast to data type mapping) so that code executes correctly. As the Neko FAQ puts it: "...it is easier to write a new or existing language on the NekoVM than it is for the CLR / JVM, since you don’t have to deal with a highlevel type system. Also, this means that languages can interoperate more easily since they only need to share the same data structures and not always the same types."[1]
Neko requires compiling before executing, like other scripting languages such as Apache Groovy. Since Neko need not be interpreted at runtime, it executes faster. The Haxe language can compile to Neko code, among other targets.
Virtual machine
The Neko virtual machine is used to execute a Neko bytecode file, the VM also has the option to convert a bytecode file into an executable file (output changes depending on the target operating system).
Language
| Neko | |
|---|---|
| Paradigm | Multi-paradigm: object-oriented, structured, prototype-based, scripting |
| Designed by | Nicolas Cannasse |
| Developer |
|
| First appeared | 2005 |
| Stable release | 2.3.0
/ October 24, 2019 |
| Typing discipline | Dynamic |
| Implementation language | OCaml |
| Platform | NekoVM |
| OS | Windows, macOS, Linux |
| License | MIT |
| Filename extensions | .neko .n |
| Website | nekovm |
Hello World
$print("Hello World!");
Type conversions
$int("67.87"); // Converts string "67.87" to integer 67
$float(12345); // Converts integer 12345 to float 12345.0000
$string($array(1,2,3)); // Converts array [1,2,3] to string "[1,2,3]"
Objects
o = $new(null); // new empty object
o2 = $new(o); // makes a copy of o
o2 = $new(33); // if parameter is not an object, throw an exception
o.field = value; //sets field to value
o.field; // returns "field" value of object o
Methods
foo = function() {
$print(this.x);
}
o = $new(null);
o.x = 3;
o.bar = function() {
foo();
};
o.bar(); // prints 3
Function scope
var x = 3;
f = function() {
$print(x);
}
x = 4;
f(); // print 3
Prototypes
var proto = $new(null);
proto.foo = function() {
$print(this.msg)
}
var o = $new(null);
o.msg = "hello";
$objsetproto(o,proto);
o.foo(); // print "hello"
$objsetproto(o,null); // remove proto
o.foo(); // exception
Web functionality
Neko includes Apache server modules mod_neko for Neko language and mod_tora for hosting the NekoVM application server tora. As such, it can process user input using GET and POST requests:
get_params = $loader.loadprim("mod_neko@get_params",0);
$print("PARAMS = "+get_params());
See also
References
- ^ "How is Neko different from .Net's CLR or the Java's JVM ?". FAQ. NekoVM. Retrieved 2021-03-28.
External links
- Official website

- Mailing list archives at the Wayback Machine (archived 2013-12-20)
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.