[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Guile-commits] 01/02: Update NEWS for changes to port buffering.
From: |
Andy Wingo |
Subject: |
[Guile-commits] 01/02: Update NEWS for changes to port buffering. |
Date: |
Fri, 08 Apr 2016 19:05:46 +0000 |
wingo pushed a commit to branch wip-port-refactor
in repository guile.
commit f5a0c167f62fc3c6a9874bfc7b3f43f3f6bacda2
Author: Andy Wingo <address@hidden>
Date: Fri Apr 8 20:56:41 2016 +0200
Update NEWS for changes to port buffering.
* NEWS: Update.
---
NEWS | 37 ++++++++++++++++++++++++++++++++++---
1 files changed, 34 insertions(+), 3 deletions(-)
diff --git a/NEWS b/NEWS
index c5a2a3f..b1ea7db 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):