Ludovic Courtès [Wed, 9 Sep 2009 20:32:02 +0000 (22:32 +0200)]
Merge branch 'master' into boehm-demers-weiser-gc
Conflicts:
libguile/gc_os_dep.c
Ludovic Courtès [Wed, 9 Sep 2009 17:27:42 +0000 (19:27 +0200)]
Avoid unneeded `scm_dynwind_free ()'.
* libguile/array-map.c (indices_gc_hint): New variable.
(scm_ramapc, scm_array_index_map_x): Avoid `scm_dynwind_free ()' using
`scm_gc_malloc_pointerless ()'.
Ludovic Courtès [Wed, 9 Sep 2009 17:14:04 +0000 (19:14 +0200)]
Update doc of `scm_gc_protect_object ()' and SMOB mark/free.
* 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.
Michael Gran [Wed, 9 Sep 2009 15:11:21 +0000 (08:11 -0700)]
Avoid prematurely ending regexp test when ISO-8859-1 locale not found
* test-suite/tests/regexp.test (with-latin1-locale): new function
Call tests in context of with-latin1-locale
Michael Gran [Wed, 9 Sep 2009 15:07:53 +0000 (08:07 -0700)]
Make scm_i_from_stringn into API for use with libguilereadline
* libguile/strings.c (scm_i_from_stringn): renamed to scm_from_stringn.
All callers changed.
* libguile/strings.h: change declaration of scm_i_from_stringn to
scm_from_stringn
* libguile/strports.c (scm_strport_to_string): scm_i_from_stringn ->
scm_from_stringn
* guile-readline/readline.c (internal_readline): scm_i_from_stringn ->
scm_from_stringn
Ludovic Courtès [Tue, 8 Sep 2009 22:49:05 +0000 (00:49 +0200)]
Update documentation of `scm_gc_malloc ()' & co.
* doc/ref/api-memory.texi (Memory Blocks): Update description of
`scm_gc_malloc ()' & co. Add `scm_gc_malloc_pointerless ()'.
Ludovic Courtès [Tue, 8 Sep 2009 22:04:47 +0000 (00:04 +0200)]
Update `README'.
Ludovic Courtès [Tue, 8 Sep 2009 21:32:23 +0000 (23:32 +0200)]
Fix misleading comments in `gc-benchmarks/run-benchmark.scm'.
* gc-benchmarks/run-benchmark.scm (pretty-print-result): Fix comments.
Ludovic Courtès [Tue, 8 Sep 2009 20:59:55 +0000 (22:59 +0200)]
Improve `gc-benchmarks/run-benchmark.scm'.
* 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'.
Michael Gran [Tue, 8 Sep 2009 01:50:39 +0000 (18:50 -0700)]
8-bit locale needed for 8-bit regexp tests
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
Michael Gran [Tue, 8 Sep 2009 01:42:29 +0000 (18:42 -0700)]
Fix broken interaction between readline and Unicode
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
Andy Wingo [Sun, 6 Sep 2009 12:13:48 +0000 (14:13 +0200)]
fix compile-time bug compiling (+ "foo" " bar")
* module/language/tree-il/primitives.scm (+, -): Avoid calling exact? on
non-numeric args.
Andy Wingo [Sun, 6 Sep 2009 11:36:32 +0000 (13:36 +0200)]
update news; ready for 1.9.3
* doc/ref/api-control.texi:
* doc/ref/goops.texi: Fix some typos.
* NEWS: Update.
Andy Wingo [Sun, 6 Sep 2009 10:58:31 +0000 (12:58 +0200)]
update NEWS
* NEWS: Minor text revisions, and fold new NEWS entries into the main
body too.
Michael Gran [Sat, 5 Sep 2009 18:10:07 +0000 (11:10 -0700)]
Avoid string buffer overrun in scm_scan_for_encoding
* libguile/read.c (scm_scan_for_encoding): possible overrun if
coding declaration is at end of file
Michael Gran [Sat, 5 Sep 2009 17:42:15 +0000 (10:42 -0700)]
Doc updates for character encoding of source code files
* 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
Michael Gran [Fri, 4 Sep 2009 14:55:05 +0000 (07:55 -0700)]
Doc updates for Unicode string escapes and port encodings
* NEWS: string and port changes
* doc/ref/api-data.texi: string escapes and string-ci
* doc/ref/api-io.texi: port encoding functions
Michael Gran [Fri, 4 Sep 2009 14:34:35 +0000 (07:34 -0700)]
Remove locale u8vector functions
Locale u8vector functions deemed harmful.
* libguile/strports.c (scm_strport_to_locale_u8vector)
(scm_call_with_output_locale_u8vector, scm_open_input_locale_u8vector)
(scm_get_output_locale_u8vector): removed
* libguile/strports.h: removed declarations for
scm_strport_to_locale_u8vector,
scm_call_with_output_u8vector,
scm_input_locale_u8vector,
scm_get_output_locale_u8vector
* test-suite/tests/encoding-iso88591.test: display tests removed
* test-suite/tests/encoding-iso88597.test: display tests removed
Michael Gran [Fri, 4 Sep 2009 14:30:13 +0000 (07:30 -0700)]
Initialize string ports with UTF-8 encoding
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
Michael Gran [Fri, 4 Sep 2009 14:27:14 +0000 (07:27 -0700)]
write-char should handle UCS-4 characters
* libguile/print.c (scm_write_char): call UCS-4 printing routine, instead
of 8-bit primitive
Ken Raeburn [Thu, 3 Sep 2009 20:59:11 +0000 (16:59 -0400)]
Make test-case compilation with -DSCM_DEBUG=1 work.
* gc.h (scm_i_expensive_validation_check): Declare SCM_API.
Michael Gran [Thu, 3 Sep 2009 16:03:53 +0000 (09:03 -0700)]
Doc updates for srfi-14 character sets
* NEWS: updates for srfi-14 character sets
* doc/ref/api-data.texi: update char-set section and some spellchecking
Michael Gran [Thu, 3 Sep 2009 15:48:23 +0000 (08:48 -0700)]
Update docs and docstrings for Unicode characters
* doc/ref/api-data.texi: more info about characters and codepoints
* libguile/chars.c: replace 'code point' with 'Unicode code point' in
docstrings
Michael Gran [Thu, 3 Sep 2009 15:29:45 +0000 (08:29 -0700)]
Add char-set debugging function
* libguile/srfi-14.c (scm_sys_char_set_dump): new function
* libguile/srfi-14.h: declaration of scm_sys_char_set_dump
Michael Gran [Thu, 3 Sep 2009 15:23:24 +0000 (08:23 -0700)]
Distinguish between all codepoints and designated codepoints in char-sets
* 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
Michael Gran [Thu, 3 Sep 2009 14:47:26 +0000 (07:47 -0700)]
Modify read and print of combining characters
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
Ludovic Courtès [Wed, 2 Sep 2009 22:59:57 +0000 (00:59 +0200)]
Fix invalid syntax in `dynamic-input-large.sch' (gc-benchmarks).
* gc-benchmarks/larceny/dynamic-input-large.sch: Remove invalid "\;"
escape.
Ludovic Courtès [Wed, 2 Sep 2009 22:57:24 +0000 (00:57 +0200)]
Add test case for `scm_take_u8vector ()'.
This is a followup to commit
d7e7a02a6251c8ed4f76933d9d30baeee3f599c0
("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.
Michael Gran [Wed, 2 Sep 2009 13:45:05 +0000 (06:45 -0700)]
Remove always-true range checks in scm_i_ucs_range_to_char_set
* libguile/srfi-14.c (scm_i_ucs_range_to_char_set): limits are always
non-negative due to the type of the variable
Michael Gran [Wed, 2 Sep 2009 13:26:50 +0000 (06:26 -0700)]
More srfi-14 char-set tests
* test-suite/tests/srfi-14.test: many new tests
Michael Gran [Wed, 2 Sep 2009 13:21:40 +0000 (06:21 -0700)]
Unreachable code in charset set operator
* libguile/srfi-14.c (scm_i_charset_set): remove unreachable code
in scm_i_charset_set
Michael Gran [Wed, 2 Sep 2009 13:20:45 +0000 (06:20 -0700)]
Optimize charset union operator
* libguile/srfi-14.c (charsets_union): call scm_i_charset_set_range
instead of setting characters one-by-one.
Michael Gran [Wed, 2 Sep 2009 13:19:21 +0000 (06:19 -0700)]
The charset complement operator should not include surrogates
* libguile/srfi-14.c (charsets_complement): skip over surrogates
when making a charset complement
Michael Gran [Wed, 2 Sep 2009 13:16:35 +0000 (06:16 -0700)]
char-set-filter! does not properly iterate over the charset
* libguile/srfi-14.c (scm_char_set_filter_x): iterate over
codepoints
Michael Gran [Wed, 2 Sep 2009 13:14:49 +0000 (06:14 -0700)]
ucs-range->char-set should not store surrogates and has off-by-one error
* libguile/srfi-14.c (scm_i_ucs_range_to_char_set): new function that
contains the functionality of ucs_range_to_char_set, fixes
off-by-one, and doesn't store surroges
(scm_ucs_range_to_char_set, scm_ucs_range_to_char_set_x): call
scm_i_ucs_range_to_char_set
(scm_i_charset_set_range): new helper function
Michael Gran [Wed, 2 Sep 2009 13:03:28 +0000 (06:03 -0700)]
char-set-any improperly unpacks charset data
* libguile/srfi-14.c (scm_char_set_any): unpack the charset correctly
Michael Gran [Wed, 2 Sep 2009 13:02:14 +0000 (06:02 -0700)]
char-set-xor! should modify the input parameter
char-set-xor! was not modifying its input parameter. It isn't
technically required to do so by the spec, but, the other similar
functions do it.
* libguile/srfi-14.c (scm_char_set_xor_x): modify the input parameter
Ludovic Courtès [Tue, 1 Sep 2009 21:53:58 +0000 (23:53 +0200)]
Fix leaky behavior of `scm_take_TAGvector ()'.
* libguile/srfi-4.c (free_user_data): New function.
* libguile/srfi-4.i.c (scm_take_TAGvector): Register `free_user_data ()'
as a finalizer for DATA.
* libguile/objcodes.c (scm_objcode_to_bytecode): Allocate with
`scm_malloc ()' since the memory taken by `scm_take_u8vector ()' will
eventually be free(3)d.
* libguile/vm.c (really_make_boot_program): Likewise.
Andy Wingo [Tue, 1 Sep 2009 16:07:29 +0000 (18:07 +0200)]
fix nontail loops within loops
* module/language/tree-il/compile-glil.scm (flatten): Fix compilation of
loops within loops in non-tail positions. Will add a test case soon,
but one way to reproduce it was with the following function:
(define (test)
(let lp ()
(pk 'zero)
(let ((fk (lambda ()
(let ((fk2 (lambda () (pk 'two))))
(let ((fk3 (lambda () (if #t (pk 'three) (fk2)))))
(if #t
(fk3)
(fk2)))))))
(pk 'one)
(fk))
(lp)))
One would expect to see a sequence of "zero one three", but in fact zero
only showed once.
This should fix simplex as well.
Ludovic Courtès [Tue, 1 Sep 2009 00:02:43 +0000 (02:02 +0200)]
Remove the distinction between inline/outline storage for stringbufs.
* libguile/strings.c (STRINGBUF_HEADER_SIZE, STRINGBUF_HEADER_BYTES):
New macros.
(STRINGBUF_F_INLINE, STRINGBUF_INLINE, STRINGBUF_OUTLINE_CHARS,
STRINGBUF_OUTLINE_LENGTH, STRINGBUF_INLINE_CHARS,
STRINGBUF_INLINE_LENGTH, STRINGBUF_MAX_INLINE_LEN): Remove.
(STRINGBUF_CHARS, STRINGBUF_WIDE_CHARS): Adjust to return a fixed
location.
(STRINGBUF_LENGTH): Get the length from word 1.
(make_stringbuf, make_wide_stringbuf): Adjust to use a contiguous
memory region.
(wide_stringbuf): Renamed from `widen_stringbuf'. Adjust similarly.
Return the new stringbuf. Callers updated.
(narrow_stringbuf): Likewise.
(scm_sys_string_dump, scm_sys_symbol_dump): Remove `stringbuf-inline'
pair.
* test-suite/tests/strings.test ("string internals")["null strings are
inlined", "short Latin-1 encoded strings are inlined", "long Latin-1
encoded strings are not inlined", "short UCS-4 encoded strings are not
inlined", "long UCS-4 encoded strings are not inlined"]: Remove.
* test-suite/tests/symbols.test ("symbol internals")["null symbols are
inlined", "short Latin-1 encoded symbols are inlined", "long Latin-1
encoded symbols are not inlined", "short UCS-4 encoded symbols are not
inlined", "long UCS-4 encoded symbols are not inlined"]: Remove.
Ludovic Courtès [Mon, 31 Aug 2009 22:38:40 +0000 (00:38 +0200)]
Fix leaky handling of `scm_take_locale_{symbol,string} ()'.
* libguile/strings.c (scm_i_take_stringbufn, scm_i_c_take_symbol):
Remove.
(scm_take_locale_stringn): Rewrite in terms of `scm_from_locale_stringn ()'.
* libguile/strings.h (scm_i_c_take_symbol, scm_i_take_stringbufn):
Remove declarations.
Michael Gran [Sun, 30 Aug 2009 22:58:32 +0000 (15:58 -0700)]
Update docs for Unicode characters
* NEWS: add note about Unicode characters
* doc/ref/api-data.texi: update Characters subsection
* libguile/chars.c: update docstrings to match manual
Michael Gran [Sun, 30 Aug 2009 23:51:30 +0000 (16:51 -0700)]
Tests for display and writing of characters
* test-suite/tests/encoding-iso88591.test: tests for writing and display
of characters
* test-suite/tests/encoding-iso88597.test: tests for writing and display
of characters
* test-suite/tests/encoding-utf8.test: tests for writing and display
of characters
Michael Gran [Sun, 30 Aug 2009 23:48:03 +0000 (16:48 -0700)]
Fix escape sequence normalization for wide strings
* libguile/strings.c (scm_to_stringn): convert unistring escapes to
guile escapes for both wide and narrow strings
Michael Gran [Sun, 30 Aug 2009 22:41:56 +0000 (15:41 -0700)]
Fix encoding errors with strings returned by string ports
String ports, being 8-bit, store strings using the character encoding
of the port. This fixes a bug where the default character encoding, and
not the port's encoding, was being used to convert the string port data
back to a string.
* libguile/strports.c: extra comments
(scm_strport_to_string): use port's encoding when converting port data
to a string
* libguile/strings.c (scm_i_from_stringn): renamed from scm_from_stringn
and made internal. All callers changed.
(scm_from_stringn): renamed to scm_i_from_stringn.
* libguile/strings.h: declaration for scm_i_from_stringn
Ludovic Courtès [Sun, 30 Aug 2009 23:28:09 +0000 (01:28 +0200)]
Fix `benchmark-guile'.
* benchmark-guile.in (guile): Use `meta/guile', not `pre-inst-guile'.
Ludovic Courtès [Sun, 30 Aug 2009 23:07:30 +0000 (01:07 +0200)]
Remove the distinction between inline/outline storage for bytevectors.
* libguile/bytevectors.c (SCM_BYTEVECTOR_INLINE_THRESHOLD,
SCM_BYTEVECTOR_INLINEABLE_SIZE_P, SCM_BYTEVECTOR_SET_CONTENTS,
SCM_BYTEVECTOR_SET_INLINE): Remove.
(SCM_BYTEVECTOR_HEADER_BYTES): New macro.
(SCM_BYTEVECTOR_SET_ELEMENT_TYPE): Adjust to new flag layout.
(make_bytevector): Remove content inlining machinery; use
`scm_gc_malloc_pointerless ()' in all cases; special-case zero-sized
vu8 buffers.
(make_bytevector_from_buffer): Simplified.
(scm_c_shrink_bytevector): New, formerly `scm_i_shrink_bytevector ()'.
Remove buffer inlining machinery.
(scm_bootstrap_bytevectors): Use `make_bytevector ()' for
SCM_NULL_BYTEVECTOR.
* libguile/bytevectors.h (SCM_BYTEVECTOR_HEADER_SIZE): New macro.
(SCM_BYTEVECTOR_CONTENTS): Adjust to new layout.
(SCM_SET_BYTEVECTOR_FLAGS): Properly cast F.
(SCM_F_BYTEVECTOR_INLINE, SCM_BYTEVECTOR_INLINE_P): Remove.
(SCM_BYTEVECTOR_ELEMENT_TYPE): Adjust.
(scm_c_shrink_bytevector): Remove macro, make a C function
declaration.
Ludovic Courtès [Sun, 30 Aug 2009 18:12:09 +0000 (20:12 +0200)]
Use a TC7 tag instead of a SMOB for bytevectors.
* libguile/bytevectors.c (scm_tc16_bytevector): Remove.
(SCM_BYTEVECTOR_SET_LENGTH, SCM_BYTEVECTOR_SET_CONTENTS,
SCM_BYTEVECTOR_SET_INLINE, SCM_BYTEVECTOR_SET_ELEMENT_TYPE,
make_bytevector_from_buffer, scm_is_bytevector,
scm_bootstrap_bytevectors): Adjust to the SMOB->tc7 change.
(scm_i_print_bytevector): New, formerly `print_bytevector ()'.
(bytevector_equal_p): Remove.
* libguile/bytevectors.h (SCM_BYTEVECTOR_LENGTH,
SCM_BYTEVECTOR_CONTENTS, SCM_BYTEVECTOR_P): Adjust to SMOB->tc7
change.
(SCM_BYTEVECTOR_FLAGS, SCM_SET_BYTEVECTOR_FLAGS): New macros.
(scm_tc16_bytevector): Remove declaration.
(scm_i_print_bytevector): New declaration.
* libguile/eq.c (scm_equal_p): Handle `scm_tc7_bytevector'.
* libguile/evalext.c (scm_self_evaluating_p): Likewise.
* libguile/print.c (iprin1): Likewise.
* libguile/tags.h (scm_tc7_bytevector): New.
(scm_tc7_unused_8): Remove.
* libguile/validate.h (SCM_VALIDATE_BYTEVECTOR): Adjust.
* test-suite/tests/bytevectors.test ("Datum
Syntax")["self-evaluating?"]: New test.
Neil Jerram [Sun, 30 Aug 2009 10:03:34 +0000 (11:03 +0100)]
Export readline history functions
* guile-readline/ice-9/readline.scm: Export history functions.
Michael Gran [Sat, 29 Aug 2009 14:14:49 +0000 (07:14 -0700)]
Range check octal-escaped characters
* libguile/read.c (scm_read_character): range check octal escapes
Michael Gran [Sat, 29 Aug 2009 14:11:31 +0000 (07:11 -0700)]
More tests for chars.test
Testing out-of-range octals, bad charnames, and write format
* test-suite/tests/chars.test
Michael Gran [Sat, 29 Aug 2009 06:48:36 +0000 (23:48 -0700)]
More tests for chars.test
* test-suite/tests/chars.test: more tests
Michael Gran [Sat, 29 Aug 2009 06:47:42 +0000 (23:47 -0700)]
Surrogate characters shouldn't be in charsets
* libguile/srfi-14.c (charsets_complement): use surrogate #defines instead
of hardcoded numbers
* libguile/srfi-14.i.c (cs_full_ranges): remove surrogates from full
charset
* libguile/unidata_to_charset.pl (full): test for surrogates
Michael Gran [Sat, 29 Aug 2009 06:44:41 +0000 (23:44 -0700)]
Better range check for codepoints
* libguile/chars.h (SCM_IS_UNICODE_CHAR): check for negative codepoints
Michael Gran [Sat, 29 Aug 2009 04:19:05 +0000 (21:19 -0700)]
Cast the input to isalpha et al to integer
* libguile/gc_os_dep.c (GC_linux_stack_base) [LINUX_STACKBOTTOM]: cast
input of ctype functions to int
* libguile/inet_aton.c (inet_aton): cast input of ctype functions to int
* libguile/read.c (scm_scan_for_encoding): cast input of isalnum to int
* libguile/win32-socket.c (scm_i_socket_uncomment): cast input of isspace
to int
Ludovic Courtès [Fri, 28 Aug 2009 19:08:07 +0000 (21:08 +0200)]
Add `BDW_GC_CFLAGS' to the `.pc' files.
This is needed because <gc/gc.h> is included in public headers (via
<libguile/boehm-gc.h>.
* meta/guile-2.0-uninstalled.pc.in (Cflags): Add `@BDW_GC_CFLAGS'.
* meta/guile-2.0.pc.in (Cflags): Likewise.
Ludovic Courtès [Fri, 28 Aug 2009 18:25:49 +0000 (20:25 +0200)]
Remove deprecated variables/macros from the GC headers.
* libguile/deprecated.c (scm_mtrigger, scm_mallocated,
scm_max_segment_size): New global variables, from gc.c.
(scm_map_free_list,
scm_gc_set_debug_check_freelist_x)[GUILE_DEBUG_FREELIST]: New stubs.
* libguile/deprecated.h (scm_mallocated, scm_mtrigger,
scm_max_segment_size): New declarations.
(scm_map_free_list,
scm_gc_set_debug_check_freelist_x)[GUILE_DEBUG_FREELIST]: New
declarations.
* libguile/gc-malloc.c (scm_i_minyield_malloc): Remove.
(scm_gc_init_malloc): Remove references to `scm_i_minyield_malloc' and
`scm_mtrigger'.
* libguile/gc.c (scm_mtrigger, scm_mallocated): Remove.
(scm_init_storage): Remove reference to `SCM_HEAP_SEG_SIZE'.
* libguile/gc.h (scm_max_segment_size, SCM_SET_FREELIST_LOC,
SCM_FREELIST_LOC, scm_i_master_freelist, scm_i_master_freelist2,
scm_mallocated, scm_mtrigger): Remove.
(scm_map_free_list,
scm_gc_set_debug_check_freelist_x)[SCM_ENABLE_DEPRECATED &&
GUILE_DEBUG_FREELIST]: Remove.
* libguile/private-gc.h (SCM_DEFAULT_INIT_HEAP_SIZE_1,
SCM_DEFAULT_MIN_YIELD_1, SCM_DEFAULT_MIN_YIELD_2,
DEFAULT_SWEEP_AMOUNT, SCM_DEFAULT_MAX_SEGMENT_SIZE,
SCM_MIN_HEAP_SEG_SIZE, SCM_HEAP_SEG_SIZE,
SCM_GC_CARD_BVEC_SIZE_IN_LONGS, SCM_GC_IN_CARD_HEADERP): Remove.
(scm_getenv_int): Made internal.
(scm_i_marking, scm_mark_all, scm_i_deprecated_memory_return,
scm_i_find_heap_calls, scm_gc_init_malloc, scm_gc_init_freelist,
scm_gc_init_segments, scm_gc_init_mark): Remove declarations.
* libguile/gc-segment-table.c: Remove, finally.
Ludovic Courtès [Fri, 28 Aug 2009 17:01:19 +0000 (19:01 +0200)]
Merge branch 'master' into boehm-demers-weiser-gc
Conflicts:
libguile/Makefile.am
libguile/bytevectors.c
libguile/gc-card.c
libguile/gc-mark.c
libguile/programs.c
libguile/srcprop.c
libguile/srfi-14.c
libguile/symbols.c
libguile/threads.c
libguile/unif.c
libguile/vm.c
Andy Wingo [Fri, 28 Aug 2009 15:12:15 +0000 (17:12 +0200)]
fix case in which compiled path had stale .go, but fallback had fresh .go
* libguile/load.c (scm_primitive_load_path): If the compiled path was
out of date, but the fallback path was current, we correctly detected
that case, but loaded the wrong file. So here fix the typo.
Michael Gran [Fri, 28 Aug 2009 13:27:00 +0000 (06:27 -0700)]
Don't presume existence or success of setlocale in test-suite
* test-suite/lib.scm (with-locale, with-locale*): new test functions
* test-suite/tests/encoding-escapes: don't fail if en_US.utf8 doesn't exist
* test-suite/tests/encoding-iso88591.test: set and restore locale, if
possible
* test-suite/tests/encoding-iso88597.test: set and restore locale, if
possible
* test-suite/tests/encoding-utf8.test: set and restore locale, if possible
* test-suite/tests/srfi-14.test: don't need to setlocale to Latin-1 to
test Latin-1 since string conversion is handled at read/compile time.
Set and restore locale, if possible.
Michael Gran [Fri, 28 Aug 2009 03:42:36 +0000 (20:42 -0700)]
scm_getc improperly handles Latin-1 characters
Upper-plane Latin-1 characters should be converted to codepoints.
* libguile/ports.c (scm_getc): improper conversion of char to scm_t_wchar
Michael Gran [Fri, 28 Aug 2009 01:52:53 +0000 (18:52 -0700)]
Fix FUNC_NAME definitions and #endif in srfi-14.[ch]
* libguile/srfi-14.c: whitespace and FUNC_NAME fixes
* libguile/srfi-14.h: #endif comment
Michael Gran [Fri, 28 Aug 2009 01:23:46 +0000 (18:23 -0700)]
Script to generate srfi-14 charsets from UnicodeData.txt
This script was used to generate srfi-14.i.c from the UnicodeData.txt
file supplied by ftp://www.unicode.org/Public/UNIDATA/
* libguile/unidata_to_charset.pl
Neil Jerram [Thu, 27 Aug 2009 23:29:04 +0000 (00:29 +0100)]
Fix GDS utility client startup
* emacs/gds-scheme.el (gds-start-utility-guile): Use buffer-local
variable gds-client instead of client, as client is actually unbound
when the process-filter lambda runs. (i.e. This isn't Scheme code!)
Ludovic Courtès [Thu, 27 Aug 2009 23:16:49 +0000 (01:16 +0200)]
Add missing `FUNC_NAME' definition.
* libguile/load.c (scm_sys_warn_autocompilation_enabled): Define
`FUNC_NAME'.
Neil Jerram [Thu, 27 Aug 2009 21:52:20 +0000 (22:52 +0100)]
Merge branch 'ossau-gds-dev'
Conflicts:
THANKS
Neil Jerram [Fri, 17 Jul 2009 07:00:42 +0000 (08:00 +0100)]
Fix doc of let*-values
Thanks to Judy Hawkins for reporting this.
* doc/ref/api-modules.texi (Included Guile Modules): Change
`let-values*' to `let*-values'.
Neil Jerram [Thu, 27 Aug 2009 21:22:34 +0000 (22:22 +0100)]
Make GDS resilient to autocompilation comments
* emacs/gds-scheme.el (gds-start-utility-guile): Make the extraction
of client number more robust; in particular when the client emits
comments (about auto compilation) before the number.
Neil Jerram [Thu, 27 Aug 2009 21:21:20 +0000 (22:21 +0100)]
Incorporate ice-9-debugger-extensions properly
i.e. put the extensions where they need to be, and delete
ice-9-debugger-extensions.scm.
* doc/ref/api-debug.texi (Single Stepping through a Procedure's Code):
Change mentions of (ice-9 debugging ice-9-debugger-extensions)
module to whatever is appropriate now (or just remove them).
* module/Makefile.am (NOCOMP_SOURCES): Remove
ice-9-debugger-extensions.scm.
* module/ice-9/debugger.scm (debug-trap): Move here from
ice-9-debugger-extensions.scm.
* module/ice-9/debugger/command-loop.scm ("continue", "finish",
"step", "next"): Move here from ice-9-debugger-extensions.scm.
* module/ice-9/debugger/commands.scm (assert-continuable, continue,
finish, step, next): Move here from ice-9-debugger-extensions.scm.
* module/ice-9/debugging/breakpoints.scm: Don't use
ice-9-debugger-extensions module.
* module/ice-9/debugging/ice-9-debugger-extensions.scm: Removed.
* module/ice-9/debugging/trace.scm, module/ice-9/debugging/traps.scm:
Remove more old version code.
* module/ice-9/debugging/traps.scm (guile-trap-features): Hardcoded as
'(tweaking).
Neil Jerram [Thu, 27 Aug 2009 20:50:46 +0000 (21:50 +0100)]
Remove superfluous ice-9-debugger-extensions code for old Guile versions
* module/ice-9/debugging/ice-9-debugger-extensions.scm: Remove all
code checking for version < 1.7, and move code for versions >= 1.7
up to top level. Comment out dummy mutex definitions for now, as
I'm not sure how to rewrite them correctly for psyntax.
Michael Gran [Thu, 27 Aug 2009 16:13:22 +0000 (09:13 -0700)]
Default srfi-14 character set information
* libguile/srfi-14.i.c: structures containing the default srfi-14
sets
Michael Gran [Thu, 27 Aug 2009 14:35:39 +0000 (07:35 -0700)]
Always cast input to toupper as int
* libguile/read.c (scm_scan_for_encoding): add cast to int
Michael Gran [Thu, 27 Aug 2009 14:34:48 +0000 (07:34 -0700)]
Segfault when writing non-Latin-1 characters under Latin-1 locale
* libguile/print.c (iprin1): handle write of non-Latin-1 characters
under the Latin-1 locale
Michael Gran [Thu, 27 Aug 2009 14:32:50 +0000 (07:32 -0700)]
Unicode-capable srfi-14 charsets
* libguile/Makefile.am: distribute new files srfi-14.i.c and
unidata_to_charset.pl
* chars.c (scm_c_upcase, scm_c_downcase): use unicode-enable toupper
and tolower
* libguile/srfi-14.h (scm_t_char_range, scm_t_char_set): new structures
to describe char-sets
(scm_t_char_set_cursor): new structure to describe char-set-cursors
(SCM_BITS_PER_LONG): removed
(SCM_CHARSET_GET): calls function
New declarations for scm_i_charset_get, scm_i_charset_set,
scm_i_charset_unset, and scm_debug_char_set.
* test-suite/tests/srfi-14.test: new tests
* libguile/srfi-14.c (SCM_CHARSET_DATA): new macro
(SCM_CHARSET_SET, SCM_CHARSET_UNSET): call function
(BYTES_PER_CHARSET, LONGS_PER_CHARSET): removed
(scm_i_charset_get, scm_i_charset_set, scm_i_charset_unset)
(charsets_equal, charsets_leq, charsets_union)
(charsets_intersection, charsets_complement, charsets_xor): new
functions that are low-level charset operators
(charset_print, charset_free): modified for new charset struct
(charset_cursor_print, charset_cursor_free): new function
(make_char_set, scm_char_set_p, scm_char_set_eq, scm_car_set_leq)
(scm_char_set_hash, scm_char_set_cursor, scm_char_set_ref)
(scm_char_set_cursor_next, scm_end_of_char_set_p, scm_char_set_fold)
(scm_char_set_unfold, scm_char_set_unfold_x, scm_char_set_for_each)
(scm_char_set_map, scm_char_set_copy, scm_char_set, scm_list_to_char_set)
(scm_list_to_char_set_x, scm_string_to_char_set, scm_string_to_char_set_x)
(scm_char_set_filter, scm_char_set_filter_x, scm_ucs_range_to_char_set)
(scm_ucs_range_to_char_set_x, scm_to_char_set, scm_char_set_size)
(scm_char_set_count, scm_char_set_to_list, scm_char_set_to_string)
(scm_char_set_contains_p, scm_char_set_every, scm_char_set_any)
(scm_char_set_adjoin, scm_char_set_delete, scm_char_set_adjoin_x)
(scm_char_set_delete_x, scm_char_set_complement, scm_char_set_union)
(scm_char_set_intersection, scm_char_set_difference, scm_char_set_xor)
(scm_char_set_diff_plus_intersection, scm_char_set_complement_x)
(scm_char_set_union_x, scm_char_set_intersection_x, scm_char_set_difference_x)
(scm_char_set_xor_x, scm_char_set_diff_plus_intersection_x): modified
to use new charset and charset-cursor data structures
(CSET_BLANK_PRED, CSET_SYMBOL_PRED, CSET_PUNCT_PRED, CSET_LOWER_PRED)
(CSET_UPPER_PRED, CSET_LETTER_PRED, CSET_DIGIT_PRED, CSET_WHITESPACE_PRED)
(CSET_CONTROL_PRED, CSET_HEX_DIGIT_PRED, CSET_ASCII_PRED, CSET_LETTER_PRED)
(CSET_LETTER_AND_DIGIT_PRED, CSET_PRINTING_PRED, CSET_TRUE_PRED)
(CSET_FALSE_PRED): removed
(scm_srfi_14_compute_char_sets): removed - too slow to iterate
over all of unicode at startup
(scm_debug_char_set) [SCM_CHARSET_DEBUG]: new function
Andy Wingo [Wed, 26 Aug 2009 23:25:52 +0000 (01:25 +0200)]
Revert "eval is actually compile"
This reverts commit
afe5e6baa76796b1467890fd55416a7f304bed5c.
Ken Raeburn [Wed, 26 Aug 2009 22:30:59 +0000 (23:30 +0100)]
Don't leave and reenter guile mode if mutex is available
On Aug 5, 2009, at 10:06, Ken Raeburn wrote:
> (1) In scm_pthread_mutex_lock, we leave and re-enter guile mode so
> that we don't block the thread while in guile mode. But we could
> use pthread_mutex_trylock first, and avoid the costs scm_leave_guile
> seems to incur on the Mac. If we can't acquire the lock, it should
> return immediately, and then we can do the expensive, blocking
> version. A quick, hack version of this changed my run time for
> A(3,8) from 17.5s to 14.5s, saving about 17%; sigaltstack and
> sigprocmask are still in the picture, because they're called from
> scm_catch_with_pre_unwind_handler. I'll work up a nicer patch
> later.
Ah, we already had scm_i_pthread_mutex_trylock lying around; that made
things easy.
A second timing test with A(3,9) and this version of the patch (based
on 1.9.1) shows the same improvement.
* libguile/threads.c (scm_pthread_mutex_lock): Try the mutex before
leaving and reentering guile mode.
Ken Raeburn [Wed, 26 Aug 2009 22:06:13 +0000 (23:06 +0100)]
Pick up in tree headers rather than installed ones
From Ken Raeburn:
The Mac build off of "master" fails for me currently in srfi-13.c,
with the comparison-always-false warning Greg discussed. I hacked
around that, but then guile-readline doesn't build:
Making all in guile-readline
../libguile/guile-snarf -o readline.x ../../guile-readline/readline.c
-
DHAVE_CONFIG_H -I. -I.. -I../../guile-readline/.. -I../../guile-
readline/lib -I./lib -g -O2
In file included from ../../guile-readline/readline.c:29:
../../guile-readline/../libguile.h:25:17: error: gmp.h: No such file
or directory
In file included from ../../guile-readline/../libguile.h:95,
from ../../guile-readline/readline.c:29:
../../guile-readline/../libguile/strings.h:26:21: error: uniconv.h: No
such file or directory
Neither the path specified for libgmp nor the path specified for
libunistring at configure time is included here.
I don't think any of this is Mac-specific; I'm surprised that it works
on GNU/Linux systems. Perhaps I'm building it in ways that are
unusual for the other developers (build dir != src dir, libgmp and
guile-1.8 installed in the same place, libgmp and libunistring
installed in different nonstandard directories)?
If I use CPPFLAGS=... and LDFLAGS=... instead of --with-libfoo-prefix
configure options to specify paths to find libgmp and libunistring,
the tests still pick old, installed Guile headers (which this time
I've poisoned to highlight the problem) from those locations instead
of the in-tree versions:
Making all in test-suite
Making all in standalone
../../libguile/guile-snarf -o test-asmobs-lib.x ../../../test-suite/
standalone/test-asmobs-lib.c -DHAVE_CONFIG_H
-I. -I../../../test-suite/ standalone -I../.. -I/opt/local/include
-I/Users/raeburn/dev/guile/ libunistring-0.9.1/I/include -g -O2
-I../../.. -I../../../lib -I../../ lib -I../..
In file included from /opt/local/include/libguile.h:30,
from ../../../test-suite/standalone/test-asmobs-
lib.c:23:
/opt/local/include/libguile/__scm.h:3:2: error: #error Poison!
I might be building Guile as part of a larger package
(*cough*Emacs*cough*) that wants to include stuff from the same system
directories (e.g., for MacPorts, pkgsrc, whatever) where an old
version of Guile is installed, and thus Guile gets passed CPPFLAGS/
LDFLAGS settings that add that old version to the search paths. So I
think the CPPFLAGS/LDFLAGS version needs to be made to work, as well
as the --with-libfoo-prefix version.
With the attached patch, I can get guile to build with CPPFLAGS= and
LDFLAGS= ... someone more familiar than I am with automake will have
to fix the guile-readline stuff.
Andy Wingo [Wed, 26 Aug 2009 11:15:07 +0000 (13:15 +0200)]
fix uninitialized variable in scm_read_character
* libguile/read.c (scm_read_character): Fix uninitialized variable.
Andy Wingo [Wed, 26 Aug 2009 10:16:36 +0000 (12:16 +0200)]
actually install guile-tools
* meta/Makefile.am (bin_SCRIPTS): Re-add guile-tools here (removed in
54b38caf19deb0e5a6e8146c65b3e176e7fffa60). Otherwise guile-tools
doesn't get installed. I think that 1.9.2 had this bug.
Andy Wingo [Wed, 26 Aug 2009 10:12:31 +0000 (12:12 +0200)]
fix guile-readline linker bug
* acinclude.m4 (GUILE_READLINE): Fix typo that caused readline not to be
linked to termcap.
Ludovic Courtès [Tue, 25 Aug 2009 21:57:49 +0000 (23:57 +0200)]
Remove the `scm_tc_free_cell' SMOB type.
* libguile/deprecated.h (SCM_FREEP, SCM_NFREEP): Changed to constants.
* libguile/gc.c (scm_i_tag_name): Remove reference to
`scm_tc_free_cell'.
* libguile/gc.h (SCM_FREE_CELL_CDR, SCM_SET_FREE_CELL_CDR): Remove.
* libguile/smob.c (free_print): Remove.
(scm_smob_prehistory): Don't create the "free" SMOB type.
* libguile/struct.c (struct_finalizer_trampoline): Use a bare
`scm_tc3_struct' tag for finalized structs instead of
`scm_tc_free_cell'.
* libguile/tags.h (scm_tc_free_cell): Remove.
Andy Wingo [Tue, 25 Aug 2009 19:43:00 +0000 (21:43 +0200)]
Merge commit 'origin/master'
Conflicts:
libguile/unif.c
Andy Wingo [Tue, 25 Aug 2009 16:04:02 +0000 (18:04 +0200)]
Merge wip-array refactor, up to
cd43fdc5b7a7c
Conflicts:
NEWS
libguile/print.c
Michael Gran [Tue, 25 Aug 2009 14:54:37 +0000 (07:54 -0700)]
Add full Unicode capability to ports and the default reader
Ports are given two additional properties: a character encoding and
a conversion failure strategy. These properties have getters and setters.
The new properties are used to convert any locale text to/from the
internal representation of strings.
If unspecified, ports use a default value. The default value of these
properties is held in a fluid. The default character encoding can be
modified by calling setlocale.
ISO-8859-1 is treated specially. Since it is a native encoding of
strings, it can be processed more quickly. Source code is assumed to be
ISO-8859-1 unless otherwise specified. The encoding of a source code
file can be given as 'coding: XXXXX' in a magic comment at the top of a
file.
The C functions that deal with encoding often use a null pointer
as shorthand for the native Latin-1 encoding, for efficiency's sake.
* test-suite/tests/encoding-iso88591.test: new tests
* test-suite/tests/encoding-iso88597.test: new tests
* test-suite/tests/encoding-utf8.test: new tests
* test-suite/tests/encoding-escapes.test: new tests
* test-suite/tests/numbers.test: declare 'binary' encoding
* test-suite/tests/ports.test: declare 'binary' encoding
* test-suite/tests/r6rs-ports.test: declare 'binary' encoding
* module/system/base/compile.scm (compile-file): use source-code
file's self-declared encoding when compiling files
* libguile/strports.c: store string ports in locale encoding
(scm_strport_to_locale_u8vector, scm_call_with_output_locale_u8vector)
(scm_open_input_locale_u8vector, scm_get_output_locale_u8vector):
new functions
* libguile/strings.h: new declaration for scm_i_string_contains_char
* libguile/strings.c (scm_i_string_contains_char): new function
(scm_from_stringn, scm_to_stringn): use NULL for Latin-1
(scm_from_locale_stringn, scm_to_locale_stringn): respect character
encoding of input and output ports
* libguile/read.h: declaration for scm_scan_for_encoding
* libguile/read.c:
(read_token): now takes scheme string instead of C string/length
(read_complete_token): new function
(scm_read_sexp, scm_read_number, scm_read_mixed_case_symbol)
(scm_read_number_and_radix, scm_read_quote, scm_read_semicolon_comment)
(scm_read_srfi4_vector, scm_read_bytevector, scm_read_guile_bit_vector)
(scm_read_scsh_block_comment, scm_read_commented_expression)
(scm_read_extended_symbol, scm_read_sharp_extension, scm_read_shart)
(scm_read_expression): use scm_t_wchar for char type, use read_complete_token
(scm_scan_for_encoding): new function to find a file's character encoding
(scm_file_encoding): new function to find a port's character encoding
* libguile/rdelim.c: don't unpack strings
* libguile/print.h: declaration for modified function
scm_i_charprint
* libguile/print.c: use locale when printing characters and
strings
(scm_i_charprint): input parameter is now scm_t_wchar
(scm_simple_format): don't unpack strings
* libguile/posix.h: new declaration for scm_setbinary.
* libguile/posix.c (scm_setlocale): set default and stdio port
encodings based on the locale's character encoding
(scm_setbinary): new function
* libguile/ports.h (scm_t_port): add encoding and failed
conversion handler to port type. Declarations for new or modified
functions scm_getc, scm_unget_byte, scm_ungetc,
scm_i_get_port_encoding, scm_i_set_port_encoding_x,
scm_port_encoding, scm_set_port_encoding_x,
scm_i_get_conversion_strategy, scm_i_set_conversion_strategy_x,
scm_port_conversion_strategy, scm_set_port_conversion_strategy_x.
* libguile/ports.c: assign the current ports to zero on startup so
we can see if they've been set.
(scm_current_input_port, scm_current_output_port,
scm_current_error_port): return #f if the port is not yet
initialized
(scm_new_port_table_entry): set up a new port's encoding and
illegal sequence handler based on the thread's current defaults
(scm_i_remove_port): free port encoding name when port is removed
(scm_i_mode_bits_n): now takes a scheme string instead of a c
string and length. All callers changed.
(SCM_MBCHAR_BUF_SIZE): new const
(scm_getc): new function, since the scm_getc in inline.h is now
scm_get_byte_or_eof. This pulls one codepoint from a port.
(scm_lfwrite_substr, scm_lfwrite_str): now uses port's encoding
(scm_unget_byte): new function, incorportaing the low-level functionality
of scm_ungetc
(scm_ungetc): uses scm_unget_byte
* libguile/numbers.h (scm_t_wchar): compilation order problem with
scm_t_wchar being use in functions in multiple headers. Forward
declare scm_t_wchar.
* libguile/load.c (scm_primitive_load): scan for file encoding at
top of file and use it to set the load port's encoding
* libguile/inline.h (scm_get_byte_or_eof): new function
incorporating most of the functionality of scm_getc.
* libguile/fports.c (fport_fill_input): now returns scm_t_wchar
* libguile/chars.h (scm_t_wchar): avoid compilation order problem
with declaration of scm_t_wchar
Michael Gran [Sun, 23 Aug 2009 17:40:44 +0000 (10:40 -0700)]
Avoid unpacking symbols in GOOPS
* libguile/goops.c (scm_make_extended_class_from_symbol): new function
(scm_class_of): don't unpack symbol chars
(wrap_init): don't unpack symbol chars
(make_class_from_symbol): new function
(make_struct_class): don't unpack symbol chars
Michael Gran [Sun, 23 Aug 2009 13:50:45 +0000 (06:50 -0700)]
Modify socket and time functions for wide strings
* libguile/socket.c (scm_recv): receive the message without holding the
stringbuf writing lock
(scm_send): try to narrow a string before using it
* libguile/stime.c (strftime): convert string to UTF-8 so that it can
be safely passed to strftime
(strptime): convert input string to UTF-8 so that it can be safely
passed through strptime
* libguile/strings.c (narrow_stringbuf): new function
(scm_i_try_narrow_string): new function
* libguile/strings.h: new declaration for scm_i_try_narrow_string
Michael Gran [Sat, 22 Aug 2009 17:15:53 +0000 (10:15 -0700)]
Use string and symbol accessors in struct, throw, and array funcs
* libguile/struct.c (scm_make_struct_layout, scm_struct_init)
(scm_struct_vtable_p, scm_struct_ref, scm_struct_set_x): use string
and symbol accessors and avoid unpacking strings and symbols
* libguile/throw.c (scm_ithrow): allow wide symbols in the error message
* libguile/unif.c (scm_enclose_array, scm_istr2bve): use string
accessors and avoid unpacking strings
Michael Gran [Sat, 22 Aug 2009 13:30:34 +0000 (06:30 -0700)]
Avoid type-punning warning in scm_gentemp
Int and size_t may not have the same storage size
* libguile/deprecated.c (scm_gentemp): use size_t for string length
Neil Jerram [Fri, 21 Aug 2009 21:31:09 +0000 (22:31 +0100)]
Update NEWS
Neil Jerram [Wed, 5 Aug 2009 15:13:28 +0000 (16:13 +0100)]
Avoid clash with system setjmp/longjmp on IA64
Problem was that if an application includes both libguile.h and the
system's setjmp.h, and is compiled on IA64, it gets compile errors
because of jmp_buf, setjmp and longjmp being multiply defined.
* libguile/__scm.h (__ia64__): Define scm_i_jmp_buf, SCM_I_SETJMP and
SCM_I_LONGJMP instead of jmp_buf, setjmp and longjmp.
(all other platforms): Map scm_i_jmp_buf, SCM_I_SETJMP and
SCM_I_LONGJMP to jmp_buf, setjmp and longjmp.
* libguile/continuations.c (scm_make_continuation): Use `SCM_I_SETJMP'
instead of `setjmp'.
(copy_stack_and_call): Use `SCM_I_LONJMP' instead of `longjmp'.
(scm_ia64_longjmp): Use type `scm_i_jmp_buf' instead of `jmp_buf'.
* libguile/continuations.h (scm_t_contregs): Use type `scm_i_jmp_buf'
instead of `jmp_buf'.
* libguile/threads.c (suspend): Use `SCM_I_SETJMP' instead of
`setjmp'.
* libguile/threads.h (scm_i_thread): Use type `scm_i_jmp_buf' instead
of `jmp_buf'.
* libguile/throw.c (JBJMPBUF, make_jmpbuf, jmp_buf_and_retval): Use
type `scm_i_jmp_buf' instead of `jmp_buf'.
(scm_c_catch): Use `SCM_I_SETJMP' instead of `setjmp'.
(scm_ithrow): Use `SCM_I_LONGJMP' instead of `longjmp'.
Neil Jerram [Tue, 4 Aug 2009 18:11:21 +0000 (19:11 +0100)]
Remove trailing whitespace
Neil Jerram [Tue, 4 Aug 2009 17:57:18 +0000 (18:57 +0100)]
Fix set-source-properties so that the special source properties work
* libguile/srcprop.c (scm_set_source_properties_x): Look for the special
source properties, save them off, and then construct a srcprops object
using them.
Neil Jerram [Tue, 4 Aug 2009 17:54:50 +0000 (18:54 +0100)]
In srcprop.c change all occurrences of "plist" to "alist"
As with the previous commit, this is to avoid any suggestion that
the source properties API uses the property list format, i.e.
(key1 value1 key2 value2 ...).
Also remove scm_srcprops_to_plist () from the API. It doesn't have any
external usefulness and has never documented.
Neil Jerram [Tue, 4 Aug 2009 14:40:06 +0000 (15:40 +0100)]
Minor improvements to doc on source properties
In particular avoid any suggestion that the API uses the
property list format, i.e. (key1 value1 key2 value2 ...),
as opposed to the alist format that it actually does use.
Neil Jerram [Fri, 21 Aug 2009 21:04:03 +0000 (22:04 +0100)]
Merge branch 'wip-manual' of ssh://ossau@git.sv.gnu.org/srv/git/guile
Conflicts:
doc/ref/autoconf.texi
doc/ref/vm.texi
Michael Gran [Fri, 21 Aug 2009 16:30:53 +0000 (09:30 -0700)]
Use uc_tolower in number conversion
* libguile/numbers.c (XDIGIT2UINT): use uc_tolower
Michael Gran [Fri, 21 Aug 2009 16:18:30 +0000 (09:18 -0700)]
Use string accessors for string->number conversion
* libguile/numbers.c (scm_i_print_fraction): use string accessors
(XDIGIT2UINT): use libunistring function
(mem2uinteger, mem2integer, mem2decimal_from_point, mem2ureal)
(mem2complex): take scheme string instead of c string; use accessors
(scm_i_string_to_number): new function
(scm_c_locale_string_to_number): use scm_i_string_to_number
* libguile/numbers.h: declaration for scm_i_string_to_number
* libguile/strings.c (scm_i_string_strcmp): new function
* libguile/strings.h: declaration for scm_i_string_strcmp
Michael Gran [Fri, 21 Aug 2009 15:57:35 +0000 (08:57 -0700)]
Add initial support for wide symbols
* libguile/hash.c (scm_i_string_hash): new function
(scm_hasher): don't unpack string: use scm_i_string_hash
* libguile/hash.h: new declaration for scm_i_string_hash
* libguile/print.c (quote_keywordish_symbol): use symbol accessors
(scm_i_print_symbol_name): new function
(scm_print_symbol_name): call scm_i_print_symbol_name
(iprin1): use scm_i_print_symbol_name to print symbols
* libguile/print.h: new declaration for scm_i_print_symbol_name
* libguile/symbols.c (lookup_interned_symbol): now takes scheme string
instead of c string; callers changed
(lookup_interned_symbol): add wide symbol support
(scm_i_c_mem2symbol): removed
(scm_i_mem2symbol): removed and replaced with scm_i_str2symbol
(scm_i_str2symbol): new function
(scm_i_mem2uninterned_symbol): removed and replaced with
scm_i_str2uninterned_symbol
(scm_i_str2uninterned_symbol): new function
(scm_make_symbol, scm_string_to_symbol, scm_from_locale_symbol)
(scm_from_locale_symboln): use scm_i_str2symbol
* test-suite/tests/symbols.test: new tests
Michael Gran [Fri, 21 Aug 2009 05:41:12 +0000 (22:41 -0700)]
Use symbol accessors in scm_gc_mark_dependencies
* libguile/gc-mark.c (scm_gc_mark_dependencies): don't unpack symbols.
Use symbol accessors.
Michael Gran [Fri, 21 Aug 2009 05:40:15 +0000 (22:40 -0700)]
Use string accessors in scm_basename and scm_dirname
* libguile/filesys.c (basename, dirname): don't unpack strings.
Use string accessor functions.