Wikipedia

Squirrel (programming language)

Squirrel
ParadigmMulti-paradigm: scripting, imperative, functional, object-oriented
Designed byAlberto Demichelis
First appearedSeptember 6, 2003
Stable release
3.1 / March 27, 2016
Typing disciplineDynamic
OSCross-platform
LicenseMIT license
Filename extensions.nut
Websitesquirrel-lang.org Edit this at Wikidata
Influenced by
C++, JavaScript, Lua, Python
Influenced
MiniD

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 and embedded systems.

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 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.[4]

Language features

Syntax

Squirrel uses a C-like syntax.

Factorial in Squirrel
 function factorial(x) { if (x == 0) { return 1; } else { return x * 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

Non-game applications using Squirrel

  • Enduro/X Cluster Application server
  • Electric Imp An end to end IoT platform [5]

Games using Squirrel

History

The language was made public in 2003 under the zlib/libpng license.[16] In November 2010, the license was changed to the MIT license to enable the project to be hosted on Google Code.[17][18] It is developed and maintained by Alberto Demichelis.

See also

References

  1. ^ MirthKit Developer Wiki Archived 2014-02-11 at the Wayback Machine
  2. ^ Brandon Boyer (21 February 2008). "Gamasutra - GDC 2008 Event Coverage". gamasutra.com. Gamasutra.
  3. ^ "Exclusive: Behind The Scenes of Final Fantasy's WiiWare Debut". gamasutra.com. Gamasutra. 23 June 2008. Retrieved 22 September 2011.
  4. ^ "L4D2 Vscripts - Valve Developer Community". developer.valvesoftware.com. Retrieved 2018-07-06.
  5. ^ "Electric Imp programming guide". electricimp.com.
  6. ^ a b c d e "VScript". valvesoftware.com. 2014-08-20. Retrieved 2015-01-17.
  7. ^ "NewDark 1.25: Squirrel script?". ttlg.com. 2017-03-20. Retrieved 2019-12-25.
  8. ^ "AI:Main Page - OpenTTD". wiki.openttd.org. Retrieved 2018-07-06.
  9. ^ "iv-multiplayer.com". www.iv-multiplayer.com. Retrieved 2018-07-06.
  10. ^ "m2-multiplayer.com". www.m2-multiplayer.com. Retrieved 2018-07-06.
  11. ^ "Thimbleweed Park Blog- Engine". blog.thimbleweedpark.com. Retrieved 2018-07-06.
  12. ^ "Simutrans-Squirrel-API: Main Page". dwachs.github.io. Retrieved 2018-07-06.
  13. ^ "Welcome To VC-MP website!". https://vc-mp.org/. Archived from the original on 2006-04-05. Retrieved 2014-05-04.
  14. ^ "Liberty Unleashed". Retrieved 2019-12-04.
  15. ^ "th155-decomp". Retrieved 2020-10-19.
  16. ^ "The Squirrel programming language". SourceForge. Retrieved 2018-07-06.
  17. ^ "Moving to code.google.com and MIT License - The Language - Squirrel - The Programming Language". forum.squirrel-lang.org. Retrieved 2018-07-06.
  18. ^ "Google Code Archive - Long-term storage for Google Code Project Hosting". code.google.com. Retrieved 2018-07-06.

External links

This article is copied from an article on Wikipedia® - the free encyclopedia created and edited by its online user community. The text was not checked or edited by anyone on our staff. Although the vast majority of Wikipedia® encyclopedia articles provide accurate and timely information, please do not assume the accuracy of any particular article. This article is distributed under the terms of GNU Free Documentation License.

Copyright © 2003-2025 Farlex, Inc Disclaimer
All content on this website, including dictionary, thesaurus, literature, geography, and other reference data is for informational purposes only. This information should not be considered complete, up to date, and is not intended to be used in place of a visit, consultation, or advice of a legal, medical, or any other professional.