December 2015 Quicklisp dist update now available

New projects:
  • asdf-viz — visualize the library dependency of an asdf/quicklisp system — LLGPL
  • ax.tga — A fork of cl-tga with some new features. — MIT
  • cl-amqp — AMQP 0.9.1 with RabbitMQ extensions in Common Lisp — MIT
  • cl-cut — Macros for partial application of expressions in the spirit of SRFI 26. — MIT
  • cl-textmagic — Common lisp implementation of TextMagic API to send SMS — MIT
  • eventfd — IOLib based eventfd bindings — MIT
  • ia-hash-table — Main purpose is to be able to use strings as real keys but do gethash with symbols and vice versa. Can be useful for things like http headers parsing (no more intern leaks), json apis with/without https://github.com/AccelerationNet/access. Only tested on SBCL. Expected to work on Allegro, CCL and LW. — MIT
  • qtools-ui — A collection of components and utilities for use in Qt applications. — Artistic
  • read-csv — A library for reading CSV data from streams. — lgpl2
  • simple-inferiors — A very simple library to use inferior processes. — Artistic
  • smart-buffer — Smart octets buffer — BSD 3-Clause
  • teepeedee2 — Multiprotocol fast networking framework 
  • trivial-build — Compile a system into an executable. — MIT
  • trivial-exe — Tools for working with executables — MIT

Updated projects: access, antik, binfix, birch, bordeaux-threads, buffalo, buildapp, caveman, ceramic, cl+ssl, cl-ana, cl-ansi-term, cl-autowrap, cl-cairo2, cl-charms, cl-cli, cl-colors, cl-coveralls, cl-decimals, cl-enchant, cl-enumeration, cl-gambol, cl-general-accumulator, cl-geometry, cl-groupby, cl-hash-util, cl-interpol, cl-l10n, cl-libyaml, cl-opsresearch, cl-pass, cl-permutation, cl-project, cl-protobufs, cl-rabbit, cl-readline, cl-sdl2, cl-sendmail, cl-xul, cl-yaml, clack, clack-errors, clazy, clinch, clip, clods-export, closer-mop, clsql, clsql-orm, codex, coleslaw, colleen, colliflower, com.informatimago, command-line-arguments, common-doc, common-html, common-lisp-actors, commonqt, crane, croatoan, data-table, declt, defenum, defmacro-enhance, djula, eazy-process, eazy-project, esrap, external-program, fare-csv, fare-mop, fare-utils, fast-http, fast-io, find-port, gendl, geneva, glkit, gsll, helambdap, hl7-parser, hu.dwim.asdf, hu.dwim.computed-class, hu.dwim.def, hu.dwim.delico, hu.dwim.logger, hu.dwim.partial-eval, hu.dwim.perec, hu.dwim.presentation, hu.dwim.quasi-quote, hu.dwim.rdbms, hu.dwim.reiterate, hu.dwim.serializer, hu.dwim.syntax-sugar, hu.dwim.util, hu.dwim.walker, hu.dwim.web-server, inferior-shell, iolib, jonathan, kenzo, lack, lime, lisp-namespace, lispbuilder, local-time, lparallel, lucerne, macro-html, mcclim, mgl-pax, mixalot, mk-string-metrics, mpc, napa-fft3, new-op, perlre, policy-cond, pounds, projectured, prove, qlot, qt-libs, qtools, ratify, rcl, rfc2109, rfc2388-binary, rpm, rutils, s-protobuf, scalpl, scriba, sdl2kit, serapeum, simple-tasks, staple, string-case, stumpwm, swank-protocol, swap-bytes, sxql, texp, trivia, trivial-benchmark, trivial-download, trivial-open-browser, trivial-update, trivialib.type-unify, unix-opts, utilities.binary-dump, utilities.print-tree, varjo, vom, woo, xecto, yason.


October 2015 Quicklisp dist update now available

New projects:
  • cl-itertools — itertools Python lib ported to CL — MIT
  • cl-tesseract — CFFI bindings to the Tesseract OCR library. — MIT
  • fast-websocket — Optimized WebSocket protocol parser — BSD 2-Clause
  • lisp-critic — LISP-CRITIC - A Lisp code critiquing package. — MIT Licence
  • redirect-stream — Offers a stream that redirects all actions to an inner stream. — Artistic
  • trivial-ssh — An abstraction layer over cl-libssh2. — MIT
Updated projects: 3d-vectors, archive, binfix, buffalo, calispel, ceramic, chirp, city-hash, cl-ana, cl-async, cl-autowrap, cl-charms, cl-gists, cl-glfw3, cl-gobject-introspection, cl-hamt, cl-jpl-util, cl-launch, cl-liballegro, cl-libyaml, cl-locale, cl-marklogic, cl-messagepack, cl-openstack-client, cl-opsresearch, cl-permutation, cl-quickcheck, cl-readline, cl-redis, cl-riff, cl-scripting, cl-smtp, cl-yaml, clack, clavier, cletris, clfswm, climon, clml, closer-mop, clsql-orm, codata-recommended-values, colliflower, com.google.base, commonqt, crane, croatoan, crypto-shortcuts, dexador, dissect, djula, docparser, drakma, drakma-async, eazy-gnuplot, eazy-project, esrap, external-program, fare-csv, fare-memoization, fast-http, frpc, gendl, hh-redblack, interface, introspect-environment, jonathan, json-responses, lack, lake, lift, lisp-gflags, lucerne, mathkit, mcclim, mgl-pax, montezuma, more-conditions, ningle, perlre, plump, postmodern, qt-libs, qtools, quri, rutils, s-http-client, scalpl, scriptl, serapeum, simple-tasks, snappy, staple, stumpwm, swank-crew, sxql, trivial-download, trivial-signal, uiop, unix-options, unix-opts, utm, varjo, websocket-driver, woo, xml-emitter.

Removed projects: teepeedee2. Removed because of the way it clobbers the ASDF configuration to load its own alexandria.

Incidentally, October marks the fifth anniversary of the initial release of Quicklisp. Enjoy!


September 2015 Quicklisp dist update now available

New projects:
  • 3d-vectors — A small utility library implementing basic 3d vector functionality. — Artistic
  • cl-annot-prove — Annotation Syntax Test Library. — MIT
  • cl-arxiv-api — Bindings for API of arXiv.org — MIT
  • cl-diceware — Diceware in Lisp — MIT
  • cl-disque — A Disque client for Common Lisp — MIT
  • cl-hamt — Dictionary & set data structure using hash array-mapped tries — BSD
  • cl-scram — Common lisp library to implement SCRAM-SHA1 SASL mechanism. — Revised BSD License (see LICENSE)
  • clim-pkg-doc — clim-package-documentation — BSD Simplified
  • codex — A documentation system for Common Lisp. — MIT
  • colliflower — Generic interfaces for collections and iterators. — MIT
  • elb-log — ELB log manager for Common Lisp — MIT
  • file-types — Simple scheme to classify file types in a hierarchical fashion. — GNU AGPL
  • geneva — Core of the Geneva document preparation system. Provides data structures and syntax sugar. — GNU AGPL
  • inquisitor — Encoding/end-of-line detecter and of external-format wrapper for Common Lisp — MIT
  • lake — Lake is a GNU make like build utility in Common Lisp. — MIT
  • macro-html — HTML generation library. Aims to be fast, modular, cachable and concise. It does so by defining each tag as a macro which expands to code printing the respective HTML source. Also employs a DSL for element attributes. — GNU AGPL
  • macrodynamics — A language extension for creating bindings scoped to the entire expansion process of a region of code. — LLGPL
  • mini-cas
  • pandocl — A universal document converter. — MIT
  • parenml — S-expression markup language. — MIT
  • snooze — A framework for building REST services using CLOS. — LLGPL
  • texp — DSL for outputting TeX expressions using S-expressions. — GNU Affero General Public License
  • translate — Abstraction layer for translations — LLGPLv2
  • trivial-documentation — Extract documentation and definitions for symbols and packages. — GNU AGPL
  • trivial-open-browser — Open the browser to a URL, on any system. — MIT
  • ubiquitous — A library providing a universal application configuration mechanism. — Artistic
  • ufo — Roswell Script Manager — MIT
  • zenekindarl — A fast precompiling template engine —
Updated projects: access, array-utils, asdf-linguist, binfix, birch, bit-smasher, bknr-datastore, buffalo, carrier, caveman, ceramic, cffi, cl-6502, cl-ana, cl-async, cl-base64, cl-bson, cl-ca, cl-containers, cl-coveralls, cl-curlex, cl-emb, cl-ev, cl-fuse, cl-gearman, cl-geocode, cl-gists, cl-glfw3, cl-grace, cl-hash-util, cl-html5-parser, cl-influxdb, cl-intbytes, cl-irc, cl-jpeg, cl-ledger, cl-liballegro, cl-marklogic, cl-messagepack, cl-mlep, cl-modlisp, cl-mustache, cl-opengl, cl-opsresearch, cl-pdf, cl-photo, cl-ppcre, cl-project, cl-pslib, cl-rabbit, cl-read-macro-tokens, cl-rethinkdb, cl-rss, cl-shellwords, cl-string-match, clack, clavier, cletris, clfswm, climc, climon, clipper, clml, closer-mop, clsql, clss, coleslaw, com.informatimago, common-doc, common-doc-plump, common-html, commonqt, crane, croatoan, dartsclhashtree, defpackage-plus, delta-debug, dexador, djula, docparser, eazy-gnuplot, eazy-project, esrap-liquid, fast-http, fast-io, fiasco, fred, frpc, gbbopen, gendl, getopt, hu.dwim.web-server, hunchensocket, inferior-shell, integral-rest, irc-logger, jonathan, jsown, kenzo, kmrcl, lack, let-over-lambda, lml, lml2, lparallel, lquery, lucerne, mk-string-metrics, named-readtables, opticl, osc, parse-js, pgloader, pipes, plump, portableaserve, postmodern, pounds, prove, ptester, puri, purl, qlot, qt-libs, qtools, quri, racer, reversi, rlc, rutils, scalpl, scriptl, serapeum, spinneret, stumpwm, sxql, tagger, trivial-benchmark, trivial-features, uffi, umlisp, umlisp-orf, websocket-driver, woo, wookie, xlunit, xptest.

Removed projects: hinge, py-configvalidator, read-csv.

Hinge was removed because I can't check it out from git any more. py-configvalidator and read-csv no longer build with SBCL, and the authors have not responded to github issues.

To get this update, use: (ql:update-dist "quicklisp")


July 2015 download stats

Here are the top 100 downloads for July, 2015:
 13137  alexandria
  8723  trivial-features
  8303  babel
  7185  cffi
  7095  bordeaux-threads
  6398  trivial-gray-streams
  6269  flexi-streams
  5246  trivial-garbage
  5126  usocket
  5072  closer-mop
  4989  cl-fad
  4772  cl-ppcre
  4725  split-sequence
  4659  anaphora
  4599  cl+ssl
  4317  cl-base64
  4159  chunga
  4097  puri
  4022  drakma
  3916  iterate
  3842  nibbles
  3773  chipz
  3256  named-readtables
  3183  ironclad
  2816  md5
  2816  local-time
  2783  let-plus
  2741  slime
  2702  uiop
  2595  trivial-backtrace
  2507  cl-colors
  2375  hunchentoot
  2313  cl-ansi-text
  2263  prove
  1924  cl-unicode
  1900  rfc2388
  1900  metabang-bind
  1863  trivial-types
  1860  cl-utilities
  1821  cl-annot
  1806  optima
  1777  fiveam
  1717  cl-interpol
  1700  cl-syntax
  1629  static-vectors
  1583  trivial-utf-8
  1580  quri
  1466  parse-number
  1450  fast-io
  1418  salza2
  1322  clack
  1313  quicklisp-slime-helper
  1296  cl-json
  1226  proc-parse
  1137  xsubseq
  1092  jonathan
  1068  fast-http
  1036  ieee-floats
  1025  osicat
  1019  closure-common
  1018  lack
   959  cxml
   957  asdf-system-connections
   937  zpb-ttf
   935  http-body
   914  uuid
   897  postmodern
   893  hu.dwim.asdf
   876  trivial-indent
   860  zpng
   835  plump
   833  cl-dbi
   827  esrap
   818  fare-utils
   813  jsown
   812  array-utils
   806  cl-who
   776  cl-yacc
   754  metatilities-base
   746  symbol-munger
   720  swap-bytes
   719  yason
   718  cl-containers
   711  trivial-mimes
   695  fare-quasiquote
   687  lisp-unit
   686  clss
   662  lquery
   648  cl-vectors
   636  iolib
   626  myway
   626  map-set
   625  parenscript
   608  lparallel
   607  arnesi
   605  log4cl
   592  hu.dwim.stefil
   588  cl-marshal
   585  vom
   578  external-program


August 2015 Quicklisp dist update now available

New projects:

  • binfix — BINFIX -- A powerful binary infix syntax for Common LISP. — GNU GPLv2
  • ceramic — Common Lisp web apps on the desktop — MIT
  • cl-bson — BSON encoder/decoder for Common Lisp. — LLGPL
  • cl-intbytes — Encode/decode any-base integers and byte arrays interchangeably. — LLGPL
  • cl-liballegro — Allegro game programming library bindings. — Unspecified
  • clml — Common Lisp Machine Learning Library — LLGPL
  • fred — Lisp Interface to Federal Reserve Economic Data (FRED®) — MIT
  • halftone — An image viewer using Qtools — Artistic
  • kenzo — A Symbolic Software for Effective Homology Computation by Francis Sergeraert — GPLv3
  • oe-encode — An implementation of the ENCODE() hash function from Progress OpenEdge. — CC0 1.0 Public Domain
  • tiff4cl — TIFF access primitives — LGPL

Updated projects: access, array-utils, basic-binary-ipc, bit-smasher, black-tie, buildapp, caveman, cl-ana, cl-ansi-text, cl-closure-template, cl-cookie, cl-coveralls, cl-ev, cl-gists, cl-gss, cl-i18n, cl-isaac, cl-launch, cl-marklogic, cl-mlep, cl-murmurhash, cl-oauth, cl-opengl, cl-opsresearch, cl-pdf, cl-poker-eval, cl-proj, cl-pslib, cl-pslib-barcode, cl-qprint, cl-rabbit, cl-rfc2047, cl-sl4a, cl-slug, cl-string-match, clack, clack-errors, clinch, clipper, closer-mop, clx, colleen, com.informatimago, common-doc, common-html, croatoan, datafly, declt, defclass-std, dexador, djula, docparser, drakma, dyna, esrap, esrap-liquid, external-program, fare-utils, fast-http, frpc, gendl, glyphs, hdf5-cffi, hh-aws, hu.dwim.util, integral, introspect-environment, iolib, jonathan, let-over-lambda, lisp-interface-library, lquery, lucerne, md5, mpc, ningle, perlre, plump, proc-parse, protobuf, prove, purl, qlot, qmynd, qt-libs, qtools, quickapp, quri, racer, s-protobuf, scalpl, sdl2kit, serapeum, simple-tasks, split-sequence, stumpwm, swap-bytes, sxql, terminfo, trivial-download, trivial-extract, trivial-irc, uiop, varjo, verbose, woo, wookie.

Removed projects: ch-image, mini-cas.

To get this update, use (ql:update-dist "quicklisp"). Enjoy!


July 2015 Quicklisp dist update now available

This Quicklisp update is supported by my employer, Clozure Associates. If you need commercial support for Quicklisp, or any other Common Lisp programming needs, it's available via Clozure Associates.
New projects:

  • check-it — A randomized property-based testing tool for Common Lisp. — LLGPL
  • cl-gists — Gists API Wrapper for Common Lisp. — MIT
  • cl-git — A CFFI wrapper of libgit2. — Lisp-LGPL
  • cl-opsresearch — Common Lisp library for Operations Research. — GPL3
  • cl-scripting — Utilities to help in writing scripts in CL — MIT
  • hu.dwim.graphviz — Graphviz layouting using CFFI bindings. — public domain
  • hu.dwim.presentation — A component based GUI framework with a backend to present it using HTML and JavaScript. — public domain
  • jp-numeral — A printer for Japanese numerals. — MIT
  • quickapp — A utility library to automate much of the app creation process — Modified BSD License
  • simple-tasks — A very simple task scheduling framework. — Artistic
  • terminfo — Terminfo database front-end. — copyrights
  • trivial-main-thread — Compatibility library to run things in the main thread. — Artistic
  • trivialib.type-unify — unifies a polimorphic type specifier with type variables against actual type specifiers — LLGPL
Updated projects: arrow-macros, binascii, birch, bit-smasher, buffalo, burgled-batteries.syntax, caveman, cerberus, cl-ana, cl-ansi-term, cl-async, cl-charms, cl-clon, cl-coveralls, cl-dbi, cl-freetype2, cl-growl, cl-isaac, cl-ledger, cl-libssh2, cl-libuv, cl-marklogic, cl-mongo-id, cl-netstring-plus, cl-olefs, cl-rabbit, cl-readline, cl-reexport, cl-rethinkdb, cl-rss, cl-sdl2, cl-slug, cl-spark, cl-string-match, cl-uglify-js, cl-voxelize, cl-yaclyaml, clack, clfswm, closer-mop, coleslaw, colleen, com.informatimago, command-line-arguments, common-doc-plump, commonqt, croatoan, dbus, declt, defclass-std, dexador, dissect, djula, docparser, drakma, dyna, eazy-gnuplot, fare-csv, fast-http, flexi-streams, frpc, generic-sequences, glass, glyphs, hemlock, hu.dwim.common, hu.dwim.def, hu.dwim.logger, hu.dwim.uri, hu.dwim.util, hu.dwim.web-server, hunchentoot, immutable-struct, integral, intel-hex, iolib, jonathan, jsown, lack, legion, let-over-lambda, lisp-interface-library, lisp-invocation, lisp-unit2, lucerne, madeira-port, marching-cubes, mathkit, mcclim, media-types, mexpr, mk-string-metrics, nibbles, ningle, optima, osicat, perlre, pileup, postmodern, pounds, pp-toml, priority-queue, prove, qlot, qmynd, qt-libs, qtools, quadtree, quicklisp-slime-helper, quri, rutils, sb-cga, screamer, scriba, serapeum, slime, smackjack, staple, stumpwm, sxql, transparent-wrap, trivial-download, trivial-features, trivial-lazy, trivial-signal, trivial-update, type-r, uiop, unix-opts, varjo, verbose, vgplot, weft, woo, wookie, workout-timer, x.fdatatypes, x.let-star, yaclml.


June 2015 download stats

Here are the top 100 downloads for June, 2015:

 8413  alexandria
 5803  babel
 5222  cffi
 5152  trivial-features
 4926  cl-ppcre
 4621  bordeaux-threads
 4308  trivial-gray-streams
 4208  closer-mop
 4112  usocket
 4068  flexi-streams
 3891  trivial-garbage
 3815  cl+ssl
 3727  cl-fad
 3597  split-sequence
 3591  anaphora
 3510  iterate
 3274  cl-base64
 3200  chunga
 3141  nibbles
 3136  chipz
 3083  puri
 2992  drakma
 2678  ironclad
 2521  named-readtables
 2407  local-time
 2391  let-plus
 2256  cl-colors
 2231  md5
 2152  slime
 2148  trivial-backtrace
 2089  cl-ansi-text
 1984  prove
 1769  metabang-bind
 1574  cl-unicode
 1512  optima
 1487  hunchentoot
 1455  cl-interpol
 1392  cl-utilities
 1328  rfc2388
 1301  cl-annot
 1215  quri
 1178  trivial-types
 1090  cl-syntax
 1080  fast-io
 1059  static-vectors
 1038  salza2
 1011  trivial-indent
 1000  cl-json
  966  plump
  943  parse-number
  941  ieee-floats
  933  trivial-utf-8
  918  array-utils
  841  fiveam
  802  postmodern
  778  proc-parse
  772  lparallel
  759  stefil
  751  quicklisp-slime-helper
  741  fast-http
  741  xsubseq
  740  clss
  734  lquery
  724  clack
  695  jsown
  693  lack
  677  cl-dbi
  676  jonathan
  669  closure-common
  666  osicat
  658  cl-html-parse
  658  cl-sqlite
  646  asdf-system-connections
  642  cxml
  634  uuid
  628  esrap
  625  yason
  619  symbol-munger
  611  fare-utils
  608  lisp-unit
  602  cl-who
  595  external-program
  585  cl-csv
  573  http-body
  572  metatilities-base
  569  cl-containers
  555  trivial-mimes
  545  fare-quasiquote
  538  hu.dwim.asdf
  524  cl-marshal
  520  log4cl
  511  zpng
  511  command-line-arguments
  490  cl-log
  478  html-template
  476  function-cache
  471  cl-yacc
  469  trivial-shell
  427  circular-streams
  422  cl-emb


June 2015 Quicklisp dist update now available

This Quicklisp update is supported by my employer, Clozure Associates. If you need commercial support for Quicklisp, or any other Common Lisp programming needs, it's available via Clozure Associates.
New projects:
  • cambl — A library for working with financial amounts involving multiple commodities. — BSD-3
  • cerberus — A Kerberos implementation — MIT
  • cl-ledger — Double-entry accounting system. — BSD-3
  • cl-libssh2 — Libssh2 bindings — MIT
  • cl-sane — Lispy library bindings for sane. — GPLv3
  • docparser — Parse documentation from Common Lisp systems. — MIT
  • fn — Some macros for lambda brevity — Public Domain
  • frpc — An ONC-RPC implementation. — MIT
  • glass — General Lisp API Security System. — MIT
  • glkit — Various utilities for OpenGL — MIT
  • integral-rest — REST APIs for Integral DAO Table. — MIT
  • legion — Simple worker threads with a queue. — BSD 2-Clause
  • lime — A high-level Swank client, like Slime, but for Common Lisp applications. — MIT
  • mathkit — Various utilities for math — MIT
  • or-glpk — Foreign interface to the GNU Linear Programming Kit. — LGPL3
  • pounds — Lisp block storage, provides portable file mappings amongst other things. — MIT
  • qt-libs — System to ensure that the necessary Qt libs are available. — Artistic
  • restful — Spin up new REST entities like madman — MIT License
  • swank-protocol — A low-level Swank client. — MIT
  • temporal-functions — A means of creating functions that have an internal concept of time — 2 Clause BSD
  • utilities.binary-dump — Formatting of binary data similar to the od(1) UNIX program. — LLGPLv3
  • varjo — Common Lisp -> GLSL Compiler — LLGPL
Updated projects: apply-argv, arrow-macros, asdf-dependency-grovel, asdf-encodings, asdf-finalizers, asdf-linguist, asdf-package-system, avatar-api, babel, bit-smasher, black-tie, blackbird, blackthorn-engine, bordeaux-fft, buffalo, burgled-batteries, burgled-batteries.syntax, caveman, cells, cffi, chanl, city-hash, cl+ssl, cl-6502, cl-abnf, cl-ana, cl-annot, cl-autowrap, cl-bencode, cl-bibtex, cl-charms, cl-cli-parser, cl-coveralls, cl-cron, cl-csv, cl-dbi, cl-dot, cl-dropbox, cl-durian, cl-emb, cl-factoring, cl-ftp, cl-fuse-meta-fs, cl-gendoc, cl-geometry, cl-glfw3, cl-gpu, cl-growl, cl-influxdb, cl-isaac, cl-launch, cl-lexer, cl-libpuzzle, cl-libusb, cl-libuv, cl-llvm, cl-marklogic, cl-memcached, cl-messagepack, cl-mlep, cl-mustache, cl-netstring-plus, cl-nxt, cl-odesk, cl-pass, cl-pdf, cl-plplot, cl-ppcre, cl-primality, cl-project, cl-protobufs, cl-qrencode, cl-quickcheck, cl-rabbit, cl-recaptcha, cl-rethinkdb, cl-rlimit, cl-rrt, cl-sam, cl-sdl2, cl-shellwords, cl-slug, cl-smtp, cl-sophia, cl-strftime, cl-string-match, cl-tk, cl-unification, clack, classimp, cletris, clim-widgets, clinch, clipper, clos-diff, closer-mop, coleslaw, colleen, com.google.base, command-line-arguments, common-doc, common-doc-plump, common-html, contextl, crane, croatoan, css-selectors, daemon, dartsclhashtree, defclass-std, defpackage-plus, dissect, djula, dyna, eazy-gnuplot, eazy-process, eazy-project, eco, eos, escalator, esrap, esrap-peg, event-glue, exscribe, fare-csv, fare-memoization, fare-mop, fare-quasiquote, fare-utils, fast-io, fft, find-port, gendl, glaw, glop, glu-tessellate, hdf5-cffi, hermetic, html-template, http-parse, hu.dwim.asdf, hu.dwim.common, hu.dwim.common-lisp, hu.dwim.computed-class, hu.dwim.debug, hu.dwim.def, hu.dwim.defclass-star, hu.dwim.delico, hu.dwim.logger, hu.dwim.partial-eval, hu.dwim.perec, hu.dwim.quasi-quote, hu.dwim.rdbms, hu.dwim.reiterate, hu.dwim.serializer, hu.dwim.stefil, hu.dwim.syntax-sugar, hu.dwim.uri, hu.dwim.util, hu.dwim.walker, hu.dwim.web-server, ieee-floats, imago, inferior-shell, inner-conditional, inotify, intel-hex, ip-interfaces, jonathan, jwacs, kebab, lack, lambda-gtk, lambda-reader, lass, let-over-lambda, lfarm, linedit, lisp-executable, lisp-gflags, lisp-interface-library, lisp-invocation, lisp-namespace, lispbuilder, local-time, lparallel, lucerne, lw-compat, magicffi, md5, meta, mexpr, mgl, mgl-pax, micmac, misc-extensions, mixalot, modf, modf-fset, modularize, modularize-interfaces, myweb, named-readtables, nibbles, ningle, npg, opticl, osicat, pal, parse-js, periods, perlre, pg, plump, png-read, pooler, postmodern, projectured, protobuf, pzmq, qlot, qtools, query-fs, quri, random, rcl, readable, reader-interception, repl-utilities, retrospectiff, rfc3339-timestamp, rock, rpc4cl, rpm, rucksack, s-xml, scalpl, scriba, scribble, sdl2kit, serapeum, shuffletron, single-threaded-ccl, sip-hash, smackjack, smug, snappy, software-evolution, st-json, staple, stem, stumpwm, swank-client, swank-crew, sxql, temporary-file, thorn, trivia, trivia.balland2006, trivial-download, trivial-extract, type-i, type-r, unix-options, unix-opts, usocket, utilities.print-items, utils-kt, verbose, vertex, vgplot, websocket-driver, weft, with-c-syntax, woo, wookie, workout-timer, wuwei, xhtmlgen, zip, zlib, zs3.

Removed projects: arnesi+, asdf-contrib, asdf-project-helper, asdf-utils, until-it-dies.

arnesi+ has been removed because its repo has disappeared and its authors have not replied to inquiries in months.

asdf-contrib and asdf-utils have been removed by request of the author. asdf-project-helper has stopped working as a result.

until-it-dies has never actually worked, but was previously included because some of its auxiliary systems worked.

To get this update, use (ql:update-dist "quicklisp")


May 2015 download stats

Here are the top 100 downloads for May, 2015:
 5093  alexandria
 3865  babel
 3442  cl-ppcre
 3296  trivial-features
 3109  cffi
 3023  usocket
 2979  cl+ssl
 2821  bordeaux-threads
 2723  flexi-streams
 2720  trivial-gray-streams
 2702  trivial-garbage
 2621  cl-fad
 2588  nibbles
 2442  chunga
 2390  closer-mop
 2380  chipz
 2326  cl-base64
 2266  drakma
 2247  split-sequence
 2160  ironclad
 2104  anaphora
 2100  puri
 1792  iterate
 1758  trivial-backtrace
 1658  slime
 1618  local-time
 1371  md5
 1268  named-readtables
 1152  metabang-bind
 1104  hunchentoot
 1071  let-plus
 1067  cl-unicode
 1009  cl-colors
  953  cl-interpol
  936  trivial-utf-8
  874  cl-ansi-text
  862  prove
  851  plump
  851  cl-utilities
  849  optima
  842  jsown
  825  uuid
  821  parse-number
  816  trivial-indent
  815  trivial-types
  806  array-utils
  804  lquery
  794  postmodern
  791  quicklisp-slime-helper
  787  rfc2388
  770  clss
  766  lparallel
  731  fiveam
  723  ieee-floats
  710  quri
  696  asdf-system-connections
  661  cl-annot
  642  metatilities-base
  641  cl-containers
  603  cl-sqlite
  573  cl-syntax
  571  command-line-arguments
  564  salza2
  538  py-configparser
  531  cl-json
  525  cl-abnf
  524  garbage-pools
  523  cl-log
  522  dynamic-classes
  521  cl-markdown
  517  cl-mssql
  516  buildapp
  507  cl-who
  500  static-vectors
  498  asdf-finalizers
  491  clack
  482  fast-io
  468  zpng
  466  cl-vectors
  452  fast-http
  449  proc-parse
  408  esrap
  400  osicat
  397  trivial-shell
  394  fare-utils
  389  zpb-ttf
  387  cl-csv
  385  clx
  371  vecto
  364  jonathan
  360  fare-quasiquote
  354  parenscript
  336  closure-common
  333  cl-coveralls
  327  xsubseq
  322  stefil
  319  ningle
  312  cxml
  309  cl-yacc
  292  lack


Looking for more metadata

A few days ago I linked to a report showing a lot of systems that failed to build. They failed because I added an option in the Quicklisp build environment that signals an error if a system lacks the description, author, and license metadata.

This isn't a standard feature of ASDF or Quicklisp. No projects are going to be dropped next month because of it. It's an optional piece of the build system, one that I added so I could see how many systems are missing that useful data and how likely it is that people will care.

I really want to use the :description option and show it as output in the REPL when searching for systems with something like system-apropos. I also want to make it easy to quickly determine the license of a given system, so you can figure out if it's compatible with your project. And having author information readily available will make it easier to contact someone regarding the project.

ASDF system metadata is a good choice for storing this information because it's not Quicklisp-specific. Anyone can gather and use this data if it's present in the systems. I hope that in the future every system in every project will have as much useful and accurate metadata as possible.

So what should you do if you want to help with this goal?

First, if you maintain a system and it's in the report, please update each of its system definitions with :description, :author, and :license information. A good description should be no longer than a tweet,and give an idea of what the system is for. The author information should include a name and email address. The license should be short and refer to a well-known license if possible, or give information about where to read the full license otherwise.

If you're not the maintainer of a system, but you want to file an issue or bug report, consider making a polite request to the author that they update their systems to include the extra info. (If you can, make sure nobody else has submitted the request first.)


ASDF 3 is coming to Quicklisp soon

In the next week or two, I'm going to update Quicklisp so that if ASDF is missing, or not at least version 3.1, it will fetch and load ASDF 3.1.4. This should be a pretty conservative change. Almost all implementations already include ASDF 3.

If you'd like to try the new Quicklisp client that fetches ASDF 3 if needed, see this post to the Quicklisp mailing list.


May 2015 Quicklisp dist update now available

This Quicklisp update is supported by my employer, Clozure Associates. If you need commercial support for Quicklisp, or any other Common Lisp programming needs, it's available via Clozure Associates.

New projects:

  • bytecurry.asdf-ext — ASDF extension(s) for generating atdoc documentation. — MIT
  • cl-durian — dynamic html generation from list structures (interpolation friendly) — WTFPL
  • cl-marklogic — Common Lisp library for accessing MarkLogic Server. — LGPL3
  • cl-pslib — A CFFI wrapper for the pslib library, a library for generating PostScript files. — LLGPL
  • cl-pslib-barcode — A barcode generator for the cl-pslib library. — LLGPL
  • cl-simple-concurrent-jobs — A simple API for running concurrent jobs and collecting the results — BSD 2-Clause
  • cl-sophia — High-level API for Sophia key-value storage — WTFPL
  • cl-strftime — Common Lisp compiler for the strftime language. — MIT
  • cl-tga — TGA file loader — MIT
  • erudite — Literate Programming System for Common Lisp — MIT
  • intel-hex — A library to handle Intel HEX format. — MIT
  • snakes — Python style generators for Common Lisp. — Apache 2.0

Updated projects: alexandria, antik, arrow-macros, babel, beirc, birch, blackbird, buffalo, bytecurry.mocks, caveman, chanl, chipz, cl+ssl, cl-ana, cl-async, cl-charms, cl-enumeration, cl-gobject-introspection, cl-grace, cl-graph, cl-i18n, cl-launch, cl-mtgnet, cl-netstring-plus, cl-ply, cl-quickcheck, cl-rabbit, cl-read-macro-tokens, cl-readline, cl-rethinkdb, cl-sdl2, cl-singleton-mixin, cl-slug, cl-voxelize, cl-yaml, clack, clack-errors, clim-widgets, climacs, clinch, clipper, closer-mop, colleen, common-doc, common-html, common-lisp-stat, commonqt, corona, dartsclhashtree, dartsclmessagepack, defclass-std, dyna, eazy-process, exscribe, f2cl, fare-csv, fast-http, function-cache, gbbopen, generic-comparability, gsll, hu.dwim.delico, hu.dwim.stefil, hu.dwim.syntax-sugar, hu.dwim.util, immutable-struct, inferior-shell, jonathan, json-responses, lass, let-over-lambda, lev, lisp-interface-library, lisp-invocation, lisp-matrix, lquery, lucerne, metap, mexpr, mgl-pax, nibbles, ningle, nsort, perlre, plump, proc-parse, qlot, qtools, quadtree, quasiquote-2.0, scalpl, scriba, scribble, serapeum, shellpool, should-test, shuffletron, staple, stmx, stumpwm, thorn, transparent-wrap, trivial-download, usocket, with-c-syntax, wookie.

To get this update, use (ql:update-dist "quicklisp").


April 2015 download stats

Here are the top 100 downloads for last month:
 4230  alexandria
 3401  trivial-features
 3377  babel
 3366  cl-ppcre
 3102  cffi
 2717  bordeaux-threads
 2620  closer-mop
 2611  trivial-garbage
 2605  cl-fad
 2575  flexi-streams
 2574  trivial-gray-streams
 2471  cl+ssl
 2366  nibbles
 2245  usocket
 2228  cl-base64
 2210  split-sequence
 2191  chunga
 2087  slime
 2047  iterate
 2046  trivial-backtrace
 2042  drakma
 2002  anaphora
 1925  ironclad
 1691  puri
 1682  chipz
 1653  local-time
 1520  named-readtables
 1455  md5
 1399  hunchentoot
 1259  metabang-bind
 1152  cl-colors
 1124  let-plus
 1070  optima
 1051  cl-unicode
 1020  trivial-utf-8
  992  cl-syntax
  950  rfc2388
  946  cl-interpol
  943  trivial-types
  941  cl-annot
  934  cl-ansi-text
  846  postmodern
  839  prove
  803  parse-number
  799  asdf-system-connections
  791  uuid
  780  cl-utilities
  765  cl-containers
  765  metatilities-base
  760  quicklisp-slime-helper
  701  fast-io
  695  jsown
  672  ieee-floats
  671  lparallel
  664  static-vectors
  658  cl-json
  640  plump
  605  fiveam
  601  zpng
  594  lquery
  590  trivial-indent
  587  clss
  578  buildapp
  566  array-utils
  559  xsubseq
  557  cl-sqlite
  547  salza2
  546  quri
  542  command-line-arguments
  540  osicat
  521  garbage-pools
  520  fast-http
  515  cl-mssql
  509  cl-who
  508  cl-vectors
  506  clx
  505  iolib
  503  py-configparser
  499  dynamic-classes
  497  asdf-finalizers
  497  cl-log
  496  cl-marshal
  494  cl-markdown
  484  trivial-mimes
  483  cl-abnf
  477  clack
  465  fare-utils
  450  ningle
  418  zpb-ttf
  408  cl-dbi
  408  st-json
  404  http-body
  403  circular-streams
  398  closure-common
  392  fare-quasiquote
  380  cl-csv
  380  cxml
  377  parenscript
  373  myway
  352  map-set


A small step in the right direction: https for quicklisp.org

I had a joke slide at ELS last week that explained why Quicklisp was so easy to install: just use curl install.quicklisp.net | sudo sh.  (Don't try this.) Although Quicklisp's installation isn't as risky as piping random code into a root shell, it does have its own problems. Several people at the conference asked me when I would add more security features to Quicklisp.

As of this week, www.quicklisp.org is available through an https connection. Any requests that come in over http are redirected to the equivalent https location. That means you can have some confidence that the information there is provided by me, rather than intercepted and replaced by a third party.

The main Quicklisp website is only part of the story. The software to install and use Quicklisp is hosted on another domain, beta.quicklisp.org. That domain now has optional https access, so that any URL may be accessed either through https or http.

That means the bootstrap file quicklisp.lisp is available via https, and so is the PGP key I use to sign client software and dist metadata. (That key is also available via various PGP keyservers.) If you have programs that fetch quicklisp.lisp or software archives directly from beta.quicklisp.org, I encourage you to update them to use https instead of http.

Why doesn't beta.quicklisp.org use https exclusively? Unfortunately, the Quicklisp client code itself does not know how to connect via https, so turning off http access would break Quicklisp completely. It will take more time to update the Quicklisp client code to use https.

Implementing https for quicklisp.org is a small, but important, first step toward making the use of Quicklisp safer. If you have any questions or concerns, please get in touch via zach@quicklisp.org.


Dealing with "redundant" libraries

People sometimes submit libraries to Quicklisp that have significant functional overlap with other libraries. When someone wants to add a new library for functionality that is well-covered by other libraries, I don't always add it right away. There are a few questions I ask first.

First, are you aware that there are many other libraries that fit a similar need? If not, is it possible to use one of those instead? It is possible that an existing library is more complete and mature than a new library. And adding a new library can make it harder for someone else to choose a good option.

If you're aware of other libraries, is it possible that the essential new functionality your library provides can be incorporated into an existing library? 

If you're aware of other libraries, but still feel you need a new one, and it can't be incorporated into an existing library, I'll go ahead and add the library. 

Here are a few recent examples of that process playing out:
I don't reject libraries for lack of novelty. It's always possible that a new library becomes so clearly superior to all other options that it is the go-to library of the future. But it's best when that happens because you're aware of the existing options (and their strengths and limitations) rather than ignorant of them.


New feature: Quicklisp library bundles

Quicklisp library bundles are self-contained sets of systems that are exported from Quicklisp and loadable without involving Quicklisp.

I added the feature to the Quicklisp client on April 18th and announced it at ELS on the 20th. To get it, use (ql:update-client). It will be available when you restart for the next session.

I've wanted to provide this feature since the beginning of Quicklisp. I primarily pictured this as a kind of delivery tool, where your project should have access to a specific set of supporting libraries without the complexity of Quicklisp loaded in as well.

The interface is pretty simple: (ql:bundle-systems '("foo" "bar" "baz") :to "my-bundle/") will produce a file named "my-bundle/bundle.lisp" that, when loaded, will make "foo", "bar", and "baz" accessible via ASDF without involving Quicklisp at all. All the libraries on which "foo", "bar", and "baz" depend are also included in the bundle, recursively.

The bundle can be relocated without any issues. All its pathnames and indexes are relative to its bundle.lisp.

When bundle.lisp is loaded, the systems in the bundle take precedence over all other ASDF systems. Multiple bundles can be loaded at the same time; the most recently loaded one has the highest precedence. And a bundle can be loaded more than once. If loaded again, it will be moved to the top of the precedence list again.

Bundles also have a local-projects directory that adds some of the automagic from the Quicklisp local-projects feature. Bundle local-projects systems take precedence over the bundle's "built-in" systems.

Quicklisp library bundles are also documented! But they are only lightly tested. If you think library bundles might help you solve a problem, please give them a try and let me know if you have any problems or questions.


April 2015 Quicklisp dist update now available

This Quicklisp update is supported by my employer, Clozure Associates. If you need commercial support for Quicklisp, or any other Common Lisp programming needs, it's available via Clozure Associates.

New projects:
  • birch — A simple Common Lisp IRC client library — MIT
  • bytecurry.mocks — Tools to mock functions for unit tests — MIT
  • carrier — An async HTTP client — MIT
  • cl-cookie — HTTP cookie manager — BSD 2-Clause
  • cl-coveralls — Coverage tracker for Coveralls — BSD 2-Clause
  • cl-groupby — groupby: A higher order function named groupby as known from Scala. — MIT
  • cl-openstack-client — OpenStack client libraries — Apache-2.0
  • cl-poker-eval — 7-card hand poker evaluator — BSD
  • cl-shellwords — Common Lisp port of Ruby's shellwords.rb, for escaping and splitting strings to be passed to a shell. — MIT
  • cl-singleton-mixin — provides singleton-mixin class. — MIT
  • dexador — Yet another HTTP client for Common Lisp — MIT
  • duologue — High-level user interaction library for Common Lisp — MIT
  • dyna — Dyna is an AWS DynamoDB ORM for Common Lisp. — MIT
  • find-port — Find open ports programmatically. — MIT
  • fmt — Extensible format-like facility — MIT
  • folio2 — the folio2 functional-idioms system — Lisp Lesser GNU Public License
  • immutable-struct — Library that encourage the use of functional programming + pattern matching — LLGPL
  • jonathan — JSON encoder and decoder. — MIT
  • json-responses — Canned JSON responses for Hunchentoot — MIT
  • kebab — Common Lisp string,symbol,keyword PascalCase <=> camelCase <=> snake_case <=> kebab-case(lisp-case) converter. — LLGPL
  • lack — A minimal Clack — LLGPL
  • metap — Metap provides metaclass propagation along class inheritance structure. — MIT
  • nsort — Natural or Numeric Sort — BSD Simplified
  • plump-bundle — A binary storage format for Plump documents. — Artistic
  • proc-parse — Procedural vector parser — BSD 2-Clause
  • quadtree — Quadtree data structure in Common Lisp — MIT
  • quasiquote-2.0 — Writing macros that write macros. Effortless. — MIT
  • scriba — A markup format similar to Scribe. — MIT
  • should-test — Minimal yet feature-rich Common Lisp test framework. — MIT
  • string-escape — Emacs and Python style string escapes in #"..." form. — GPLv3
  • thorn — A CommonDoc extension for entering special characters. — MIT
  • trivia — NON-optimized pattern matcher compatible with OPTIMA, with extensible optimizer interface and clean codebase — LLGPL
  • trivia.balland2006 — Optimizer for Trivia based on (Balland 2006) — LLGPL
  • type-i — Type Inference Utility on Fundamentally 1-arg Predicates — LLGPL
  • type-r — Collections of accessor functions and patterns to access the elements in compound type specifier, e.g. `dimensions' in `(array element-type dimensions)' — LLGPL
  • unix-opts — minimalistic parser of command line arguments — MIT
Updated projects: 3bmd, access, antik, arrow-macros, buffalo, buildapp, chanl, cl-ana, cl-annot, cl-ansi-term, cl-async, cl-charms, cl-dbi, cl-dot, cl-factoring, cl-gobject-introspection, cl-grace, cl-indeterminism, cl-launch, cl-libyaml, cl-mlep, cl-mtgnet, cl-mw, cl-netstring-plus, cl-openid, cl-ply, cl-python, cl-quickcheck, cl-random, cl-readline, cl-reddit, cl-redis, cl-rlimit, cl-sdl2, cl-slug, cl-svg, cl-syntax, cl-tcod, cl-vectors, cl-voxelize, cl-yaml, clack, classimp, clavier, clhs, clim-widgets, clinch, clipper, clos-fixtures, closer-mop, clsql-helper, clx, codata-recommended-values, colleen, com.informatimago, common-doc, common-doc-plump, common-html, commonqt, croatoan, defclass-std, djula, drakma, eazy-project, esrap-liquid, fare-memoization, fast-http, fast-io, femlisp, gendl, graph, gsll, hdf5-cffi, hl7-client, hl7-parser, http-body, hu.dwim.util, hunchentoot, hyperluminal-mem, integral, interface, introspect-environment, js-parser, jsown, jwacs, lass, let-over-lambda, lfarm, linedit, lisp-interface-library, lisp-invocation, lisp-namespace, local-time, lucerne, magicffi, mcclim, media-types, mgl-pax, mk-string-metrics, nibbles, ningle, nst, plump, protobuf, qtools, quri, quux-time, racer, rutils, scalpl, scriptl, sdl2kit, serapeum, shellpool, simple-rgb, skippy, slime, st-json, staple, stumpwm, symbol-munger, trivial-backtrace, trivial-benchmark, trivial-debug-console, trivial-download, trivial-update, umlisp, verbose, vertex, vgplot, weblocks-stores, weft, workout-timer, xmls, zaws, zcdb, zpb-exif, zpng.

Removed projects: autoproject, brlapi, cambl, cl-couch, cl-ledger, hctsmsl, nekthuth, red-black.

To get these updates, use (ql:update-dist "quicklisp").



March 2015 download stats

Here are the top 100 download for last month:

 5853   alexandria
 4149   cl-ppcre
 3465   closer-mop
 3382   trivial-features
 3296   babel
 3086   named-readtables
 2977   cffi
 2814   flexi-streams
 2795   bordeaux-threads
 2785   trivial-gray-streams
 2784   cl+ssl
 2722   cl-fad
 2641   trivial-garbage
 2315   nibbles
 2313   usocket
 2277   chunga
 2251   anaphora
 2235   cl-base64
 2218   optima
 2142   split-sequence
 1942   ironclad
 1839   puri
 1803   fiveam
 1768   iterate
 1753   drakma
 1729   chipz
 1641   cl-colors
 1629   trivial-backtrace
 1586   local-time
 1559   md5
 1493   slime
 1486   let-plus
 1401   fare-utils
 1392   fare-quasiquote
 1340   cl-ansi-text
 1190   prove
 1180   hunchentoot
 1098   cl-unicode
 1072   trivial-types
 1053   rfc2388
 1021   metabang-bind
 1010   cl-utilities
  986   cl-interpol
  961   cl-syntax
  950   trivial-utf-8
  889   introspect-environment
  846   quicklisp-slime-helper
  827   cl-annot
  802   parse-number
  757   st-json
  716   quri
  710   osicat
  709   postmodern
  686   cl-marshal
  658   trivial-mimes
  654   xsubseq
  651   lparallel
  648   plump
  645   jsown
  641   asdf-system-connections
  614   ieee-floats
  613   trivial-indent
  605   metatilities-base
  604   uuid
  603   array-utils
  601   cl-containers
  596   cl-json
  590   lquery
  584   fast-http
  572   cl-sqlite
  567   salza2
  556   clss
  538   clack
  500   static-vectors
  495   clx
  490   command-line-arguments
  464   cl-markdown
  463   py-configparser
  462   dynamic-classes
  455   circular-streams
  446   asdf-finalizers
  446   zpb-ttf
  446   cl-log
  445   fast-io
  443   cl-abnf
  442   garbage-pools
  440   buildapp
  435   cl-mssql
  425   cl-who
  399   zpng
  397   esrap
  395   http-body
  394   vecto
  391   cl-csv
  389   cl-vectors
  388   iolib
  358   closure-common
  353   lisp-namespace
  351   cl-opengl
  351   cl-dbi


March 2015 Quicklisp dist update now available

New projects:
  • arrow-macros — arrow-macros provides clojure-like arrow macros and diamond wands. — MIT
  • buffalo — A LALR(1) parser generator for Common Lisp — MIT/X11
  • burgled-batteries — Lisp-Python interface — MIT
  • burgled-batteries.syntax — Embedded Python syntax for burgled-batteries — MIT
  • cl-libyaml — A binding to the libyaml library. — MIT
  • cl-mlep — cl-mlep is a Common Lisp Machine Learning library for Educational Purposes. — MIT
  • cl-mtgnet
  • cl-netstring-plus — A simple library for sending and receiving messages with a netstring-like encoding
  • cl-reddit — Reddit client api library — BSD
  • cl-yaml — A YAML parser and emitter. — MIT
  • cl4store — 4store — BSD
  • clavier — Clavier: A Common Lisp validation library — MIT
  • clipper — File attachment library. — MIT
  • clods-export — Common Lisp OpenDocument spreadsheet export library — MIT
  • common-doc-plump — Translate a Plump DOM into a CommonDoc document and back. — MIT
  • descriptions — A domain model meta level description library — MIT
  • eazy-process — Yet Another Portable Library for Process Handling / Subshell Invokation — MIT
  • hl7-client — hl7-client - send HL7-Messages over TCP/IP with MLLP — BSD
  • hl7-parser — Decoder and Encoder for ER7 formatted HL7-Messages — BSD
  • hyperluminal-mem — High-performance serialization library, designed for untrusted data — LLGPL
  • linewise-template — Linewise file/stream processor for code generation etc. — BSD-3-Clause
  • lisp-namespace — Provides LISP-N --- extensible namespaces in Common Lisp. — LLGPL
  • media-types — Query and compare media types. — MIT
  • ryeboy — Riemann client — BSD
  • shellpool — A library for running external programs from Common Lisp — MIT/X11-style
  • transparent-wrap — A signature-preserving wrapper generator for functions and macros. — LLGPL
  • trivial-debug-console — A library for a well-behaved debug console
  • vertex — A markup language with TeX syntax. — MIT
  • weft
  • workout-timer — Workout timer — MIT
Updated projects: architecture.service-provider, asdf-linguist, avatar-api, basic-binary-ipc, binge, blackbird, caveman, chanl, chillax, chrome-native-messaging, cl+ssl, cl-acronyms, cl-ana, cl-ansi-term, cl-async, cl-autowrap, cl-charms, cl-cli, cl-colors, cl-conspack, cl-csv, cl-custom-hash-table, cl-db3, cl-dbi, cl-devil, cl-fsnotify, cl-gobject-introspection, cl-gss, cl-i18n, cl-l10n, cl-libuv, cl-marshal, cl-messagepack, cl-mock, cl-murmurhash, cl-mysql, cl-openal, cl-opengl, cl-prime-maker, cl-python, cl-rabbit, cl-read-macro-tokens, cl-readline, cl-redis, cl-rethinkdb, cl-rlimit, cl-sdl2, cl-slug, cl-speedy-queue, cl-twitter, cl-webkit, cl-xul, cl-yaclyaml, clack, clack-errors, clfswm, clim-widgets, clip, clos-fixtures, closer-mop, clot, clpmr, clsql, clss, clx, cobstor, colleen, com.informatimago, common-doc, common-html, commonqt, corona, crane, defclass-std, defenum, dissect, djula, drakma-async, eazy-gnuplot, eazy-project, eco, esrap, esrap-liquid, external-program, fast-http, form-fiddle, gbbopen, gendl, http-body, hunchensocket, integral, iolib, lisp-executable, lparallel, lquery, lucerne, mgl-pax, micmac, mime4cl, mk-string-metrics, modularize-interfaces, myway, named-readtables, net4cl, nibbles, optima, osicat, packet, pgloader, piping, plump, pooler, qlot, qmynd, qtools, quri, racer, rcl, rock, scalpl, sclf, sdl2kit, serapeum, sheeple, simple-currency, skippy, smtp4cl, south, spinneret, squirl, st-json, staple, stmx, stumpwm, sxql, talcl, trivial-arguments, trivial-benchmark, trivial-download, trivial-extract, trivial-mimes, trivial-update, unix-options, until-it-dies, utils-kt, utm, verbose, weblocks, weblocks-utils, woo, wookie.

Removed projects: 3bil, cl-binaural, cl-openstack, cluck, lisphys, oct.

I removed 3bil because it is effectively unmaintained and apparently unused. cl-openstack is no longer maintained; a replacement library will soon be available. I can't build cl-binaural, cluck, lisphys, or oct on SBCL any more.

Sorry to skip a release in February. A holiday and a number of library problems conspired to hold off the release. As a result there are a larger number of updates this month than usual. If you have any problems, please don't hesitate to discuss them on the mailing list or email me directly.

To get this update, use (ql:update-dist "quicklisp").


February 2015 download stats

Here are the top 100 download for last month:

 4270   alexandria
 2825   trivial-features
 2753   cl-ppcre
 2740   babel
 2464   closer-mop
 2316   cl-fad
 2309   bordeaux-threads
 2211   cffi
 2126   iterate
 2103   trivial-garbage
 2063   slime
 2042   flexi-streams
 1944   trivial-gray-streams
 1867   split-sequence
 1771   anaphora
 1744   chunga
 1651   cl+ssl
 1646   usocket
 1601   local-time
 1558   cl-base64
 1441   metabang-bind
 1327   trivial-backtrace
 1304   named-readtables
 1292   drakma
 1277   nibbles
 1249   puri
 1234   ironclad
 1230   md5
 1206   optima
 1152   chipz
  988   trivial-types
  948   hunchentoot
  893   cl-utilities
  885   cl-unicode
  813   rfc2388
  784   let-plus
  777   quicklisp-slime-helper
  777   stefil
  753   cl-interpol
  745   trivial-utf-8
  729   cl-syntax
  724   cl-annot
  714   quri
  706   postmodern
  658   parse-number
  630   fiveam
  611   cl-colors
  591   salza2
  561   cl-json
  542   log4cl
  514   cl-ansi-text
  511   lparallel
  500   cl-who
  482   prove
  482   ieee-floats
  481   zpb-ttf
  473   zpng
  461   vecto
  453   cl-sqlite
  437   uuid
  433   cl-vectors
  425   cl-yacc
  423   st-json
  417   asdf-system-connections
  403   osicat
  394   parenscript
  385   metatilities-base
  383   cl-containers
  374   clx
  368   buildapp
  367   closure-common
  364   clack
  355   yason
  346   command-line-arguments
  345   fare-utils
  341   iolib
  335   cxml
  335   cl-marshal
  324   static-vectors
  312   fare-quasiquote
  309   xsubseq
  308   dynamic-classes
  304   py-configparser
  301   cl-markdown
  299   fast-http
  297   asdf-finalizers
  293   cl-log
  288   external-program
  286   trivial-indent
  286   cl-abnf
  282   garbage-pools
  279   plump
  279   cl-mssql
  274   contextl
  271   cl-opengl
  268   trivial-mimes
  264   html-template
  262   fast-io
  251   array-utils
  249   zs3


January 2015 download stats

Here are the top 100 downloads for last month:
  5231   alexandria
  3821   cl-ppcre
  3799   trivial-features
  3664   babel
  3050   cffi
  2923   cl-fad
  2848   closer-mop
  2821   flexi-streams
  2770   slime
  2765   bordeaux-threads
  2632   iterate
  2631   trivial-gray-streams
  2629   trivial-garbage
  2276   split-sequence
  2221   named-readtables
  2172   chunga
  2147   anaphora
  2024   local-time
  1972   usocket
  1965   cl+ssl
  1931   md5
  1849   cl-base64
  1812   trivial-backtrace
  1573   metabang-bind
  1567   nibbles
  1531   ironclad
  1517   drakma
  1511   hunchentoot
  1429   puri
  1389   trivial-types
  1360   let-plus
  1282   cl-unicode
  1261   rfc2388
  1255   cl-syntax
  1245   chipz
  1235   cl-colors
  1184   cl-annot
  1171   cl-ansi-text
  1106   trivial-utf-8
  1074   optima
  1068   cl-interpol
  1057   cl-utilities
  1032   prove
   978   postmodern
   956   log4cl
   912   stefil
   897   cl-json
   871   quicklisp-slime-helper
   797   st-json
   787   parse-number
   753   cl-marshal
   692   fast-http
   674   http-body
   674   cl-sqlite
   668   cl-who
   656   osicat
   646   trivial-mimes
   610   circular-streams
   584   xsubseq
   576   quri
   571   trivial-arguments
   571   fiveam
   544   clack
   543   clx
   538   iolib
   536   salza2
   528   lparallel
   484   cl-dbi
   482   ieee-floats
   482   sxql
   464   parenscript
   454   closure-common
   448   symbol-munger
   447   asdf-system-connections
   437   fare-utils
   436   cl-opengl
   428   cxml
   409   cl-containers
   397   uuid
   395   metatilities-base
   391   static-vectors
   385   zpb-ttf
   373   yason
   369   html-template
   362   buildapp
   360   fare-quasiquote
   355   vecto
   351   ningle
   351   fast-io
   337   cl-yacc
   337   cl-async
   330   cl-vectors
   324   esrap
   319   command-line-arguments
   317   zpng
   313   do-urlencode
   310   myway
   309   map-set
   301   arnesi
   301   external-program


Some problems when adding libraries to Quicklisp

Here are a few of the problems I encounter when trying to add a library to Quicklisp, as well as how to prevent or fix them.

Library does not build without warnings. As mentioned a little while ago, ql:quickload normally muffles warnings, even, unfortunately, for non-Quicklisp projects. The Quicklisp dist build environment does not muffle any warnings, and any that occur will break the build for the library. Make sure you use the :verbose t option to ql:quickload to see any warnings that crop up during compilation.

Library does not build at all.
 I think this happens when someone sees a library that seems cool, they find it is absent from Quicklisp, and they request its addition without trying it first. Please try it first! It's easy to try libraries: fetch the code, put it into ~/quicklisp/local-projects/, look for *.asd files, and use ql:quickload to load one. If it doesn't load, it may prove difficult for me to try to add it to Quicklisp. And if it doesn't have *.asd files, I can't add it to Quicklisp at all.

Library is missing critical metadata. Make sure the library has :author, :description, and :license in each ASDF system definition.

Library depends on another library that is not available in Quicklisp. It's fine to request the addition of multiple related libraries. It helps if you specify the order in which they need to be added to work.

Library system name conflicts with existing system. This happens sometimes when a library bundles its own private copy of a library already present in Quicklisp. In that case, it is usually best to unbundle the private copy, but I can also work around it on my end if necessary. Conflict also happens when someone just doesn't know that a system name is already in use. To check for conflicts, use (ql-dist:provided-systems t) to get a list of existing systems in Quicklisp.


Getting a library into Quicklisp

If there's a library you like, and you'd like to see it available to download and install via the standard Quicklisp dist, here's what to do.

First, make sure the license terms of the code allow for its redistribution. I can't add things with restrictive licenses or with licenses that are missing or unclear.

Second, make sure it works on more than just one implementation of Common Lisp. Quicklisp is for portable libraries. (In the future, I hope to make it easy to create separate new dists specifically for implementation-specific code, but even then, the main Quicklisp dist will be for portable libraries.)

As a side-effect of how I build and test the dist, it must also work on SBCL on Linux/AMD64. That means, unfortunately, that a great portable library that works on three different Windows CL implementations, but not on Linux, cannot be added. I hope to fix this limitation in the future.

Third, make sure the library has certain ASDF system definition metadata: :license, :author, and :description. It also should have a README file in some form or another. A note about the README: it should give at least short overview of what the library is for. "The Foo library is an implementation of Ruby's Snorfle in Common Lisp" is not a good overview; give me an idea of what it actually does, instead, e.g. "The Foo library fetches and parses movie showtime information." It's good to also provide information about how to report bugs and how to contact the author.

Fourth, make sure it builds with ASDF, rather than an external-to-Lisp build mechanism. I can't add libraries that require special configuration or action outside of ASDF. For example, if you have to edit a source file to configure library or resource directories before building, I can't add it to Quicklisp. If the library can be loaded with just (asdf:load-system ...), it's good.

Finally, let me know about it. I prefer to track requests via github's issue system, but you can also send me an email as well. It suffices to write something like "Please add the foo library, which is available from http://www.example.com/foo.tgz. The homepage is http://www.example.com/foo/."

It's important to note that I don't consider a library's quality or purpose when adding it to Quicklisp. It doesn't matter if you're submitting your own library. If you want it added, and it fits the above criteria, I will almost certainly add it.

There are a few exceptions: projects that require complicated or obscure foreign libraries, projects that can only be downloaded via some ad-laden link system like SourceForge, projects that use CVS, and anything else that makes it difficult for me to fetch or build the project.

When you open a github issue for a library, I'll occasionally update the issue's status. I will add issue comments if I have any problems building, or if any required bit of information (license, ASDF metadata, README) is missing.

Barring any problems, when the github issue for a library is closed, the latest Quicklisp dist has been released and it includes the new library. (Sometimes I mess this up, so if it seems like the library is still missing after a dist update, feel free to get in touch.)

How about updates? Many libraries do not need any extra work to get updated regularly in Quicklisp. For example, if a library can be downloaded from an URL like "http://example.com/cool-project/cool-project-latest.tgz", Quicklisp will detect when a new file is posted. For libraries downloaded from version control systems like git, updates are also automatically fetched. Only when a library uses a fixed URL per version is it necessary to open a github issue for updates.

Quicklisp dist updates happen about once per month. If the library is updated upstream, those updates will only be reflected after the next Quicklisp dist update. Each dist update freezes the state of the Quicklisp library "world" until the next monthly update.

If you'd like to see the process in action, watch the quicklisp-projects issue page for a month to see how things typically work.

If you have any questions about the process, feel free to get in touch.

Update: See also Some problems when adding libraries to Quicklisp, which explains how the above process can go wrong sometimes.