| PicoLisp | |
|---|---|
| Paradigms | Functional,procedural,object-oriented,declarative,reflective,meta |
| Family | Lisp |
| Designed by | Alexander Burger |
| First appeared | 1988; 38 years ago (1988) |
| Typing discipline | duck,dynamic,strong |
| Implementation language | LLVM, PicoLisp |
| OS | POSIX |
| License | MIT |
| Filename extensions | .l |
| Website | picolisp |
| Dialects | |
| Ersatz PicoLisp, miniPicoLisp[1] | |
PicoLisp is a programming language, adialect of the languageLisp. It runs onoperating systems includingLinux and others that arePortable Operating System Interface (POSIX) compliant. Its most prominent features are simplicity andminimalism. It is built on one internaldata type: a cell. On the language level, a programmer can use three differentdata types (numbers, symbols, and lists) being represented by cells and differentiated by bits at the end of the cell.[2] It isfree and open-source software released under anMIT License (X11).
Functions can accept arbitrary types and numbers of arguments. Macros are needed only in rare cases and are implemented using the quote function. PicoLisp does not include Lisp'slambda function. This is because the quote function is changed to return all its arguments unevaluated, not only thecar of the first.[3]
A special feature is the intrinsiccreate, read, update, and delete (CRUD) functioning.Persistent symbols arefirst-class citizens (objects), they are loaded fromdatabase files automatically when accessed, and written back when modified. Applications are written using aclass hierarchy ofentities and relations.
Other features include:Prolog engine,database engine and database queries, distributed databases, inlining ofC language functions and native C function calls, child process management,interprocess communication, browsergraphical user interface (GUI), andinternationalization and localization.
The design of PicoLisp is most similar to the first version of MacLisp, Interlisp and mainly Portable Standard Lisp.[4] It was ported toDOS andSCO Unix. Since 1993, it was used mainly on Linux. In the mid-1990s, database functions were added.[citation needed]
The first versions were written in a mix of C andassembly language. In 1999, a firstrewrite from scratch was done, fully in C. In 2002, that version was released under aGNU General Public License (GNU GPL). In 2010, it changed to an MIT/X11 license.
In 2009, the64-bit version was released, another rewrite, this time written in generic assembly, which in turn is implemented in PicoLisp. This version adds support forcoroutines.
In December 2010, aJava version namedErsatz PicoLisp was released.[5]
In September 2014, Burger announced the PilMCU project on the PicoLisp developmentlistserv, an effort with George Orais to implement PicoLisp in hardware directly.[6]
In July 2015, Burger announced PilOS - The PicoLisp Operating System, a minimal prototype based on the modification of PilMCU targeting embedded applications.[7] It runs on standard x86-64 PC hardware, directly off the BIOS and includes all the features of 64-bit PicoLisp (minus native function calls, due to the fact there is no other native environment such as the C standard library); in principle, it works as its own operating system.[8]
In the summer of 2016, development ofPilBox ("PicoLisp Box") – a genericAndroidapp allowing to write apps in pure PicoLisp – was started. It is still being developed and maintained.[9]
In 2021, PicoLisp was re-implemented inLLVM and released aspil21. The source language which is compiled toLLVM-IR is also in PicoLisp syntax.
| 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 | |||||||||||||||
| muLisp | |||||||||||||||
| 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 | |||||||||||||||