The Squirrel Programming Language
developer.valvesoftware.com
developer.valvesoftware.com
From the docs:
> It should give you a Lua environment that allows you to effortlessly run tens of thousands of Lua processes in parallel, leveraging the famed microprocesses implementation of the Erlang VM. The empty Luerl State footprint will be yet smaller than the C Lua State footprint.
https://github.com/r-lyeh/scriptorium
Perhaps these results are due to poor coding practices in the example code.
I made a comment on that wiki MOONS ago, and it still holds.
Is this about Steam? If not, is this (even) faster than Lua? Is it easier or safer than C? Am I missing something? You better have something seriously good to offer if in your first breath you're pitching yourself alongside the very best of both interpreted and compiled languages.
Why you'd use it over Lua, I haven't figured out yet, but I don't use either so I have no basis for comparison.
The remaining differences seem pretty minor; IMO having the OO system baked into the language instead of implemented in user-space is a step backwards. The 0-indexing might be nice if you do a lot of FFI with C, I suppose. Hardly worth giving up the insane performance of LuaJIT for though.
"The problem is that without local declarations, you cannot say where the variable is local to" [2]. Take Python, for example, where "local by default" means "local to the current function". Variables are created in the current function's scope on assignment, which causes 2 problems:
1. It is awkward to modify variables in outer scopes, because an attempt to assign to them creates a new variable. Python works around this with the `global` and `nonlocal` keywords.
2. Python does not support variables which are local to the current block, for example, the body of a loop.
[1] http://lua-users.org/lists/lua-l/2006-10/msg00056.html [2] http://lua-users.org/lists/lua-l/2006-10/msg00063.html
This sort of static checking massively increases the amount of code you can look after without going insane. Add static types too, and you're even better off.
(Last time I used Lua, I modified it so that all variables had to be introduced before their first use, either using `local', or a new `global' keyword. More static checks, and no more accidental globals.)
I love the idea of new languages but there's plenty of good ones out there so there has to be a super good argument in my face explaining why.
http://irrlicht.sourceforge.net/ (seems down at the moment)