newLISP
This articleneeds additional citations forverification.(March 2013) |
![]() The newLISPdragonflylogo | |
Paradigm | Multi-paradigm |
---|---|
Family | Lisp |
Designed by | Lutz Mueller |
Developer | Lutz Mueller |
First appeared | 1991 |
Stable release | 10.7.5
/ May 12, 2019[1] |
Preview release | 10.7.4
/ September 10, 2018[1] |
Scope | Dynamic |
Platform | IA-32,x86-64 |
OS | Cross-platform:Unix,Unix-like,Windows |
License | GPLv3+ |
Website | www |
Influenced by | |
C,Common Lisp,Perl,Scheme |
newLISPis ascripting languagewhich is adialectof theLispfamily ofprogramming languages.It was designed and developed by Lutz Mueller.[2]Because of its small resource requirements, newLISP is excellent for embedded systems applications. Most of the functions you will ever need are already built in. This includes networking functions, support for distributed and multicore processing, and Bayesian statistics. newLISP isfree and open-source softwarereleased under theGNU General Public License,version 3 or later.
History
[edit]newLISP design is influenced by the two mainLispdialects,Common LispandScheme,and by other languages likePascalandC.[citation needed]newLISP originated in 1991 and was originally developed on aSun-4workstation.[3]It later moved toWindows 3.0,where version 1.3 was released onCompuServearound 1993, then became available as a Windowsgraphical user interface(GUI) graphics-capable application and aDOSconsole application(both16-bit). In 1995, with the release ofWindows 95,newLISP moved to32-bit.
In April 1999, newLISP was ported toLinux;some of its core algorithms wererewritten,and all Windows-specific code removed. newLISP was released as anopen-source softwareproject licensed under theGPL,and development on Windows stopped after version 6.0.25. During the first half of 2001, newLISP was ported back to Windows on theCygwinplatform without graphics abilities. In the second half of 2001, a cross-platformTcl/Tkfrontend named newLISP-tk was released around version 6.3.0. In 2006,64-bitprecision was introduced for integer arithmetic and for some operations on files in version 9.0.
Since the release of 6.5 in mid-2002, development has been very active, and many new features have been added.[4]
1958 | 1960 | 1965 | 1970 | 1975 | 1980 | 1985 | 1990 | 1995 | 2000 | 2005 | 2010 | 2015 | 2020 | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
LISP 1, 1.5,LISP 2(abandoned) | |||||||||||||||
Maclisp | |||||||||||||||
Interlisp | |||||||||||||||
MDL | |||||||||||||||
Lisp Machine Lisp | |||||||||||||||
Scheme | R5RS | R6RS | R7RS small | ||||||||||||
NIL | |||||||||||||||
ZIL (Zork Implementation Language) | |||||||||||||||
Franz Lisp | |||||||||||||||
Common Lisp | ANSI standard | ||||||||||||||
Le Lisp | |||||||||||||||
MIT Scheme | |||||||||||||||
XLISP | |||||||||||||||
T | |||||||||||||||
Chez Scheme | |||||||||||||||
Emacs Lisp | |||||||||||||||
AutoLISP | |||||||||||||||
PicoLisp | |||||||||||||||
Gambit | |||||||||||||||
EuLisp | |||||||||||||||
ISLISP | |||||||||||||||
OpenLisp | |||||||||||||||
PLT Scheme | Racket | ||||||||||||||
newLISP | |||||||||||||||
GNU Guile | |||||||||||||||
Visual LISP | |||||||||||||||
Clojure | |||||||||||||||
Arc | |||||||||||||||
LFE | |||||||||||||||
Hy | |||||||||||||||
Chialisp |
Philosophy
[edit]newLISP attempts to provide a fast, powerful,cross-platform,full-featured scripting version of the language Lisp while using only a modest system resources such asdata storage(e.g., disk space) andmemory.[5][6]
It provides Lisp features such as lists, symbol processing, function mapping,anonymous functions(lambda expressions),s-expressions(excluding improper lists), and macros. It also provides the functions expected of a modern scripting language, including supportingregular expressions,XML,Unicode (UTF-8), networking viaTransmission Control Protocol(TCP),Internet Protocol(IP), andUser Datagram Protocol(UDP),matrixandarrayprocessing, advanced math, statistics andBayesianstatistical analysis,mathematical finance,and distributed computing.
newLISP runs on theoperating systemsBerkeley Software Distribution(BSD),Linux,macOS,Solaris,andWindows.[1]It supportsMYSQL,SQLiteandODBCdatabase access,Common Gateway Interface(CGI),Simple Mail Transfer Protocol(SMTP),Post Office Protocol(POP) 3,File Transfer Protocol(FTP) and XMLremote procedure call(XML-RPC). It can run in server mode as adaemon.
Language features
[edit]Contexts
[edit]newLISP supportsnamespacestermedcontexts,which can be assigned tovariablesand passed tofunctions,but which are associated with globally unique symbols, limiting their use asfirst-class citizens(objects). Aprototype-basedobject-orientedstyle of programming is possible in newLISP, using contexts as prototypes to constructobjects.Variables inside contexts do not interfere with variables of the same name in other contexts, but inside a context, variables behave according to the rules of dynamicscoping.
Scoping
[edit]newLISP uses dynamicscoping.When a function is called, that function can see all variables of its caller, its caller's caller, and so on, within the same context ornamespace.It supports both explicitly and implicitly defined local dynamic variables thatshadowvariables with the same name from the outer environment, thus preventing accidental use or change of the variables from caller environment. Parameter variables of the called function automatically shadow the caller's variable environment. Globally, variables can be grouped in separate namespaces.
Memory management
[edit]newLISP uses a method of automaticmemory managementdifferent from traditionalgarbage collectionschemes, termed one reference only (ORO) memory management. Each variable is referenced only by its context, and each context is referenced globally.
Sharing of subobjects amongobjects,cyclic structures, or multiple variables pointing to the same object are unsupported in newLISP. Objects are copied when stored in data structures or passed to functions, except for certain built-in functions. The exceptions are symbols and contexts, which are shared instead of copied, and thus can be used for indirection. Symbols and contexts are globally named and are deleted explicitly; deleting a symbol or context scans all other objects to replace references to it withnil
.
GUI options
[edit]newLISPgraphical user interface(GUI) server (newLISP-GS) is aJava-basedInternet protocol suite(TCP/IP) server providing a graphical programming interface. A newLISP-GS based development environment is included in newLISP binary distributions, andGTK-server,OpenGL,andTcl/Tk-based programming interfaces are available.
Standalone binaries
[edit]Any newLISP version allows building executable files,portable applications,for deployment which are self-contained and need no installing.
Interaction with shared libraries
[edit]newLISP has an import function, which allows importing functions from adynamic-link library(DLL) onWindows APIWin32, or from ashared libraryon Linux orUnix.
Frameworks
[edit]Web frameworksavailable for newLISP include Dragonfly[7]and Rockets.[8]
References
[edit]- ^abc"newLISP".Retrieved2018-11-20.
- ^Walling, Rob."An Interview with Lutz Mueller, Creator of newLISP".Softwarebyrob.com.Archived fromthe originalon 2007-10-31.Retrieved2018-11-20.
- ^Mueller, Lutz."newLISP – a LISP Scripting Language".don Lucio.Retrieved2018-11-20.
- ^Kobayashi, Shigeru."kosh04/newlisp".GitHub.Retrieved2018-11-20.
- ^"Category:newLISP".Rosetta Code.Retrieved2018-11-20.
- ^Lazar, Alexandru (5 January 2009)."A look at newLISP".OSNews.Retrieved2018-11-20.
- ^Slepak, Greg; Hildmann, Marc."Dragonfly web framework".AppTruck.Retrieved2018-11-20.
- ^Reimer, Jeremy."The newLISP on Rockets 2.0 Blog".Rocket Man.Retrieved2018-11-20.
External links
[edit]![](https://upload.wikimedia.org/wikipedia/commons/thumb/d/df/Wikibooks-logo-en-noslogan.svg/40px-Wikibooks-logo-en-noslogan.svg.png)