Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
asdf
ilc2010
Commits
38487b5a
Commit
38487b5a
authored
Oct 06, 2010
by
Robert P. Goldman
Browse files
Mods from the conference editor for new format.
parent
ff5eb11e
Changes
4
Hide whitespace changes
Inline
Side-by-side
asdf.tex
View file @
38487b5a
...
...
@@ -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
...
...
history.tex
View file @
38487b5a
...
...
@@ -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
...
...
main.tex
View file @
38487b5a
...
...
@@ -9,6 +9,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 +30,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-re
defi
ned-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
}}
...
...
@@ -85,25 +93,15 @@
\begin{document}
\conferenceinfo
{
ILC '10
}{
October 2010, Reno, NV.
}
\CopyrightYear
{
2010
}
\crdata
{
Copyright 2010, ALU.
}
\toappear
{}
%\title{{\ASDFii}: Evolving an API to Improve Social Interactions}
\copyrightyear
{
2010
}
\title
{
Evolving
{
\ASDF
}
: more Cooperation, less Coordination
}
\numberofauthors
{
2
}
\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 +212,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 +271,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 +287,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
\mergepathnames
star
{
}
to replace
\mergepathnames
{
}
.
Unlike the latter,
\mergepathnames
star
{
}
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
\mergepathnames
star
{
}
,
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 +474,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 +704,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-path
na
me
}
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 +869,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
}
.
...
...
@@ -1496,14 +1494,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
{
abbrv
url
}
\bibliographystyle
{
abbrv
nat
}
\bibliography
{
asdf
}
\end{document}
upgrade.tex
View file @
38487b5a
...
...
@@ -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
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment