Squirrel (programming language)

Squirrel is a high level imperative, object-oriented programming language, designed to be a lightweight scripting language that fits in the size, memory bandwidth, and real-time requirements of applications like video games.

MirthKit, a simple toolkit for making and distributing open source, cross-platform 2D games, uses Squirrel for its platform. It is used extensively by Code::Blocks for scripting and was also used in Final Fantasy Crystal Chronicles: My Life as a King. It is also used in Left 4 Dead 2, Portal 2 and Thimbleweed Park for scripted events and in NewDark, an unofficial Thief 2: The Metal Age engine update, to facilitate additional, simplified means of scripting mission events, aside of the regular C scripting.

Language features

 * Dynamic typing
 * Delegation
 * Classes, inheritance
 * Higher order functions
 * Generators
 * Cooperative threads (coroutines)
 * Tail recursion
 * Exception handling
 * Automatic memory management (mainly reference counting with backup garbage collector)
 * Weak references
 * Both compiler and virtual machine fit together in about 7k lines of C++ code
 * Optional 16-bit character strings

Syntax
Squirrel uses a C-like syntax.


 * Factorial in Squirrel:
 * Generators:
 * Classes and inheritance:

Applications using Squirrel

 * Code::Blocks, integrated development environment
 * Enduro/X, cluster application server
 * Electric Imp, an end-to-end IoT platform

Games using Squirrel

 * Alien Swarm
 * Antinomy of Common Flowers
 * Apex Legends
 * Battle Brothers
 * Contagion
 * Counter Strike: Global Offensive
 * CRSED: F.O.A.D.
 * Final Fantasy Crystal Chronicles: My Life as a King
 * GTA IV's IV-MP
 * Left 4 Dead 2
 * Liberty Unleashed
 * Mafia II's M2-Multiplayer
 * Nuclear Dawn
 * OpenTTD
 * Portal 2
 * Shadow Warrior
 * Simutrans
 * Sonic Unleashed (PS2/Wii)
 * SuperTux
 * Team Fortress 2
 * Thimbleweed Park
 * Thief II (unofficial NewDark engine update)
 * Titanfall
 * Vice City Multiplayer, a mod for Grand Theft Auto: Vice City
 * War Thunder
 * Zero no Tsukaima - Maigo no Period to Ikusen no Symphony (PS2)
 * Zero no Tsukaima - Muma ga Tsumugu Yokaze no Nocturne (PS2)
 * Zero no Tsukaima - Shou-akuma to Harukaze no Concerto (PS2)

History
The language was made public in 2003 under the zlib/libpng license. In November 2010, the license was changed to the MIT license to enable the project to be hosted on Google Code. It is developed and maintained by Alberto Demichelis.