io: stream-contents, -seekable?, -length generics stream-contents is extremely slow on decoder streams when implemented with each-block, and it can be implemented very quickly for streams of known length using stream-read-unsafe. Make it generic and provide some off-the-shelf implementations using each-block, a read1 loop, or length + read-unsafe. Provide new stream-seekable? and stream-length generics that can be implemented by stream implementations that know their size.
io: stream-contents, -seekable?, -length generics
stream-contents is extremely slow on decoder streams when implemented with each-block, and it can be implemented very quickly for streams of known length using stream-read-unsafe. Make it generic and provide some off-the-shelf implementations using each-block, a read1 loop, or length + read-unsafe. Provide new stream-seekable? and stream-length generics that can be implemented by stream implementations that know their size.

slavapestov/factor,nicolas-p/factor,AlexIljin/factor,factor/factor,slavapestov/factor,nicolas-p/factor,dch/factor,slavapestov/factor,sarvex/factor-lang,bjourne/factor,sarvex/factor-lang,slavapestov/factor,bjourne/factor,tgunr/factor,slavapestov/factor,tgunr/factor,AlexIljin/factor,AlexIljin/factor,slavapestov/factor,dch/factor,factor/factor,sarvex/factor-lang,slavapestov/factor,bjourne/factor,mrjbq7/factor,mrjbq7/factor,AlexIljin/factor,bjourne/factor,sarvex/factor-lang,AlexIljin/factor,AlexIljin/factor,sarvex/factor-lang,bpollack/factor,mrjbq7/factor,nicolas-p/factor,mrjbq7/factor,nicolas-p/factor,nicolas-p/factor,mrjbq7/factor,factor/factor,bpollack/factor,dch/factor,dch/factor,tgunr/factor,nicolas-p/factor,AlexIljin/factor,factor/factor,bjourne/factor,bpollack/factor,bpollack/factor,bjourne/factor,nicolas-p/factor,factor/factor,tgunr/factor,bpollack/factor,dch/factor,tgunr/factor,sarvex/factor-lang,mrjbq7/factor,bjourne/factor,sarvex/factor-lang,factor/factor,dch/factor,bpollack/factor,tgunr/factor,bpollack/factor