Content preview: Hi, I am one of the CDR editors, but I haven't seen your email.
I have double-checked the email forwarding just now, and it seems to work.
folder, because it has a retention period of a week. [...]
I am one of the CDR editors, but I haven't seen your email. I have double-checked the email forwarding just now, and it seems to work. I cannot check anymore whether your email accidentally landed in my spam folder, because it has a retention period of a week.
Could you try to resend your CDR proposal, and then send a notification to my private address as well? If I then still don't receive your proposal via the editors email address, I have to dig deeper to try to see where the problem is.
In any case, I will process the CDR proposal next weekend.
Post by Sam SteingoldIn 2004 I submitted a CLRFI which was then accepted as CLRFI-2.
It specified a new function COMPILED-FILE-P which was supposed to be
Function
(compiled-file-p file-name) ==> valid-p
Returns
true if the file appears to be a valid compiled file
(i.e., exists, is readable, and the contents appears to be
valid for this implementation),
false otherwise.
Implementations are required to inspect the contents
(e.g., checking just the pathname type is not sufficient).
Although the completeness of the inspection is not required,
this function should be able to detect,
e.g., file format changes between versions.
I re-submitted the spec to the CDR editors a week ago.
No response so far.
The detailed html spec is attached.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Function COMPILED-FILE-P</title>
<meta name="author" value="Sam Steingold"/>
</head>
<body>
<h1>Function <code>COMPILED-FILE-P</code></h1>
<h2>Author</h2>
<p>Sam Steingold</p>
<h2>Related</h2>
<p>ANSI Common Lisp standard function <code>compile-file</code>.</p>
<h2>Abstract</h2>
<p>A facility to determine whether a file is a valid compiled file for
the specific implementation.</p>
<h2>Rationale</h2>
<p>Build tools, like <code>defsystem</code> or <code>asdf</code>,
have to determine whether a file needs to be recompiled.</p>
<p>Obviously, when the compiled file is older than the
source file, recompilation is in order.</p>
<p>Alas, there are other situations when this might be necessary, e.g.,
when the implementation changes the compiled file format or when two
implementations use the same name for their compiled files
(<code>.fasl</code> is used by both <code>SBCL</code> and <code>ACL</code>).
</p>
<h3>Current Practice</h3>
<p>Implementation-dependent.</p>
<h3>Cost of adoption</h3>
<p>Probably tiny: an implementation must be able to check for compiled
file validity, so all it takes is to export the necessary
functionality, e.g.:</p>
<pre id="compiled-file-p-clisp">
#+clisp
(defun compiled-file-p (file-name)
(with-open-file (in file-name :direction :input :if-does-not-exist nil)
(and in (char= #\( (peek-char nil in))
(let ((form (ignore-errors (read in nil nil))))
(and (consp form)
(eq (car form) 'SYSTEM::VERSION)
(null (nth-value 1 (ignore-errors (eval form)))))))))
</pre>
<h3>Cost of non-adoption</h3>
<p>Users will suffer random errors when trying to load invalid binary
files.</p>
<h2>Specification</h2>
<p>Function</p><pre>
</pre>
<p>Returns</p><dl>
<dt><code>true</code></dt><dd>if the file appears to be a valid compiled file
(i.e., exists, is readable, and the contents appears to be
valid for this implementation),</dd>
<dt><code>false</code></dt><dd>otherwise.</dd></dl>
<p>Implementations are required to inspect the contents
(e.g., checking just the pathname type is not sufficient).
Although the completeness of the inspection is not required,
this function should be able to detect,
e.g., file format changes between versions.</p>
<h3>Exceptional situations</h3> <ul>
<li>signals an error of type <code>type-error</code>
when the argument is not a <em>pathname designator</em>.</li>
</ul>
<h3>Examples</h3>
<pre>
</pre>
<h2>Reference Implementation</h2>
<p>See <a href="#compiled-file-p-clisp">above</a>.</p>
<h2>History</h2>
<p>This used to be <strong>CLRFI-2</strong> (in 2004).</p>
<h2>Notes</h2>
<p>The trivial implementation:</p>
<pre>
(defun compiled-file-p (file-name)
(not (nth-value 1 (ignore-errors (load file-name)))))
</pre>
<p>is wrong because,</p>
<ol>
even when <code>foo.lisp</code> contains calls to <code>error</code>,<pre>
(compiled-file-p (compile-file "foo.lisp"))
</pre>should still return <code>T</code>.</li>
<li>this is not side-effect-free, i.e., this may define new functions and
macros (or, worse yet, redefine some existing functions and macros or
execute some malicious code).</li></ol>
</body>
</html>
--
Sam Steingold (http://sds.podval.org/) on Ubuntu 12.04 (precise) X 11.0.11103000
http://www.childpsy.net/ http://mideasttruth.com http://ffii.org
http://www.memritv.org http://jihadwatch.org http://camera.org http://memri.org
You cannot fire me. Slaves are not fired. Slaves are sold.
_______________________________________________
pro mailing list
http://lists.common-lisp.net/cgi-bin/mailman/listinfo/pro