[asdf-devel] has ":depends-on ((:version ...))" semantics changed?

Anton Vodonosov avodonosov at yandex.ru
Mon Nov 18 17:33:38 UTC 2013

OK, so we clarified what happened with :version dependencies semantics.

Now we can think what should we do with the failures, if we should.

Note, the load failures do not happen with the most
recent version of ASDF. Only with elder versions
(which are still deployed together some Lisps,
including the last releases of ECL, CLISP, CCL).

The ASDf systems depending on moptilities:
"hu.dwim.perec" "hu.dwim.perec+hu.dwim.quasi-quote.xml"
"hu.dwim.perec+iolib" "hu.dwim.perec+swank" "hu.dwim.perec.all"
"hu.dwim.perec.oracle" "hu.dwim.perec.postgresql" "hu.dwim.perec.sqlite"
"metacopy" "metacopy-test" "metacopy-test-with-contextl" "metacopy-with-contextl"
"metatilities" "metatilities-test" "moptilities-test" "simple-blog" "tinaa"
"tinaa-test" "weblocks" "weblocks-clsql-demo" "weblocks-demo" "weblocks-demo-popover"
"weblocks-elephant" "weblocks-elephant-demo" "weblocks-memory" "weblocks-postmodern"
"weblocks-prevalence" "weblocks-s11" "weblocks-store-test" "weblocks-stores"
"weblocks-test" "weblocks-tree-widget" "weblocks-util" "weblocks-utils"
"weblocks-yarek" "weblocks-yui"

I wonder, what exactly the moptilities author meant when declared
:depends-on ((:version :closer-mop "0.55")))

- did he mean moptilities should only load with closer-mop 0.55?
- or he meant only with closer-mop version >= 0.55?
- or he meant moptiltiies should only load with closer-mop
  version "API compatible with 0.55"
- or he didn't want to affect the asfd:load-op at all
  and just meant the declaration as a hint for the user?

I must say I am surprised ASDF implements some
dependency version management. It is not a widely known feature.

I have even checked ASDF manual from 2009-08
, 7 month after moptilities introduced the :version dependency.

The manual says:
"the :version, :author, description and other [defsystem] fields are not required but they provide documentation and information for people that want to use this system.
It also says in the section about asdf:operate:
"If a version argument is supplied, then operate also ensures that the system found satisfies it using the version-satisfies method."

>From some other places in the manual we can even guess how version-satisfies work.

Still, I think it was too much to expect from closer-mop to encode
API compatibility information in the version identifier.
Note also, in 2009 ASDF didn't consider version "0.6" as satisfying
requirement for "0.55":

So, I think maybe the best fix is to remove :version from the
dependency specification in metatilities.asd

Also, as we speak about versioning, I have been trying to use semantic
versioning as described at http://semver.org/ and I don't think it is
a silver bullet - it doesn't solve all problems.

Best regards,
- Anton

More information about the asdf-devel mailing list