In computing, Stalin (STAtic Language ImplementatioN) is a
programming language
A programming language is a system of notation for writing computer programs. Most programming languages are text-based formal languages, but they may also be graphical. They are a kind of computer language.
The description of a programming l ...
, an aggressive
optimizing
Mathematical optimization (alternatively spelled ''optimisation'') or mathematical programming is the selection of a best element, with regard to some criterion, from some set of available alternatives. It is generally divided into two subfi ...
batch
whole-program Scheme A scheme is a systematic plan for the implementation of a certain idea.
Scheme or schemer may refer to:
Arts and entertainment
* ''The Scheme'' (TV series), a BBC Scotland documentary series
* The Scheme (band), an English pop band
* ''The Schem ...
compiler
In computing, a compiler is a computer program that translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primarily used for programs that ...
written by Jeffrey Mark Siskind. It uses advanced data
flow analysis
Flow may refer to:
Science and technology
* Fluid flow, the motion of a gas or liquid
* Flow (geomorphology), a type of mass wasting or slope movement in geomorphology
* Flow (mathematics), a group action of the real numbers on a set
* Flow (psyc ...
and
type inference
Type inference refers to the automatic detection of the type of an expression in a formal language. These include programming languages and mathematical type systems, but also natural languages in some branches of computer science and linguistics. ...
and a variety of other optimization methods to produce code. Stalin is intended for production use in generating an optimized
executable
In computing, executable code, an executable file, or an executable program, sometimes simply referred to as an executable or binary, causes a computer "to perform indicated tasks according to encoded instructions", as opposed to a data fil ...
.
The compiler runs slowly, with little or no support for
debugging
In computer programming and software development, debugging is the process of finding and resolving ''bugs'' (defects or problems that prevent correct operation) within computer programs, software, or systems.
Debugging tactics can involve in ...
or other niceties. Full
R4RS Scheme is supported, with a few minor and rarely encountered omissions. Interfacing to external C libraries is straightforward. The compiler does
lifetime analysis and hence does not generate as much
garbage
Garbage, trash, rubbish, or refuse is waste material that is discarded by humans, usually due to a perceived lack of utility. The term generally does not encompass bodily waste products, purely liquid or gaseous wastes, or toxic waste prod ...
as might be expected, but global reclamation of storage is done using the
Boehm garbage collector.
The name is a joke: "
Stalin
Joseph Vissarionovich Stalin (born Ioseb Besarionis dze Jughashvili; – 5 March 1953) was a Georgian revolutionary and Soviet political leader who led the Soviet Union from 1924 until his death in 1953. He held power as General Secret ...
brutally optimizes."
Stalin is
free and open-source software
Free and open-source software (FOSS) is a term used to refer to groups of software consisting of both free software and open-source software where anyone is freely licensed to use, copy, study, and change the software in any way, and the source ...
, licensed under a
GNU General Public License
The GNU General Public License (GNU GPL or simply GPL) is a series of widely used free software licenses that guarantee end user
In product development, an end user (sometimes end-user) is a person who ultimately uses or is intended to ulti ...
(GPL), and is available online.
See also
*
Chicken (Scheme implementation)
Chicken (stylized as CHICKEN) is a programming language, specifically a compiler and interpreter which implement a dialect of the programming language Scheme, and which compiles Scheme source code to standard C. It is mostly R5RS compliant a ...
*
Gambit (Scheme implementation)
External links
A Google Code project- includes a Windows version and a GUI
*
tp://ftp.ecn.purdue.edu/qobi/research-statement.pdf Research Statement by Siskind(compares Stalin with other Scheme compilers, and states that "STALIN often generates code that outperforms handwritten C and Fortran code.")
Flow-Directed Lightweight Closure Conversionby Siskind (presents a lightweight closure-conversion method that is driven by the results of whole-program interprocedural flow, reachability, points-to, and escape analyses, used in the Stalin compiler)
Scheme (programming language) compilers
Scheme (programming language) implementations
Free compilers and interpreters
{{Prog-lang-stub