#300: Gray streams aren't streams -----------------------+---------------------------------------------------- Reporter: rschlatte | Owner: mevenson Type: defect | Status: new Priority: major | Milestone: Component: streams | Version: Keywords: | -----------------------+---------------------------------------------------- {{{ (require :gray-streams) (subtypep 'gray-streams:fundamental-stream 'stream) ;; => NIL, T }}} This doesn't matter for flexi-streams and other libs, but cl-store has a few DECLAREs. I don't know exactly when a type declaration is an assertion in ABCL, but at least it is for a stream with nonzero safety.
(Reported by James M. Lawrence)
#300: Gray streams aren't streams -----------------------+---------------------------------------------------- Reporter: rschlatte | Owner: mevenson Type: defect | Status: new Priority: major | Milestone: 1.2.0 Component: streams | Version: 1.2.0-dev Keywords: streams | -----------------------+---------------------------------------------------- Changes (by mevenson):
* keywords: => streams * version: => 1.2.0-dev * milestone: => 1.2.0
Comment:
This is a longstanding problem, that I will try to address in the abcl-1.2.0 release cycle, as it messes up parts of FLEXI-STREAMS handling. Now that MOP is mature, it should be a bit easier to wedge the necessary work in.
See #166, #188, #223, #233.
A draft of the proposed architectural changes in [source:/trunk/abcl/doc/design/streams].
#300: Gray streams aren't streams -----------------------+---------------------------------------------------- Reporter: rschlatte | Owner: mevenson Type: defect | Status: new Priority: major | Milestone: 1.2.0 Component: streams | Version: 1.2.0-dev Keywords: streams | -----------------------+----------------------------------------------------
Comment(by mevenson):
Observed that the behavior changes once a GRAY-STREAM instance has been created:
{{{ CL-USER> (require :gray-streams) ; Loading jar:file:/home/evenson/work/abcl/dist/abcl.jar!/org/armedbear/lisp/gray- streams.abcl ... ; Loaded jar:file:/home/evenson/work/abcl/dist/abcl.jar!/org/armedbear/lisp/gray- streams.abcl (0.396 seconds) ("GRAY-STREAMS") CL-USER> (subtypep 'gray-streams:fundamental-stream 'stream) NIL T CL-USER> (make-instance 'gray-streams:fundamental-stream) #<GRAY-STREAMS:FUNDAMENTAL-STREAM {3FF6929C}> CL-USER> (subtypep 'gray-streams:fundamental-stream 'stream) T T }}}
maybe this exposes a problem with CLOS?
#300: Gray streams aren't streams -----------------------+---------------------------------------------------- Reporter: rschlatte | Owner: mevenson Type: defect | Status: new Priority: major | Milestone: 1.2.0 Component: streams | Version: 1.2.0-dev Keywords: streams | -----------------------+----------------------------------------------------
Comment(by mevenson):
MOP:FINALIZE-INHERITANCE is never called in gray-streams.lisp, so there is not a valid class precedence list.
Should we finalize the inheritance of all the classes in GRAY-STREAMS?
#300: Gray streams aren't streams ------------------------+--------------------------------------------------- Reporter: rschlatte | Owner: mevenson Type: defect | Status: closed Priority: major | Milestone: 1.2.0 Component: streams | Version: 1.2.0-dev Resolution: fixed | Keywords: streams ------------------------+--------------------------------------------------- Changes (by mevenson):
* status: new => closed * resolution: => fixed
Comment:
(In [14435]) Explicitly finalize inheritance for classes in GRAY-STREAMS.
Fixes #300.
armedbear-ticket@common-lisp.net