Show Changes Show Changes
Edit Edit
Print Print
Recent Changes Recent Changes
Subscriptions Subscriptions
Lost and Found Lost and Found
Find References Find References
Rename Rename
Administration Page Administration Page
Topic Locks Topic Locks



2/11/2017 7:42:42 AM
1/19/2017 3:36:01 AM
1/19/2017 12:21:58 AM
12/15/2016 8:17:52 AM
11/21/2016 1:44:16 PM
List all versions List all versions

RSS feed for the SquirrelWiki namespace

Lua Compared to Squirrel

This page has turned into a flame war, I don't feel like censoring anything expecially because I haven't written any of it. Please take it with a grain of salt(Alberto).

Back to Squirrel Wiki


1. The Squirrel syntax is closer to C/C++/C# than Lua (IMO the Lua syntax provides no significant benefit) (IMO the C syntax provides no significant benefit either...). (depends on who has to write the scripts - engine authors or content authors)

2. Classes/instances are built into Squirrel (simulated with tables in Lua).

3. Squirrel has (fast) arrays. (So does Lua, since 5.0)

4. Squirrel was developed by an experienced commercial game developer for use in creating commercial games (after taking what worked well with Lua and changing/leaving out elements that did not). While the table and some string code are from Lua, the language is otherwise completely new.

5. Many developers prefer simple template binding: while LuaPlus is excellent for Lua, it does not provide easy solutions for class/instance support. While luabind is very powerful, with excellent support for classes/instances, it is also more complicated to set up/compile, can slow compile times, and can cause (extreme) symbol table bloat for debug builds.

Such complex support is required for some applications, but may not be needed or desired for games. Squirrel has DxSquirrel (simple macro binding system), Squadd (boost-based, similar power/issues with luabind), and SqPlus (provides everything I need for commercial game development, including simple/clean class/func/var/constant binding, calling script functions from C/C++, etc., and the template code is very lightweight).

6. Squirrel has a decent, syntax highlighted, portable remote debugger (uses the Eclipse environment). (both commercial and open-source debuggers are available for Lua, see, plus, there's RemDebug from Kepler)

7. I believe Alberto (Squirrel's author) commented that incremental GC won't solve the problems he encountered with Lua while developing scripting for FarCry. (Lua 5.1 has been released and also supports incremental GC now.) Also I prefer the Squirrel language/syntax over Lua's (I started using Lua at 4.x, circa y2k: I promoted Lua back then as an excellent scripting language for games (I used LucasArts as an example early adopter for commercial game applications)).

8. It's not possible to accidentally create a new variable using assignment : "clinet = 1" generates an error if "clinet" (mistyped "client") does not exist. "client <- 1" is required to create the new variable and assign it a value. (trivially achievable in stock Lua using "strict.lua" or the likes. i.e. a non-issue?) (It's an issue. "strict.lua" only applies to global or module scope. In other words your tables/arrays/classes are still error-prone)

9. SqPlus w/Squirrel has VS.NET 2003 (VS8 compatible) projects and solutions: can be downloaded, unzipped, compiled and run in less than 5 minutes.

10. Lua has an established and growing set of 3rd party libraries. That's the biggest problem with Lua spin-offs : you trade in compatibility with everything written for Lua (see ) for some syntactic sugar and a feature or two that will be implemented in some future Lua version anyway... As of Jan 2008 that list of Lua libraries and bindings is fairly small. To talk of 'everything' written for Lua seems a bit of an exaggeration. Such libraries and bindings are worthwhile only if they are actively developed and maintained; how many have noteworthy industrial value?

Florist Jakarta | Toko Bunga Online Murah | Agen Domino99 | Jual Bunga Mawar Murah | Domino Online

Not logged in. Log in

squirrel's community wiki

This is FlexWiki, an open source wiki engine.

Change Style

Recent Topics