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, Team Fortress 2, Thimbleweed Park, and War Thunder 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
- Tail recursion
- Exception handling
- Automatic memory management
- Weak references
- Both compiler and virtual machine fit together in about 7k lines of C++ code
- Optional support for UCS-2 wide strings
Syntax
Squirrel uses a C-like syntax, albeit inspired by that of Lua as well.;Factorial in Squirrel:
;Generators:
function not_a_random_number_generator
local randtor = not_a_random_number_generator;
for
print;
;Classes and inheritance:
class BaseVector
class Vector3 extends BaseVector
local v0 = Vector3
local v1 = Vector3
local v2 = v0 + v1;
v2.Print;
Applications
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 SwarmAntinomy of Common FlowersApex LegendsBattle BrothersContagionCounter Strike: Global OffensiveCRSED: F.O.A.D.Final Fantasy Crystal Chronicles: My Life as a KingGothic Online, a mod for Gothic IIGTA IV IV-MPLeft 4 Dead 2Liberty UnleashedMafia II M2-MultiplayerMelty Blood: Type LuminaNuclear DawnOpenTTDPortal 2Tom Clancy's Rainbow Six Siege Heated MetalShadow WarriorSimutransSonic Unleashed SuperTuxTeam Fortress 2Thimbleweed ParkThief II TitanfallVice City Multiplayer, a mod for Grand Theft Auto: Vice CityUnder Night In-BirthWar ThunderZero no Tsukaima - Maigo no Period to Ikusen no Symphony Zero no Tsukaima - Muma ga Tsumugu Yokaze no NocturneHistory
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.