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.

2011-05-23

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

2011-05-19

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.

Enjoy!

2011-04-27

A short installation screencast

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

2011-04-09

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.