For faster navigation, this Iframe is preloading the Wikiwand page for Squirrel (programming language).

Squirrel (programming language)

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) This article may be in need of reorganization to comply with Wikipedia's layout guidelines. Please help by editing the article to make improvements to the overall structure. (March 2018) (Learn how and when to remove this message) This article needs to be updated. Please help update this article to reflect recent events or newly available information. (March 2018) (Learn how and when to remove this message)
Squirrel
ParadigmMulti-paradigm: scripting, imperative, functional, object-oriented
Designed byAlberto Demichelis
First appearedSeptember 6, 2003; 21 years ago (2003-09-06)
Stable release
3.2[1] Edit this on Wikidata / 10 February 2022; 2 years ago (10 February 2022)
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.

MirthKit, a simple toolkit for making and distributing open source, cross-platform 2D games, uses Squirrel for its platform.[2] It is used extensively by Code::Blocks for scripting and was also used in Final Fantasy Crystal Chronicles: My Life as a King.[3][4] 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.[5]

Language features

[edit]

Syntax

[edit]

Squirrel uses a C-like syntax.

Factorial in Squirrel
function factorial(x)
{
  if (x <= 1) {
    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

[edit]

Applications using Squirrel

[edit]
  • Code::Blocks, integrated development environment
  • Enduro/X, cluster application server
  • Electric Imp, an end-to-end IoT platform[6]

Games using Squirrel

[edit]

History

[edit]

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

See also

[edit]

References

[edit]
  1. ^ "squirrel/HISTORY at master - albertodemichelis/squirrel - GitHub".
  2. ^ MirthKit Developer Wiki Archived 2014-02-11 at the Wayback Machine
  3. ^ a b Brandon Boyer (21 February 2008). "Gamasutra - GDC 2008 Event Coverage". gamasutra.com. Gamasutra.
  4. ^ "Exclusive: Behind The Scenes of Final Fantasy's WiiWare Debut". gamasutra.com. Gamasutra. 23 June 2008. Retrieved 22 September 2011.
  5. ^ "L4D2 Vscripts - Valve Developer Community". developer.valvesoftware.com. Retrieved 2018-07-06.
  6. ^ "Electric Imp programming guide". electricimp.com.
  7. ^ a b c d e f g h "VScript". valvesoftware.com. 2014-08-20. Retrieved 2015-01-17.
  8. ^ "th155-decomp". GitHub. Retrieved 2020-10-19.
  9. ^ "WHAT in the hell, is consumable nut? Please help this is an error code I got, have any of you got this before?". reddit.com. 2019-03-24. Retrieved 2021-09-04.
  10. ^ "iv-multiplayer.com". www.iv-multiplayer.com. Archived from the original on 2012-06-07. Retrieved 2018-07-06.
  11. ^ "Liberty Unleashed". Retrieved 2019-12-04.
  12. ^ "m2-multiplayer.com". www.m2-multiplayer.com. Archived from the original on 2013-01-02. Retrieved 2018-07-06.
  13. ^ "undernightinbirth". GitHub. Retrieved 2024-08-18.
  14. ^ "AI:Main Page - OpenTTD". wiki.openttd.org. Retrieved 2018-07-06.
  15. ^ "Simutrans-Squirrel-API: Main Page". dwachs.github.io. Retrieved 2018-07-06.
  16. ^ "The VG Resource Wiki". wiki.vg-resource.com. Retrieved 2021-09-04.
  17. ^ "Thimbleweed Park Blog- Engine". blog.thimbleweedpark.com. Retrieved 2018-07-06.
  18. ^ "NewDark 1.25: Squirrel script?". ttlg.com. 2017-03-20. Retrieved 2019-12-25.
  19. ^ Vice City Multiplayer
  20. ^ "Welcome To VC-MP website!". Archived from the original on 2006-04-05. Retrieved 2014-05-04.
  21. ^ "undernightinbirth". GitHub. Retrieved 2024-08-18.
  22. ^ "The Squirrel programming language". SourceForge. Retrieved 2018-07-06.
  23. ^ "Moving to code.google.com and MIT License - The Language - Squirrel - The Programming Language". forum.squirrel-lang.org. Retrieved 2018-07-06.
  24. ^ "Google Code Archive - Long-term storage for Google Code Project Hosting". code.google.com. Retrieved 2018-07-06.
[edit]
{{bottomLinkPreText}} {{bottomLinkText}}
Squirrel (programming language)
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.

X

Get ready for Wikiwand 2.0 🎉! the new version arrives on September 1st! Don't want to wait?