Squirrel (programming language)

Last updated
Squirrel
Paradigm Multi-paradigm: scripting, imperative, functional, object-oriented
Designed by Alberto Demichelis
First appearedSeptember 6, 2003;21 years ago (2003-09-06)
Stable release
3.2 [1]   OOjs UI icon edit-ltr-progressive.svg / 10 February 2022;2 years ago (10 February 2022)
Typing discipline Dynamic
OS Cross-platform
License MIT license
Filename extensions .nut
Website squirrel-lang.org OOjs UI icon edit-ltr-progressive.svg
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.

Contents

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

Syntax

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

Factorial in Squirrel
localfunctionfactorial(x)// Getting function which is factorial, then getting value which is x{if(x<=1){// if x is less than 1return1;// then the code will just return 1}else{// if that doesn't workreturnx*factorial(x-1);// then the code will return x times factorial(x-1)}}
Generators
functionnot_a_random_number_generator(max){locallast=42;localIM=139968;localIA=3877;localIC=29573;for(;;){// loops foreveryield(max*(last=(last*IA+IC)%IM)/IM);}}localrandtor=not_a_random_number_generator(100);for(locali=0;i<10;i+=1)print(">"+resumerandtor+"\n");
Classes and inheritance
classBaseVector{constructor(...){if(vargv.len()>=3){x=vargv[0];y=vargv[1];z=vargv[2];}}x=0;y=0;z=0;}classVector3extendsBaseVector{function_add(other){if(otherinstanceof::Vector3)return::Vector3(x+other.x,y+other.y,z+other.z);elsethrow"wrong parameter";}functionPrint(){::print(x+","+y+","+z+"\n");}}localv0=Vector3(1,2,3)localv1=Vector3(11,12,13)localv2=v0+v1;v2.Print();

Applications

Applications using Squirrel

Games using Squirrel

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

Related Research Articles

<span class="mw-page-title-main">JavaScript</span> High-level programming language

JavaScript, often abbreviated as JS, is a programming language and core technology of the Web, alongside HTML and CSS. 99% of websites use JavaScript on the client side for webpage behavior.

OCaml is a general-purpose, high-level, multi-paradigm programming language which extends the Caml dialect of ML with object-oriented features. OCaml was created in 1996 by Xavier Leroy, Jérôme Vouillon, Damien Doligez, Didier Rémy, Ascánder Suárez, and others.

<span class="mw-page-title-main">Lua (programming language)</span> Lightweight programming language

Lua is a lightweight, high-level, multi-paradigm programming language designed mainly for embedded use in applications. Lua is cross-platform software, since the interpreter of compiled bytecode is written in ANSI C, and Lua has a relatively simple C application programming interface (API) to embed it into applications.

Programming languages can be grouped by the number and types of paradigms supported.

<span class="mw-page-title-main">F Sharp (programming language)</span> Microsoft programming language

F# is a general-purpose, high-level, strongly typed, multi-paradigm programming language that encompasses functional, imperative, and object-oriented programming methods. It is most often used as a cross-platform Common Language Infrastructure (CLI) language on .NET, but can also generate JavaScript and graphics processing unit (GPU) code.

<span class="mw-page-title-main">D (programming language)</span> Multi-paradigm system programming language

D, also known as dlang, is a multi-paradigm system programming language created by Walter Bright at Digital Mars and released in 2001. Andrei Alexandrescu joined the design and development effort in 2007. Though it originated as a re-engineering of C++, D is now a very different language. As it has developed, it has drawn inspiration from other high-level programming languages. Notably, it has been influenced by Java, Python, Ruby, C#, and Eiffel.

<i>OpenTTD</i> Open-source business simulation game

OpenTTD is a business simulation game in which players try to earn money by transporting passengers, minerals and goods via road, rail, water and air. It is an open-source remake and expansion of the 1995 Chris Sawyer video game Transport Tycoon Deluxe.

<span class="mw-page-title-main">/dev/random</span> Pseudorandom number generator file in Unix-like operating systems

In Unix-like operating systems, /dev/random and /dev/urandom are special files that serve as cryptographically secure pseudorandom number generators (CSPRNGs). They allow access to a CSPRNG that is seeded with entropy from environmental noise, collected from device drivers and other sources. /dev/random typically blocked if there was less entropy available than requested; more recently it usually blocks at startup until sufficient entropy has been gathered, then unblocks permanently. The /dev/urandom device typically was never a blocking device, even if the pseudorandom number generator seed was not fully initialized with entropy since boot. Not all operating systems implement the same methods for /dev/random and /dev/urandom.

In computer science, a tail call is a subroutine call performed as the final action of a procedure. If the target of a tail is the same subroutine, the subroutine is said to be tail recursive, which is a special case of direct recursion. Tail recursion is particularly useful, and is often easy to optimize in implementations.

BeanShell is a small, free, embeddable Java source interpreter with object scripting language features, written in Java. It runs in the Java Runtime Environment (JRE), dynamically executes standard Java syntax and extends it with common scripting conveniences such as loose types, commands, and method closures, like those in Perl and JavaScript.

<span class="mw-page-title-main">Markdown</span> Plain text markup language

Markdown is a lightweight markup language for creating formatted text using a plain-text editor. John Gruber created Markdown in 2004 as an easy-to-read markup language. Markdown is widely used for blogging and instant messaging, and also used elsewhere in online forums, collaborative software, documentation pages, and readme files.

<span class="mw-page-title-main">Watcom C/C++</span>

Watcom C/C++ is an integrated development environment (IDE) product from Watcom International Corporation for the C, C++, and Fortran programming languages. Watcom C/C++ was a commercial product until it was discontinued, then released under the Sybase Open Watcom Public License as Open Watcom C/C++. It features tools for developing and debugging code for DOS, OS/2, Windows, and Linux operating systems, which are based upon 16-bit x86, 32-bit IA-32, or 64-bit x86-64 compatible processors.

In computer programming, an anonymous function is a function definition that is not bound to an identifier. Anonymous functions are often arguments being passed to higher-order functions or used for constructing the result of a higher-order function that needs to return a function. If the function is only used once, or a limited number of times, an anonymous function may be syntactically lighter than using a named function. Anonymous functions are ubiquitous in functional programming languages and other languages with first-class functions, where they fulfil the same role for the function type as literals do for other data types.

<span class="mw-page-title-main">Clojure</span> Dialect of the Lisp programming language on the Java platform

Clojure is a dynamic and functional dialect of the programming language Lisp on the Java platform.

Haskell is a general-purpose, statically-typed, purely functional programming language with type inference and lazy evaluation. Designed for teaching, research, and industrial applications, Haskell has pioneered several programming language features such as type classes, which enable type-safe operator overloading, and monadic input/output (IO). It is named after logician Haskell Curry. Haskell's main implementation is the Glasgow Haskell Compiler (GHC).

Dart is a programming language designed by Lars Bak and Kasper Lund and developed by Google. It can be used to develop web and mobile apps as well as server and desktop applications.

Content Security Policy (CSP) is a computer security standard introduced to prevent cross-site scripting (XSS), clickjacking and other code injection attacks resulting from execution of malicious content in the trusted web page context. It is a Candidate Recommendation of the W3C working group on Web Application Security, widely supported by modern web browsers. CSP provides a standard method for website owners to declare approved origins of content that browsers should be allowed to load on that website—covered types are JavaScript, CSS, HTML frames, web workers, fonts, images, embeddable objects such as Java applets, ActiveX, audio and video files, and other HTML5 features.

<span class="mw-page-title-main">Nim (programming language)</span> Programming language

Nim is a general-purpose, multi-paradigm, statically typed, compiled high-level system programming language, designed and developed by a team around Andreas Rumpf. Nim is designed to be "efficient, expressive, and elegant", supporting metaprogramming, functional, message passing, procedural, and object-oriented programming styles by providing several features such as compile time code generation, algebraic data types, a foreign function interface (FFI) with C, C++, Objective-C, and JavaScript, and supporting compiling to those same languages as intermediate representations.

References

  1. "squirrel/HISTORY at master - albertodemichelis/squirrel - GitHub".
  2. MirthKit Developer Wiki Archived 2014-02-11 at the Wayback Machine
  3. 1 2 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. 1 2 3 4 5 6 7 8 "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. Gothic 2 Online
  11. "iv-multiplayer.com". www.iv-multiplayer.com. Archived from the original on 2012-06-07. Retrieved 2018-07-06.
  12. "Liberty Unleashed" . Retrieved 2019-12-04.
  13. "m2-multiplayer.com". www.m2-multiplayer.com. Archived from the original on 2013-01-02. Retrieved 2018-07-06.
  14. "undernightinbirth". GitHub . Retrieved 2024-08-18.
  15. "AI:Main Page - OpenTTD". wiki.openttd.org. Retrieved 2018-07-06.
  16. "Simutrans-Squirrel-API: Main Page". dwachs.github.io. Retrieved 2018-07-06.
  17. "The VG Resource Wiki". wiki.vg-resource.com. Retrieved 2021-09-04.
  18. "Thimbleweed Park Blog- Engine". blog.thimbleweedpark.com. Retrieved 2018-07-06.
  19. "NewDark 1.25: Squirrel script?". ttlg.com. 2017-03-20. Retrieved 2019-12-25.
  20. Vice City Multiplayer
  21. "Welcome To VC-MP website!". Archived from the original on 2006-04-05. Retrieved 2014-05-04.
  22. "undernightinbirth". GitHub . Retrieved 2024-08-18.
  23. "The Squirrel programming language". SourceForge. Retrieved 2018-07-06.
  24. "Moving to code.google.com and MIT License - The Language - Squirrel - The Programming Language". forum.squirrel-lang.org. Retrieved 2018-07-06.
  25. "Google Code Archive - Long-term storage for Google Code Project Hosting". code.google.com. Retrieved 2018-07-06.