Nicolas Cannasse | 10 Sep 15:13 2011

NekoVM 1.8.2

Hi,

NekoVM 1.8.2 has been released on http://nekovm.org/download !

The VM being very stable, this is a minor bugfix release. Changes are 
the following :

  * vm : use 15 digits (instead of 10) for float display
  * std : allow up to 512MB array/string size in serialize
   (instead of 1MB)
  * std : bugfix in utf8 (with 4 bytes codes)
  * vm : finalizers bugfix on Windows
  * std : added sys_thread_cpu_time()
  * vm : use VEXTERN for neko_kind_module and neko_id_module
  * std : hide process console in process_run
  * nekoml : added Math core module
  * std : fixed timeout error for sockets on Windows
  * mod_tora : added PROXY_MODE configuration
  * std : fixed timeout error for sockets on Linux
  * vm : fixed $int and $float - return null on invalid strings
  * mysql : added result_get_fields_names
  * gc : prevent issues with AV softs / GoogleDesktop
    which inject threads (on windows)
  * vm : use sse2 for fp calculus on gcc
   (double precision, same as msvc/flash)
  * mysql : added support for BINARY(size) type
  * vm : keep stack infos for object/array ops (interp)
  * std : added thread_stack
  * vm : added $fasthash
  * mysql5 : fixed 5.5 protocol change
(Continue reading)

Alexander Konotop | 11 Sep 11:34 2011
Picon

Re: NekoVM 1.8.2

В Sat, 10 Sep 2011 15:13:55 +0200
Nicolas Cannasse <ncannasse <at> motion-twin.com> пишет:

> Hi,
> 
> NekoVM 1.8.2 has been released on http://nekovm.org/download !
> 
> The VM being very stable, this is a minor bugfix release. Changes are 
> the following :
> 
>   * vm : use 15 digits (instead of 10) for float display
>   * std : allow up to 512MB array/string size in serialize
>    (instead of 1MB)
>   * std : bugfix in utf8 (with 4 bytes codes)
>   * vm : finalizers bugfix on Windows
>   * std : added sys_thread_cpu_time()
>   * vm : use VEXTERN for neko_kind_module and neko_id_module
>   * std : hide process console in process_run
>   * nekoml : added Math core module
>   * std : fixed timeout error for sockets on Windows
>   * mod_tora : added PROXY_MODE configuration
>   * std : fixed timeout error for sockets on Linux
>   * vm : fixed $int and $float - return null on invalid strings
>   * mysql : added result_get_fields_names
>   * gc : prevent issues with AV softs / GoogleDesktop
>     which inject threads (on windows)
>   * vm : use sse2 for fp calculus on gcc
>    (double precision, same as msvc/flash)
>   * mysql : added support for BINARY(size) type
>   * vm : keep stack infos for object/array ops (interp)
(Continue reading)

johann Sorel | 1 Oct 00:39 2011

Is neko the solution ?

Hello,

I don't really know where to start, so let's start be the context.

I am a Java developer specialized in GIS (Geographic Information System), stuffs like google maps,
worldwind ... and so on ...
About two years ago the company behind Java (Sun) has been buyed by Oracle and since then all the different
implementation on JVM started to dye.
- Apple stopped it's jvm and will rely on openJDK.
- IBM stopped contributing to apache harmony and moved on openjdk
- Google Davlik VM is in a lawsuit with Oracle
- Apache Harmany has be confirmed it will never be certified as a JVM and so project is nearly dead
+ all the ugly backstabs oracle did ...

... all this to say, after 6years of pleasant java programming, this ecosystem has turned in a golden cage
with a single VM (OpenJDK) remaining and nearly completly under Oracle control.

So before things get even worse I started exploring other solutions and stopped my choice on ParrotVM to
built my project : Eria, a paradygm programming model and a static+constraint language
http://sourceforge.net/p/eria

After several weeks I manage to achieve something starting to work, but Parrot is painfull, full of
perl-ish approaches, nearly inexistant technical docs. It takes an incredible amount of time just to
find out how to do something and requiered to learn PIR and winxed to have a reasonable programming language.

And so (again) I started to search some more VMS, lighter ones. And now I'm interested by Neko VM.

If someone could answers my questions, I would greatly appreciate :)
- license : are there plans to change the license ? to something more 'free', public domain or give the
copyright to a foundation ? it's not that I don't like the GPL license but I still have a very bad experience
(Continue reading)

jlm@justinfront.net | 1 Oct 01:09 2011
Picon

Re: Is neko the solution ?

Johann

Most people code Neko with haXe,

	http://haxe.org/doc/start/neko

and if you code in HaXe your not really totally commited to Neko  
target, you can target php, c++, node.js and tamarin, and also java  
and c# are in the works... so I don't think your license concerns are  
relevant especially as Nicolas ( haxe/neko creator ) is very committed  
to opensource.

Generic haxe links ( for IRC, try  #haxe  )
	http://www.haxe.org
	http://haxe.org/primaryLinks

zip and other formats
	http://code.google.com/p/hxformat/

reflection
	http://haxe.org/doc/cross/reflect

tutorials on Neko using haxe ( including IO )
	http://haxe.org/doc/neko

Hopefully this information is helpful, you can use Neko directly...  
but I am not sure that is how it was designed, obviously you can  
target it with parsers written in other languages... but I think haXe  
is a good solution that will serve you well.

(Continue reading)

Lee Sylvester | 1 Oct 10:56 2011
Picon

RE: Is neko the solution ?

Hi Johann,

- license : are there plans to change the license ? to something more
'free', public domain or give the copyright to a foundation ? it's not that
I don't like the GPL license but I still have a very bad experience with
OpenSolaris which has suddenly change license to something private (thanks
oracle again). I guess you can understand I have a few fears about GPL, it's
not a full proof guarantee for the futur.

I believe there are.  The Neko license was discussed, recently and there are
notions that may see Neko change license to BSD or MIT, soon.   I'll need
confirmation from Nicolas, tho, as I may be way off ;-)

- NekoVM : is there a basic IO support in nekoVM, at least to read and write
files ? so I could build a parser Eria -> Neko with it ?

Absolutely.  Plus, extending Neko to support any feature you choose is a
doddle.  In fact, it makes Python and Ruby seem immobile beasts :-D

- NekoVM : some archive support ? zip, tar, gz, anything ?

Yes, and more.

- NekoVM : my language requieres to have some advance reflexion, I want to
store constraint informations on a function arguments, x between 0 and 10 .

Yes this is possible.  Neko was developed specifically to allow others to
write languages for it.  In fact, the Neko VM comes with three Neko specific
languages - 

(Continue reading)

Lee Sylvester | 1 Oct 11:03 2011
Picon

RE: Is neko the solution ?

Some thoughts.... 

>Most people code Neko with haXe,

This is true for software, but prob not best for compiler / VM design.
NekoML is probably the best bet, here.  It'd produce much smaller, faster
and efficient compilers.

>zip and other formats
>	http://code.google.com/p/hxformat/
>
>reflection
>	http://haxe.org/doc/cross/reflect
>
>tutorials on Neko using haxe ( including IO )
>	http://haxe.org/doc/neko

This is fine if you code in haXe.  However, Justin has a point; the Std
library points to the ndll functions that perform these tasks (though
reflection isn't needed in the same way, as it's more flexible in Neko, so
exclude that).  Therefore, looking at the haXe Std library would be a good
place to work out how Neko performs certain tasks.

I will also point out that, when writing apps in haXe targeted at Neko,
there is a switch you can use to output Neko source code.  This is great for
seeing how certain things are managed, such as haXe's namespaces, reflection
and what have you, as haXe has just about every feature you can dream up ;-)

Regards,
Lee
(Continue reading)

Cauê Waneck | 1 Oct 16:33 2011
Picon

Re: Is neko the solution ?

Hello there Johann!
I think you've made a great choice with neko. It's a very lightweight vm, very easy to grasp and understand how it works!



If someone could answers my questions, I would greatly appreciate :)
- license : are there plans to change the license ? to something more 'free', public domain or give the copyright to a foundation ? it's not that I don't like the GPL license but I still have a very bad experience with OpenSolaris which has suddenly change license to something private (thanks oracle again). I guess you can understand I have a few fears about GPL, it's not a full proof guarantee for the futur.

Well, I can't help you with that. But public domain could suffer from a sudden change to something private as well. Or maybe I'm missing the point.
 
- NekoVM : is there a basic IO support in nekoVM, at least to read and write files ? so I could build a parser Eria -> Neko with it ?
Yes! You should as Justin said check out how haxe standard libs were made with neko. They all use the neko standard library ( you can see the neko standard libs' source code here: http://code.google.com/p/nekovm/source/browse/#svn%2Ftrunk%2Flibs ), and build up an oop structure with haxe.
But OOP isn't the only paradigm you can build with neko, of course. Neko compiler itself was bootstrapped using nekoml, an ml-based language, with pattern matching, etc.
 
- NekoVM : some archive support ? zip, tar, gz, anything ?
Yes. On the std libs you'll find zlib bindings, and as Justin said, there's also the hxformat library, with tons of file formats. You could compile them as a separate .n file and dynamically load them at runtime by your language.
 
- NekoVM : my language requieres to have some advance reflexion, I want to store constraint informations on a function arguments, x between 0 and 10 .
I'm not sure I follow you here. Can't you ensure the constraints by asserting the values at the beginning of your function block? Anyway neko is a dynamically typed vm, so it's naturally very reflection-oriented.
 
- NekoVM : how are objects organize ? in parrot I could store primitives/class/functions in namespaces and acces them using reflexion. Is there something similar in NekoVM. something like paths or namespaces ?
So, a little like javascript, neko is a language oriented by a few primitives: object, array, function, string, int, double and abstract (boxed c) types. Objects are like relational arrays with very fast field lookup. You can emulate namespaces by having nested objects:
my.long.package.Class would be actually something like { my: { long: {package: { Class:(class contents...) } } } }

Also like Javascript, neko is a prototype-based vm, so you can achieve inheritance by stacking prototype objects.

Cheers!
Cauê
--

-- 
Neko : One VM to run them all
(http://nekovm.org)
Nicolas Cannasse | 1 Oct 17:04 2011

Re: Is neko the solution ?

Le 01/10/2011 00:39, johann Sorel a écrit :
> If someone could answers my questions, I would greatly appreciate :)
> - license : are there plans to change the license ? to something more 'free', public domain or give the
copyright to a foundation ? it's not that I don't like the GPL license but I still have a very bad experience
with OpenSolaris which has suddenly change license to something private (thanks oracle again). I guess
you can understand I have a few fears about GPL, it's not a full proof guarantee for the futur.

There are no plans to make the license more private. As the main 
developer of NekoVM as part of my work at Motion-Twin, we are not 
selling any kind of services based on NekoVM or haXe, so we have zero 
commercial interest in doing so (if that can help you).

> - NekoVM : is there a basic IO support in nekoVM, at least to read and write files ? so I could build a parser
Eria ->  Neko with it ?
> - NekoVM : some archive support ? zip, tar, gz, anything ?

The VM itself does not have IO or ZIP support but there are some 
libraries for that : the standard library allows for file io and the 
zlib library allows for compression of archives. For full ZIP/TAR/GZ 
support you need additional code (see 
http://hxformat.googlecode.com/svn/trunk/format/ for a reference - 
written in haXe but running on NekoVM)

> - NekoVM : my language requieres to have some advance reflexion, I want to store constraint informations
on a function arguments, x between 0 and 10 .

You'll need to general additional runtime checks for this I guess.

> - NekoVM : how are objects organize ? in parrot I could store primitives/class/functions in namespaces
and acces them using reflexion. Is there something similar in NekoVM. something like paths or namespaces ?

Objects have a simple table of fields which is a sorted array of 
key/values. Each key is an integer that represents the hashed version of 
the field name. Hashing is done a compilation so runtime access is just 
a log(n) lookup in the object table.

Objects also have a prototype pointer that can be set with $objsetproto 
(see http://nekovm.org/doc/view/builtins). The idea is that if a field 
is not found in the object table it's looked up in the prototype, 
recursively.

This way you can simply encode classes by having the methods in the 
prototype and only the actual fields in the object itself, and chain 
prototypes for inheritance.

You can read more here :
http://nekovm.org/specs#objects

and there :
http://nekovm.org/doc/view/builtins

Best,
Nicolas

--

-- 
Neko : One VM to run them all
(http://nekovm.org)


Gmane