1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-15 18:20:42 +02:00
Commit graph

13597 commits

Author SHA1 Message Date
Michael Gran
18d8fcd43c 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
2009-09-04 07:34:35 -07:00
Michael Gran
25ebc0340d 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
2009-09-04 07:30:13 -07:00
Michael Gran
3d03f9395e write-char should handle UCS-4 characters
* libguile/print.c (scm_write_char): call UCS-4 printing routine, instead
  of 8-bit primitive
2009-09-04 07:27:14 -07:00
Ken Raeburn
5f5e7a2cd6 Make test-case compilation with -DSCM_DEBUG=1 work.
* gc.h (scm_i_expensive_validation_check): Declare SCM_API.
2009-09-03 16:59:11 -04:00
Michael Gran
be3eb25c64 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
2009-09-03 09:03:53 -07:00
Michael Gran
bb15a36c25 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
2009-09-03 08:48:23 -07:00
Michael Gran
ba8477ecce 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
2009-09-03 08:29:45 -07:00
Michael Gran
719bb8cd5d 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
2009-09-03 08:23:24 -07:00
Michael Gran
0dcd7e6153 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
2009-09-03 07:47:26 -07:00
Ludovic Courtès
0e0d97c477 Fix invalid syntax in `dynamic-input-large.sch' (gc-benchmarks).
* gc-benchmarks/larceny/dynamic-input-large.sch: Remove invalid "\;"
  escape.
2009-09-03 00:59:57 +02:00
Ludovic Courtès
f538a0709a Add test case for `scm_take_u8vector ()'.
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.
2009-09-03 00:57:24 +02:00
Michael Gran
aa2cba9c88 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
2009-09-02 06:45:05 -07:00
Michael Gran
4d07801b21 More srfi-14 char-set tests
* test-suite/tests/srfi-14.test: many new tests
2009-09-02 06:29:01 -07:00
Michael Gran
08ed805879 Unreachable code in charset set operator
* libguile/srfi-14.c (scm_i_charset_set): remove unreachable code
  in scm_i_charset_set
2009-09-02 06:28:55 -07:00
Michael Gran
aff31b0f99 Optimize charset union operator
* libguile/srfi-14.c (charsets_union): call scm_i_charset_set_range
  instead of setting characters one-by-one.
2009-09-02 06:28:47 -07:00
Michael Gran
f4cdfe6140 The charset complement operator should not include surrogates
* libguile/srfi-14.c (charsets_complement): skip over surrogates
  when making a charset complement
2009-09-02 06:28:42 -07:00
Michael Gran
bde543e88b char-set-filter! does not properly iterate over the charset
* libguile/srfi-14.c (scm_char_set_filter_x): iterate over
  codepoints
2009-09-02 06:28:35 -07:00
Michael Gran
91772d8f8a 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
2009-09-02 06:28:29 -07:00
Michael Gran
693e72891f char-set-any improperly unpacks charset data
* libguile/srfi-14.c (scm_char_set_any): unpack the charset correctly
2009-09-02 06:28:20 -07:00
Michael Gran
7165abeba8 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
2009-09-02 06:28:11 -07:00
Ludovic Courtès
5f236208d0 Merge branch 'boehm-demers-weiser-gc' into bdw-gc-static-alloc
Conflicts:
	acinclude.m4
	libguile/strings.c
2009-09-02 01:37:37 +02:00
Ludovic Courtès
d7e7a02a62 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.
2009-09-01 23:53:58 +02:00
Andy Wingo
7f7b85cbf6 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.
2009-09-01 18:07:29 +02:00
Ludovic Courtès
ba54a2026b 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.
2009-09-01 02:02:43 +02:00
Ludovic Courtès
13a9455669 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.
2009-09-01 00:38:40 +02:00
Michael Gran
3f12aedb50 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
2009-08-30 16:55:52 -07:00
Michael Gran
bda0d85f0c 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
2009-08-30 16:55:48 -07:00
Michael Gran
5f5920e012 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
2009-08-30 16:55:17 -07:00
Michael Gran
fac32b518e 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
2009-08-30 16:54:49 -07:00
Ludovic Courtès
4812ce85dd Fix `benchmark-guile'.
* benchmark-guile.in (guile): Use `meta/guile', not `pre-inst-guile'.
2009-08-31 01:28:09 +02:00
Ludovic Courtès
0665b3ffcb 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.
2009-08-31 01:07:30 +02:00
Ludovic Courtès
807e5a6641 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.
2009-08-30 20:12:09 +02:00
Neil Jerram
f84c500d2e Export readline history functions
* guile-readline/ice-9/readline.scm: Export history functions.
2009-08-30 11:03:34 +01:00
Michael Gran
0ffc78e384 Range check octal-escaped characters
* libguile/read.c (scm_read_character): range check octal escapes
2009-08-29 07:14:49 -07:00
Michael Gran
6c2353e1d5 More tests for chars.test
Testing out-of-range octals, bad charnames, and write format

* test-suite/tests/chars.test
2009-08-29 07:11:31 -07:00
Michael Gran
1893df4145 More tests for chars.test
* test-suite/tests/chars.test: more tests
2009-08-29 00:01:58 -07:00
Michael Gran
24d23822ee 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
2009-08-29 00:01:06 -07:00
Michael Gran
526ee76ac3 Better range check for codepoints
* libguile/chars.h (SCM_IS_UNICODE_CHAR): check for negative codepoints
2009-08-29 00:00:58 -07:00
Michael Gran
6d736fdba2 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
2009-08-28 21:19:05 -07:00
Ludovic Courtès
d6097d1d63 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.
2009-08-28 21:08:07 +02:00
Ludovic Courtès
760fb97d1f 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.
2009-08-28 21:02:42 +02:00
Ludovic Courtès
7af531508c 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
2009-08-28 19:16:46 +02:00
Andy Wingo
5950cc3fcc 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.
2009-08-28 17:13:09 +02:00
Michael Gran
ce3ed0125f 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.
2009-08-28 06:27:00 -07:00
Michael Gran
8736ef70ac 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
2009-08-27 20:42:36 -07:00
Michael Gran
d5ecf5797d 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
2009-08-27 18:52:53 -07:00
Michael Gran
d0434ddf25 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
2009-08-27 18:23:46 -07:00
Neil Jerram
a27173cf78 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!)
2009-08-28 00:29:04 +01:00
Ludovic Courtès
1505848425 Add missing `FUNC_NAME' definition.
* libguile/load.c (scm_sys_warn_autocompilation_enabled): Define
  `FUNC_NAME'.
2009-08-28 01:16:49 +02:00
Neil Jerram
639bf3e507 Merge branch 'ossau-gds-dev'
Conflicts:

	THANKS
2009-08-27 22:52:20 +01:00