Civil Rights
Movements, leaders, victories and the continuing fight for equality.
Explore the people, places, events, achievements, struggles and stories that shaped our journey.
Movements, leaders, victories and the continuing fight for equality.
Innovation, patents, science, technology and world-changing contributions.
Pioneers, champions, Negro Leagues, records, activism and excellence.
Meet the people whose lives, choices and achievements shaped the journey.
Black towns, communities, institutions and places where history happened.
Moments that changed communities, movements, institutions and the nation.
Mansa Musa was the ruler of the Mali Empire in West Africa. Details recorded here should be sourced; unknown information is left blank.
MORE →Reflects the personal views, recollections, and perspective of the author, Mike Davis.
This is a personal recollection on the Move fire on May 13, 1985
| OpenLisp | |
|---|---|
OpenLisp running inside Emacs | |
| Paradigms | Multi-paradigm: functional, procedural, object-oriented, reflective, meta |
| Family | Lisp |
| Designed by | Christian Jullien |
| Developer | Christian Jullien |
| First appeared | April 1988 |
| Stable release | 11.7.0
/ 13 December 2022 |
| Typing discipline | Dynamic, strong |
| Implementation language | C, OpenLisp |
| Platform | x86, x86-64, IA-64, SPARC, PowerPC, MIPS, Alpha, PA-RISC, ARM, AArch64, RISC-V, Loongson |
| OS | Windows, most Unix-based, Linux, macOS, FreeBSD, OpenBSD, NetBSD, Solaris, HP-UX, AIX, QNX, DOS, OS/2, Pocket PC, OpenVMS, z/OS, Cygwin |
| License | Proprietary |
| Website | christian |
| Influenced by | |
| Lisp, ISLISP | |
OpenLisp is a programming language in the Lisp family developed by Christian Jullien[1] from Eligis. It conforms[2][3][4] to the international standard for ISLISP published jointly by the International Organization for Standardization (ISO) and International Electrotechnical Commission (IEC), ISO/IEC 13816:1997(E),[5][6] revised to ISO/IEC 13816:2007(E).[7]
Written in the programming languages C and Lisp, it runs on most common operating systems. OpenLisp is designated an ISLISP implementation, but also contains many Common Lisp-compatible extensions (hashtable, readtable, package, defstruct, sequences, rational numbers) and other libraries (network socket, regular expression, XML, Portable Operating System Interface (POSIX), SQL, Lightweight Directory Access Protocol (LDAP)).[8]
OpenLisp includes an interpreter associated to a read–eval–print loop (REPL), a Lisp Assembly Program (LAP) and a backend compiler for the language C.
The main goal of this Lisp version is to implement a fully compliant ISLISP system (when launched with --islisp flag, it is strictly restricted to ISO/IEC 13816:2007(E) specification). The secondary goal is to provide a complete embeddable Lisp system linkable to C/C++ or Java (via Java Native Interface (JNI)). A callback mechanism is used to communicate with the external program. Other goals are to be usable as scripting language or glue language and to produce standalone program executables.
Despite its name, OpenLisp is proprietary software. Its interpreter is available free of charge for any noncommercial use.
OpenLisp mainly runs in console mode: cmd.exe on Microsoft Windows, and terminal emulator on Unix-based systems.
;; OpenLisp v11.x.y (Build: XXXX) by C. Jullien [Jan 01 20xx - 10:49:13]
;; Copyright (c) Eligis - 1988-20xx.
;; System 'sysname' (64-bit, 8 CPU) on 'hostname', ASCII.
;; God thank you, OpenLisp is back again!
? (fib 20)
;; elapsed time = 0.003s, (0 gc).
= 6765
? _
Alternate solutions include running OpenLisp from Emacs via setting up Emacs inferior-lisp-mode, or using an integrated development environment (IDE) which supports OpenLisp syntax. LispIDE by DaanSystems does so natively.
Internally, OpenLisp uses virtual memory to allocate and extend objects automatically. Small objects of the same type are allocated using a Bibop (BIg Bag Of Pages) memory organization. Large objects use a proxy which point to the real object in Lisp heap. The conservative garbage collection is a mark and sweep with coalescing heap (sweep phase can be configured to use threads).
OpenLisp uses tagged architecture (4 bits tag on 32-bit, 5 bits tag on 64-bit) for fast type checking (small integer, float, symbol, cons, string, vector). Small integers (28 bits on 32-bit, 59 bits on 64-bit) are unboxed, large (32/64-bit) integers are boxed. As required by ISLISP, arbitrary-precision arithmetic (bignums) are also implemented. Characters (hence strings) are either 8-bit (ANSI, EBCDIC) or 16/32-bit if Unicode support is enabled.
The Lisp Kernel, native interpreter and basic libraries are hand coded in the language C, LAP intermediate language produced by the compiler is then translated to C by the C backend code generator.
In 1988, the very first motive behind OpenLisp was to implement a Lisp subset to extend EmACT, an Emacs clone. ISLISP became an obvious choice quickly. Further development ensued.
| Year | Version | Main feature |
|---|---|---|
| 1988 | 1.0 | OpenLisp begun as a toy language named MLisp (Minimal Lisp) to experiment with ideas from ISLISP standards process |
| 1993 | 3.3 | First port on 64-bit machine (DEC Alpha OSF/1); name change from MLisp to OpenLisp |
| 1994 | 4.0 | First commercial use |
| 1995 | 4.5 | Socket streams support |
| 1997 | 5.7 | OpenLisp is first Lisp to implement ISLISP ISO/IEC 13816:1997(E) standard.[10] |
| 1998 | 5.8 | Unicode optional support |
| 2000 | 6.6 | Lisp to LAP compiler; LAP is interpreted by a virtual machine embedded in OpenLisp; speed improved about 2x |
| 2003 | 7.5 | Lisp to C backend; able to compile an application with many Lisp files to a standalone executable; speed improved from 10x to 20x |
| 2007 | 8.7 | Changes to match ISO/IEC 13816:2007(E) revision[7] |
| 2010 | 9.2 | Native integer arbitrary-precision arithmetic support |
| 2021 | 11.2 | Added complete CLtL format extension; improve heap detection |
| 2022 | 11.4 | Rework of activation blocks makes interpreter around 15% faster. Experimental ASDF clone. |
| 2022 | 11.5 | Generic function calls are ~3x faster. Improved regex internal module. |
| 2022 | 11.6 | Add <simple-bit-vector> type and related BIT functions similar to CLtL equivalent. |
| 2022 | 11.7 | Current version |
| 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 | |||||||||||||||
OpenLisp runs on many operating systems including Windows, most Unix and POSIX based (Linux, macOS, FreeBSD, OpenBSD, NetBSD, Solaris, HP-UX, AIX, Cygwin, QNX), MS-DOS, OS/2, Pocket PC, OpenVMS, z/OS. The official website download section contains over 50 versions.
OpenLisp can interact with modules written in C using foreign function interface (FFI), ISLISP streams are extended to support network socket (./net directory includes samples for Hypertext Transfer Protocol (http), JavaScript Object Notation (JSON), Post Office Protocol 3 (POP3), Simple Mail Transfer Protocol (SMTP), Telnet, Rss), a simplified Extensible Markup Language (XML) reader can convert XML to Lisp. A basic SQL module can be used with MySQL, Odbc, SQLite, PostgreSQL. A comma-separated values (CSV) module can read and write CSV files.
Developer tools include data logging, pretty-printer, profiler, design by contract programming, and unit tests.
Some well known algorithms are available in ./contrib directory (Dantzig's simplex algorithm, Dijkstra's algorithm, Ford–Fulkerson algorithm). Modules are shipped using BSD licenses.
The prefix Open refers to open systems not to the open-source model.[11]
The name was chosen in 1993 to replace the MLisp internal code name which was already used by Gosling Emacs (as successor of Mocklisp).
OpenLisp programming language is different than OpenLISP, a project begun in 1997 to implement Locator/Identifier Separation Protocol.
This section describes how a compiler transforms Lisp code to C.
The Fibonacci number function (this classic definition used in most benchmarks is not the most efficient way to compute fib)
(defun fib (n)
(cond ((eq n 1) 1)
((eq n 2) 1)
(t (+ (fib (- n 1)) (fib (- n 2))))))
Lisp compiler translates Lisp source code to the following intermediate code. It is followed by a peephole optimization pass that uses this intermediate format to analyze and optimize instructions. After optimization, final LAP code is:
((fentry fib 1 0 0)
(param 0)
(jeq _l004 '1)
(jneq _l003 '2)
(move a1 '1)
(return)
_l003
(gsub1 a1)
(recurse 1)
(move a2 a1)
(param 0)
(gsub a1 '2)
(recurse 1)
(gadd a2 a1)
_l004
(return)
(end))
Finally, C code generator uses LAP code to translate instructions in C.
static POINTER
OLDEFCOMPILED1(olfib_00, p1) {
POINTER a1;
POINTER VOLATILE a2;
ollapenter(SN_OLFIB_00);
a1 = p1;
if (eq(a1, olmakefix(1))) goto _l004;
if (!eq(a1, olmakefix(2))) goto _l003;
ollapleave(SN_OLFIB_00);
return olmakefix(1);
_l003:
a1 = ollapgsub(a1, olmakefix(1));
a2 = olfib_00(a1);
a1 = ollapgsub(p1, olmakefix(2));
a1 = olfib_00(a1);
a1 = ollapgadd(a2, a1);
_l004:
ollapleave(SN_OLFIB_00);
return a1;
}
OpenLisp accepts lines having unlimited length. The recommended style is that each line of text in code should have at most 80 characters per line.
It has been chosen by SDF Public Access Unix System nonprofit public access Unix systems on the Internet[12][13] as one of its programming languages available online.
Bricsys uses OpenLisp to implement AutoLISP in its Bricscad computer-aided design (CAD) system.[14]
MEVA [15] is entirely written with OpenLisp.
Università degli Studi di Palermo uses OpenLisp to teach Lisp.[16]
{{cite journal}}: CS1 maint: multiple names: authors list (link)
{{cite web}}: CS1 maint: numeric names: authors list (link)
Source: Wikipedia. Article content is retrieved live through the MediaWiki API.
OpenLisp is a programming language in the Lisp family developed by Christian Jullien from Eligis. It conforms to the international standard for ISLISP published jointly by the International Organization for Standardization (ISO) and International Electrotechnical Commission (IEC), ISO/IEC 13816:1997(E), revised to ISO/IEC 13816:2007(E). Written in the programming languages C and Lisp, it runs on most common operating systems. OpenLisp is designated an ISLISP implementation, but also contains many Common Lisp-compatible extensions (hashtable, readtable, package, defstruct, sequences, rational numbers) and other libraries (network socket, regular expression, XML, Portable Operating System Interface (POSIX), SQL, Lightweight Directory Access Protocol (LDAP)). OpenLisp includes an interpreter associated to a read–eval–print loop (REPL), a Lisp Assembly Program (LAP) and a backend compiler for the language C.
Robert Tappan Morris (born November 8, 1965) is an American computer scientist and entrepreneur. He is best known for creating the Morris worm in 1988, considered the first computer worm on the Internet. Morris was prosecuted for releasing the worm, and became the first person convicted under the then-new Computer Fraud and Abuse Act (CFAA). He went on to cofound the online store Viaweb, one of the first web applications, and later the venture capital funding firm Y Combinator, both with Paul Graham, Jessica Livingston and Trevor Blackwell. He later joined the faculty in the department of Electrical Engineering and Computer Science at the Massachusetts Institute of Technology (MIT), where he received tenure in 2006. He was elected to the National Academy of Engineering in 2019.
Common Lisp (CL) is a dialect of the Lisp programming language, published in American National Standards Institute (ANSI) standard document ANSI INCITS 226-1994 (S2018) (formerly X3.226-1994 (R1999)). The Common Lisp HyperSpec, a hyperlinked HTML version, has been derived from the ANSI Common Lisp standard. The Common Lisp language was developed as a standardized and improved successor of Maclisp. By the early 1980s, several groups were already at work on diverse successors to MacLisp: Lisp Machine Lisp (aka ZetaLisp), Spice Lisp, NIL and S-1 Lisp. Common Lisp sought to unify, standardize, and extend the features of these MacLisp dialects. Common Lisp is not an implementation, but rather a language specification. Several implementations of the Common Lisp standard are available, including free and open-source software and proprietary software products. Common Lisp is a general-purpose, multi-paradigm programming language. It supports a combination of procedural, functional, and object-oriented programming paradigms. As a dynamic programming language, it facilitates evolutionary and incremental software development, with iterative compiling into efficient runtime programs. This incremental development is often done interactively without interrupting the running application. It also supports optional type annotation and casting, which can be added as needed at the later profiling and optimization stages, to permit the compiler to generate more efficient code. For instance, fixnum can hold an unboxed integer in a range supported by the hardware and implementation, permitting more efficient arithmetic than on big integers or arbitrary precision types. Similarly, the compiler can be told on a per-module or per-function basis which type of safety level is wanted, using optimize declarations. Common Lisp includes the Common Lisp Object System (CLOS), an object system that supports multiple dispatch (multimethods) and method combinations. It is often implemented with a metaobject protocol. Common Lisp is extensible through standard features such as Lisp macros (code transformations) and reader macros (input parsers for characters). Common Lisp provides partial backwards compatibility with Maclisp and John McCarthy's original Lisp. This allows older Lisp software to be ported to Common Lisp.
Emacs Lisp is a Lisp dialect made for GNU Emacs. It is used for implementing most of the editing functionality built into Emacs, the remainder being written in C, as is the Lisp interpreter. Emacs Lisp code is used to modify, extend and customize Emacs. Those not wanting to write the code themselves can use the Customize function instead. It provides a set of preferences pages allowing the user to set options and preview their effect in the running Emacs session. When the user saves their changes, Customize simply writes the necessary Emacs Lisp code to the user's config file, which can be set to a special file that only Customize uses, to avoid the possibility of altering the user's own file. Besides being a programming language that can be compiled to bytecode and to machine code, Emacs Lisp can also function as an interpreted scripting language, much like the Unix Bourne shell or Perl, by calling Emacs in batch mode. In this way it may be called from the command line or via an executable file, and its editing functions, such as buffers and movement commands are available to the program just as in the normal mode. No user interface is presented when Emacs is started in batch mode; it simply executes the passed-in script and exits, displaying any output from the script. Emacs Lisp is also termed Elisp, although there are also older, unrelated Lisp dialects with that name.
Before the 1921 destruction of Tulsa’s Greenwood District, Black residents had created a remarkable center of business and community life. The district included stores, professional offices, entertainment venues and homes owned by Black citizens. Understanding Greenwood means learning what was built—not only what was burned.
MORE →Brown v. Board of Education in 1954.