Adds an implementation of SRFI 25 on top of Guile's native arrays. The
implementation does not introduce a disjoint type; Guile arrays and
SRFI-25 arrays can be used interchangably, though with different, partly
conflicting APIs.
* NEWS: Add preliminary, incomplete section on 2.0.12, noting the
addition of SRFI-25.
* doc/ref/srfi-modules.texi (SRFI-25): New node.
* module/srfi/srfi-25.scm: New file.
* test-suite/tests/srfi-25.test: New file.
* module/Makefile.am:
* test-suite/Makefile.am: Add new files.
Co-authored-by: Ludovic Courtès <ludo@gnu.org>
Suggested by Mike Gran <spk121@yahoo.com>.
* libguile/srfi-14.i.c: Regenerate for Unicode 8.0.0,
<ftp://unicode.org/Public/UNIDATA/UnicodeData.txt> with SHA256
38b17e1118206489a7e0ab5d29d7932212d38838df7d3ec025ecb58e8798ec20.
* libguile/strports.c (st_resize_port): Check that 'new_size' fits in a
size_t.
(st_end_input): Improve code clarity.
(st_seek): Check for overflow during computation of target position.
Check for invalid 'whence' argument. Resize the port when seeking to
a position beyond the end of the buffer. Check for overflow during
computation of new buffer size when resizing the port.
Fixes <http://bugs.gnu.org/20302>.
Reported by David Kastrup <dak@gnu.org>.
* libguile/r6rs-ports.c (bip_end_input): New static function.
(initialize_bytevector_input_ports): Register it.
(bip_seek): Rewrite to handle putback buffers, based on st_seek from
strports.c.
* libguile/Makefile.am (chknew-E chknew-SIG): Anchor the end of the
signal/error name pattern to only match alphanumeric symbols.
* libguile/cpp-SIG.syms (SIGEV_MAX_SIZE, SIGEV_NONE): Remove.
(SIGEV_PAD_SIZE, SIGEV_SIGNAL, SIGEV_THREAD): Likewise.
(SIGEV_THREAD_ID): Likewise.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Fixes <http://bugs.gnu.org/21114>.
* libguile/Makefile.am (chknew-E chknew-SIG): Remove the line
continuation after the targets, and include numbers in the
recipe's signal/error regexp to catch names like E2BIG.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
* module/web/response.scm (make-delimited-input-port)[close]: Replace
erroneous self-recursive call with a call to 'close-port'.
* test-suite/tests/web-response.test ("example-1")["response-body-port +
close"]: New test.
Reported by Panicz Maciej Godek <godek.maciek@gmail.com> in
<http://lists.gnu.org/archive/html/guile-user/2015-09/msg00017.html>.
* module/ice-9/psyntax.scm (match-each+): Fix the case where a non-pair
syntax object is encountered in a dotted tail.
* module/ice-9/psyntax-pp.scm: Regenerate.
When encountering the #!r6rs directive, apply the appropriate reader
settings to the port.
* libguile/read.scm (read-string-as-list): New helper procedure.
(scm_read_shebang): Set reader options implied by the R6RS syntax
upon encountering the #!r6rs directive.
* test-suite/tests/reader.test (per-port-read-options): Add tests for
the #!r6rs directive.
* libguile/foreign.c (scm_sizeof): Make sure the overall size is a
multiple of the alignment of the structure.
* test-suite/tests/foreign.test: Test size of { double, int8 }.
* module/system/base/types.scm (cell->object): Use 'get-bytevector-n'
instead of 'get-bytevector-all', so that the zero-length case does not
return EOF.
Fixes <http://bugs.gnu.org/19646>.
Reported by John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>.
* test-suite/tests/posix.test ("affinity")["setaffinity"]: Wrap in
'catch' and throw 'unresolved upon ENOSYS.
Before that it would occasionally fail because the "$target" (not the
intermediate temporary file) would be produced.
* test-suite/standalone/test-guild-compile: Call 'pause' before 'sleep'
in test program.
Although popular compilers allow it as long as the expression is of type
void, it violates C99 and some compilers choke on it.
* libguile/numbers.c (scm_euclidean_divide, scm_floor_divide)
(scm_ceiling_divide, scm_truncate_divide, scm_centered_divide)
(scm_round_divide): Don't use the return statement with an expression
from functions with return type void.
The now obsolete RFC2616 section 14.30 required that the Location
header be an absoluteURI, but RFC7231 section 7.1.2 allows it to
contain any URI-reference.
* module/web/http.scm: Use 'declare-relative-uri-header!' to declare
the "Location" header.
* libguile/libguile-2.0-gdb.scm (make-scm-pretty-printer-worker):
(%scm-pretty-printer): Refactor to avoid printing all struct / array
fields by hinting these as arrays. The resulting print is not as
faithful to the original data, but that's probably OK.