参考文献
- Andrey Mokhov, Neil Mitchell and Simon Peyton Jones:
“Build Systems à la Carte”,
International Conference on Functional Programming, 2018.
https://www.microsoft.com/en-us/research/uploads/prod/2018/03/build-systems-final.pdf
This influential article provides axes along which to describe build systems in general;
ASDF, in addition to being in-image (an axis not considered by these authors),
has the following characteristics:
ASDF’s persistent build information is file modification times
(the way ASDF is written, it should be easy enough to write an extension that modifies it
to use a “cloud cache” à la Bazel,
but that would involve using some database, network and cryptographic libraries,
which cannot reasonably be included in the base ASDF,
that must remain a minimal bootstrappable system with no external dependencies).
The object model of ASDF was initially designed for “static” dependencies
with a “topological” scheduler, but its
defsystem-depends-on
mechanism
(and more generally, the ability to call ASDF from within an .asd
file)
allows for multiple phases of execution resulting
in “dynamic” dependencies with a “suspending” scheduler.
The rebuilder essentially uses a “dirty bit”, except that the in-image model
and the multiple phase support mean that’s actually more than a bit:
instead it’s three bits plus the timestamp plus a phase depth level.
The build is guaranteed “minimal” in number of steps computed.
It is local. It assumes but does not enforce determinism.
It does not assume early cutoff of the build when rebuild dependencies didn’t change.
- Robert Goldman, Elias Pipping, and François-René Rideau:
“Delivering Common Lisp Applications with ASDF 3.3”,
European Lisp Symposium, 2017.
https://github.com/fare/asdf2017
This short article gives an overview of the changes in ASDF 3.2 and 3.3, including
improved application delivery, asynchronous subprocess management,
correct support for multi-phase builds, and enhanced source location configuration.
- Francois-Rene Rideau:
“ASDF 3, or Why Lisp is Now an Acceptable Scripting Language”,
European Lisp Symposium, 2014.
この記事はASDF 3、3.1での革新について解説し、以前のバージョンの歴史的情報についても触れています。
https://github.com/fare/asdf3-2013
- Alastair Bridgewater:
“Quick-build” (個人的なやり取りによる), 2012.
quick-build
は1ファイル、183行のコード(空行、コメント、docstringを除くと117行)で書かれた単純で堅牢なパッケージビルドシステムであり、faslpath
に似ています。残念ながら公開されておらず、2014年4月現在では権利関係が曖昧です。asdf/package-system
は(トップレベル階層の異なる構成を除けば)おおむねquick-build
互換です。
- Zach Beane:
“Quicklisp”, 2011.
The Quicklisp blogとXachのブログにはQuicklispの情報が載っています。
http://blog.quicklisp.org/
http://lispblog.xach.com/ (新ブログ)
http://xach.livejournal.com/ (旧ブログ)
- Francois-Rene Rideau and Robert Goldman:
“Evolving ASDF: More Cooperation, Less Coordination”,
International Lisp Conference, 2010.
この記事はASDF 2で解決された問題について解説し、そのデザインの原則についても書かれています。
https://common-lisp.net/project/asdf/ilc2010draft.pdf
http://rpgoldman.goldman-tribe.org/papers/ilc2010-asdf.pdf
- Francois-Rene Rideau and Spencer Brody:
“XCVB: an eXtensible Component Verifier and Builder for Common Lisp”,
International Lisp Conference, 2009.
この記事はXCVBについて解説しています。XCVBはASDFの競合となるシステムで、そのアイデアの多くはASDF 2と3に取り込まれていますが、いまだに取り込まれていないものも多々あります。
https://common-lisp.net/project/xcvb/
- Peter von Etter:
“faslpath”, 2009.
faslpath
はquick-build
やasdf/package-system
に似たシステムですが、セパレータとして/
ではなく.
を使う点が異なります。
https://code.google.com/p/faslpath/
- Drew McDermott:
“A Framework for Maintaining the Coherence of a Running Lisp,”
International Lisp Conference, 2005.
http://www.cs.yale.edu/homes/dvm/papers/lisp05.pdf
- Dan Barlow: “ASDF Manual”, 2004.
ASDF 1の頃のマニュアルで、Dan Barlowによるアイデアや、古いdefsystem(
mk-defsystem
)とdefsystem(defsystem-4
、下記のKent M. Pitmanのメモを参照)の比較などを含んでいます。
- Marco Antoniotti and Peter Van Eynde:
“
DEFSYSTEM
: A make
for Common Lisp, A Thoughtful Re-Implementation of an Old Idea”, 2002.
CLOCCのリポジトリにはdefsystem-4
の提案が含まれています。
- Mark Kantrovitz:
“Defsystem: A Portable Make Facility for Common Lisp”, 1990.
旧来の
mk-defsystem
の変種であるdefsystem-3.x
がCLOCCリポジトリにあります。
- Richard Elliot Robbins:
“BUILD: A Tool for Maintaining Consistency in Modular Systems”, MIT AI TR 874, 1985.
http://www.dtic.mil/dtic/tr/fulltext/u2/a162744.pdf
- Kent M. Pitman (kmp): “The Description of Large Systems”, MIT AI Memo 801, 1984.
http://nhplace.com/kent/Papers/Large-Systems.html
にCL用にアップデートされたものがあります。
- Dan Weinreb and David Moon: “Lisp Machine Manual”, 3rd Edition MIT, March 1981.
“CHINE NUAL”という通称で有名なマニュアルです。defsystemのもっとも初期の形の1つが解説されています。(1979年の第2版にはこの解説はありません。)
http://bitsavers.org/pdf/mit/cadr/chinual_3rdEd_Mar81.pdf