Squirrel (programming language)

Uses your system voice; voice and rate in settings.

Snapshot

≈ 5 min read

Names in other languages

No names in other languages are held for this entry yet.

Article bodies are English and are not machine-translated. A name in another language is not a translation of the article.

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, released in September 6, 2003. 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.

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, released in September 6, 2003. 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 (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 support for UCS-2 wide strings local a = 123 //decimal local b = 0x0012 //hexadecimal local c = 075 //octal local a=1.0 local b=0.234 local a = "I'm a wonderful string\n" // has a newline at the end of the string local x = @"I'm a verbatim string\n" // the \n is literal, similar to "\\n" in a regular string. However, a doubled quotation mark within a verbatim string is replaced by a single quotation mark: local multiline = @" this is a multiline string it will ""embed"" all the new line characters local a = null local a = true; local t={} local test= { a=10 b=function(a) { return a+1; } } local a = ["I'm","an","array"] local b = [null] b[0] = a[2]; ===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 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 IV IV-MP Left 4 Dead 2 Liberty Unleashed Mafia II M2-Multiplayer Melty Blood: Type Lumina Nuclear Dawn OpenTTD Portal 2 Tom Clancy's Rainbow Six Siege Heated Metal 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 to enable the project to be hosted on Google Code. It is developed and maintained by Alberto Demichelis. ==See also== Lua AngelScript Python ECMAScript Ruby ==References== ==External links== Squirrel document

Text derived from https://en.wikipedia.org/w/index.php?oldid=1375816679 under CC BY-SA 4.0; modifications have been made.

References

1 claim could not be tied to a specific sentence and is listed in the table below instead.