This should also fix "condition is always true" warnings.
* libguile/vm-i-scheme.c (bv_u32_native_ref, bv_s32_native_ref,
bv_u32_native_set, bv_s32_native_set): Conditionalize use of
`BV_FIXABLE_INT_REF' vs. `BV_INT_REF' based on `SIZEOF_VOID_P'.
* libguile/threads.c (do_thread_exit): Deal with `t->mutexes' being a
weak list.
(fat_mutex_lock): Use weak-car pairs when building up `t->mutexes'.
* test-suite/tests/threads.test ("mutex-ownership")["mutex with owner
not retained (bug #27450)"]: New test.
* module/ice-9/boot-9.scm (set-module-eval-closure!): Add link to an
explanation.
* test-suite/tests/gc.test ("gc")["Unused modules are removed"]:
Increase the `cleanup' loop.
* test-suite/tests/encoding-escapes.test,
test-suite/tests/encoding-iso88591.test,
test-suite/tests/encoding-iso88597.test,
test-suite/tests/encoding-utf8.test: Switch to LGPLv3+ for the sake of
consistency.
* test-suite/tests/regexp.test (mysetlocale, set-latin-1): new functions
(with-latin1-locale): removed
(regexp-quote tests): try to print test names in locale but run tests
in ISO-8859-1.
* libguile/threads.c (scm_t_guile_ticket): Remove type.
(resume, scm_enter_guile, suspend, scm_leave_guile): Remove.
(scm_i_init_thread_for_guile): Set `t->top' to NULL, which has the
same effect as calling `scm_enter_guile ()'.
(scm_leave_guile_cleanup, scm_i_with_guile_and_parent): Remove
`scm_leave_guile ()' call.
* doc/ref/api-memory.texi (Garbage Collection
Functions)[scm_gc_protect_object]: Explain that it's equivalent to
storing in a global variable.
* doc/ref/api-smobs.texi (Smobs)[scm_set_smob_free]: Expand on the
relationship with `scm_gc_malloc ()'.
[scm_set_smob_mark]: Explain that it's usually not needed.
* gc-benchmarks/run-benchmark.scm (pretty-print-result)[ref-heap,
ref-time]: New variable.
[distance, score, score-string]: New procedures.
[print-line]: Use `score-string'.
(print-raw-result): New procedure.
(%options)["raw", "load-results"]: New options.
(%default-options): Add `printer' pair.
(show-help): Update.
(main): Add support for `--raw' and `--load-results'.
Since the regex library expects 8-bit clean characters and
an 8-bit locale, tests of 8-bit characters need to occur within
the context of an 8-bit locale.
* test-suite/tests/regexp.test (regexp-quote tests): wrap them in an
ISO-8859-1 locale
This requires separate small fixes.
Readline has internal logic to deal with multi-byte characters, so
it wants bytes, not characters.
scm_c_read gets called by the vm when readline is activated, and it was
truncating multi-byte characters because soft ports didn't have the
UCS-4 capability.
Soft ports need the capability to read UCS-4 characters. Since soft ports
may have a single byte buffer, full characters need to be stored into the
pushback buffer.
This broke the optimizations in scm_c_read for using an alternate buffer
for single-byte-buffered ports, because the opimization wasn't expecting
anything in the pushback buffer.
* libguile/vports.c (sf_fill_input): store complete chars, not single bytes
* libguile/ports.c (scm_c_read): don't use optimized path for non Latin-1.
Add debug prints.
* libguile/string.h: make scm_i_from_stringn and scm_i_string_ref public
so that readline can use them
* guile-readline/readline.c: read bytes, not complete chars, from the
input port. Convert output to the output port's locale
* NEWS
* doc/ref/scheme-scripts.texi: doc updates for character encoding of
source code
* doc/ref/api-evaluation.texi: doc updates for character encoding of
source code
String ports should be able to accept any string characters, regardless
of the current locale. Setting it to UTF-8 achieves that.
* libguile/strports.c (scm_i_mkstrport): set port's locale to UTF-8
(scm_mkstrport): convert input string to UTF-8
* libguile/unidata_to_charset.pl (designated): renamed from full
* libguile/srfi-14.c (scm_char_set_designated): new char-set
* libguile/srfi-14.i.c (cs_designated): renamed from cs_full
Since combining characters, such as accents, modify the appearance of the
previous letter, it looks awkward in its character literal form (#\name)
since it modified the backslash. This instead prints the combining
character on a small circle.
* libguile/chars.h (SCM_CODEPOINT_DOTTED_CIRCLE): new #define
* libguile/print.c (iprint1): print combining characters on dotted circles
* libguile/read.c (scm_read_character): parse the combination of combining
characters and dotted circles
This is a followup to commit d7e7a02a62
("Fix leaky behavior of `scm_take_TAGvector ()'.") and a reminder that
the uniform vector implementation can't do away with the cell->buffer
indirection.
* test-suite/standalone/Makefile.am (test_scm_take_u8vector_SOURCES,
test_scm_take_u8vector_CFLAGS, test_scm_take_u8vector_LDADD): New.
(check_PROGRAMS, TESTS): Add `test-scm-take-u8vector'.
* test-suite/standalone/test-scm-take-u8vector.c: New file.