Postmodern is an interface to PostgreSQL SQL databases. Features:
Efficient communication with the database server without need for foreign libraries.
Support for UTF-8 on Lisp implementations with Unicode support
A lispy syntax for expressing SQL queries
Convenient support for prepared statements and stored procedures
Defclass-like definition of tables and associated accessor classes
It supports PostgreSQL versions up from 7.4, and is theoretically portable across Lisp implementations, though not much testing has been done yet.License: BSD-styleHomepage: http://marijn.haverbeke.nl/postmodern/
CL-DBI is intended to provide the same SQL interface for each database.Not only, you don't have to learn each API of databases anymore, but this layer is especially convenient when you want to use the different database by environment.For example, your application had better to use efficient database such as MySQL on the production environment, but you may want to use SQLite3 on your machine. In that case, all what you have to do is only to rewrite calling "dbi:connect".Homepage: fukamachi.github.com/cl-dbiLicense: LLGPL
cl-fbclient is an interface to Firebird SQL databases. Source: https://github.com/klimenko-serj/cl-fbclientWiki: http://github.com/klimenko-serj/cl-fbclient/wiki
(cl-fbclient:fb-with-database (DB :path "/path-to-db/db-file.fdb")
(cl-fbclient:fb-query "SELECT * FROM T1" :db DB)
(cl-fbclient:fb-query "INSERT INTO T1(A1,A2) VALUES(121, 42)" :db DB)
(cl-fbclient:fb-query "SELECT * FROM T1" :db DB))
Common lisp binding for InfluxDB
cl-migrations is a port of Ruby on Rails migrations feature to CL. It provides a simple way to version-control your database changes. As a web project grows, it's database will go through numerous structural changes, but if things go wrong with a new version, there should be a proper way to disable new changes to database and bring it back to a previously known good position. Rails has a very simple and neat way of doing this, so I have ported the feature to CL. Homepage: http://common-lisp.net/project/cl-migrations/.Author: Vamsee KanakalaLicence: MIT
cl-mongo is an interface to the MongoDB document database.Author: Fons HaffmansLicence: MITHomepage: http://github.com/fons/cl-mongoStructuredStorage
cl-mssql is an interface to Microsoft SQL Server databases.License: MITHomepage: http://code.google.com/p/cl-mssql/
Common Lisp MySQL library bindings
neo4j RESTful Client Interface
CL-Redis: Common Lisp client library for Redis database, an advanced key/value store. It is thoroughly tested with the Redis-2.0.0-rc2 release.The source code can be found at: GitHub (Manual).Since version 1.6.0, we switched to iolib backend. Version 1.5.0 is the last release with usocket backend.
CL-SQLITE package is an interface to the SQLite embedded relational database engine.
Clouchdb is an interface to the CouchDb databases.Features include:
A lispy syntax for creating document views (thanks to Parenscript).
It supports CouchDb version 1.1.0 and newer, and it should be portable across Lisp implementations. It has currently been tested with SBCL and Clozure CL on Mac OSX Lion (64bit,Intel).License: BSDHomepage: http://common-lisp.net/project/clouchdb/Author: Peter Eddy
Common Lisp SQL Interface library
CLSQL-ORM is an library to generate clsql view-classes from existing databases, by introspecting on the "information_schema" of the running database.For more info see: Git Hub: https://github.com/AccelerationNet/CLSQL-ORM
Pg is a socket-level interface to the PostgreSQL object-relational Database.
Pg implements the client part of the frontend/backend
protocol, so does not require interfacing with the libpq library. SQL
types are converted to the equivalent Common Lisp types where
possible. Supports large objects (BLOBs).
Postmodern is a newer and much-much cleaner library. Its cl-postgres asdf system implements the same functionality as Pg -- Attila Lendvai
The only non portable code is the use of SOCKET-CONNECT. Versions are
provided for CMU Common Lisp (CMUCL), SBCL, OpenMCL, CLISP, LispWorks and Allegro Common Lisp (ACL). Corman CL doesn't support binary I/O on socket streams, so it doesn't work there.Pg is available under the GNU LGPL licence from www.chez.com/emarsden/downloads.
There are also Emacs Lisp and scsh versions of the library.This is a snapshot of the CVS repository at common-lisp.net/project/pg and it is not GPG signed.Here is the last released version, but it's quite old:http://www.chez.com/emarsden/downloads/pg-dot-lisp-0.19.tar.gzSample code:
(with-pg-connection (conn "testdb" "login" :host "dbhost" :password "secret")
(when (member "test_date" (pg-tables conn) :test #'string=)
(pg-exec conn "DROP TABLE test_date"))
(pg-exec conn "CREATE TABLE test_date(a timestamp, b abstime, c time, d date)")
(pg-exec conn "INSERT INTO test_date VALUES "
"(current_timestamp, 'now', 'now', 'now')")))
Stargreen Box Office uses Pg for its database glue layer; it's respectably fast, simple enough to see what it's doing, and impervious to PostgreSQL shared library versioning issues (because it doesn't use them). I'm very happy with it -- Daniel Barlow
You must set unix_socket_directory in your postgresql.conf to /var/run/postgresql
pg doesn't use the default path for the unix domain socket. See Socket Path.
Plain-odbc is a simple, yet powerful Common Lisp ODBC interface.
It is possible to use parameterized queries with in and out parameters and call stored procedures.
In principle it should be possible to use any database which offers an ODBC interface (even MS Excel and MS Access).The primary development platform is CLISP on win32, but plain-odbc is also usable with CLISP on Linux with unixODBC. High level features such as a special reader syntax for sql or mapping of CLOS objects to database tables are not part of plain-odbc.The low level parts of the system consist of code from Paul Meurers sqlodbc module.
The system uses now CFFI to interface to the ODBC C functions.More Information can be found at the project page.
Rucksack is a persistence (embedded database) library for Common Lisp.Here was a CVS repository.And here is a GitLab repository used by the Quicklisp for distribution.
umlisp is an CLOS object-oriented interface to the Unified Medical Language System. It uses a SQL database to index and access the 15 gigabytes of text UMLS data. UMLisp is written by Kevin Rosenberg. There is an online demonstration system for browsing the UMLS at the UMLisp web site.
or at archive.org since umlisp.b9.com seems not to exist anymore.
A base for weblocks stores
System to version the database in roughly the same way rails migrations work. Differences are that only one database is really supported (but hacking around that is trivial) and that migrations are not needed to be stored in separate files.
A DB multi-threaded connection pool.
Functions to convert between the spacing and
capitalization conventions of various environments
Web Application Framework for Common Lisp
Password management for Common Lisp (web) applications. cl-password-store provides a light-weight and extendible solution to
safe password storage:
cleartext-free, using your choice of hash algorithm through
storage in an SQL database through
clsql, in a database your application
already uses anyway, or in a separate one, and using any backend
supported by clsql,
password reset mechanism with one-time tokens (suitable for mailing
to users for confirmation),
user creation optionally with confirmation tokens (suitable for
mailing to users),
(obviously) user authentication.
Users can be identified by strings or by subclassing
user-token-mixin. The code is available under LLGPL at github. For documentation check out the
Common Lisp SQL Fluid Connection Pools
Corona is a library for building and controlling virtual machines. It's essentially a clone of Vagrant, with the advantage that it's written in pure Common Lisp, and can be installed simply from Quicklisp.Corona can be used to create isolated, reproducible development environments so you and your team can work on the same system.No more 'works on my machine', no more difference between development and production.
TestingIf you have a library that uses an external tool, like a database server or something equally large, you can use Corona to set up a virtual machine and install whatever dependencies you need, so the user doesn't actually have to run anything on their computer.Additionally, since you can set up multiple virtual machines with different systems, you can use Corona to ensure your library works on most operating systems. This is especially useful for testing compilers and similar applications where portability is critical.
BuildingYou can use Corona as a build server: Fire up virtual machines of the operating system you want to build on, set them up with everything you need, and run the builds.Example of a machine definition:
:system (:ubuntu :14.04 :64)
(start my-machine) ;; Bring it up
(stop my-machine) ;; Stop it
A library providing a data-table class, and useful functionality around this
Robust CSV parser and printer
Lisp Markup Language
Programmatical interfaces extension for Modularize
High-level virtual FS using CL-Fuse-Meta-FS to represent results of queries
STMX is an actively maintained, high-performance concurrency library providing Transactional Memory for Common Lisp.Home page and downloads: http://github.com/cosmos72/stmx Main features
Extremely intuitive to use and to write correct, thread-safe concurrent code
Brings database-style transactions to Common Lisp by introducing transactional memory
High performance implementation, benchmarked to exceed 7 millions transactions per CPU core per second on commodity PC hardware
Support for hardware memory transactions (requires 64-bit SBCL and CPUs with Intel TSX instructions - currently Core i5 4570, Core i7 4670, Core i7 4770 and some others). They increase STMX performance up to almost 40 millions transactions per CPU core per second
Removes the need for traditional locks, mutexes and conditions - writing correct concurrent code with them is well known to be hard
Transactional code is intrinsically deadlock-free: if two transactions conflict one of them will be re-executed
Automatic commit and rollback: if a transaction completes normally it will be committed, if it signals an error it will be rolled back
Transactions are composable: they can be executed in a larger transaction, either in sequence (all-or-nothing) or as alternatives (try them until one succeeds)
Offers freedom of choice between blocking and non-blocking transactional functions: given either behaviour, it is trivial to transform it into the other.
Features transactional versions of popular data structures: hash tables, red-black trees, stack, fifo
Includes transactional data structure for multicast publish/subscribe
Creating new transactional data structures is easy
Extensive test suite
Tested on SBCL, ABCL, CCL, CMUCL and ECL.
Very simple to install with Quicklisp
A quick-start guide and installation instructions are provided in README.md fileLicense: LLGPL What STMX is NOT
In order not to confuse programmers - less experienced ones in particular - and to avoid rising unrealistic hopes, the author himself stated the following about STMX:
it is NOT a quick hack to automagically transform existing, slow, single-threaded programs into fast, concurrent ones. No matter how much transactions can help, writing concurrent code still requires careful design and implementation - and testing. And refactoring takes time too.
it is NOT for optimization-focused programmers trying to squeeze the last cycle from their Common Lisp programs. STMX records an in-memory transaction log containing all reads and writes from/to transactional memory, then later (during commit) validates the transaction log against the latest data present in transactional memory and finally copies the transaction log onto the transactional memory while holding locks. STMX is quite optimized, but this machinery comes at an obvious performance cost with respect to hand-made, highly optimized locking code (but a good reality check is to ask yourself how many people have the skill and patience to write such code without bugs).
it is NOT supposed to be used for all data structures in a Common Lisp program. STMX is intended only for the data accessed concurrently by multiple threads while being modified by at least one thread. And even in that case, transactional memory is not always needed: it depends on the kinds of modifications.
it is NOT a serialization or persistence framework. Rather, messing with metaclasses and playing (allowed) tricks with slots contents as STMX does, quite likely does not mix well with serialization or persistence libraries such as CL-STORE, because they typically need full control on the slots of the objects to be serialized and de-serialized.
it is NOT a million dollar library from some deep-pocket company. At the moment, it is the work of a single person.
Submarine is a Common Lisp library that's somewhere between a PostgreSQL library an an object persistency system. It uses Postmodern to communicate with the database. The basic idea is that you create your classes in the metaclass DB-CLASS and submarine cares about creating SQL tables or, if the tables already exist, checking if they conform to the provided specification. Moreover, Submarine supports an intuitive way of expressing both one-to-many and many-to-many relations.The author of Submarine is Ryszard Szopa.The common-lisp.net webpage of the project is http://common-lisp.net/project/submarine/.
Terminfo database front-end.
Read and write cdb files, as specified in