#54: pprint.lisp incompatible with gray-streams.lisp ------------------------+--------------------------------------------------- Reporter: ehuelsmann | Owner: somebody Type: defect | Status: new Priority: major | Milestone: Component: other | Version: Keywords: | ------------------------+--------------------------------------------------- pprint.lisp special-cases the XP-STRUCTURE argument type for the stream argument specified to all the stream functions.
Although SBCL uses largely the same approach, it uses a (slightly) different approach, which is important in the details. (Isn't that where the devil usually is?)
The difference between ABCL and SBCL is that SBCL - although it uses largely the same structure to store its pprinter values - this structure extends the structure which is used to represent streams. In ABCL, this structure is a structure by itself. To compensate for the fact that the structure isn't recognised as a stream itself, all stream functions special case the XP-STRUCTURE argument handling.
Proposed solution: make streams based on dispatch tables stored in structures, just as SBCL does. This way, most of our streams "stuff" can be implemented in Lisp, instead of Java. As a bonus, this issue can be resolved along the same lines as SBCL does.