Commit 6388cf2a authored by Francois-Rene Rideau's avatar Francois-Rene Rideau
Browse files
parents 6dc147af 1dd2bcf3
.gitignore export-ignore
*.rkt export-ignore
talk-outline.org export-ignore
.gitattributes export-ignore
...@@ -6,3 +6,4 @@ main.pdf ...@@ -6,3 +6,4 @@ main.pdf
*.bbl *.bbl
*.blg *.blg
*.out *.out
*~
...@@ -184,10 +184,12 @@ We will discuss this further in Section~\ref{sec:plan-generation}. ...@@ -184,10 +184,12 @@ We will discuss this further in Section~\ref{sec:plan-generation}.
:licence "Public Domain" :licence "Public Domain"
:depends-on (foo-utils) :depends-on (foo-utils)
:components ((:file "packages") :components ((:file "packages")
(:file "macros" :depends-on ("packages")) (:file "macros"
(:file "classes" :depends-on ("packages")) :depends-on ("packages"))
(:file "methods" :depends-on ("macros" (:file "classes"
"classes")) :depends-on ("packages"))
(:file "methods"
:depends-on ("macros" "classes"))
(:module "main" (:module "main"
:depends-on ("macros") :depends-on ("macros")
:serial t :serial t
......
...@@ -45,7 +45,7 @@ ...@@ -45,7 +45,7 @@
A key inspiration for ASDF was {\mkdefsys}, Mark Kan\-tro\-witz's portable A key inspiration for ASDF was {\mkdefsys}, Mark Kan\-tro\-witz's portable
{\defsys} facility~\cite{kantrowitz:91}. At the time when {\mkdefsys} {\defsys} facility~\cite{kantrowitz:91}. At the time when {\mkdefsys}
was developed, there was no portable, non-proprietary system definition was developed, there was no portable, non-pro\-pri\-eta\-ry system definition
facility for {\CL}, as Lisp moved off special-purpose platforms and onto facility for {\CL}, as Lisp moved off special-purpose platforms and onto
general-purpose hardware. Prior to this (and substantially prior to a true general-purpose hardware. Prior to this (and substantially prior to a true
\emph{Common} Lisp), there were a number of different system-defining \emph{Common} Lisp), there were a number of different system-defining
......
\documentclass{sig-alternate} \documentclass%[preprint]
{sigplanconf}
% Submission deadline: 2010-09-06 % Submission deadline: 2010-09-06
% length limit is 15pp % length limit is 15pp
...@@ -9,6 +10,12 @@ ...@@ -9,6 +10,12 @@
\usepackage{alltt} \usepackage{alltt}
\usepackage{ifthen} \usepackage{ifthen}
\usepackage{hyperref} \usepackage{hyperref}
\conferenceinfo{ILC'10}{October, 19-21, Reno, Nevada, USA.}
\copyrightyear{2010}
\copyrightdata{[to be supplied]}
\titlebanner{International Lisp Conference 2010} % These are ignored unless
\preprintfooter{ILC'10} % 'preprint' option specified.
\newboolean{draft} \newboolean{draft}
\setboolean{draft}{true} \setboolean{draft}{true}
...@@ -24,11 +31,13 @@ ...@@ -24,11 +31,13 @@
\newcommand{\file}[1]{\texttt{#1}} \newcommand{\file}[1]{\texttt{#1}}
\newcommand{\make}{\texttt{make}} % repeating the (1) was a bit unnerving \newcommand{\make}{\texttt{make}} % repeating the (1) was a bit unnerving
\newcommand{\ant}{\texttt{ant}} \newcommand{\ant}{\texttt{ant}}
\newcommand{\uifrc}{\lisp{update-instance-for-redefined-class}} \newcommand{\uifrc}{\lisp{update-ins\-tan\-ce-for-re\-de\-fi\-ned-class}}
\newcommand{\opdonep}{\lisp{operation-done-p}} \newcommand{\opdonep}{\lisp{operation-done-p}}
\newcommand{\defclass}{\lisp{defclass}} \newcommand{\defclass}{\lisp{defclass}}
\newcommand{\defmethod}{\lisp{defmethod}} \newcommand{\defmethod}{\lisp{defmethod}}
\newcommand{\fmakunbound}{\lisp{fmakunbound}} \newcommand{\fmakunbound}{\lisp{fmakunbound}}
\newcommand{\mergepathnames}{\lisp{mer\-ge-path\-na\-mes}}
\newcommand{\mergepathnamesstar}{\lisp{mer\-ge-path\-na\-mes*}}
\newcommand{\around}{\lisp{:around}} \newcommand{\around}{\lisp{:around}}
\newcommand{\append}{\lisp{append}} \newcommand{\append}{\lisp{append}}
\newcommand{\unintern}{\lisp{unintern}} \newcommand{\unintern}{\lisp{unintern}}
...@@ -84,26 +93,17 @@ ...@@ -84,26 +93,17 @@
\begin{document} \begin{document}
\conferenceinfo{ILC '10}{October 2010, Reno, NV.} \conferenceinfo{ILC'10,} {October 19--21, 2010, Reno/Tahoe, Nevada, USA.}
\CopyrightYear{2010} \CopyrightYear{2010}
\crdata{Copyright 2010, ALU.} \copyrightdata{978-1-4503-0470-2/10/10}
\toappear{} \title{Evolving {\ASDF}: More Cooperation, Less Coordination}
%\title{{\ASDFii}: Evolving an API to Improve Social Interactions}
\title{Evolving {\ASDF}: more Cooperation, less Coordination}
\numberofauthors{2}
\author{ \authorinfo{\frr}
\alignauthor {ITA Software}
{\frr} \\ {fare@itasoftware.com}
\affaddr{ITA Software} \\ \authorinfo{\rpg}
\email{fare@itasoftware.com} {SIFT, LLC}
\alignauthor {rpgoldman@sift.info}
{\rpg} \\
\affaddr{SIFT, LLC} \\
\email{rpgoldman@sift.info}
}
\maketitle \maketitle
...@@ -214,7 +214,7 @@ suggestions for future improvements to {\ASDF}, and a brief conclusion. ...@@ -214,7 +214,7 @@ suggestions for future improvements to {\ASDF}, and a brief conclusion.
\input{upgrade} \input{upgrade}
\pagebreak[4] %\pagebreak[4]
\section{Interface Modifications} \section{Interface Modifications}
\subsection{Objectives and limitations} \subsection{Objectives and limitations}
...@@ -273,12 +273,12 @@ Some {\ASDF} system definers attempted ...@@ -273,12 +273,12 @@ Some {\ASDF} system definers attempted
to work around these problems to work around these problems
by explicitly providing pathnames to {\ASDF} by explicitly providing pathnames to {\ASDF}
using the all-powerful ``\verb|#.|'' read-time evaluation using the all-powerful ``\verb|#.|'' read-time evaluation
and \lisp{make-pathname} and \lisp{merge-pathnames} to build pathnames manually. and \lisp{make-pathname} and \mergepathnames{} to build pathnames manually.
This provides portably defined syntax, but at the This provides portably defined syntax, but at the
expense of extremely cumbersome definitions. expense of extremely cumbersome definitions.
Even adopting this expedient, programmers Even adopting this expedient, programmers
would often fail to produce a portable system definition, would often fail to produce a portable system definition,
because of the subtle semantics of \lisp{merge-pathnames}. because of the subtle semantics of \mergepathnames{}.
In particular, common, apparently reasonably definitions would In particular, common, apparently reasonably definitions would
work on Unix platforms yet could fail spectacularly on Windows machines, work on Unix platforms yet could fail spectacularly on Windows machines,
yielding pathnames with the wrong host and device. yielding pathnames with the wrong host and device.
...@@ -289,16 +289,16 @@ from \lisp{*default-pathname-defaults*}. ...@@ -289,16 +289,16 @@ from \lisp{*default-pathname-defaults*}.
a portable notion of a relative path independent from a host and device, a portable notion of a relative path independent from a host and device,
so there is no portable syntax for specifying such paths. so there is no portable syntax for specifying such paths.
We therefore built a new \lisp{merge-pathnames*} We therefore built a new \mergepathnamesstar{}
to replace \lisp{merge-pathnames}. to replace \mergepathnames{}.
Unlike the latter, \lisp{merge-pathnames*} considers relative pathnames Unlike the latter, \mergepathnamesstar{} considers relative pathnames
as \emph{not} specifying host and device. as \emph{not} specifying host and device.
Typically modern computer users do not wish to specify hosts or devices when Typically modern computer users do not wish to specify hosts or devices when
working with relative pathnames, working with relative pathnames,
but that is not supported portably by {\CL} pathnames. but that is not supported portably by {\CL} pathnames.
On top of \lisp{merge-pathnames*}, On top of \mergepathnamesstar{},
we built and formally specified a mechanism, we built and formally specified a mechanism,
\lisp{merge-component-name-type}, for users to provide \lisp{merge-component-na\-me-ty\-pe}, for users to provide
such relative pathnames in a portable syntax, such relative pathnames in a portable syntax,
and have them merged properly with the rest of a component specification. and have them merged properly with the rest of a component specification.
...@@ -476,9 +476,9 @@ The mechanism for controlling output locations ...@@ -476,9 +476,9 @@ The mechanism for controlling output locations
is based on clever design by the original {\ASDF} author. is based on clever design by the original {\ASDF} author.
For {\compileOp} operations on {\clSourceFile} components, For {\compileOp} operations on {\clSourceFile} components,
{\ASDF} will direct the {\CL} compiler to compile {\ASDF} will direct the {\CL} compiler to compile
the file pointed to by the \lisp{component-pathname} and write it to the the file pointed to by the \lisp{component-path\-name} and write it to the
location pointed to by the \lisp{output-files} generic function. location pointed to by the \lisp{output-files} generic function.
By defining an \texttt{around} method for \lisp{output-files}, By defining an \texttt{around} method for \lisp{output-fi\-les},
it is possible to redirect where {\ASDF} stores its outputs: it is possible to redirect where {\ASDF} stores its outputs:
such a method may apply some pathname translations such a method may apply some pathname translations
to each of the considered pathnames and to each of the considered pathnames and
...@@ -706,7 +706,7 @@ or the definition of a global variable based on \lisp{*load-truename*} ...@@ -706,7 +706,7 @@ or the definition of a global variable based on \lisp{*load-truename*}
in a system's \file{.asd} file; in a system's \file{.asd} file;
but these were cumbersome and black art but these were cumbersome and black art
that were reinvented over and over. that were reinvented over and over.
We have added \lisp{system-relative-pathname} to the {\ASDF} API We have added \lisp{system-relative-path\-na\-me} to the {\ASDF} API
to make this easier. to make this easier.
It accepts a portable relative pathname syntax and helps find files It accepts a portable relative pathname syntax and helps find files
in their input locations in their input locations
...@@ -871,7 +871,7 @@ we must abstract those discrepancies away.} ...@@ -871,7 +871,7 @@ we must abstract those discrepancies away.}
Most importantly, and as mentioned in Section \ref{sec:pathnames} above, Most importantly, and as mentioned in Section \ref{sec:pathnames} above,
we had to implement our own well-defined syntax and semantics we had to implement our own well-defined syntax and semantics
for specifying and using relative pathnames whose type component for specifying and using relative pathnames whose type compo\-nent
may have been independently specified. may have been independently specified.
We also had to either rebind or shadow symbols for redefined functions We also had to either rebind or shadow symbols for redefined functions
depending on implementation as discussed in Section \ref{sec:upgradeability}. depending on implementation as discussed in Section \ref{sec:upgradeability}.
...@@ -931,9 +931,9 @@ Similarly, on Windows, support for shortcuts had to go into the core. ...@@ -931,9 +931,9 @@ Similarly, on Windows, support for shortcuts had to go into the core.
With all the things we added, With all the things we added,
{\ASDF} almost doubled in size since we started working on {\ASDFii}, {\ASDF} almost doubled in size since we started working on {\ASDFii},
and almost quadrupled since the original author left. and almost quadrupled since the original author left.
Our release 2.008 is 146448 byte long; Our release 2.008 is 146448 bytes long;
1.369, the last release by Gary King was 77079 byte long; 1.369, the last release by Gary King was 77079 bytes long;
the last version by Daniel Barlow, in 2004, was 38881 byte long. the last version by Daniel Barlow, in 2004, was 38881 bytes long.
\label{poiu} \label{poiu}
...@@ -1496,14 +1496,14 @@ If you do so, though, please be conscious of its central social role, and ...@@ -1496,14 +1496,14 @@ If you do so, though, please be conscious of its central social role, and
when changing it ``\textit{Primum non nocere}'' --- First, do no harm. when changing it ``\textit{Primum non nocere}'' --- First, do no harm.
We found this to be harder than it first appeared. We found this to be harder than it first appeared.
\paragraph{Acknowledgments} \acks%\paragraph{Acknowledgments}
\label{sec:acknowledgments} \label{sec:acknowledgments}
We thank Vadim Nasardinov, Ethan Schwartz, Scott McKay, Dan Barlow, We thank Vadim Nasardinov, Ethan Schwartz, Scott McKay, Dan Barlow,
and the anonymous reviewers for comments and suggestions. and the anonymous reviewers for comments and suggestions.
\bibliographystyle{abbrvurl} \bibliographystyle{abbrvnat}
\bibliography{asdf} \bibliography{asdf}
\end{document} \end{document}
This diff is collapsed.
This diff is collapsed.
...@@ -357,7 +357,7 @@ it doesn't cause any significant user-visible pause, ...@@ -357,7 +357,7 @@ it doesn't cause any significant user-visible pause,
since the user is compiling {\ASDF} and (presumably lots of other code with it); since the user is compiling {\ASDF} and (presumably lots of other code with it);
the slight added delay is not perceptible. the slight added delay is not perceptible.
The {\CL} protocol for class redefinition is relatively well-designed The {\CL} protocol for class redefinition is relatively well-de\-sig\-ned
and quite effectively handles the difficult problem of schema upgrade and quite effectively handles the difficult problem of schema upgrade
that other programming languages do not dare to tackle. that other programming languages do not dare to tackle.
However, the schema upgrade However, the schema upgrade
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment