Ol
Otus Lisp (Ol) is a purely functional multi-platform Scheme dialect with built-in FFI and infix math.
Install / Use
/learn @yuriy-chumak/OlREADME
small,
`___` embeddable,
(o,O) and
\) ) purely
---"-"--- functional!
O t u s L i s p
<a href="https://iaaa.port0.org/ol/test-matrix/"><img align="right" style="margin: 10px; " src="doc/img/test-matrix.png"></a>
Every code change is automatically tested for regressions using GitHub Actions and our own testing machine. It includes a set of core language <a href="tests/"> <img src="https://img.shields.io/endpoint?url=https%3A%2F%2Fiaaa.port0.org%2Fol%2Ftest-matrix%2Fstatus.json%3Frunner%3DLANGUAGE&label=test%20suite" alt="test suite"></a>, rosettacode <a href="tests/rosettacode/"> <img src="https://img.shields.io/endpoint?url=https%3A%2F%2Fiaaa.port0.org%2Fol%2Ftest-matrix%2Fstatus.json%3Frunner%3DROSETTACODE&label=examples" alt="examples"></a>, FFI <a href="tests/ffi/"> <img src="https://img.shields.io/endpoint?url=https%3A%2F%2Fiaaa.port0.org%2Fol%2Ftest-matrix%2Fstatus.json%3Frunner%3DFFI-Tier-1&label=tier-1%20tests" alt="ffi tests"></a> <a href="tests/ffi/"> <img src="https://img.shields.io/endpoint?url=https%3A%2F%2Fiaaa.port0.org%2Fol%2Ftest-matrix%2Fstatus.json%3Frunner%3DFFI-Tier-2&label=tier-2%20tests" alt="ffi tests"></a>, and language <a href="doc/reference/README.md"> <img src="https://img.shields.io/endpoint?url=https%3A%2F%2Fiaaa.port0.org%2Fol%2Ftest-matrix%2Fstatus.json%3Frunner%3DREFERENCE&label=functions%20reference" alt="ffi tests"></a>.
A detailed test matrix with results for each test across different platforms is available on a separate web page (follow the link or click the preview image to open it).
✨ Note
- Please read the frequently asked questions and answers in the Q/A section. This may prove to be important!
- Scheme R<sup>7</sup>RS vs Ol topic may be interested too.
OTUS LISP
Otus Lisp (Ol in short) is a purely functional, multi-platform Lisp dialect with built-in FFI, regular expressions, and infix math notation support.
Ol implements an extended subset of the R<sup>7</sup>RS Scheme (PDF), including but not limited to some SRFIs. It is tiny (~ 64KB), embeddable, and cross-platform. Provides a portable, high-level interface to call code written in another language (C, Python, Lua, etc). You can call native OS functions directly from your Ol program.
You can use Ol on Linux, Windows, macOS, Android, Chromebook*, (Open/Free/Net) BSD, Solaris and other operating systems based on various hardware architectures (x86, arm, ppc, mips, etc.), and directly in the web browsers (in WebAssembly form).
- 64KB is a typical size of the Otus Lisp Virtual Machine (olvm) binary and may vary across platforms.
Olvm can run compiled Ol code standalone or in embedded form. - The typical size of Ol with Compiler and FFI is 480KB (less than half a megabyte. cool, huh?).
credits to
Aki Helin (author of Owl Lisp, the project that gave birth to Otus Lisp),
the-man-with-a-golden-mind (for ideas, usage, and lot of tests),
nullscm (for usage and tests),
Odysseus (for tests, ideas, and math corrections),
mt (for tests and ideas).
additional readings
Join the online gitter.im chat. Alternatively the Libera.Chat #otus-lisp (alternate lightweight web-client) channel is available. The Issues github page waiting for your bug reports and issues.
VERSIONS
Current version is 2.6.
Version 2.7 is in beta state. It is planned for release by the beginning of this (2026) year.
<sub><sup>
I'm really sorry for the delay. But maintaining the project amid the blackouts caused by the aggressive, fascist russian regime is a bit challenging. :(
</sup></sub>
PACKAGING
-
Ubuntu (and it's descendants such as Mint, Pop!_OS, Xubuntu, etc.) users may use the official project ppa as:
$ sudo add-apt-repository ppa:yuriy-chumak/ol $ sudo apt update $ sudo apt install ol -
~~CentOS, Debian, openSUSE, RHEL, SL, SLE, Ubuntu, Univention precompiled packages: OpenSUSE Build Service.~~
Some additional libraries can be installed using 'kiss' package manager. Instructions available at ol-packages repository.
Q/A
-
Otus Lisp
-
Q. Why doesn't the Ol command line handle arrow keys and history?
A. For the gods of simplicity. Use an external tool to such behaviour. I recommend to use an rlwrap tool
(run asrlwrap olin terminal, or add analias ol="rlwrap /usr/bin/env ol"line to your ~/.bashrc and then run as justol). -
Q. Why when I enter 1.23 I get 123/100 and not 1.23?
A. Because Ol was designed to behave identically across all supported platforms.
Floating-point math varies across platforms, so Ol uses exact numbers by default. If you want to use real floating-point numbers, enter#i1.23or(inexact 1.23). -
Q. Do you have something like a "hibernate mode"?
A. You can save yours current session with,save "filename-you-want"and exit Ol. Then, simply run Ol asol filename-you-wantany time later to continue the saved session.
-
-
Source code
-
Q. Some folders are empty (i.e. "libraries/OpenGL"), is it ok?
A. Yes, it's ok. Some parts of Ol project are separated into their own independent repositories.
Usegit clone --recursiveto get a full project. Orgit submodule init; git submodule updateto update existing one. -
Q. .. fatal error: stdlib.h: No such file or directory.
Q. .. fatal error: bits/libc-header-start.h: No such file or directory.
A. Install gccmultilib, i.e.apt install gcc-multilibfor debian-based,apk add musl-devfor alpine-based,- etc.
-
Related Skills
node-connect
335.8kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
82.7kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
335.8kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
82.7kCommit, push, and open a PR
