Squirrel (programming language)

Computer programming language


title: "Squirrel (programming language)" type: doc version: 1 created: 2026-02-28 author: "Wikipedia contributors" status: active scope: public tags: ["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"] description: "Computer programming language" topic_path: "technology/programming-languages" source: "https://en.wikipedia.org/wiki/Squirrel_(programming_language)" license: "CC BY-SA 4.0" wikipedia_page_id: 0 wikipedia_revision_id: 0

::summary Computer programming language ::

::data[format=table title="Infobox programming language"]

FieldValue
nameSquirrel
file_ext.nut
paradigmMulti-paradigm: scripting, imperative, functional, object-oriented
year
designerAlberto Demichelis
latest_release_version
latest_release_date
typingDynamic
influenced_byC++, JavaScript, Lua, Python
influencedMiniD (since renamed Croc)
operating_systemCross-platform
licenseMIT license
website
::

| name = Squirrel | logo = | file_ext = .nut | paradigm = Multi-paradigm: scripting, imperative, functional, object-oriented | year = | designer = Alberto Demichelis | developer = | latest_release_version = | latest_release_date = | typing = Dynamic | influenced_by = C++, JavaScript, Lua, Python | influenced = MiniD (since renamed Croc) | operating_system = Cross-platform | license = MIT license | website = | wikibooks =

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. 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

Syntax

Squirrel uses a C-like syntax, albeit inspired by that of Lua as well.

;Factorial in Squirrel: ::code[lang=minid] 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: ::code[lang=minid] 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: ::code[lang=minid] 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

Games using Squirrel===

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.

References

References

  1. [http://devs.mirthkit.com MirthKit Developer Wiki] {{webarchive. link. (2014-02-11)
  2. Brandon Boyer. (21 February 2008). "Gamasutra - GDC 2008 Event Coverage". [[Gamasutra]].
  3. (23 June 2008). "Exclusive: Behind The Scenes of Final Fantasy's WiiWare Debut". [[Gamasutra]].
  4. "L4D2 Vscripts - Valve Developer Community".
  5. "Electric Imp programming guide".
  6. "th155-decomp".
  7. [https://gothic-online.com/ Gothic 2 Online]
  8. "iv-multiplayer.com".
  9. (2014-08-20). "VScript".
  10. "Liberty Unleashed".
  11. "m2-multiplayer.com".
  12. "undernightinbirth".
  13. "AI:Main Page - OpenTTD".
  14. "Heated Metal".
  15. "Simutrans-Squirrel-API: Main Page".
  16. "The VG Resource Wiki".
  17. "Team Fortress 2 Update Released".
  18. "Thimbleweed Park Blog- Engine".
  19. (2017-03-20). "NewDark 1.25: Squirrel script?".
  20. [https://vc-mp.org/ Vice City Multiplayer]
  21. "Welcome To VC-MP website!".
  22. "undernightinbirth".
  23. "The Squirrel programming language".
  24. "Moving to code.google.com and MIT License - The Language - Squirrel - The Programming Language".
  25. "Google Code Archive - Long-term storage for Google Code Project Hosting.".

::callout[type=info title="Wikipedia Source"] This article was imported from Wikipedia and is available under the Creative Commons Attribution-ShareAlike 4.0 License. Content has been adapted to SurfDoc format. Original contributors can be found on the article history page. ::

2003-softwarecross-platform-free-softwarefree-computer-librariesfree-software-programmed-in-cobject-oriented-programming-languagesprocedural-programming-languagesprogramming-languagesprogramming-languages-created-in-2003scripting-languagessoftware-using-the-mit-license