December 2012 Quicklisp dist update now available

New projects: changed-stream, cl-abstract-classes, cl-fuse-meta-fs, cl-gearman, cl-ntriples, cl-prime-maker, cl-sentiment, cl-table, common-lisp-stat, curve, djula, fast-io, generic-sequences, parseltongue, stringprep, symbol-namespaces, trivial-lazy, vector.

Updated projects: archive, asdf-utils, backports, bknr-datastore, bknr-web, buildnode, cffi-objects, chillax, cl+ssl, cl-async, cl-closure-template, cl-dbi, cl-difflib, cl-erlang-term, cl-haml, cl-html-diff, cl-inotify, cl-libevent2, cl-log, cl-murmurhash, cl-mustache, cl-neo4j, cl-opengl, cl-openid, cl-protobufs, cl-rdfxml, cl-redis, cl-s3, cl-sanitize, cl-unification, clack, cleric, clfswm, closer-mop, clsql, clsql-helper, coleslaw, colorize, com.informatimago, commonqt, contextl, dynamic-classes, exscribe, fnv, formlets, gbbopen, genworks-gdl, glu-tessellate, gtk-cffi, hu.dwim.asdf, ieee-floats, incognito-keywords, inferior-shell, iterate, lisp-unit, lparallel, metabang-bind, mgl, more-conditions, open-vrp, optima, png-read, portableaserve, postmodern, pzmq, repl-utilities, restas, restas-directory-publisher, rutils, s-base64, s-http-client, s-http-server, s-sysdeps, s-utils, shadchen, slime, spinneret, wu-decimal, wuwei, xhtmlgen, yason, zs3.

Removed projects: coretest, fcgi, genhash.

This update actually came out a few days ago, but I've been too busy to announce it.

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



Lost projects

There are a number of projects that are currently in Quicklisp, but for which the original source is now lost. I'm not sure whether to include them in future dist updates. Here's a rundown:
  • cl-difflib and cl-html-diff: host lemonodor.com has stopped working. update David pointed out in the comments that these projects are available in github.
  • coretest: project owner on github (trialcodr) is deleted
  • fcgi: host tehran.lain.pl has stopped working
  • genhash: host src.hexapodia.net has stopped working
In the Quicklisp universe there are almost no dependencies on these projects, but that might not be the case in the wider world of CL applications. Do you use any of these libraries? Are you interested in keeping them alive and running in some upstream form?


Make your own dists

Quickdist is an interesting third-party project to create your own dists.


Client update available

A new version of the Quicklisp client is now available. You can get it via (ql:update-client).

This update provides a few minor changes:
  • ql:system-apropos returns no values
  • ql:system-not-found and ql:system-not-found-name are now exported. The former names the condition signaled when a system is not found, and the latter names a reader that returns the name of the missing system.
  • (ql:who-depends-on system-name) will return a list of the names of systems that depend on the system in question.
  • On ABCL, a few network functions are taken from the EXT package rather than the SYSTEM package
There's also one fairly big change. Quicklisp now provides ASDF 2.26 (the most recent). That means that, if you and your users use Quicklisp, you can rely on recent ASDF features being available for your system files.

If you have any issues with this update, please feel free to email me or discuss it on the mailing list.


November 2012 Quicklisp dist update now available

New projects: bubble-operator-upwards, cl-bert, cl-erlang-term, cl-fam, cl-fuse, cl-libevent2, cl-proj, cl-tulip-graph, defstar, enhanced-eval-when, enhanced-multiple-value-bind, fare-quasiquote, green-threads, incognito-keywords, more-conditions, multiple-value-variants, parse-number-range, scriptl, simple-rgb, zaws.

Updated projects: array-operations, asdf-utils, babel, backports, buildnode, cl+ssl, cl-annot, cl-async, cl-base32, cl-bencode, cl-blapack, cl-cheshire-cat, cl-closure-template, cl-csv, cl-dbi, cl-docutils, cl-gendoc, cl-i18n, cl-inflector, cl-json, cl-langutils, cl-llvm, cl-marshal, cl-match, cl-mediawiki, cl-mongo-id, cl-mustache, cl-num-utils, cl-oauth, cl-parser-combinators, cl-permutation, cl-protobufs, cl-redis, cl-syslog, clack, cleric, clfswm, closer-mop, clsql-helper, clsql-orm, clx, collectors, com.clearly-useful.generic-collection-interface, com.clearly-useful.protocols, com.informatimago, css-selectors, data-table, declt, dlist, docbrowser, doplus, drakma, elf, exscribe, fare-matcher, fare-utils, fnv, gbbopen, genworks-gdl, group-by, hh-redblack, hh-web, hu.dwim.syntax-sugar, hunchentoot, hunchentoot-cgi, inferior-shell, ironclad, jsown, lisp-executable, lisp-interface-library, lisp-unit, lparallel, md5, minheap, nibbles, open-vrp, optima, parse-float, place-modifiers, portableaserve, postmodern, rpc4cl, rutils, scribble, shelly, simple-date-time, sip-hash, slime, swank-client, swank-crew, symbol-munger, talcl, toot, trivial-ldap, weblocks, wu-decimal, xcvb, yason.

Removed projects: cl-pattern, latex-table, parseltongue, vcs-tree.

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


Download stats for October 2012

Here are the top 100 project downloads for October:

   1812 alexandria
   1502 trivial-features
   1391 slime
   1225 babel
   1207 cffi
   1115 trivial-gray-streams
   1113 cl+ssl
   1043 flexi-streams
    976 quicklisp-slime-helper
    943 trivial-garbage
    902 cl-fad
    871 rfc2388
    865 cl-ppcre
    838 bordeaux-threads
    752 trivial-backtrace
    709 hunchentoot
    694 usocket
    683 drakma
    613 closer-mop
    597 iterate
    585 cl-base64
    580 chunga
    543 cl-who
    500 parenscript
    500 md5
    484 puri
    472 nibbles
    456 local-time
    455 split-sequence
    426 uffi
    410 cl-glfw
    406 salza2
    395 fare-utils
    366 anaphora
    364 cl-json
    358 named-readtables
    350 cl-vectors
    342 clx
    300 ironclad
    296 metatilities-base
    284 zpng
    280 zpb-ttf
    280 asdf-utils
    278 xcvb
    262 metabang-bind
    251 vecto
    251 lispbuilder
    237 clsql
    235 html-template
    228 postmodern
    213 fare-matcher
    211 cl-opengl
    206 plokami
    203 asdf-system-connections
    195 weblocks
    193 clack
    192 osicat
    188 s-xml
    175 closure-common
    172 cl-containers
    168 parse-number
    164 cxml
    163 lisp-unit
    153 mcclim
    149 restas
    146 f-underscore
    145 cl-cont
    142 moptilities
    139 elephant
    138 trivial-timeout
    137 trivial-shell
    135 metatilities
    134 lparallel
    134 cl-annot
    133 cl-unicode
    133 cl-syntax
    130 yason
    130 chipz
    127 portableaserve
    127 hu.dwim.asdf
    126 quickproject
    124 cl-irc
    123 fiveam
    122 iolib
    121 trivial-types
    118 linedit
    118 closure-html
    117 madeira-port
    116 cl-pdf
    115 cl-oauth
    114 cl-cairo2
    113 antik
    111 esrap
    110 trivial-utf-8
    108 ltk
    106 plexippus-xpath
    106 gsll
    105 let-plus
    104 xmls
    104 cl-gtk2


October 2012 dist update now available

New projects: anaphoric-variants, asdf-project-helper, cheat-js, cl-async, cl-bplustree, cl-case-control, cl-html5-parser, cl-netstrings, clavatar, com.clearly-useful.generic-collection-interface, com.clearly-useful.iterate-plus, extended-reals, intercom, macro-level, percent-encoding, positional-lambda.

Updated projects: asdf-encodings, asdf-finalizers, asdf-utils, backports, binascii, cffi-objects, chillax, chipz, cl+ssl, cl-6502, cl-azure, cl-bencode, cl-clon, cl-closure-template, cl-fbclient, cl-freetype2, cl-generic-arithmetic, cl-i18n, cl-irc, cl-num-utils, cl-oauth, cl-permutation, cl-protobufs, cl-random, clack, clfswm, clhs, clx-truetype, coleslaw, com.clearly-useful.iterator-protocol, com.clearly-useful.protocols, com.informatimago, cxml-rpc, declt, drakma, esrap, exscribe, fare-utils, firephp, folio, genworks-gdl, gtk-cffi, hu.dwim.asdf, hu.dwim.def, hu.dwim.perec, hu.dwim.syntax-sugar, hu.dwim.util, inferior-shell, infix-dollar-reader, jsown, let-plus, lisp-executable, lisp-interface-library, lisp-unit, lla, local-time, log4cl, lparallel, mgl, montezuma, nibbles, open-vrp, optima, parenscript, parse-float, postmodern, restas, rfc2388, rutils, sexml, stp-query, thread.comm.rendezvous, trivial-dump-core, umlisp, xcvb, zpb-exif.

Removed projects: com.clearly-useful.sequence-protocol.

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


Two years of Quicklisp

Quicklisp is two years old. I'm happy with all the nice things Quicklisp has done for people, thankful for all the support people have shown (both morally and financially), a little bummed that it's still "beta" instead of "version 6", but hopeful that I'll be able to continue making Quicklisp better, little by little, as time goes on.

Happy birthday, Quicklisp!


September 2012 update now available

New projects: cartesian-product-switch, cl-cheshire-cat, cl-grace, coleslaw, com.clearly-useful.iterator-protocol, com.clearly-useful.protocols, com.clearly-useful.sequence-protocol, formlets, glu-tessellate, infix-dollar-reader, lambda-lift, optima, place-modifiers, pzmq.

Updated projects: [work in progress]

Removed projects: cl-adt, glu-tessellation.

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


Library problems and a partial fix

If you upgraded to the latest Quicklisp dist and tried to load certain libraries, you might find yourself staring at an infinite loop of "Loading asdf..."

This was caused by how Quicklisp handles missing libraries. The general process is something like this:

  1. Try to load library "foo"
  2. Handle a asdf:missing-dependency error specifying library "bar"
  3. Load library "bar"
  4. Go back to step 1
The problem in this case was that the missing library in question was ASDF, but it wasn't a plain old missing dependency; certain libraries now depend on a specific (and very recent) version of ASDF. The condition was in fact of type asdf:missing-dependency-of-version (a subtype of asdf:missing-dependency), and Quicklisp didn't handle it specially. So it would get the error, load ASDF, try again, get the error, load ASDF, try again...forever.

I've just updated the Quicklisp client code to deal with this specific situation properly, and more generally avoid trying to load the same library multiple times. It fixes the problem of the infinite looping (now you get a clear error related to a version dependency problem), and you can get the updated version by calling (ql:update-client) and restarting your session.

Problems remain, though. The required version of ASDF is extremely new, only a month old. It is not available through Quicklisp, and even if your implementation has bundled it, you must make sure to update to the most recent version of your implementation to get it.

Why isn't it available through Quicklisp? ASDF is not a normal library. I can't point Quicklisp at a tarball or git repo and just keep it up to date like other libraries. It's a fundamental part of what Quicklisp does, and I would rather provide (as a last resort) an old, apparently-stable version and let implementations provide newer versions if they are needed for critical bug fixes. I do not want to see projects depend on ASDF as an evolving bucket of utility functions. In fact, I'd like to see ASDF go away, replaced by something better, and anything that makes libraries and applications depend on ASDF more rather than less is, to me, a bad thing. (This includes like asdf:system-relative-pathname in your Lisp source code. There are plenty of ways to avoid it.)

Unfortunately, some libraries do use ASDF as a utility library, and they require a very recent version of ASDF. For some people, code that worked in July will stop working until they jump through some unpleasant hoops. I hate to see that. Quicklisp is about eliminating those hoops.

I'll try to figure out the best way forward. I hope it will involve changes to how ASDF is used by some libraries, but it might also involve changes to how Quicklisp provides ASDF updates. I'll keep you posted.


August 2012 update now available

New projects: Open-VRP, able, arnesi+, asdf-finalizers, asdf-utils, cgn, cl-epoch, cl-fbclient, cl-nxt, clsql-helper, clx-cursor, clx-truetype, daemon, dartsclhashtree, dartsclsequencemetrics, glu-tessellation, letrec, ltk, make-hash, map-bind, mop-utils, romreader, stp-query, submarine, synonyms.

Updated projects: access, asdf-dependency-grovel, asdf-encodings, backports, caveman, cffi-objects, cl-6502, cl-blapack, cl-csv, cl-dbi, cl-docutils, cl-gdata, cl-i18n, cl-llvm, cl-mediawiki, cl-murmurhash, cl-opengl, cl-openstack, cl-permutation, cl-project, cl-protobufs, cl-quickcheck, clack, clfswm, closer-mop, clsql-orm, clx-xkeyboard, com.informatimago, command-line-arguments, conduit-packages, coretest, docbrowser, exscribe, fare-matcher, fare-memoization, fare-utils, floating-point, gbbopen, genworks-gdl, glop, gtk-cffi, hh-web, inferior-shell, lisp-interface-library, lparallel, meta, nibbles, ningle, postmodern, quid-pro-quo, quux-time, repl-utilities, rutils, scribble, sexml, shadchen, sip-hash, slime, symbol-munger, trivial-garbage, uri-template, weblocks, xcvb, zs3.

No projects were removed from this update.

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


Ltk woes

Ltk seems like a fantastic idea. I don't personally use it, but I like that there's a fairly simple and easy option for people who want to make a GUI with Common Lisp.

Unfortunately, it doesn't build on SBCL any more. SBCL exports sb-ext:exit (eventually replacing sb-ext:quit), and a package in Ltk triggers a package lock conflict because of it. I've emailed Peter Herth about the build failure, but a few months have passed and the problem persists.

Does anyone who reads this blog use Ltk? Would you be upset if Ltk is dropped from Quicklisp until the issue is fixed?


Version numbers in ASDF system definitions

An ASDF system definition can have a :version option. Only one format is supported: one or more integers separated by dots.

These are valid ASDF system versions: "42", "1.8", "2.0.61". These are invalid ASDF system versions: "v1.0", "2.0b", "2004-08-01", "1.0-SNAPSHOT".

If you load a system with an invalid version string, ASDF gives a warning: WARNING: Invalid version "FOO" for component "bar"

If you want to include a version in your ASDF system, please use a valid format. If your software's versioning can't fit into that kind of format, consider putting it in a different field, like :description.


July 2012 update now available

This update took longer than I wanted it to. It's been a really busy summer for non-hacking-related stuff, I had some trouble with ZS3 and Ironclad, and Ltk is broken on the latest SBCL. Those things, and more, kept pushing things further and further back, but I think things are as good as they can be for now.

New: asdf-encodings, backports, cl-6502, cl-factoring, cl-libusb, cl-neo4j, cl-nxt, cl-openstack, cl-permutation, cl-plumbing, cl-primality, cl-protobufs, clx-xkeyboard, coretest, hh-web, lisp-interface-library, parse-float, pythonic-string-reader, recur, single-threaded-ccl, sip-hash.

Updated: bknr-datastore, bordeaux-threads, btrie, caveman, chanl, checkl, cl+ssl, cl-cairo2, cl-clon, cl-csv, cl-data-format-validation, cl-dbi, cl-decimals, cl-docutils, cl-gd, cl-gdata, cl-glfw, cl-haml, cl-launch, cl-murmurhash, cl-project, cl-rmath, cl-test-more, cl-tuples, cl-unicode, cl-yahoo-finance, clack, clfswm, closer-mop, clws,  com.informatimago, computable-reals, docbrowser, donuts, esrap, exscribe, external-program, f2cl, fare-utils, fiveam, gbbopen, genworks-gdl, glop, hinge, inferior-shell,  ironclad, linedit, lisp-executable, log4cl, lparallel, madeira-port, magicffi, meta, mtlisp, nibbles, opticl, parse-number, postmodern, queues, reader-interception, relational-objects-for-lisp, repl-utilities, restas, rpm, rutils, scribble, sheeple, slime, spinneret, split-sequence, static-vectors, trivial-dump-core, trivial-garbage, weblocks, wuwei, x.fdatatypes, xcvb.

Removed: hh-web-tags.

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



Boston Lisp Meeting 2012-05-17

Fare took this photo of my Quicklisp presentation at the Boston Lisp Meeting two weeks ago. That's RMS in the background; he asked a topical question about my licensing policy. Fare's entire set is available on Picasa.

I hope to publish the slides and source code soon. Audio recording equipment was present, but I don't know if there will be audio available.


All clear

It looks like I have found a temporary workaround for my S3 problems, and the current dist is fully available to load. You can get it with (ql:update-dist "quicklisp"). I'm sorry for the muddled way in which this update took place, and hope to figure out the Amazon issues and do more testing for the next release.

S3 woes

I am a huge fan of Amazon's Simple Storage Service (S3). It's allowed me to host Quicklisp data cheaply and reliably for a long time.

However, over the past few days, I've run into some permission problems with the Quicklisp S3 objects, and the latest Quicklisp dist update is damaged as a result. Files that seem to be present are not actually available for download, and I'm not sure why.

I don't recommend updating your Quicklisp dist until this problem is resolved. I hope to fix it within the next 24 hours. Sorry for the inconvenience!


May 2012 Quicklisp dist update

The May 2012 update of Quicklisp is finally available. You can get it with (ql:update-dist "quicklisp").

New projects: checkl, cl-crypt, cl-ev, cl-gendoc, cl-mongo-id, clx-xembed, docbrowser, donuts, escalator, hinge, lisp-zmq, m2cl, madeira-port, minheap, repl-utilities, sapaclisp, sexml, shelly, swank-crew, temporary-file, time-interval.

Updated projects: access, adw-charting, alexandria, antik, bknr-datastore, bknr-web, blackthorn-engine, blackthorn-engine-3d, buildnode, caveman, cells, cells-gtk3, cffi, cffi-objects, chillax, chronicity, cl+ssl, cl-azure, cl-bibtex, cl-cairo2, cl-closure-template, cl-csv, cl-data-format-validation, cl-dbi, cl-decimals, cl-docutils, cl-dot, cl-enumeration, cl-freetype2, cl-fsnotify, cl-gd, cl-gdata, cl-geometry, cl-glfw, cl-graph, cl-gtk2, cl-haml, cl-iconv, cl-inflector, cl-irregsexp, cl-kyoto-cabinet, cl-l10n-cldr, cl-locale, cl-m4, cl-markup, cl-marshal, cl-mediawiki, cl-mustache, cl-openal, cl-opengl, cl-openid, cl-pdf, cl-project, cl-random, cl-redis, cl-sam, cl-syntax, cl-test-more, cl-tuples, cl-unicode, cl-vectors, cl-yahoo-finance, clack, clfswm, clhs, clonsigna, closer-mop, closure-html, clsql, clws, clx, com.google.base, com.informatimago, common-lisp-actors, commonqt, contextl, cxml-stp, dbus, de.setf.wilbur, deoxybyte-gzip, deoxybyte-io, deoxybyte-systems, deoxybyte-unix, dlist, doplus, ec2, elephant, exscribe, ext-blog, external-program, f2cl, fare-memoization, fare-utils, fnv, fomus, gbbopen, genworks-gdl, getopt, glop, gordon, gsharp, gsll, gtk-cffi, hemlock, hu.dwim.common, hu.dwim.def, hu.dwim.perec, hu.dwim.rdbms, hu.dwim.reiterate, hu.dwim.stefil, hu.dwim.syntax-sugar, hu.dwim.util, imago, inferior-shell, inotify, iterate, js-parser, jwacs, kl-verify, lambda-gtk, lambda-reader, lift, linedit, lisp-executable, lisp-on-lines, lisp-unit, lispbuilder, lml, local-time, log4cl, lparallel, mcclim, metatilities-base, modf, monkeylib-markup, monkeylib-utilities, montezuma, mtlisp, myweb, napa-fft3, nibbles, ningle, opticl, paiprolog, parseltongue, pettomato-indexed-priority-queue, phemlock, pipes, place-utils, plain-odbc, plexippus-xpath, portableaserve, postmodern, postoffice, protobuf, queues, quid-pro-quo, rcl, reversi, rlc, rutils, s-http-client, s-http-server, s-xml, sb-cga, sb-fastcgi, sequence-iterators, sheeple, slime, spinneret, st-json, sw-stm, teepeedee2, telnetlib, toadstool, toot, trivial-backtrace, ucw, uffi, unicly, unit-test, uuid, verrazano, weblocks, wuwei, xcvb, yaclml, zsort.

Removed projects: cl-opencv, com.informatimago.rdp.

On an unrelated note, on Thursday I gave a talk at the Boston Lisp Meeting called "Inside the Quicklisp Sausage Factory", about the code I use to manage these monthly releases. I'll publish the slides and the software sometime in the next few weeks.


Talking Quicklisp tonight

I'm headed down from Maine to give a talk in Boston tonight about Quicklisp. It will be in the Star Conference Room in the Stata Center at MIT at 6pm. I hope to give you a better idea about what Quicklisp dists are and how I produce them on a monthly (hah!) basis. I'm going to cover the software I use that has never been released or discussed publicly before.

I look forward to seeing old Lisp friends and meeting new people, too! If you're in the Boston area, come on over and hang out!


Updates coming soon

I usually like to update Quicklisp libraries on the first weekend of each month. A few things conspired to delay me this time around, but I hope to have updates published by this Sunday, May 13th.

The coming update includes version of CFFI, which has a handful of backwards-incompatible changes. For the most part, Quicklisp projects have been updated to fix compile-time problems with CFFI compatibility. There remains the possibility that some problems lurk that will only appear at runtime. If you work on a project that relies on CFFI, you may want to run it through its paces with the new version to make sure everything still works properly.

update I was wrong about the CFFI updates. There haven't been any backwards-incompatible changes from 0.10.6 to Sorry for the confusion.


SLIME update woes

If you use Emacs 22 or older, you might encounter a problem with this month's SLIME. It will be fixed in the next release.


April 2012 Quicklisp dist update

There's a new Quicklisp dist update available. You can get it with (ql:update-dist "quicklisp").

New projects: btrie, cambl, cl-fsnotify, cl-general-accumulator, cl-hooks, cl-mustache, cl-op, cl-opencv, cl-stopwatch, clickr, clod, method-combination-utilities, ningle, org-davep-dict, org-davep-dictrepl, periods, printf, quid-pro-quo, spinneret.

Updated projects: access, alexandria, asdf-dependency-grovel, babel, binascii, buildapp, buildnode, caveman, circular-streams, cl-cairo2, cl-clon, cl-data-format-validation, cl-dbi, cl-decimals, cl-fastcgi, cl-gdata, cl-haml, cl-heap, cl-jpeg, cl-libxml2, cl-mediawiki, cl-mw, cl-num-utils, cl-oauth, cl-parser-combinators, cl-project, cl-random, cl-test-more, cl-tk, cl-typesetting, cl-yahoo-finance, clack, clhs, clonsigna, closer-mop, clouchdb, clpmr, com.informatimago, com.informatimago.rdp, common-lisp-actors, contextl, css-lite, curly, defmemo, deoxybyte-gzip, deoxybyte-io, deoxybyte-unix, deoxybyte-utilities, do-urlencode, doplus, esrap, fare-memoization, gbbopen, genworks-gdl, gtk-cffi, hemlock, inferior-shell, ironclad, latex-table, let-plus, lisa, lisp-gflags, lla, log4cl, lparallel, metatilities-base, nibbles, opticl, osc, osicat, package-renaming, portableaserve, postmodern, protobuf, quickproject, reader-interception, recursive-regex, rpm, sb-cga, sclf, shadchen, shuffletron, slime, toot, trivial-features, trivial-shell, trivial-types, wuwei, xcvb, zsort.

Removed projects: cl-2d.

cl-2d is gone at the request of the author.

I made a pretty big update to quickproject, adding template files and some proper documentation. Hope you find it helpful.

If you have any questions or comments, feel free to email me or post to the Quicklisp mailing list.


March bugfix update

Alexandria had a bug that broke its copy-file function. This busted several things, including, critically, quicklisp-slime-helper. So, for the first time, I've done a dist update way ahead of schedule for a bugfix. To get the update with the fixed version of Alexandria, use (ql:update-dist "quicklisp").

A number of other projects were updated, too. Here's a summary:

New projects: cl-llvm, defmemo, genworks-gdl, rpm.

Updated projects: alexandria, clouchdb, com.google.base, com.informatimago, gbbopen, gtk-cffi, hemlock, lisp-gflags, log4cl, metatilities-base, mime4cl, slime, spatial-trees, static-vectors, wuwei, xcvb.


March 2012 Quicklisp dist update now available

update/warning: The version of Alexandria in this dist release has a serious bug in copy-stream. Once it's fixed I'll be pushing out a quick update of the March dist. If you haven't updated yet, you should wait until a new announcement.

There's a new Quicklisp dist update available. To get it, use (ql:update-dist "quicklisp").

In general, I try to publish dist updates on the first weekend of each month. This update slipped a few days. I hope to make the next update on April 7th or 8th.


New projects: cffi-objects, circular-streams, cl-emacs-if, cl-freetype2, cl-gap-buffer, cl-haml, cl-messagepack, fare-memoization, firephp, inferior-shell, log4cl, marching-cubes, multival-plist, package-renaming, reader-interception, weblocks, zsort.

Updated projects: alexandria, atdoc, caveman, chillax, cl+ssl, cl-azure, cl-cairo2, cl-cli-parser, cl-closure-template, cl-gdata, cl-i18n, cl-inotify, cl-jpeg, cl-kanren-trs, cl-oauth, cl-parser-combinators, cl-portaudio, cl-routes, clack, clfswm, clhs, clonsigna, closer-mop, clpmr, clsql, cobstor, com.informatimago, com.informatimago.rdp, commonqt, contextl, css-selectors, doplus, drakma, exscribe, f2cl, fare-csv, fare-mop, fare-utils, gbbopen, glaw, glop, gtk-cffi, hemlock, hunchentoot, lambda-reader, let-plus, lift, mcclim, mime4cl, mixalot, montezuma, opticl, parse-js, pettomato-indexed-priority-queue, pg, phemlock, postmodern, protobuf, restas, rucksack, rutils, s-xml, sclf, shadchen, slime, smtp4cl, swank-client, trivial-dump-core, trivial-ldap, uri-template, usocket, wuwei, xcvb, xuriella, yason.

Removed projects: cl-llvm.


Weblocks, which had been out for a few months due to Hunchentoot changes, is updated and back in. 

cl-llvm was removed inadvertently - an accident of my build environment that went unnoticed. It will be back in next month. In the meantime, if you need cl-llvm, you can either hold off this upgrade, go back to a previous dist version, or check out cl-llvm in your ~/quicklisp/local-projects/ directory to make it accessible.


February dist update now available

New projects: city-hash, cl-dbi, cl-gdata, cl-portaudio, cl-variates, clesh, clhs, dlist, monkeylib-json, monkeylib-parser, napa-fft3, parseltongue, persistent-tables, random-access-lists, shadchen, swank-client, toadstool, trivial-dump-core.

Updated projects: alexandria, babel, blackthorn-engine, blackthorn-engine-3d, caveman, chipz, cl-2d, cl-azure, cl-cairo2, cl-csv, cl-decimals, cl-dropbox, cl-enumeration, cl-i18n, cl-libxml2, cl-llvm, cl-mongo, cl-mssql, cl-murmurhash, cl-mysql, cl-num-utils, cl-oauth, cl-project, cl-random, cl-redis, cl-scribd, cl-twitter, cl-unification, cl-yahoo-finance, clack, clazy, clfswm, closer-mop, collectors, com.informatimago, com.informatimago.rdp, css-lite, drakma, ext-blog, gbbopen, gtfl, gtk-cffi, ht-simple-ajax, hu.dwim.util, js, latex-table, lift, linedit, lisp-on-lines, lla, lparallel, manifest, metabang-bind, metatilities-base, misc-extensions, mixalot, monkeylib-markup, monkeylib-markup-html, monkeylib-pathnames, monkeylib-prose-diff, monkeylib-utilities, parenscript, perfpiece, png-read, priority-queue, protobuf, quickproject, rutils, shuffletron, slime, toot, yason, zs3.

Removed projects: monkeylib-foo.


Recent Quicklisp bugs

My CDB changes to the Quicklisp clients caused a few subtle problems.

First, the system CDB file was built with incorrect keys. That could lead to a spurious SYSTEM-NOT-FOUND error when trying to use ql:quickload something.

Second, the CDB files were not cleared out when updating dist metadata. The CDB indexes would point to old systems and software even after everything was meant to be updated.

If you run into a Quicklisp problem that seems like it might be related to these issues, here's a way to fix things:

  1. (ql:update-client) to make sure you have the latest client
  2. Restart your Lisp
  3. (in-package #:ql-dist-user)
  4. (map nil 'delete-file (directory (relative-to (dist "quicklisp") "*.cdb")))
At that point the CDB files should automatically regenerate with the correct data, and will be properly updated during the next dist update.

Sorry for the hassle!


January client and dist updates

There's an updated Quicklisp client available now. This version fixes up several problems with the support for looking up metadata in CDB files. To get the new client, use (ql:update-client).

I've also updated the software available in Quicklisp. To get the update, use (ql:update-dist "quicklisp").

New projects:

  • bitfield-schema - SIMPLE-BIT-VECTOR low level routines and convenient eDSL over it.
  • cl-bloom - Simple Bloom filters with efficient hashing.
  • cl-dropbox - Common Lisp Client for the Dropbox API.
  • cl-gpu
  • cl-murmurhash - 32-bit version of MurmurHash3.
  • cl-rsvg2 - Bindings for RSVG Library.
  • cl-sam
  • cl-scribd - Commong Lisp Client for the Scribd API.
  • cl-yahoo-finance - CL interface to Yahoo's finance API
  • computable-reals - Computable real numbers.
  • deoxybyte-unix
  • do-urlencode - Percent Encoding (aka URL Encoding) library
  • ext-blog - A BLOG engine which supports custom theme
  • image - An image-drawing with some drawing primitives
  • kl-verify - A library to generate simple verify code picture
  • lisp-executable - Library for defining and creating executables that can be called from the Unix shell.
  • pettomato-deque - A set of double-ended queue implementations.
  • pettomato-indexed-priority-queue - A binary heap based priority queue implementation with efficient support for find, update, replace, and delete operations.
  • priority-queue - A priority queue for Common Lisp.
  • restas.file-publisher - A restas module which can publish static files
  • stumpwm - A tiling, keyboard driven window manager
Updated projects: 3b-swf, 3bil, 3bmd, babel, bknr-datastore, cl-azure, cl-csv, cl-data-format-validation, cl-docutils, cl-fluidinfo, cl-llvm, cl-locale, cl-marshal, cl-oauth, cl-opengl, cl-quickcheck, cl-stomp, cl-string-complete, clack, clfswm, closer-mop, clpmr, clsql, cobstor, collectors, data-table, deoxybyte-gzip, deoxybyte-io, deoxybyte-systems, diff, doplus, fare-utils, gbbopen, gtk-cffi, hu.dwim.asdf, hu.dwim.delico, hu.dwim.logger, hu.dwim.perec, hu.dwim.rdbms, hu.dwim.reiterate, hu.dwim.stefil, hu.dwim.syntax-sugar, hu.dwim.util, hu.dwim.walker, idna, let-plus, lhstats, linedit, lisp-unit, lla, manifest, mime4cl, mixalot, monkeylib-html, relational-objects-for-lisp, restas, restas-directory-publisher, rfc2388, sclf, shuffletron, slime, static-vectors, stem, thread-pool, toot, trivial-features, trivial-garbage, uffi, wuwei, xcvb, yason, zcdb.

Removed projects: cl-bson-tim.

If you have a project that is available in Quicklisp, please check your system definition. Make sure it has useful metadata in it, like :description, :author, and :license. Several systems have empty description strings; for me, that's worse than a missing description.

SLIME has been updated with a new wire protocol. Please report any SLIME issues to the SLIME maintainers.

If you have any problems getting or using Quicklisp updates, let me know by email or on the Quicklisp mailing list.


Speeding up system info

Quicklisp uses two text files for information about project releases (releases.txt) and systems (systems.txt). Whenever information about a system was needed (for example, where its system file can be found), both files were loaded completely, from scratch.

I made it that way because it was pretty easy. People immediately noticed that it was also pretty slow, especially when using (asdf:load-system "...") instead of (ql:quickload "..."). The penalty for frequent loading and reloading of the metadata got worse as the number of Quicklisp systems grew.

Today I released a client update that can load metadata from a fast on-disk hash table, a CDB file. The big flat files are converted to CDB once, as needed, and thereafter getting metadata is super-speedy. On my laptop, the improvement for lookups is about 100x; your results will depend on the speed of your disk.

To get the update, use (ql:update-client) and restart Lisp.

If this change causes you any trouble, please let me know via the Quicklisp mailing list.

UPDATE: This change causes trouble. I'm going to put out a fix as soon as I can. Please don't update; if you did update, you can revert with something like this:

    cd ~/quicklisp/
    wget http://beta.quicklisp.org/quickstart/quicklisp-2011111500.tgz
    tar xzvf quicklisp-2011111500.tgz
    rm -rf ~/.cache/common-lisp/

UPDATE 2: I can't reproduce the trouble I saw earlier. If you run into trouble, let me know. I really need cases I can reproduce to fix things.

UPDATE 3: Thanks to Mike Clarke, I found a serious problem with the CDB scheme. A fix will be available within a day or two.