Squirrel (programming language)
Page Module:Message box/ambox.css has no content.Page Template:Multiple issues/styles.css has no content.
This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these messages)
Page Module:Message box/ambox.css has no content.
|
Page Module:Infobox/styles.css has no content.
| Squirrel | |
|---|---|
| Paradigm | Multi-paradigm: scripting, imperative, functional, object-oriented |
| Designed by | Alberto Demichelis |
| First appeared | September 6, 2003 |
| Template:Infobox software/simple | |
| Typing discipline | Dynamic |
| OS | Cross-platform |
| License | MIT license |
| Filename extensions | .nut |
| Website | Lua error in package.lua at line 80: module 'Module:If preview' not found. |
| Influenced by | |
| C++, JavaScript, Lua, Python | |
| Influenced | |
| MiniD (since renamed Croc) | |
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.[1] It is used extensively by Code::Blocks for scripting and was also used in Final Fantasy Crystal Chronicles: My Life as a King.[2][3] 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.[4]
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
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 <= 1) { // if x is less than 1
return 1; // then the code will just return 1
}
else { // if that doesn't work
return x * factorial(x-1); // then the code will return x times factorial(x-1)
}
}
- 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 < 10; i += 1)
print(">"+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 using Squirrel
- Code::Blocks, integrated development environment
- Enduro/X, cluster application server
- Electric Imp, an end-to-end IoT platform[5]
Games using Squirrel
Page Template:Div col/styles.css has no content.
- Alien Swarm[6]
- Antinomy of Common Flowers[7]
- Apex Legends
- Battle Brothers
- Contagion[6]
- Counter Strike: Global Offensive[6]
- CRSED: F.O.A.D.
- Final Fantasy Crystal Chronicles: My Life as a King[2]
- Gothic Online,[8] a mod for Gothic II
- GTA IV's IV-MP[9]
- Left 4 Dead 2[6]
- Liberty Unleashed[10]
- Mafia II's M2-Multiplayer[11]
- Melty Blood: Type Lumina[12]
- Nuclear Dawn[6]
- OpenTTD[13]
- Portal 2[6]
- Tom Clancy's Rainbow Six Siege's Heated Metal[14]
- Shadow Warrior
- Simutrans[15]
- Sonic Unleashed (PS2/Wii)[16]
- SuperTux
- Team Fortress 2[17]
- Thimbleweed Park[18]
- Thief II (unofficial NewDark engine update)[19]
- Titanfall[6]
- Vice City Multiplayer,[20] a mod for Grand Theft Auto: Vice City[21]
- Under Night In-Birth[22]
- 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.[23] In November 2010, the license was changed to the MIT license to enable the project to be hosted on Google Code.[24][25] It is developed and maintained by Alberto Demichelis.
See also
Lua error in mw.title.lua at line 404: bad argument #2 to 'title.new' (unrecognized namespace name 'Portal').
References
Page Template:Reflist/styles.css has no content.
- ^ MirthKit Developer Wiki Script error: No such module "webarchive".
- ^ a b Page Module:Citation/CS1/styles.css has no content.Brandon Boyer (21 February 2008). "Gamasutra - GDC 2008 Event Coverage". gamasutra.com. Gamasutra. Archived from the original on May 9, 2010.
- ^ Page Module:Citation/CS1/styles.css has no content."Exclusive: Behind The Scenes of Final Fantasy's WiiWare Debut". gamasutra.com. Gamasutra. 23 June 2008. Archived from the original on November 10, 2010. Retrieved 22 September 2011.
- ^ Page Module:Citation/CS1/styles.css has no content."L4D2 Vscripts - Valve Developer Community". developer.valvesoftware.com. Retrieved 2018-07-06.
- ^ Page Module:Citation/CS1/styles.css has no content."Electric Imp programming guide". electricimp.com.
- ^ a b c d e f g Page Module:Citation/CS1/styles.css has no content."VScript". valvesoftware.com. 2014-08-20. Retrieved 2015-01-17.
- ^ Page Module:Citation/CS1/styles.css has no content."th155-decomp". GitHub. Retrieved 2020-10-19.
- ^ Gothic 2 Online
- ^ Page Module:Citation/CS1/styles.css has no content."iv-multiplayer.com". www.iv-multiplayer.com. Archived from the original on 2012-06-07. Retrieved 2018-07-06.
- ^ Page Module:Citation/CS1/styles.css has no content."Liberty Unleashed". Retrieved 2019-12-04.
- ^ Page Module:Citation/CS1/styles.css has no content."m2-multiplayer.com". www.m2-multiplayer.com. Archived from the original on 2013-01-02. Retrieved 2018-07-06.
- ^ Page Module:Citation/CS1/styles.css has no content."undernightinbirth". GitHub. Retrieved 2024-08-18.
- ^ Page Module:Citation/CS1/styles.css has no content."AI:Main Page - OpenTTD". wiki.openttd.org. Retrieved 2018-07-06.
- ^ Page Module:Citation/CS1/styles.css has no content."Heated Metal". Github. Retrieved 2026-01-09.
- ^ Page Module:Citation/CS1/styles.css has no content."Simutrans-Squirrel-API: Main Page". dwachs.github.io. Retrieved 2018-07-06.
- ^ Page Module:Citation/CS1/styles.css has no content."The VG Resource Wiki". wiki.vg-resource.com. Retrieved 2021-09-04.
- ^ Page Module:Citation/CS1/styles.css has no content."Team Fortress 2 Update Released". Retrieved 2026-01-17.
- ^ Page Module:Citation/CS1/styles.css has no content."Thimbleweed Park Blog- Engine". blog.thimbleweedpark.com. Retrieved 2018-07-06.
- ^ Page Module:Citation/CS1/styles.css has no content."NewDark 1.25: Squirrel script?". ttlg.com. 2017-03-20. Retrieved 2019-12-25.
- ^ Vice City Multiplayer
- ^ Page Module:Citation/CS1/styles.css has no content."Welcome To VC-MP website!". Archived from the original on 2006-04-05. Retrieved 2014-05-04.
- ^ Page Module:Citation/CS1/styles.css has no content."undernightinbirth". GitHub. Retrieved 2024-08-18.
- ^ Page Module:Citation/CS1/styles.css has no content."The Squirrel programming language". SourceForge. Retrieved 2018-07-06.
- ^ Page Module:Citation/CS1/styles.css has no content."Moving to code.google.com and MIT License - The Language - Squirrel - The Programming Language". forum.squirrel-lang.org. Retrieved 2018-07-06.
- ^ Page Module:Citation/CS1/styles.css has no content."Google Code Archive - Long-term storage for Google Code Project Hosting". code.google.com. Retrieved 2018-07-06.
External links
- No URL found. Please specify a URL here or add one to Wikidata.