summaryrefslogtreecommitdiff
path: root/NEWS
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2016-04-08 20:56:41 +0200
committerAndy Wingo <wingo@pobox.com>2016-04-08 20:56:41 +0200
commitf5a0c167f62fc3c6a9874bfc7b3f43f3f6bacda2 (patch)
treebfab04d336f1ef478c2571c59749cb5547680f05 /NEWS
parent8399e7af51df3956417e8776ac506e04f4c3bdce (diff)
Update NEWS for changes to port buffering.
* NEWS: Update.
Diffstat (limited to 'NEWS')
-rw-r--r--NEWS37
1 files changed, 34 insertions, 3 deletions
diff --git a/NEWS b/NEWS
index c5a2a3f38..b1ea7db62 100644
--- a/NEWS
+++ b/NEWS
@@ -12,6 +12,13 @@ releasing 2.1.3.
Changes in 2.1.3 (changes since the 2.1.2 alpha release):
* Notable changes
+** All ports are now buffered, can be targets of `setvbuf'
+
+See "Buffering" in the manual, for more. A port with a buffer size of 1
+is equivalent to an unbuffered port. Ports may set their default buffer
+sizes, and some ports (for example soft ports) are unbuffered by default
+for historical reasons.
+
* New deprecations
** `_IONBF', `_IOLBF', and `_IOFBF'
@@ -19,18 +26,27 @@ Instead, use the symbol values `none', `line', or `block', respectively,
as arguments to the `setvbuf' function.
* Incompatible changes
-** Remove `scm_set_port_mark'
+** API to define new port types from C has changed
+
+In Guile 2.2 the API used to define new port types has changed. This
+largely shouldn't affect port users, modulo the buffering port mentioned
+above. However, in order to enable all ports to have buffers
+implemented in the same way, which is a prerequisite to non-blocking
+I/O, the port API has changed. See "I/O Extensions" in the manual, for
+full details. Notably:
+
+*** Remove `scm_set_port_mark'
Port mark functions have not been called since the switch to the BDW
garbage collector.
-** Remove `scm_set_port_equalp'
+*** Remove `scm_set_port_equalp'
Likewise port equal functions weren't being called. Given that ports
have their own internal buffers, it doesn't make sense to hook them into
equal? anyway.
-** Remove `scm_set_port_free'
+*** Remove `scm_set_port_free'
It used to be that if an open port became unreachable, a special "free"
function would be called instead of the "close" function. Now that the
@@ -41,6 +57,21 @@ overhead. For that reason Guile exposes a new interface,
`scm_set_port_needs_close_on_gc', allowing port implementations to
indicate to Guile whether they need closing on GC or not.
+*** Remove `scm_set_port_end_input', `scm_set_port_flush'
+
+As buffering is handled by Guile itself, these functions which were to
+manage an implementation-side buffer are no longer needed.
+
+*** Change prototype of `scm_make_port_type'
+
+The `read' (renamed from `fill_input') and `write' functions now return
+void and take a port buffer.
+
+*** Remove `SCM_INITIAL_PUTBACK_BUF_SIZE', `SCM_READ_BUFFER_EMPTY_P'
+
+Probably nobody used these.
+
+
Changes in 2.1.2 (changes since the 2.1.1 alpha release):