Project download stats for November

Here are some stats for the top 50 project downloads in November:
   1950 alexandria
   1203 slime
   1126 cl+ssl
   1033 babel
    936 usocket
    907 trivial-features
    904 rfc2388
    902 bordeaux-threads
    899 hunchentoot
    889 cffi
    849 trivial-garbage
    828 closer-mop
    820 trivial-gray-streams
    789 cl-ppcre
    703 flexi-streams
    665 cl-fad
    620 iterate
    612 cl-base64
    591 quicklisp-slime-helper
    579 chunga
    499 puri
    488 md5
    480 trivial-backtrace
    470 drakma
    426 split-sequence
    412 metatilities-base
    365 anaphora
    340 cl-who
    327 fare-utils
    313 salza2
    297 cl-json
    292 metabang-bind
    280 uffi
    273 named-readtables
    257 clsql
    242 parenscript
    237 zpb-ttf
    230 asdf-system-connections
    227 zpng
    210 postmodern
    208 fare-matcher
    201 cl-vectors
    200 ironclad
    196 vecto
    190 cl-opengl
    189 clx
    182 arnesi
    169 osicat
    168 parse-number
    167 cl-containers
This report only shows "raw" download figures. It does not distinguish between projects downloaded directly by user request and projects downloaded automatically as dependencies.


December Quicklisp dist update now available

There's a new Quicklisp dist update for December. You can get it by evaluating (ql:update-dist "quicklisp"). Here's the breakdown of the changes this month:

New projects: access, cl-adt, cl-fluidinfo, cl-inotify, cl-kyoto-cabinet, cl-locale, cl-marshal, cl-package-locks, cl-string-complete, de.setf.wilbur, lambda-reader, lhstats, macroexpand-dammit, manifest, monkeylib-html, monkeylib-text-languages, monkeylib-text-output, myweb, pal, perfpiece, toot.

Updated projects: able, alexandria, buildapp, caveman, cl-annot, cl-anonfun, cl-closure-template, cl-csv, cl-data-format-validation, cl-generic-arithmetic, cl-mongo, cl-num-utils, cl-odesk, cl-random, cl-rcfiles, cl-redis, cl-sanitize, cl-syntax, cl-tk, clack, closer-mop, clsql, clx, com.google.base, data-table, doplus, exscribe, f2cl, fare-csv, fare-matcher, fare-mop, fare-utils, folio, fset, gbbopen, hu.dwim.syntax-sugar, hunchentoot, idna, let-plus, linedit, lisp-gflags, lla, lparallel, meta, misc-extensions, monkeylib-binary-data, monkeylib-foo, monkeylib-macro-utilities, monkeylib-markup, monkeylib-markup-html, monkeylib-pathnames, monkeylib-prose-diff, monkeylib-utilities, opticl, parenscript-classic, parse-js, place-utils, postmodern, protobuf, quickproject, restas, rutils, salza2, scribble, skippy, st-json, static-vectors, talcl, trivial-types, vecto, wu-decimal, wuwei, xcvb, yason, zcdb, zpb-exif, zpb-ttf, zpng, zs3.

Removed projects: ch-util, clg, loopless, weblocks.

A bit more on a few of the removed projects: ch-util is Cyrus Harmon's personal utilities library. He updated his other projects to use Alexandria instead. That means there are now only 12 personal utility libraries in Quicklisp instead of 13. That's a trend I hope to see continue. clg is a binding to Gtk+, but in fact it never quite built, and this month I took it out entirely. loopless was removed at the request of the author. And weblocks no longer builds with Hunchentoot 1.2.x. Despite several days of trying to find someone, anyone to comment on how it might get fixed, I didn't hear any feedback. Here's hoping it's just a temporary communication breakdown and weblocks will be available in some future Quicklisp dist update.

I did not include the very latest version of SLIME from CVS this month. There were major changes in SLIME's communication mechanism this month, and there was a flurry of activity just before today's release, and I didn't want to risk bundling it up at a bad time.

If you have any comments, questions, or other feedback, please feel free to email me or discuss it on the Quicklisp mailing list.



Hunchentoot and Weblocks

Hunchentoot development has picked up after a lengthy hiatus, and some of the recent changes have affected other projects. For the most part, projects have been adapted to work, but there's a big exception: Weblocks.

Weblocks does not build with Hunchentoot 1.2.2 because it references hunchentoot:*default-handler*, which doesn't exist any more. I reported the problem on the mailing list, but haven't gotten a response yet.

Do you use Weblocks? Can you help adapt it to the new Hunchentoot? If it isn't updated sometime soon, I won't be able to include it in Quicklisp in the future. (You can always go back in time, if you have to.)


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.


Quicklisp software updates available

Last night I uploaded a new version of the Quicklisp client, and an update to the bootstrap file quicklisp.lisp. You can update your local version of the client with (ql:update-client).

The new client has a few notable changes.

First, Douglas T. Crosher sent patches to enable Quicklisp to bootstrap and run on Scieneer Common Lisp. Thanks, Douglas!

Second, software archives are now checked for size validity before use. Some people have run into trouble with corrupted downloads, but Quicklisp didn't detect the problem very early. It led to obscure, hard-to-debug errors. The new size check will present a more obvious error and a useful restart. (A future update will add content digest checks.)

Third, a new command, (ql:where-is-system "foo"), will return the pathname of the directory in which the system foo is defined. This is useful for determining from where a particular system is loading.

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

Happy Quicklisping!


October 1 Quicklisp dist update now available

I've updated the Quicklisp dist again. Here are the differences relative to the last update:

New projects: chemical-compounds, chtml-matcher, cl-anonfun, cl-autorepo, cl-gene-searcher, cl-kanren-trs, cl-langutils, cl-scrobbler, cl-speedy-queue, cl-stdutils, cl-tuples, com.google.base, doplus, gtk-cffi, hh-aws, hh-redblack, lisa, lisp-gflags, periodic-table, recursive-regex, trivial-types, and unicly.

Updated projects: 3bmd, antik, bknr-datastore, caveman, cl+ssl, cl-2d, cl-closure-template, cl-csv, cl-docutils, cl-enumeration, cl-l10n, cl-libxml2, cl-mime, cl-mssql, cl-opengl, cl-openid, cl-pattern, cl-project, cl-redis, cl-syntax, cl-test-more, cl-unicode, clack, clsql, clsql-orm, csv-parser, drakma, elephant, external-program, fare-matcher, fare-utils, gbbopen, glaw, glop, gsharp, gsll, hu.dwim.logger, hu.dwim.partial-eval, hu.dwim.perec, hu.dwim.quasi-quote, hu.dwim.rdbms, hu.dwim.util, iterate, linedit, lredis, parse-js, postmodern, protobuf, rutils, shuffletron, slime, thread-pool, trivial-utf-8, usocket, wuwei, and yason.

Removed projects: cl-soap, hu.dwim.wui, m2cl, and symbolicweb.

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


Slow news month

I don't post very frequently in this blog. I tend to save it for longer announcements and other things. I do post somewhat more frequently to my twitter account, @quicklisp. If you want little bits of Quicklisp trivia delivered more frequently, try following along there.


Going back in (dist) time

So you updated Quicklisp with (ql:update-dist "quicklisp"), and now a library you depended on is broken. It returns 42 from a function that previously returned 21, or maybe the API changed in an important incompatible way. Now your project is stalled and you have to figure out how to make things work again.

Quicklisp is designed with this situation in mind. Old project sources are kept around in indefinitely, and at a permanent URL, so you can go back to old sets of projects.

The user interface needs to be cleaned up, but here's how it works today:

* (use-package :ql-dist)
* (available-versions (dist "quicklisp"))
(("2011-07-30" . "http://beta.quicklisp.org/dist/quicklisp/2011-07-30/distinfo.txt") 
 ("2011-06-19" . "http://beta.quicklisp.org/dist/quicklisp/2011-06-19/distinfo.txt") 
 ("2011-05-22" . "http://beta.quicklisp.org/dist/quicklisp/2011-05-22/distinfo.txt") 
 ("2011-04-18" . "http://beta.quicklisp.org/dist/quicklisp/2011-04-18/distinfo.txt") 
 ("2011-03-20" . "http://beta.quicklisp.org/dist/quicklisp/2011-03-20/distinfo.txt") 
 ("2011-02-19" . "http://beta.quicklisp.org/dist/quicklisp/2011-02-19/distinfo.txt") 
 ("2011-01-10" . "http://beta.quicklisp.org/dist/quicklisp/2011-01-10/distinfo.txt") 
 ("2010-12-07" . "http://beta.quicklisp.org/dist/quicklisp/2010-12-07/distinfo.txt") 
 ("2010-11-07" . "http://beta.quicklisp.org/dist/quicklisp/2010-11-07/distinfo.txt") 
 ("2010-10-07" . "http://beta.quicklisp.org/dist/quicklisp/2010-10-07/distinfo.txt"))
* (install-dist "http://beta.quicklisp.org/dist/quicklisp/2011-06-19/distinfo.txt" :replace t)
lots of output

That set of commands will revert to the June, 2011 Quicklisp dist. So if your project critically depends on the versions you got in June, you can always go back to it.


Two updates today: new client and July dist

There are two updates available for Quicklisp users today.

The first is a client update. The new client has a tiny but important fix with how it displays what changes will be made for a dist update. Before, lingering temporary files could interfere and it could give an alarming report that most projects were being removed. With the fix in place, the report now gives accurate information about which projects have been added, updated, and removed. To get the client update, use (ql:update-client) and restart your Lisp.

The second is the July Quicklisp dist update. Here's what you'll see when you update:

Changes from quicklisp 2011-06-19 to quicklisp 2011-07-30:
  New projects:

  Updated projects:
    babel-20101107-darcs -> babel-20110730-git
    buildnode-20110619-git -> buildnode-20110730-git
    caveman-20110619-git -> caveman-20110730-git
    cl-2d-20110619-git -> cl-2d-20110730-git
    cl-closure-template-20110619-git -> cl-closure-template-20110730-git
    cl-creditcard-20110522-git -> cl-creditcard-20110730-git
    cl-decimals-20110619-git -> cl-decimals-20110730-git
    cl-glfw-20110619-git -> cl-glfw-20110730-git
    cl-json-20101006-darcs -> cl-json-20110730-darcs
    cl-l10n-20110219-darcs -> cl-l10n-20110730-darcs
    cl-mediawiki-20110522-git -> cl-mediawiki-20110730-git
    cl-mongo-20110619-git -> cl-mongo-20110730-git
    cl-num-utils-20110619-git -> cl-num-utils-20110730-git
    cl-odesk-20110619-git -> cl-odesk-20110730-git
    cl-openal-20110522-git -> cl-openal-20110730-git
    cl-openid-20110619-darcs -> cl-openid-20110730-darcs
    cl-pattern-20110619-git -> cl-pattern-20110730-git
    cl-project-20110619-git -> cl-project-20110730-git
    cl-twitter-20110619-git -> cl-twitter-20110730-git
    cl-uglify-js-20110418-git -> cl-uglify-js-20110730-git
    clack-20110619-git -> clack-20110730-git
    cleric-20110619-git -> cleric-20110730-git
    closer-mop-20110619-darcs -> closer-mop-20110730-darcs
    clpython-20110619-git -> clpython-20110730-git
    clsql-20110619-git -> clsql-20110730-git
    com.informatigo-20110522-git -> com.informatigo-20110730-git
    css-selectors-20110619-git -> css-selectors-20110730-git
    dbus-20110219-git -> dbus-20110730-git
    eos-20101006-git -> eos-20110730-git
    external-program-20110522-git -> external-program-20110730-git
    gbbopen-20110619-svn -> gbbopen-20110730-svn
    glaw-20110619-git -> glaw-20110730-git
    glop-20110219-git -> glop-20110730-git
    group-by-20110619-git -> group-by-20110730-git
    gsll-20110418-git -> gsll-20110730-git
    hu.dwim.wui-20110320-darcs -> hu.dwim.wui-20110730-darcs
    hyperobject-20101006-git -> hyperobject-20110730-git
    kmrcl-20101006-git -> kmrcl-20110730-git
    let-plus-20110619-git -> let-plus-20110730-git
    lredis-20110110-git -> lredis-20110730-git
    ltk-0.91 -> ltk-0.96
    m2cl-20110619-git -> m2cl-20110730-git
    mcclim-20110522-cvs -> mcclim-20110730-cvs
    modf-20110619-git -> modf-20110730-git
    paiprolog-20110418-git -> paiprolog-20110730-git
    parse-js-20110320-git -> parse-js-20110730-git
    parse-number-1.0 -> parse-number-1.2
    portableaserve-20101006-cvs -> portableaserve-20110730-cvs
    rfc2388-binary-20110320-darcs -> rfc2388-binary-20110730-darcs
    rucksack-20110522-cvs -> rucksack-20110730-cvs
    s-protobuf-20101006-git -> s-protobuf-20110730-git
    s-xml-20101006-http -> s-xml-20110730-cvs
    slime-20110619-cvs -> slime-20110730-cvs
    snmp-6.0.1 -> snmp-6.0.2
    symbolicweb-20110418-git -> symbolicweb-20110730-git
    trivial-garbage-20101006-darcs -> trivial-garbage-20110730-git
    umlisp-20110418-git -> umlisp-20110730-git
    uuid-20110320-http -> uuid-20110730-http
    weblocks-20110619-hg -> weblocks-20110730-hg

  Removed projects:

blackthorn-engine has been replaced with blackthorn-engine-3d, a new project by the same author. elephant has been removed because it hasn't worked on SBCL for several months now, and patches for the problem have been ignored. As far as I can tell, Elephant is effectively unmaintained.

The metadata from the June dist caused problems with installing f2cl and GBBopen. The July dist has been updated to fix all known problems. If you have any trouble installing any project, please let me know.



Work in progress: Quicklisp project documentation

I've been working on a project to automatically gather and publish all the documentation available for projects that are part of Quicklisp. It's not done, but I thought I'd share the work in progress.


May Quicklisp dist update available

I just published a new version of the Quicklisp dist. New in this version are buildnode, cl-buchberger, cl-creditcard, cl-match, cl-tk, com.informatigo, common-lisp-actors, css-selectors, floating-point, group-by, lambda-gtk, method-versions, place-utils, qbook, symbol-munger, talcl, and thnappy.

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


Quicklisp client update available

I've published a new version of the Quicklisp client. To get it, use (ql:update-client). This new version has a number of tweaks and updates:

  • The FASLs for asdf.lisp are split up into implementation-specific directories, which avoids a bug in CLISP's handling of invalid FASLs. (Doesn't ASDF2 do this already? Yes, but this step takes place before ASDF2 is loaded.)
  • (ql:system-apropos "foo") will return results for matching project names. For example, (ql:system-apropos "slime") will return the swank system.
  • System definition searches have been changed slightly; system file names will only be returned as a result of an asdf:find-system if the file's name matches the name given to asdf:find-system.
  • A few unreachable code notes shown in SBCL have been eliminated.
  • More metadata and documentation included on the Quicklisp system and each Quicklisp package
  • A new function, QL:WRITE-ASDF-MANIFEST-FILE, is available to write out a list of available Quicklisp system files for Buildapp to use.
  • edit The required ASDF2 version has been bumped down to 2.011. This fixes an issue with Quicklisp failing to load an ECL-specific ASDF file. The latest ECL should work fine now.
I've tested this update on many different combinations of CL implementation and operating system, but I haven't tested every possible combination. If you encounter any trouble installing or updating Quicklisp, please let me know by opening a github issue.



A short installation screencast

How long does it take to install and try Quicklisp? Not long:


New projects coming in April

Here are the new projects that will be in the April Quicklisp dist update:
  • 3bmd
  • amazon-ecs
  • aromyxo
  • caveman
  • clack
  • cl-annot
  • cl-json-template
  • cl-moneris
  • cl-odesk
  • cl-pop
  • cl-rdfxml
  • cl-sanitize
  • cl-svm
  • cl-syntax
  • ec2
  • idna
  • js-parser
  • paren-files
  • paren-util
  • quux-time
  • sw-http
  • sw-stm
  • symbolicweb
  • trivial-irc
  • unit-formula
  • webfunk
  • xml-mop
As always, if you have a project to suggest, please open a github issue to let me know.


March Quicklisp dist update now available

I've put up a dist update for March. To get it, use (ql:update-dist "quicklisp"). Unfortunately, the dist update report you get from that command is broken. It doesn't show accurate info about what projects have been added, updated, and removed. So here's the scoop:

New this month: cl-base32, cl-blapack, cl-fastcgi, cl-gravatar, cl-mysql, cl-openid, cl-recaptcha, cl-sendmail, cl-svg, cl-webkit, clon, eager-future2, fnv, ip-interfaces, km, metafs, opticl, parenscript-classic, planks, sb-fastcgi, trivial-bit-streams, uri-template, and xmls-tools.

Updated this month: alexandria, binge, bknr-datastore, blackthorn-engine, ch-image, chillax, cl-2d, cl-azure, cl-cairo2, cl-closure-template, cl-containers, cl-devil, cl-glfw, cl-llvm, cl-mediawiki, cl-mw, cl-num-utils, cl-opengl, cl-routes, cl-sphinx, cl-test-more, cl-twitter, cl-uglify-js, cl-unification, clfswm, clonsigna, closer-mop, commonqt, cxml-rpc, external-program, f2cl, fare-utils, gbbopen, gsll, hh-web-tags, hu.dwim.perec, hu.dwim.quasi-quote, hu.dwim.stefil, hu.dwim.util, hu.dwim.wui, lift, lisp-on-lines, lispbuilder, local-time, mime4cl, monkeylib-binary-data, mtlisp, net4cl, nibbles, npg, parenscript, parse-js, pileup, protobuf, relational-objects-for-lisp, retrospectiff, rfc2388-binary, sclf, slime, ucw, usocket, uuid, weblocks, wuwei, and x.fdatatypes.

Removed this month: aromyxo, cl-random, lla, sw-db, sw-http, sw-mvc, sw-stm, and symbolicweb. The SymbolicWeb libraries are tracking the bleeding edge of SBCL and don't work on any release yet. Tamas Papp's numeric libraries are in flux and don't work with the updates to cl-num-utils.

With this update, Quicklisp now includes 498 libraries. Next month it should have well over 500. Hackers, keep hacking! If there's a new project you'd like to see in Quicklisp, please open a GitHub issue and let me know about it.


Client update woes

Yesterday I put up an update to the Quicklisp client software. Unfortunately, it was broken on any SBCL older than 1.0.44, which turns out to cover a lot of SBCL users, including people who got SBCL for Windows from www.sbcl.org and people who get SBCL from their Debian, Ubuntu, or Red Hat package systems. To fix the problem, I've put out an updated version today that will hopefully resolve that problem.

To get the new client, you can use (ql:update-client). The new client will be loaded when your Lisp session is restarted. Please let me know if it causes any problems for you!

update If you got the bad update, and you're having trouble starting SBCL as a result, there are a few things you can try. If you have CLISP, you can use that to get the good update, and it will be used the next time you start SBCL. You can also fetch http://beta.quicklisp.org/quickstart/quicklisp-2011032000.tgz and unpack it in ~/quicklisp/.


Survey for corporate users

Scott Turner commented on Quicklisp helps focus ABCL development: "You need to get authenticating proxies into Quicklisp, or else you're never going to get users (or statistics) from the majority of corporate environments." I've only had a few people ask about support for authenticating proxies, so it hasn't been a high priority to implement yet. Maybe that priority should change?

Are you in a corporate environment? Do you use Quicklisp? Do you want to use Quicklisp, but the lack of authenticating proxy support holds you back? Let me know in the comments, please.


HTTP traffic info by region

Quicklisp project files are served via Amazon's CloudFront content delivery service. Here are the HTTP request stats for February for each of its supported geographical regions:
  • Europe: 21,671 requests
  • United States: 14,535 requests
  • Japan: 5,025 requests
  • Hong Kong and Singapore: 1,689 requests
I was a little surprised to see Europe as the #1 source of Quicklisp HTTP requests.


Kind words from a Quicklisp donor

I got a nice note from a donor today:

By the way quicklisp is amazing. There are so many times I see a cl library and say, "well that does do what I need, but I can probably write the 10-20% of its functionality that I need right now faster than I can install it." Quicklisp has probably saved me 20+ hours of my time, as well as reinventing a couple wheels. $20 is almost an insultingly low amount to donate after that.


Febrary Quicklisp dist update now available

I've just published an update to the Quicklisp dist. (ql:update-dist "quicklisp") will pull it down for you. Please be aware that the summary shown before the update takes place might not be accurate, but the updates will happen anyway. There's a client bug with the summary that I have to fix.

New projects in this update are binomial-heap, cl-cron, cl-custom-hash-table, cl-llvm, cl-markup, cl-mechanize, cl-mediawiki, cl-mime, cl-parser-combinators, fomus, funds, hh-web-tags, memoize, mini-cas, nekthuth, nibbles, pal, stem, and vas-string-metrics.

There are updates to many other projects, including wuwei, clpython, and much more.

If you run into any problems, please report them on Quicklisp discussion list.

If there's a project you'd like to see added to Quicklisp, please open a Github issue. Thanks!


Project download stats

Here are the raw counts of how many times each project has been downloaded from Quicklisp in the past month:
   1333 alexandria
   1112 babel
   1094 trivial-features
   1071 cffi
    999 usocket
    965 slime
    907 cl-ppcre
    839 trivial-gray-streams
    816 flexi-streams
    815 bordeaux-threads
    782 cl-fad
    754 cl-base64
    739 cl+ssl
    739 chunga
    706 md5
    681 trivial-backtrace
    678 rfc2388
    672 hunchentoot
    605 closer-mop
    541 trivial-garbage
    515 quicklisp-slime-helper
    483 puri
    463 metabang-bind
    448 iterate
    406 cl-who
    393 anaphora
    388 salza2
    341 parenscript
    323 moptilities
    321 cl-json
    308 weblocks
    298 asdf-system-connections
    289 cl-containers
    286 metatilities-base
    259 html-template
    257 fare-utils
    250 split-sequence
    247 f-underscore
    247 fare-matcher
    245 drakma
    238 cl-cont
    232 trivial-timeout
    229 metatilities
    220 cl-unicode
    211 uffi
    190 zpng
    188 cl-sqlite
    186 lispbuilder
    184 cl-vectors
    179 zpb-ttf
    179 lift
    172 closure-common
    172 cl-opengl
    168 vecto
    159 stefil
    159 cxml
    158 s-xml
    150 clsql
    143 clx
    133 arnesi
    131 iolib
    127 ironclad
    124 s-sysdeps
    124 cl-prevalence
    123 postmodern
    110 parse-number
    108 cl-utilities
    106 cl-yacc
    105 flexichain
    104 spatial-trees
     97 cl-gtk2
     94 mcclim
     91 local-time
     85 quickproject
     85 osicat
     81 named-readtables
     73 gsll
     73 gsd
     73 fsbv
     73 fiveam
     72 lisp-unit
     68 static-vectors
     65 cl-colors
     63 elephant
     63 commonqt
     61 cl-store
     59 kmrcl
     57 closure-html
     56 xmls
     56 plexippus-xpath
     55 cl-pdf
     54 ucw
     52 cxml-stp
     51 hu.dwim.asdf
     51 cl-cairo2
     50 portableaserve
     50 ltk
     49 yaclml
     47 ieee-floats
     46 restas
     43 rt
     42 linedit
     42 cl-graph
     42 cl-glfw
     41 hu.dwim.def
     41 hemlock
     41 cells
     39 net-telent-date
     39 cl-irc
     38 s-utils
     38 lw-compat
     38 cl-interpol
     37 utils-kt
     37 trivial-shell
     37 rfc2109
     37 cl-jpeg
     36 parse-js
     36 hu.dwim.defclass-star
     36 gbbopen
     36 contextl
     35 trivial-utf-8
     35 prepl
     34 cl-html-parse
     34 clem
     33 hu.dwim.util
     33 hu.dwim.syntax-sugar
     33 cl-smtp
     33 chipz
     32 uuid
     32 cl-closure-template
     31 series
     31 climacs
     30 hu.dwim.common-lisp
     30 hu.dwim.common
     30 cl-unification
     30 cl-routes
     29 s-base64
     29 conium
     29 command-line-arguments
     29 clpython
     29 aromyxo
     28 sw-mvc
     28 rutils
     27 zlib
     27 url-rewrite
     27 tpapp-utils
     27 html-encode
     27 glop
     27 fset
     27 cl-log
     26 yason
     26 misc-extensions
     26 cl-redis
     26 cl-oauth
     26 cl-data-format-validation
     25 trivial-http
     25 symbolicweb
     25 png-read
     25 f2cl
     25 cl-zmq
     24 retrospectiff
     24 hu.dwim.walker
     24 fare-csv
     24 cl-typesetting
     23 wiki-parser
     23 unix-options
     23 trees
     23 rfc2388-binary
     23 documentation-template
     23 colorize
     23 cl-png
     23 asdf-install
     22 s-http-client
     22 pcall
     22 log5
     22 js
     22 cl-mongo
     22 cl-lex
     22 cl-irregsexp
     22 adw-charting
     21 usocket-udp
     21 sw-http
     21 regex
     21 dynamic-classes
     21 ch-image
     20 zip
     20 sw-stm
     20 phemlock
     20 monkeylib-macro-utilities
     20 mel-base
     20 l-math
     20 ht-simple-ajax
     20 garbage-pools
     20 cl-openal
     20 cl-ncurses
     19 screamer
     19 portable-threads
     19 hu.dwim.stefil
     19 cl-markdown
     19 chillax
     18 protobuf
     18 montezuma
     18 lml2
     18 glaw
     18 cl-num-utils
     17 verrazano
     17 plokami
     17 monkeylib-binary-data
     17 ffa
     17 cl-plplot
     17 cl-jpl-util
     17 cl-docutils
     17 cl-cli-parser
     17 blackthorn-engine
     16 sclf
     16 rucksack
     16 ptester
     16 incf-cl
     16 hu.dwim.serializer
     16 date-calc
     16 cxml-rpc
     16 csv-parser
     16 cl-twitter
     16 cl-test-more
     16 cl-libxml2
     16 ch-util
     15 pipes
     15 monkeylib-pathnames
     15 jpl-queues
     15 femlisp
     15 cl-xmpp
     15 cl-uglify-js
     15 binary-types
     15 beirc
     14 restas-directory-publisher
     14 lisp-on-lines
     14 hunchentoot-cgi
     14 hu.dwim.logger
     14 getopt
     14 css-lite
     14 cl-skip-list
     13 xarray
     13 st-json
     13 py-configparser
     13 hunchentoot-vhost
     13 fft
     13 cl-soap
     13 cl-l10n-cldr
     13 cl-l10n
     13 chronicity
     12 trivial-timers
     12 relational-objects-for-lisp
     12 nst
     12 mtlisp
     12 levenshtein
     12 hunchentoot-auth
     12 hu.dwim.delico
     12 hu.dwim.computed-class
     12 external-program
     12 cl-syslog
     12 cl-geometry
     12 bknr-datastore
     11 zs3
     11 unit-test
     11 s-xml-rpc
     11 simple-date-time
     11 npg
     11 mt19937
     11 manardb
     11 lla
     11 hu.dwim.rdbms
     11 fcgi
     11 cl-sphinx
     11 clouchdb
     11 cl-modlisp
     11 cl-memcached
     11 cl-heap
     11 cl-gpu
     11 array-operations
     11 3b-swf
     10 xuriella
     10 wuwei
     10 until-it-dies
     10 sb-vector-io
     10 net4cl
     10 metacopy
     10 imago
     10 hu.dwim.quasi-quote
     10 hu.dwim.perec
     10 eager-future
     10 cl-random
     10 cl-org-mode
     10 cl-i18n
     10 cl-gd
     10 cl-clon
     10 cl-2d
     10 buildapp
      9 zpb-exif
      9 sheeple
      9 rcl
      9 mime4cl
      9 cl-webdav
      9 cl-v4l2
      9 cl-stm
      9 cl-sasl
      9 cl-paypal
      9 cl-m4
      9 cl-lastfm
      9 cleric
      9 cl-dot
      9 cl-devil
      9 bordeaux-fft
      9 asn.1
      8 s-protobuf
      8 skippy
      8 pileup
      8 monkeylib-markup
      8 meta-sexp
      8 lisp-magick
      8 hu.dwim.wui
      8 defsystem-compatibility
      8 dbus
      8 clws
      8 cl-rss
      8 cl-growl
      8 clg
      8 clfswm
      8 cl-binary-file
      8 clazy
      8 atdoc
      7 trivial-ldap
      7 scribble
      7 rpc4cl
      7 plain-odbc
      7 pg
      7 monkeylib-utilities
      7 monkeylib-test-framework
      7 monkeylib-markup-html
      7 monkeylib-foo
      7 midi
      7 meta
      7 hu.dwim.partial-eval
      7 gtfl
      7 genhash
      7 folio
      7 esrap
      7 cl-xmlspam
      7 cl-wal
      7 cl-swap-file
      7 cl-s3
      7 clonsigna
      7 cl-iconv
      7 cl-emb
      7 cl-bibtex
      7 cl-bencode
      7 black-tie
      7 binge
      7 archive
      6 xptest
      6 xlunit
      6 string-case
      6 smtp4cl
      6 s-dot
      6 monkeylib-prose-diff
      6 micmac
      6 mgl
      6 hyperobject
      6 gsharp
      6 graylex
      6 eos
      6 cxml-rng
      6 conduit-packages
      6 cl-quickcheck
      6 cl-qprint
      6 cl-ftp
      6 cl-btree
      6 cl-beanstalk
      6 cells-gtk3
      6 bk-tree
      5 zcdb
      5 x.let-star
      5 vcs-tree
      5 umlisp-orf
      5 tilde
      5 sqnc
      5 snmp
      5 proton
      5 postoffice
      5 parse-declarations
      5 osc
      5 mixalot
      5 loopless
      5 lml
      5 jsown
      5 inotify
      5 gzip-stream
      5 fucc
      5 dso-util
      5 dso-lex
      5 declt
      5 cluck
      5 cl-rcfiles
      5 cl-popen
      5 clot
      5 clos-diff
      5 cl-mssql
      5 cl-lexer
      5 cl-heredoc
      5 cl-geocode
      5 cl-geo
      5 cl-difflib
      5 cl-ctrnn
      5 cl-azure
      5 calispel
      5 bourbaki
      4 xhtmlgen
      4 x.fdatatypes
      4 umlisp
      4 testbild
      4 tbnl
      4 soundex
      4 reversi
      4 pubmed
      4 psgraph
      4 okra
      4 odd-streams
      4 mw-equiv
      4 magicffi
      4 jwacs
      4 irc-logger
      4 ie3fp
      4 hu.dwim.reiterate
      4 evol
      4 deflate
      4 curly
      4 cl-photo
      4 cl-mw
      4 cl-html-diff
      4 cl-enumeration
      4 cl-couch
      4 cl-charms
      4 3bil
      3 sw-db
      3 spartns
      3 simpsamp
      3 simple-finalizer
      3 shuffletron
      3 sequence-iterators
      3 sb-cga
      3 rlc
      3 rfc3339-timestamp
      3 py-configvalidator
      3 pithy-xml
      3 patron
      3 ods4cl
      3 oct
      3 nuclblog
      3 lredis
      3 cl-wkb
      3 cl-quakeinfo
      3 cl-migrations
      2 tinaa
      2 latex-table
      2 cl-proc
      2 clon
      1 graphic-forms
      1 cl-fftw3


January dist update now available

I've updated the Quicklisp dist for January, adding more than 30 new projects and updating dozens of existing projects. You can get the update with (ql:update-dist "quicklisp"). For a list of the current set of projects and their systems, see the Quicklisp releases page.

If I'm missing a useful project, please let me know by opening an issue on GitHub.



New projects on the horizon

I'm going to publish a dist update within the week. Here are the new projects included (so far):
  • atdoc-20110104-git
  • bourbaki-20110104-http
  • cells-gtk3-20110104-git
  • cl-azure-20110104-git
  • cl-beanstalk-20110104-git
  • cl-bibtex-20110104-cvs
  • cl-lexer-20110104-git
  • cl-memcached-0.4.1
  • cl-migrations-20110104-http
  • cl-plplot-0.6.0
  • clazy-20110104-cvs
  • clg-20110104-cvs
  • clos-diff-20110104-git
  • dso-lex-0.3.2
  • dso-util-0.1.2
  • elephant-20110104-darcs
  • fucc_0.2.1
  • lredis-20110104-git
  • mgl-20110104-git
  • monkeylib-binary-data-20110104-git
  • mtlisp-20110104-git
  • phemlock-20110104-cvs
  • sqnc-20110104-git
  • wuwei-20110104-git
  • xhtmlgen-20110104-git
If there are other projects you want to see in Quicklisp, please open an issue for it.