Squirrel is a high level
imperative,
object-oriented programming language
A programming language is a system of notation for writing computer programs.
Programming languages are described in terms of their Syntax (programming languages), syntax (form) and semantics (computer science), semantics (meaning), usually def ...
, designed to be a
lightweight
Lightweight is a weight class in combat sports and rowing (sport), rowing.
Boxing Professional boxing
The lightweight division is over 130 pounds (59 kilograms) and up to 135 pounds (61.2 kilograms) boxing weight classes, weight class in the spor ...
scripting language
In computing, a script is a relatively short and simple set of instructions that typically automation, automate an otherwise manual process. The act of writing a script is called scripting. A scripting language or script language is a programming ...
that fits in the size, memory bandwidth, and real-time requirements of applications like
video game
A video game or computer game is an electronic game that involves interaction with a user interface or input device (such as a joystick, game controller, controller, computer keyboard, keyboard, or motion sensing device) to generate visual fe ...
s.
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
Inheritance is the practice of receiving private property, titles, debts, entitlements, privileges, rights, and obligations upon the death of an individual. The rules of inheritance differ among societies and have changed over time. Offi ...
*
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
In computing, a compiler is a computer program that Translator (computing), translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primaril ...
and
virtual machine fit together in about 7k lines of
C++ code
*Optional
16-bit
16-bit microcomputers are microcomputers that use 16-bit microprocessors.
A 16-bit register can store 216 different values. The range of integer values that can be stored in 16 bits depends on the integer representation used. With the two ...
character
strings
Syntax
Squirrel uses a C-like syntax, albeit inspired by that of Lua as well.
;Factorial in Squirrel:
local function factorial(x) // Getting function which is factorial, then getting value which is x
;Generators:
function not_a_random_number_generator(max)
local randtor = not_a_random_number_generator(100);
for(local i = 0; i < 10; i += 1)
print(">"+resume randtor+"\n");
;Classes and inheritance:
class BaseVector
class Vector3 extends BaseVector
local v0 = Vector3(1,2,3)
local v1 = Vector3(11,12,13)
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 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''
* ''Gothic Online'', a mod for ''
Gothic II
* ''
GTA IVs IV-MP
* ''
Left 4 Dead 2''
* ''Liberty Unleashed''
* ''
Mafia IIs M2-Multiplayer
* ''
Melty Blood: Type Lumina''
* ''
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''
* ''
Under Night In-Birth''
* ''
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
The MIT License is a permissive software license originating at the Massachusetts Institute of Technology (MIT) in the late 1980s. As a permissive license, it puts very few restrictions on reuse and therefore has high license compatibility.
Unl ...
to enable the project to be hosted on
Google Code.
It is developed and maintained by Alberto Demichelis.
See also
*
Lua
*
AngelScript
*
Python
*
ECMAScript
ECMAScript (; ES) is a standard for scripting languages, including JavaScript, JScript, and ActionScript. It is best known as a JavaScript standard intended to ensure the interoperability of web pages across different web browsers. It is stan ...
*
Ruby
References
External links
*
{{DEFAULTSORT:Squirrel (Programming Language)
2003 software
Cross-platform free software
Free computer libraries
Free software programmed in C
Object-oriented programming languages
Procedural programming languages
Programming languages
Programming languages created in 2003
Scripting languages
Software using the MIT license