The Quicklisp release schedule

I've been trying to make a Quicklisp dist update about once per month. For next month, I hope to make the update on December 3rd.


My talk in Amsterdam

I gave a talk entitled "Quicklisp, technically and socially" at ECLM 2011 in Amsterdam last month. Here is some material from the talk:
Hope you find it interesting!


Local projects update

When I announced the local-projects feature, I mentioned that symlinking directories into the local-projects directory wouldn't work on SBCL or Clozure CL. I'm pleased to report that both SBCL and ClozureCL have pending updates committed to change this situation; in the near future, when using the latest SBCL or Clozure CL, you will be able to symlink directories into local-projects and things should just work.

Thanks to the helpful maintainers of both implementations for the changes to make this possible.


Client update available

I've posted a new Quicklisp client. You can get it with (ql:update-client), and it will take effect after a restart. It changes how local projects are found.

Local projects no longer take precedence over all other system search mechanisms. The local project directory ~/quicklisp/local-projects/ is checked after the ASDF source registry but before the Quicklisp dist mechanism. That means you can override Quicklisp systems, either local project systems or dist software systems, by managing your ASDF central registry appropriately.

This change is in response to user feedback. If you run into any problems with the local project mechanism, which is still evolving, please let me know!


November Quicklisp updates

I'm conducting a new Quicklisp survey. I'd like to find out the best way to reach the most people when there is Quicklisp news to share. It's one question, so if you can, please go fill it out.

Client Update
There's a new Quicklisp client available. You can get it with (ql:update-client). The new version will take effect after you restart your Lisp. 

This client has a feature that I think will be very helpful: any directory created in ~/quicklisp/local-projects/ will be automatically scanned for system files. There's no need to run an additional command to reconfigure ASDF.

For example, if there's a library that isn't part of Quicklisp, you can try it out with something like this in a shell:

$ cd ~/quicklisp/local-projects/
$ git clone git://github.com/xach/format-time.git

And something like this in a REPL:

* (ql:quickload "format-time")

There is no need to update your ASDF source registry or initialize it manually after adding new projects. This should simplify the directions authors can provide to people who want to try their projects.

There are a few things to keep in mind with this new feature:

First, you can't just symlink something into ~/quicklisp/local-projects/; for some Lisps (CLISP, ECL)  that works, for others (SBCL, ClozureCL) it doesn't. I hope to eliminate that limitation soon.

Also, only projects created in the top level of the directory are automatically scanned. Directories created or modified below the top level do not trigger an automatic scan. You can initiate a manual scan with (ql:register-local-projects), though. 

Finally, projects in ~/quicklisp/local-projects/ take precedence over both systems in the ASDF source registry and systems in Quicklisp. I'm not sure I'll keep that ordering if it causes problems.

This feature is a work in progress, so I appreciate any feedback, positive or negative.

Dist Update
I've updated the Quicklisp dist. You can get the update with (ql:update-dist "quicklisp")

Here's a summary of the changes this month:

New projects: able, asdf-dependency-grovel, autoproject, binascii, cgn, cl-apple-plist, cl-generic-arithmetic, cl-launch, cl-prolog, cl-rmath, cl-tokyo-cabinet, data-sift, deoxybyte-gzip, deoxybyte-io, deoxybyte-systems, deoxybyte-utilities, exscribe, fare-mop, lparallel, queues, text-query, thread.comm.rendezvous, xcvb, xml-emitter.

Updated projects: alexandria, antik, blackthorn-engine-3d, buildnode, caveman, chipz, cl+ssl, cl-2d, cl-closure-template, cl-csv, cl-inflector, cl-langutils, cl-match, cl-mediawiki, cl-num-utils, cl-oauth, cl-odesk, cl-quickcheck, cl-random, cl-scrobbler, cl-stomp, cl-test-more, cl-tuples, cl-twitter, cl-uglify-js, clack, clawk, clfswm, closer-mop, clsql-orm, collectors, com.google.base, command-line-arguments, contextl, css-selectors, data-table, doplus, elf, fare-utils, gbbopen, glop, group-by, gsll, gtk-cffi, hu.dwim.defclass-star, hu.dwim.reiterate, hu.dwim.stefil, hu.dwim.util, hunchentoot, hunchentoot-cgi, latex-table, lisp-gflags, lla, meta, metatilities-base, nibbles, parse-js, plokami, postmodern, protobuf, recursive-regex, restas, restas-directory-publisher, rfc2388, rpc4cl, rutils, screamer, simple-date-time, slime, symbol-munger, talcl, tap-unit-test, trivial-types, uri-template.

Removed projects: cl-webkit, tilde, webfunk.

cl-webkit has been removed because it now requires a version of the webkit library that I haven't been able to test. I hope to restore it next month. tilde has been removed because it's an unnecessary sbcl-only library; SBCL supports "~" in pathnames without any patches now. And webfunk no longer builds with the latest Hunchentoot.

Hunchentoot has a big update this month, the first new release in more than a year. It has a few backwards-incompatible changes. Affected projects in Quicklisp (except for webfunk) have been updated. However, you might find that your own Hunchentoot-using projects are affected by the changes. If that's problematic, you can either avoid updating Quicklisp, or if you've already updated, you can go back to a previous version.

As usual, if you have any questions or comments about Quicklisp updates, feel free to email me or discuss things on the Quicklisp mailing list.

Happy Lisping!


A word of warning

I will update the Quicklisp dist within a few days. The update will include a fairly major update to Hunchentoot, one that changes the public Hunchentoot API in a few backwards-incompatible ways.

All Quicklisp libraries that depend on Hunchentoot have been updated, if needed, to work with the API changes. However, if you have a private or local project that depends on Hunchentoot, you may find that it needs to be updated to work with the new version.

If, for whatever reason, you don't want to use the new Hunchentoot, you can always use Quicklisp's ability to go back in time to the previous version.

This is the first big backwards-incompatible update of its kind for such a major project, so if you run into problems or have feedback, please let me know. Feel free to email me or contact the Quicklisp mailing list.


Project download statistics

Here are the top 100 Quicklisp downloads for the past three months:
   2131 alexandria
   1964 babel
   1742 trivial-garbage
   1630 slime
   1583 usocket
   1512 trivial-features
   1501 bordeaux-threads
   1482 cl-ppcre
   1476 cffi
   1390 trivial-gray-streams
   1386 cl+ssl
   1226 closer-mop
   1192 rfc2388
   1154 flexi-streams
   1105 cl-fad
   1074 cl-base64
   1048 chunga
    965 anaphora
    953 md5
    925 quicklisp-slime-helper
    918 puri
    910 trivial-backtrace
    892 hunchentoot
    763 split-sequence
    720 cl-json
    668 iterate
    654 salza2
    630 cl-who
    613 drakma
    612 clsql
    606 uffi
    596 named-readtables
    589 metabang-bind
    571 parenscript
    543 zpb-ttf
    479 metatilities-base
    465 weblocks
    460 zpng
    458 local-time
    421 cl-vectors
    412 vecto
    410 cxml
    402 fare-utils
    397 fare-matcher
    397 cl-opengl
    395 ironclad
    391 parse-number
    376 lispbuilder
    375 asdf-system-connections
    368 f-underscore
    366 cl-containers
    365 s-xml
    359 clx
    358 arnesi
    357 osicat
    313 closure-common
    307 html-template
    295 postmodern
    294 fiveam
    285 mcclim
    284 cl-cont
    272 moptilities
    264 iolib
    262 trivial-timeout
    254 metatilities
    218 kmrcl
    217 rucksack
    207 quickproject
    207 portableaserve
    202 cl-utilities
    202 closure-html
    196 cl-yacc
    195 trivial-utf-8
    183 clack
    181 s-sysdeps
    177 cl-annot
    175 uuid
    173 ltk
    172 elephant
    171 cl-oauth
    165 ieee-floats
    164 gsll
    163 trivial-shell
    162 spatial-trees
    162 restas
    161 cl-unicode
    157 hu.dwim.asdf
    153 flexichain
    153 cl-gtk2
    151 cl-prevalence
    148 linedit
    148 cl-cairo2
    147 cl-routes
    146 cl-colors
    143 cl-test-more
    138 fsbv
    133 cl-num-utils
    132 lisp-unit
    129 cl-modlisp
    126 cl-store

Note that this does not distinguish between projects explicitly requested and projects implicitly fetched to satisfy dependencies.