CLIM performs all of its character-based input and output operations on objects called streams. Streams are divided into two layers, the basic stream protocol, which is character-based and compatible with existing Common Lisp programs, and the extended stream protocol, which introduces extended gestures such as pointer gestures and synchronous window-manager communication. [annotate]
This appendix describes the basic stream-based input and output protocol used by CLIM. The protocol is taken from the STREAM-DEFINITION-BY-USER proposal to the X3J13 committee, made by David Gray of TI. This proposal was not accepted by the X3J13 committee as part of the ANSI Common Lisp language definition, but many Lisp implementations do support it. For those implementations that do not support it, it is implemented as part of CLIM. [annotate]