2011-11-01

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.

2011-10-29

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!

2011-10-01

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").

Enjoy!

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.

2011-08-02

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.

2011-07-30

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:
    blackthorn-engine-3d-20110730-hg
    cl-inflector-20110730-git
    cl-random-20110730-git
    cl-selenium-0.4
    clsql-fluid-20110730-darcs
    clsql-orm-20110730-git
    collectors-20110730-git
    com.informatigo.rdp-20110730-git
    elf-20110730-git
    lla-20110730-git
    telnetlib-20110730-git

  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-20110522-hg
    elephant-20110110-darcs

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.

Enjoy!

2011-07-28

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.