HOME

TheInfoList



OR:

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