Lush (http://lush.sourceforge.net) is an object-oriented programming language designed for researchers, experimenters, and engineers interested in large-scale numerical and graphic applications. It was designed to facilitate experimentation with multilayer neural networks and more generally to research what is now named deep learning. In general, Lush can is useful in situations where one would want to combine the flexibility of a high-level, weakly-typed interpreted language, with the efficiency of a strongly-typed, natively-compiled language, and with the easy integration of code written in C, C++, or other languages.
Lush is particularly suitable for research and development in signal processing, image processing, machine learning, computer vision, bio-informatics, data mining, statistics, simulation, optimization, or artificial intelligence. It also provides a simple environment to experiment with graphics, video, and sounds.
Lush's main features includes:
- A clean and easy to learn Lisp syntax.
- A compiler that produces efficient C code and relies on the C compiler to produce efficient native code.
- A powerful dynamic linker/loader to interface libraries written in other languages.
- The ability to freely mix Lisp and C in a single function.
- A powerful set of vector/matrix/tensor operations.
- A library of over 10,000 numerical routines, including full interfaces to GSL, LAPACK, and BLAS.
- A library of image and signal processing routines.
- An extensive set of graphic routines, including an object-oriented GUI toolkit.
- An interface to OpenGL and OpenInventor.
- An interface to the Simple Directmedia Layer (SDL) multimedia library.
- Sound and video grabbing (using ALSA and Video4Linux).
- Libraries for machine learning, neural networks, Hidden Markov Models, etc.
- Libraries for computer vision and scene rendering.
- Bindings to the JavaVM API and to the Python C API.
- Free Software released under the GPL.
- Runs on Linux, MacOS and other Unix platforms.
Most users use Lush as a research tool, but many use it as a general purpose script language, or as a general language for application development. Some have been known to use Lush to develop 2D and 3D games. A few have even used Lush to develop commercial software for embedded processors.
Lush is the direct descendent of the SN and TL3 systems. SN was originally developed by Léon Bottou, and Yann LeCun in 1987 as the front-end of a neural network simulator. Various incarnations of SN/Lush have been developed continuously since 1987, some of which were sold commercially by Neuristique until 2001. The system eventually grew into a full-fledged prototyping and development environment. Neuristique released the source code of the lisp interpreter in 2000 under the name TL3. Meanwhile, parallel versions of SN were developed at A version of SN was developed at AT&T Bell Laboratories and AT&T Labs between 1988 and 2001. AT&T released its code under the GPL in 2001. Transforming the various incarnations of SN into Lush was done at the NEC Research Institute by Léon Bottou, Yann LeCun, and HuangFu Jie.
Lush has been used to build many successful technologies and products:
- A handwriting recognition system used by many banks across the world reads checks automatically. Some ATM machines made by NCR can read checks using compiled SN code running on embedded DSP boards. A version of this check reader is embedded in large check reading engines sold by NCR and OrboGraph. According to some estimates, this system processes 10 to 20 percent of all the checks written in the US.
- The first prototype of the DjVu image and document compression system, including the first decoder and the first foreground/background segmenter.