Hi Tobias,
On Fri, Oct 23, 2009 at 11:38 AM, Tobias C. Rittweiler tcr@freebits.de wrote:
Erik Huelsmann ehuels@gmail.com writes:
I'm hoping to be able to publish binaries when releasing 0.17. However, I think we're not yet completely ready to do so. We're missing:
* Usage descriptions in terms of an INSTALL file, or something similar * Build targets, like we have for the src archives, for abcl-bin-<version>.zip and abcl-bin-<version>.tar.gz * Anything else?
As for the archives, I'd like them to contain many of our top-level files (COPYING, README, etc) and instead of the subdirectories, I think it should contain abcl.jar
Comments?
Has there been any more work on the gray stream issue since last we talked about it? IIRC, the issue was that gray streams were not known to the type system to be true subtypes of STREAM, i.e. (typep <gray-output-stream> 'stream) returned NIL.
I did some investigations after we talked about it. In order to use the existing code base, it would be necessary to inherit fundamental-stream from STREAM. However, ABCL rejects that as a valid declaration. I'm unsure about lifting that requirement, because I'm very insecure about the side-effects of inheriting from system classes. Do you know papers or web-articles about the subject?
Then, I checked inheriting from a structure; I did:
(defstruct b ())
(defclass s (standard-object b) ())
(b-p (make-instance 's)) --> T
So, if STREAM were a structure, it could be made to work. After that, I didn't look into it anyfurther, because I'm somewhat stuck: you need streams and a reader to be able to bootstrap the lisp. However, declaring structures is really only viable in lisp.
All in all, from where I stood 2 weeks ago, it looked like this was going to be a larger project than I originally intended. However, I'm open to ideas which might limit the effort - apart from lifting the restriction to inherit from system classes.
In SBCL, streams are structures. Something similar would be great for ABCL, because things like echo and broadcast streams could be implemented in Lisp instead of in Java.
Maybe the shortest-term solution would be to override TYPEP, installing a GRAY-TYPEP function in the function slot of TYPEP which returns TRUE when 'STREAM is requested and the argument is of type FUNDAMENTAL-STREAM. However, I'm hesitant of the can of worms that may open.
Bye,
Erik.