Squirrel (programming language)

Last updated
Squirrel
Paradigm Multi-paradigm: scripting, imperative, functional, object-oriented
Designed by Alberto Demichelis
First appearedSeptember 6, 2003;19 years ago (2003-09-06)
Stable release
3.2 [1]   OOjs UI icon edit-ltr-progressive.svg / 10 February 2022;15 months 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.

Factorial in Squirrel
functionfactorial(x){if(x<=1){return1;}else{returnx*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. [20] In November 2010, the license was changed to the MIT license to enable the project to be hosted on Google Code. [21] [22] 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 that is one of the core technologies of the World Wide Web, alongside HTML and CSS. As of 2022, 98% of websites use JavaScript on the client side for webpage behavior, often incorporating third-party libraries. All major web browsers have a dedicated JavaScript engine to execute the code on users' devices.

<span class="mw-page-title-main">Python (programming language)</span> General-purpose programming language

Python is a high-level, general-purpose programming language. Its design philosophy emphasizes code readability with the use of significant indentation via the off-side rule.

<span class="mw-page-title-main">PHP</span> Scripting language created in 1994

PHP is a general-purpose scripting language geared toward web development. It was originally created by Danish-Canadian programmer Rasmus Lerdorf in 1993 and released in 1995. The PHP reference implementation is now produced by The PHP Group. PHP was originally an abbreviation of Personal Home Page, but it now stands for the recursive initialism PHP: Hypertext Preprocessor.

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

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

<span class="mw-page-title-main">Ghostscript</span> Interpreter for the PostScript language

Ghostscript is a suite of software based on an interpreter for Adobe Systems' PostScript and Portable Document Format (PDF) page description languages. Its main purposes are the rasterization or rendering of such page description language files, for the display or printing of document pages, and the conversion between PostScript and PDF files.

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

F# is a functional-first, general-purpose, 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 a profoundly different language —features of D can be considered streamlined and expanded-upon ideas from C++, however D also draws inspiration from other high-level programming languages, notably Java, Python, Ruby, C#, and Eiffel.

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

R is a programming language for statistical computing and graphics supported by the R Core Team and the R Foundation for Statistical Computing. Created by statisticians Ross Ihaka and Robert Gentleman, R is used among data miners, bioinformaticians and statisticians for data analysis and developing statistical software. The core R language is augmented by a large number of extension packages containing reusable code and documentation.

<span class="mw-page-title-main">Doxygen</span> Free software for generating software documentation from source code

Doxygen is a documentation generator and static analysis tool for software source trees. When used as a documentation generator, Doxygen extracts information from specially-formatted comments within the code. When used for analysis, Doxygen uses its parse tree to generate diagrams and charts of the code structure. Doxygen can cross reference documentation and code, so that the reader of a document can easily refer to the actual code.

<span class="mw-page-title-main">OpenTTD</span> 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.

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.

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 Lisp programming language 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 a number of programming language features such as type classes, which enable type-safe operator overloading, and monadic IO. Haskell's main implementation is the Glasgow Haskell Compiler (GHC). It is named after logician Haskell Curry.

<span class="mw-page-title-main">RStudio</span> Integrated development environment for R

RStudio is an integrated development environment for R, a programming language for statistical computing and graphics. It is available in two formats: RStudio Desktop is a regular desktop application while RStudio Server runs on a remote server and allows accessing RStudio using a web browser.

Hack is a programming language for the HipHop Virtual Machine (HHVM), created by Facebook as a dialect of PHP. The language implementation is open-source, licensed under the MIT License.

<span class="mw-page-title-main">Scaleform GFx</span> Discontinued game development middleware package

Scaleform GFx is a discontinued game development middleware package, a vector graphics rendering engine used to display Adobe Flash-based user interfaces and HUDs for video games. In March 2011, Autodesk acquired Scaleform Corporation and Scaleform GFx became part of the Autodesk Gameware line of middleware. On July 12, 2018, Autodesk discontinued Scaleform GFx, and it is no longer available for purchase.

<span class="mw-page-title-main">OpenFL</span>

OpenFL is a free and open-source software framework and platform for the creation of multi-platform applications and video games. OpenFL applications can be written in Haxe, JavaScript, or TypeScript, and may be published as standalone applications for several targets including iOS, Android, HTML5, Windows, macOS, Linux, WebAssembly, Flash, AIR, PlayStation 4, PlayStation 3, PlayStation Vita, Xbox One, Wii U, TiVo, Raspberry Pi, and Node.js.

<span class="mw-page-title-main">Google JAX</span> Machine Learning framework designed for parallelization and autograd.

Google JAX is a machine learning framework for transforming numerical functions. It is described as bringing together a modified version of autograd and TensorFlow's XLA. It is designed to follow the structure and workflow of NumPy as closely as possible and works with various existing frameworks such as TensorFlow and PyTorch. The primary functions of JAX are:

  1. grad: automatic differentiation
  2. jit: compilation
  3. vmap: auto-vectorization
  4. pmap: SPMD programming

References

  1. Error: Unable to display the reference properly. See the documentation for details.
  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. "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. "AI:Main Page - OpenTTD". wiki.openttd.org. Retrieved 2018-07-06.
  14. "Simutrans-Squirrel-API: Main Page". dwachs.github.io. Retrieved 2018-07-06.
  15. "The VG Resource Wiki". wiki.vg-resource.com. Retrieved 2021-09-04.
  16. "Thimbleweed Park Blog- Engine". blog.thimbleweedpark.com. Retrieved 2018-07-06.
  17. "NewDark 1.25: Squirrel script?". ttlg.com. 2017-03-20. Retrieved 2019-12-25.
  18. Vice City Multiplayer
  19. "Welcome To VC-MP website!". Archived from the original on 2006-04-05. Retrieved 2014-05-04.
  20. "The Squirrel programming language". SourceForge. Retrieved 2018-07-06.
  21. "Moving to code.google.com and MIT License - The Language - Squirrel - The Programming Language". forum.squirrel-lang.org. Retrieved 2018-07-06.
  22. "Google Code Archive - Long-term storage for Google Code Project Hosting". code.google.com. Retrieved 2018-07-06.