* libguile/bytevectors.c:
* libguile/eval.c:
* libguile/goops.c:
* libguile/i18n.c:
* libguile/load.c:
* libguile/memoize.c:
* libguile/modules.c:
* libguile/ports.c:
* libguile/print.c:
* libguile/procs.c:
* libguile/programs.c:
* libguile/read.c:
* libguile/script.c:
* libguile/srfi-14.c:
* libguile/stacks.c:
* libguile/strings.c:
* libguile/throw.c:
* libguile/vm.c: Use scm_from_latin1_symboln to make symbols from string
literals, because they aren't in the user's locale -- they are in
ASCII, and we can optimize this case.
* libguile/vm-i-loader.c: Also use scm_from_latin1_symboln when loading
narrow symbols.
* libguile/symbols.c (lookup_interned_latin1_symbol): New helper.
(scm_from_latin1_symboln): Use lookup_interned_latin1_symbol, so we
avoid allocating a string in that case.
* libguile/strings.h:
* libguile/strings.c (scm_from_latin1_string, scm_to_latin1_string): New
functions, in terms of the latin1_stringn variants.
(scm_from_utf8_string, scm_from_utf8_stringn)
(scm_to_utf8_string, scm_to_utf8_stringn): New functions.
(scm_i_from_utf8_string, scm_i_to_utf8_string): Removed these internal
functions.
(scm_from_stringn): Handle -1 as a length. Unlike the previous
behavior of scm_from_locale_string (NULL), which returned the empty
string, we now raise an error. The null pointer is not the same as
the empty string.
* libguile/stime.c (scm_strftime, scm_strptime): Adapt to publishing of
utf8 functions.
* doc/ref/web.texi (HTTP): Add an example for declaring a header, and
adapt to read-header change.
* module/web/http.scm (read-header): Return EOF for both values if there
are no more headers, instead of #f.
(read-headers): Adapt.
* doc/ref/web.texi (Types and the Web): Fix spacing.
(URIs): Give default values, and clarify a number of procedure docs.
Update "encoding" name, and string->uri name.
* module/web/uri.scm (call-with-encoded-output-string, encode-string)
(decode-string, uri-decode, uri-encode): Change all instances of
"charset" to "encoding", as variables and arguments.
Followup to 8891bd1b16 ("Fix ECMAScript
object creation.").
* module/language/ecmascript/compile-tree-il.scm (comp): Use `@implv'
for `new-object'. Suggested by Kan-Ru Chen <kanru@kanru.info>.
* module/language/ecmascript/compile-tree-il.scm (compile-tree-il):
generate correct tree-il for construction of new objects.
* test-suite/tests/ecmascript.test (ecompile): Add pattern with EXPECTED
omitted.
("compiler"): test whether we generate new objects correctly.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Suggested by Noah Lavine <noah.b.lavine@gmail.com>.
* doc/ref/api-data.texi (String Searching): Mention the return value of
`string-index', `string-index-right', and `string-rindex' when no
match is found.
* libguile/srfi-13.c (scm_string_index, scm_string_index_right,
scm_string_rindex): Adjust docstring accordingly.
* module/ice-9/format.scm (format): Move the port and output-col to let*
vars, again removing a set!. We will probably move more state vars to
the let*, to let the procedures exist in a more fixed-point style.
* module/ice-9/format.scm (format): Remove the need to save a copy of
the incoming arguments, because they are available as local
variables. Do the check early for the format-string actually being a
string.
* module/ice-9/format.scm (format): Add port and format-string as formal
arguments. Seems also to have triggered a reindent. Formally
deprecate omitting the port, as it's usually an error.
* test-suite/tests/format.test ("format basic output")
("format basic output", "~{ iteration"): Fix up tests that omitted the
destination port.
* module/ice-9/format.scm (format:symbol-case-conv)
(format:iobj-case-conv): Remove these exports, they were not used.
(format:expch): Remove this one, though it was used.
(format:floats, format:complex-numbers, format:radix-pref): Inline
these "configuration variables" into the format body.
* module/ice-9/futures.scm (%futures): Change from a list to a queue.
(register-future!, process-futures, touch): Adjust accordingly.
(unregister-future!): Remove.