MarketSquirrel (programming language)
Company Profile

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.

Language features
Dynamic typingDelegationClasses, inheritanceHigher-order functions • Generators • Cooperative threads (coroutines) • Tail recursionException 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 support for UCS-2 wide strings ==Syntax==
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 { if (x ;Generators: function not_a_random_number_generator(max) { local last = 42; local IM = 139968; local IA = 3877; local IC = 29573; for(;;) { // loops forever yield (max * (last = (last * IA + IC) % IM) / IM); } } local randtor = not_a_random_number_generator(100); for(local i = 0; i "+resume randtor+"\n"); ;Classes and inheritance: class BaseVector { constructor(...) { if(vargv.len() >= 3) { x = vargv[0]; y = vargv[1]; z = vargv[2]; } } x = 0; y = 0; z = 0; } class Vector3 extends BaseVector { function _add(other) { if(other instanceof ::Vector3) return ::Vector3(x+other.x,y+other.y,z+other.z); else throw "wrong parameter"; } function Print() { ::print(x+","+y+","+z+"\n"); } } local v0 = Vector3(1,2,3) local v1 = Vector3(11,12,13) local v2 = v0 + v1; v2.Print(); == Applications ==
Applications
Applications using SquirrelCode::Blocks, integrated development environment • Enduro/X, cluster application server • Electric Imp, an end-to-end IoT platform Games using SquirrelAlien SwarmApex LegendsBattle BrothersContagion a mod for Gothic IIGTA IV IV-MP • Left 4 Dead 2Liberty UnleashedMafia II M2-Multiplayer • Melty Blood: Type LuminaNuclear DawnPortal 2Shadow WarriorSimutransSonic Unleashed (PS2/Wii) • SuperTuxTeam Fortress 2Thimbleweed ParkThief II (unofficial NewDark engine update) • Titanfall a mod for Grand Theft Auto: Vice CityUnder Night In-BirthWar ThunderZero 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==
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. ==See also==
tickerdossier.comtickerdossier.substack.com