mirror of
git://git.code.sf.net/p/sbcl/sbcl
synced 2026-09-10 07:26:40 -04:00
Thanks to David Smith and Andreas Bogkt who diagnosed the memory
leaks this patch fixes.
* Instead of having FD-STREAM objects directly hold onto input and
output buffer SAPs and head/tail indexes, use BUFFER objects which
contain the SAP, size of the memory area, head/tail indexes, and
are have finalizers to deallocate the system memory assosicated
with the SAP. (This fixes system memory leaks when streams are not
properly closed.)
* Make CLOSE :ABORT release the output queue associated with the
stream. (This was another memory leak in the old system: now
the finalizers make not doing this safe, but it's still better
to recycle the buffers.)
* Slightly reduce lock contention by grabbing the *AVAILABLE-BUFFERS*
lock only if there is something there right before the lock is
taken, and by doing allocation outside the lock.
* Rename and refactor FROB-OUTPUT and friends:
BUFFER-OUTPUT is the main interface function, which always
adds new output to the current buffer / output queue.
WRITE-OR-BUFFER-OUTPUT tries to write immediately, falling
back to buffering if writing is not possible.
WRITE-OUTPUT-FROM-QUEUE is called by the SERVE-EVENT
system to deal with output queue.
FLUSH-OUTPUT-BUFFER writes the current buffer out if possible,
queues it otherwise. Ensures that the output buffer of
the stream is empty on return (and returns that buffer).
* Deprecate SB-SYS:OUTPUT-RAW-BYTES. There doesn't seem to be any
real reason to export this kind of stuff.
* Increment the fasl version.
21 lines
1.1 KiB
Plaintext
21 lines
1.1 KiB
Plaintext
;;; This is the master value for LISP-IMPLEMENTATION-VERSION. It's
|
|
;;; separated into its own file here so that it's easy for
|
|
;;; text-munging make-ish or cvs-ish scripts to find and tweak it. For
|
|
;;; the convenience of such scripts, only a simple subset of Lisp
|
|
;;; reader syntax should be used here: semicolon-delimited comments,
|
|
;;; possible blank lines or other whitespace, and a single
|
|
;;; double-quoted string value alone on its own line.
|
|
;;;
|
|
;;; ANSI says LISP-IMPLEMENTATION-VERSION can be NIL "if no
|
|
;;; appropriate and relevant result can be produced", but as long as
|
|
;;; we control the build, we can always assign an appropriate and
|
|
;;; relevant result, so this must be a string, not NIL.
|
|
;;;
|
|
;;; Conventionally a string like "0.6.6", with three numeric fields,
|
|
;;; is used for released versions, and a string like "0.6.5.xyzzy",
|
|
;;; with something arbitrary in the fourth field, is used for CVS
|
|
;;; checkins which aren't released. (And occasionally for internal
|
|
;;; versions, especially for internal versions off the main CVS
|
|
;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
|
|
"1.0.8.16"
|