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
*.bbl
*.blg
*.out
*~
......@@ -184,10 +184,12 @@ We will discuss this further in Section~\ref{sec:plan-generation}.
:licence "Public Domain"
:depends-on (foo-utils)
:components ((:file "packages")
(:file "macros" :depends-on ("packages"))
(:file "classes" :depends-on ("packages"))
(:file "methods" :depends-on ("macros"
"classes"))
(:file "macros"
:depends-on ("packages"))
(:file "classes"
:depends-on ("packages"))
(:file "methods"
:depends-on ("macros" "classes"))
(:module "main"
:depends-on ("macros")
:serial t
......
......@@ -45,7 +45,7 @@
A key inspiration for ASDF was {\mkdefsys}, Mark Kan\-tro\-witz's portable
{\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
general-purpose hardware. Prior to this (and substantially prior to a true
\emph{Common} Lisp), there were a number of different system-defining
......
\documentclass{sig-alternate}
\documentclass%[preprint]
{sigplanconf}
% Submission deadline: 2010-09-06
% length limit is 15pp
......@@ -9,6 +10,12 @@
\usepackage{alltt}
\usepackage{ifthen}
\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}
\setboolean{draft}{true}
......@@ -24,11 +31,13 @@
\newcommand{\file}[1]{\texttt{#1}}
\newcommand{\make}{\texttt{make}} % repeating the (1) was a bit unnerving
\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{\defclass}{\lisp{defclass}}
\newcommand{\defmethod}{\lisp{defmethod}}
\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{\append}{\lisp{append}}
\newcommand{\unintern}{\lisp{unintern}}
......@@ -84,26 +93,17 @@
\begin{document}
\conferenceinfo{ILC '10}{October 2010, Reno, NV.}
\conferenceinfo{ILC'10,} {October 19--21, 2010, Reno/Tahoe, Nevada, USA.}
\CopyrightYear{2010}
\crdata{Copyright 2010, ALU.}
\toappear{}
%\title{{\ASDFii}: Evolving an API to Improve Social Interactions}
\title{Evolving {\ASDF}: more Cooperation, less Coordination}
\numberofauthors{2}
\copyrightdata{978-1-4503-0470-2/10/10}
\title{Evolving {\ASDF}: More Cooperation, Less Coordination}
\author{
\alignauthor
{\frr} \\
\affaddr{ITA Software} \\
\email{fare@itasoftware.com}
\alignauthor
{\rpg} \\
\affaddr{SIFT, LLC} \\
\email{rpgoldman@sift.info}
}
\authorinfo{\frr}
{ITA Software}
{fare@itasoftware.com}
\authorinfo{\rpg}
{SIFT, LLC}
{rpgoldman@sift.info}
\maketitle
......@@ -214,7 +214,7 @@ suggestions for future improvements to {\ASDF}, and a brief conclusion.
\input{upgrade}
\pagebreak[4]
%\pagebreak[4]
\section{Interface Modifications}
\subsection{Objectives and limitations}
......@@ -273,12 +273,12 @@ Some {\ASDF} system definers attempted
to work around these problems
by explicitly providing pathnames to {\ASDF}
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
expense of extremely cumbersome definitions.
Even adopting this expedient, programmers
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
work on Unix platforms yet could fail spectacularly on Windows machines,
yielding pathnames with the wrong host and device.
......@@ -289,16 +289,16 @@ from \lisp{*default-pathname-defaults*}.
a portable notion of a relative path independent from a host and device,
so there is no portable syntax for specifying such paths.
We therefore built a new \lisp{merge-pathnames*}
to replace \lisp{merge-pathnames}.
Unlike the latter, \lisp{merge-pathnames*} considers relative pathnames
We therefore built a new \mergepathnamesstar{}
to replace \mergepathnames{}.
Unlike the latter, \mergepathnamesstar{} considers relative pathnames
as \emph{not} specifying host and device.
Typically modern computer users do not wish to specify hosts or devices when
working with relative 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,
\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,
and have them merged properly with the rest of a component specification.
......@@ -476,9 +476,9 @@ The mechanism for controlling output locations
is based on clever design by the original {\ASDF} author.
For {\compileOp} operations on {\clSourceFile} components,
{\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.
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:
such a method may apply some pathname translations
to each of the considered pathnames and
......@@ -706,7 +706,7 @@ or the definition of a global variable based on \lisp{*load-truename*}
in a system's \file{.asd} file;
but these were cumbersome and black art
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.
It accepts a portable relative pathname syntax and helps find files
in their input locations
......@@ -871,7 +871,7 @@ we must abstract those discrepancies away.}
Most importantly, and as mentioned in Section \ref{sec:pathnames} above,
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.
We also had to either rebind or shadow symbols for redefined functions
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.
With all the things we added,
{\ASDF} almost doubled in size since we started working on {\ASDFii},
and almost quadrupled since the original author left.
Our release 2.008 is 146448 byte long;
1.369, the last release by Gary King was 77079 byte long;
the last version by Daniel Barlow, in 2004, was 38881 byte long.
Our release 2.008 is 146448 bytes long;
1.369, the last release by Gary King was 77079 bytes long;
the last version by Daniel Barlow, in 2004, was 38881 bytes long.
\label{poiu}
......@@ -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.
We found this to be harder than it first appeared.
\paragraph{Acknowledgments}
\acks%\paragraph{Acknowledgments}
\label{sec:acknowledgments}
We thank Vadim Nasardinov, Ethan Schwartz, Scott McKay, Dan Barlow,
and the anonymous reviewers for comments and suggestions.
\bibliographystyle{abbrvurl}
\bibliographystyle{abbrvnat}
\bibliography{asdf}
\end{document}
This diff is collapsed.
This diff is collapsed.
......@@ -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);
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
that other programming languages do not dare to tackle.
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