HOME

TheInfoList



OR:

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 Conversion
by 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