bpt/guile.git
14 years agorepl-reader accepts optional "read" argument
Andy Wingo [Fri, 16 Oct 2009 11:30:52 +0000 (13:30 +0200)]
repl-reader accepts optional "read" argument

* module/ice-9/boot-9.scm (repl-reader): Accept an optional second
  argument, the reader to use. If it is given, use it instead of
  dereferencing the current-reader fluid.

* guile-readline/ice-9/readline.scm (activate-readline): Make our
  replacement definition of repl-reader compatible with boot-9.

14 years agoremove GHIL, Elisp, and R5RS languages
Andy Wingo [Fri, 16 Oct 2009 10:19:43 +0000 (12:19 +0200)]
remove GHIL, Elisp, and R5RS languages

GHIL is obsolete, and it's about time we got rid of it. Elisp and R5RS
were unmodified since their import from Guile-VM, so we ditch them too.

R5RS compilation is supported via compiling Scheme within an R5RS
environment.

Elisp will be supported when we merge in Daniel's work.

14 years agobitvector tweaks
Andy Wingo [Fri, 16 Oct 2009 09:59:30 +0000 (11:59 +0200)]
bitvector tweaks

* libguile/arrays.c (scm_from_contiguous_typed_array):
* libguile/bytevectors.c (scm_uniform_array_to_bytevector): Error if the
  uniform element size is more than 8 bits, but not divisible by 8 --
  because our math could overflow in that case.

* module/ice-9/deprecated.scm (#\y): Indeed, #* is the valid bitvector
  syntax :)

14 years agoImprove TLS detection for systems with compiler support but no libc support.
Ludovic Courtès [Thu, 15 Oct 2009 21:52:00 +0000 (23:52 +0200)]
Improve TLS detection for systems with compiler support but no libc support.

* acinclude.m4 (GUILE_THREAD_LOCAL_STORAGE): Use `AC_LINK_IFELSE'
  instead of `AC_COMPILE_IFELSE'.

14 years agoBump version number for 1.9.4.
Ludovic Courtès [Thu, 15 Oct 2009 21:31:57 +0000 (23:31 +0200)]
Bump version number for 1.9.4.

* GUILE-VERSION (GUILE_MICRO_VERSION): Increment.

14 years agoFix compilation of literal bitvectors.
Ludovic Courtès [Thu, 15 Oct 2009 21:29:50 +0000 (23:29 +0200)]
Fix compilation of literal bitvectors.

* libguile/arrays.c (scm_from_contiguous_typed_array): Fix BYTE_LEN
  sanity check for bitvectors.

* test-suite/tests/unif.test ("syntax")["bitvector is self-evaluating"]:
  New test.

* module/ice-9/deprecated.scm (#\y): Fix deprecation comment: `#*' is
  not a read syntax.

14 years agoFix segfault for `(uniform-array->bytevector (bitvector))'.
Ludovic Courtès [Thu, 15 Oct 2009 21:24:19 +0000 (23:24 +0200)]
Fix segfault for `(uniform-array->bytevector (bitvector))'.

* libguile/bytevectors.c (scm_uniform_array_to_bytevector): Fix BYTE_LEN
  computation for bitvectors.

* test-suite/tests/bytevectors.test ("uniform-array->bytevector"): New
  test prefix.

14 years agoFix `gitlog-to-changelog' on NixOS.
Ludovic Courtès [Thu, 15 Oct 2009 19:55:54 +0000 (21:55 +0200)]
Fix `gitlog-to-changelog' on NixOS.

14 years agoDocument the interaction of the "compilee" with the compiler's current module.
Ludovic Courtès [Thu, 15 Oct 2009 19:29:42 +0000 (21:29 +0200)]
Document the interaction of the "compilee" with the compiler's current module.

This is a followup to 87c595c757b7db84ffdcfda96f736ab235e674a8 ("Compile
in a fresh module by default.") and
f65e2b1ec5ae1962e57322ac3085ab4d44025694 ("Honor and confine
expansion-time side-effects to `current-reader'.").

* doc/ref/api-evaluation.texi (Loading): Explain how to change
  `current-reader' in a compiler-friendly way.

* doc/ref/compiler.texi (The Scheme Compiler): Explain use of a fresh
  compilation module and separate `current-reader' fluid.

* test-suite/tests/compiler.test ("current-reader")["with eval-when"]:
  New test.

14 years agoFix REPL environment for languages other than scheme.
Ludovic Courtès [Thu, 15 Oct 2009 18:51:16 +0000 (20:51 +0200)]
Fix REPL environment for languages other than scheme.

* module/system/repl/common.scm (repl-compile): Use `#:env #f' for
  languages other than scheme.

14 years agosignedness fix fix fix
Andy Wingo [Thu, 15 Oct 2009 15:39:34 +0000 (17:39 +0200)]
signedness fix fix fix

* libguile/inline.h: Fix signedness fix fix.

14 years ago`load' autocompiles -- in the current module.
Andy Wingo [Thu, 15 Oct 2009 13:48:14 +0000 (15:48 +0200)]
`load' autocompiles -- in the current module.

* module/ice-9/boot-9.scm (load): Pull `autocompiled-file-name' inside
  `load', and make it autocompile in the current module. Should fix
  Julian's issue noted in
  http://article.gmane.org/gmane.lisp.guile.devel/9483.

14 years agoupdate NEWS for 1.9.4
Andy Wingo [Thu, 15 Oct 2009 13:45:03 +0000 (15:45 +0200)]
update NEWS for 1.9.4

14 years agofix scm_array_handle_ref signedness fix
Andy Wingo [Thu, 15 Oct 2009 13:44:45 +0000 (15:44 +0200)]
fix scm_array_handle_ref signedness fix

* libguile/inline.h: Fix signedness fix.

14 years agoadd back support for #y bitvector read syntax
Andy Wingo [Thu, 15 Oct 2009 13:05:36 +0000 (15:05 +0200)]
add back support for #y bitvector read syntax

* module/ice-9/deprecated.scm (#\y): Add deprecated support for
  #y(1 0 1 ...) bitvectors.

14 years agoUse pointer-less memory for `scm_gc_strdup ()'.
Ludovic Courtès [Wed, 14 Oct 2009 23:32:36 +0000 (01:32 +0200)]
Use pointer-less memory for `scm_gc_strdup ()'.

* libguile/gc-malloc.c (scm_gc_strndup): Use `GC_MALLOC_ATOMIC ()'
  instead of `GC_MALLOC ()'.

14 years agoRestore signature of `scm_primitive_load_path ()' as found in 1.8.
Ludovic Courtès [Wed, 14 Oct 2009 23:05:32 +0000 (01:05 +0200)]
Restore signature of `scm_primitive_load_path ()' as found in 1.8.

The incompatibility was introduced by
0fb81f95b0222c5ba49efd3e36cf797df54c0863 ("add exception_on_error
optional arg to primitive-load-path").

* libguile/load.c (scm_primitive_load_path): Change to take 1 rest
  argument.  Interpret the argument as either a file name (C-level
  backward compatibility with 1.8) or an actual argument list.
  (scm_c_primitive_load_path): Update caller.

* libguile/load.h (scm_primitive_load_path): Update accordingly.

* doc/ref/api-evaluation.texi (Loading): Update documentation of
  `primitive-load-path' and `scm_primitive_load_path ()'.

14 years agoUse GC-managed memory for port->encoding.
Ludovic Courtès [Wed, 14 Oct 2009 22:56:56 +0000 (00:56 +0200)]
Use GC-managed memory for port->encoding.

* libguile/ports.c (scm_new_port_table_entry): Use `scm_gc_strdup ()'
  instead of `strdup ()' for `entry->encoding'.
  (scm_i_set_port_encoding_x): Likewise.  Remove free(3) call.
  (scm_i_remove_port): Don't explicitly free memory.
  (scm_unget_byte): Remove outdated and misleading comment.

14 years agoFix signed/unsigned mismatch in `scm_array_handle_{ref,set} ()'.
Ludovic Courtès [Wed, 14 Oct 2009 21:20:54 +0000 (23:20 +0200)]
Fix signed/unsigned mismatch in `scm_array_handle_{ref,set} ()'.

* libguile/inline.h (scm_array_handle_ref, scm_array_handle_set): Cast
  `h->base' so that it matches the signedness of `p'.

14 years agoFlush output before forking, to make test output consistent and avoid
Ken Raeburn [Tue, 13 Oct 2009 15:45:34 +0000 (11:45 -0400)]
Flush output before forking, to make test output consistent and avoid
duplication.

* test-suite/tests/socket.test: Before calling primitive-fork, call
  force-output on the current output and error ports.

14 years agoadd $libir to the ltdl path, not $pkglibdir; add extensionsdir
Andy Wingo [Tue, 13 Oct 2009 09:31:02 +0000 (11:31 +0200)]
add $libir to the ltdl path, not $pkglibdir; add extensionsdir

* libguile/Makefile.am (libpath.h): Fix SCM_LIB_DIR to point to the
  libdir, not pkglibdir. Add SCM_EXTENSIONS_DIR, for a dir to put in the
  dynamic-link search path that's not managed by ldconfig or the like;
  and put this dir in the "extensionsdir" key of %guile-build-info.

* libguile/dynl.c (sysdep_dynl_init): Rename the installed-libdir
  environment var to GUILE_SYSTEM_EXTENSIONS_PATH (from
  GUILE_SYSTEM_LTDL_PATH). Also add SCM_EXTENSIONS_DIR to the ltdl
  search path in the default case.
* meta/uninstalled-env.in: Adapt override to match.

* meta/guile-2.0.pc.in: Add extensionsdir, so you can pkg-config
  --variable=extensionsdir guile-2.0.

14 years agoModify regexp.test to work better with mac/darwin
Michael Gran [Mon, 12 Oct 2009 13:55:25 +0000 (06:55 -0700)]
Modify regexp.test to work better with mac/darwin

* test-suite/tests/regexp.test (set-latin-1): also add .ISO8859-1 as a
  possible extension for latin-1 locales.  Use set-latin-1 exclusively
  to set the locale for tests.

14 years agoRevert changes that gather thread-specific local language
Michael Gran [Fri, 9 Oct 2009 14:06:14 +0000 (07:06 -0700)]
Revert changes that gather thread-specific local language

The method used was not portable.  However, the underlying problem
still exists: the uc_locale_language used by libunistring does not
work with thread-specific locale_t locales.

* libguile/i18n.c (locale_language): avoid unpacking semi-opaque type
  locale_t.

* test-suite/tests/i18n.test: set Turkish string and char locale upcase
  and downcase tests to throw untested

14 years agoAdjust to match changes in libgc's CVS (pre-7.2).
Ludovic Courtès [Fri, 9 Oct 2009 12:42:07 +0000 (14:42 +0200)]
Adjust to match changes in libgc's CVS (pre-7.2).

In libgc CVS the `GC_do_blocking ()' declaration is now public but it
uses a slightly different signature for its first argument.

* configure.ac: Check for `GC_fn_type'.

* libguile/threads.c (GC_fn_type)[HAVE_GC_DO_BLOCKING &&
  !HAVE_GC_FN_TYPE]: New typedef.
  (scm_without_guile): Explicitly cast `without_guile_trampoline' to
  `GC_fn_type'.  This is because the upstream definition currently
  looks like `typedef void * (extern *GC_fn_type)(void *);', which
  isn't compatible.

14 years agoUse TLS when available for `SCM_I_CURRENT_THREAD'.
Ludovic Courtès [Fri, 2 Oct 2009 14:32:34 +0000 (16:32 +0200)]
Use TLS when available for `SCM_I_CURRENT_THREAD'.

* acinclude.m4 (GUILE_THREAD_LOCAL_STORAGE): New macro.

* configure.ac: Use it.

* libguile/__scm.h (SCM_THREAD_LOCAL): New macro.

* libguile/gen-scmconfig.c (main): Define `SCM_HAVE_THREAD_STORAGE_CLASS'.

* libguile/gen-scmconfig.h.in (SCM_I_GSC_HAVE_THREAD_STORAGE_CLASS):
  New.

* libguile/threads.c
  (scm_i_current_thread)[SCM_HAVE_THREAD_STORAGE_CLASS]: New.
  (SET_CURRENT_THREAD): New macro.
  (guilify_self_1, on_thread_exit, init_thread_key): Use it.

* libguile/threads.h
  (scm_i_current_thread)[SCM_HAVE_THREAD_STORAGE_CLASS]: New
  declaration.
  (SCM_I_CURRENT_THREAD)[SCM_HAVE_THREAD_STORAGE_CLASS]: New macro.
  (init_thread_key_once, init_thread_key): Conditionalize on
  `!defined SCM_HAVE_THREAD_STORAGE_CLASS'.
  (scm_i_init_thread_for_guile): Update accordingly.

14 years agoArrange so that `SCM_I_CURRENT_THREAD' is not accessed outside of libguile.
Ludovic Courtès [Fri, 2 Oct 2009 13:28:29 +0000 (15:28 +0200)]
Arrange so that `SCM_I_CURRENT_THREAD' is not accessed outside of libguile.

* libguile/__scm.h (scm_async_tick): New declaration.
  (SCM_ASYNC_TICK)[!BUILDING_LIBGUILE]: Use `scm_async_tick ()'.

* libguile/async.c (scm_critical_section_start,
  scm_critical_section_end, scm_async_tick): New functions.

* libguile/async.h (scm_i_critical_section_mutex): Made internal.
  (scm_critical_section_start, scm_critical_section_end): New
  declarations.
  (SCM_CRITICAL_SECTION_START,
  SCM_CRITICAL_SECTION_END)[!BUILDING_LIBGUILE]: Use the same-named
  function (lower-case).

* libguile/stackchk.h (SCM_STACK_OVERFLOW_P): Conditionalize on
  `BUILDING_LIBGUILE'.

* libguile/threads.h (SCM_I_CURRENT_THREAD, scm_i_dynwinds,
  scm_i_set_dynwinds, scm_i_last_debug_frame,
  scm_i_set_last_debug_frame): Conditionalize on `BUILDING_LIBGUILE'.

14 years agoDeprecate `scm_mask_ints'.
Ludovic Courtès [Fri, 2 Oct 2009 13:02:52 +0000 (15:02 +0200)]
Deprecate `scm_mask_ints'.

* libguile/async.h (scm_mask_ints): Remove.

* libguile/deprecated.c (scm_i_mask_ints): New.

* libguile/deprecated.h (scm_mask_ints): New macro.
  (scm_i_mask_ints): New declaration.

14 years agoRevert "Change dynwind flag enums to #defines, for greater portability"
Neil Jerram [Wed, 7 Oct 2009 21:14:38 +0000 (22:14 +0100)]
Revert "Change dynwind flag enums to #defines, for greater portability"

This reverts commit b25aa0b9373d2798469e0fe999cd915e8beedc4f.

14 years agoFix typo in `scm_array_p_2 ()'.
Ludovic Courtès [Tue, 6 Oct 2009 21:40:30 +0000 (23:40 +0200)]
Fix typo in `scm_array_p_2 ()'.

* libguile/generalized-arrays.c (scm_array_p_2)[FUNC_NAME]: Fix.

14 years agoAdd compiler warning for possibly unbound variables.
Ludovic Courtès [Tue, 6 Oct 2009 21:39:56 +0000 (23:39 +0200)]
Add compiler warning for possibly unbound variables.

* module/language/tree-il/analyze.scm (<toplevel-info>): New record
  type.
  (env-module, report-possibly-unbound-variables): New procedures.

* module/language/tree-il/compile-glil.scm (%warning-passes): Add
  `unbound-variable'.

* module/system/base/message.scm (%warning-types): Likewise.

* test-suite/tests/tree-il.test (read-and-compile, %opts-w-unbound):
  New.
  ("warnings")["unbound variable"]: New test prefix.

14 years agotree-il: Pass the environment to warning passes.
Ludovic Courtès [Tue, 6 Oct 2009 21:36:53 +0000 (23:36 +0200)]
tree-il: Pass the environment to warning passes.

* module/language/tree-il/analyze.scm (report-unused-variables): Taken a
  new parameter, ENV.

* module/language/tree-il/compile-glil.scm (compile-glil): Pass E to
  individual warning passes.

14 years agoChange dynwind flag enums to #defines, for greater portability
Neil Jerram [Fri, 2 Oct 2009 21:18:52 +0000 (22:18 +0100)]
Change dynwind flag enums to #defines, for greater portability

Thanks to Inge Gutheil for raising this problem.

* doc/ref/api-control.texi (Dynamic Wind): Remove doc for
  scm_t_dynwind_flags, and change uses of scm_t_dynwind_flags to int.
  Mention possible flags inside doc for scm_dynwind_begin instead.
  Similarly for scm_t_wind_flags.  In this case the doc on possible
  flags is moved to after the four functions that can use them.

* libguile/dynwind.c (scm_dynwind_begin): Change scm_t_dynwind_flags
  to int.
  (scm_dynwind_unwind_handler): Change scm_t_wind_flags to int.
  (scm_dynwind_rewind_handler): Ditto.
  (scm_dynwind_unwind_handler_with_scm): Ditto.
  (scm_dynwind_rewind_handler_with_scm): Ditto.

* libguile/dynwind.h (SCM_F_DYNWIND_REWINDABLE): Use #define instead
  of typedef enum.
  (SCM_F_WIND_EXPLICITLY): Ditto.
  (function declarations): Change scm_t_dynwind_flags and
  scm_t_wind_flags to int.

* test-suite/standalone/test-unwind.c (check_cont_body): Change
  scm_t_dynwind_flags to int.

14 years agoUse `SCM_DEPRECATED' in declarations of deprecated functions/variables.
Ludovic Courtès [Fri, 2 Oct 2009 12:48:22 +0000 (14:48 +0200)]
Use `SCM_DEPRECATED' in declarations of deprecated functions/variables.

* libguile/deprecated.c (SCM_BUILDING_DEPRECATED_CODE): New macro.

* libguile/async.c (SCM_BUILDING_DEPRECATED_CODE): Likewise.

* libguile/macros.c (SCM_BUILDING_DEPRECATED_CODE): Likewise.

* libguile/async.h, libguile/deprecated.h, libguile/eval.h,
  libguile/gc.h, libguile/gc.h, libguile/macros.h, libguile/ports.h,
  libguile/srfi-4.h, libguile/strings.h: Change declarations of
  deprecated functions and variables to use `SCM_DEPRECATED' instead of
  `SCM_API'.

14 years agoAdd `SCM_DEPRECATED' macro to declare deprecated C functions/variables.
Ludovic Courtès [Fri, 2 Oct 2009 12:34:51 +0000 (14:34 +0200)]
Add `SCM_DEPRECATED' macro to declare deprecated C functions/variables.

* libguile/__scm.h (SCM_DEPRECATED): New macro.

14 years agoFix the argument list of gsubr stack frames.
Ludovic Courtès [Fri, 2 Oct 2009 08:26:30 +0000 (10:26 +0200)]
Fix the argument list of gsubr stack frames.

This fixes a bug introduced in e20d7001c3f7150400169fecb0bf0eefdf122fe2
and reported by Neil.

* libguile/eval.i.c (CEVAL)[DEVAL]: Don't duplicate ARG1 in
  `debug.info->a.args' for gsubr stack frames.
  (scm_apply): Likewise.

* test-suite/tests/eval.test ("stacks")["arguments of a gsubr stack
  frame"]: New test.

14 years agoFix doc for inet-ntop: always produces a string
Neil Jerram [Thu, 1 Oct 2009 22:38:57 +0000 (23:38 +0100)]
Fix doc for inet-ntop: always produces a string

Thanks to Scott McPeak for reporting this.

* libguile/socket.c (scm_inet_ntop): In docstring, add quotes around
  IPv6 address (+ reflow a bit).

* doc/ref/posix.texi (Network Address Conversion): Corresponding
  change.

* doc/maint/guile.texi: Corresponding change.

14 years agoFix handling of IPv6 addresses
Neil Jerram [Thu, 1 Oct 2009 22:27:59 +0000 (23:27 +0100)]
Fix handling of IPv6 addresses

Thanks to Scott McPeak for reporting this and providing a patch.

* libguile/socket.c (scm_to_ipv6): When address is the wrong type,
  provide more information in the exception message.

  (scm_to_sockaddr): scm_to_ipv6 expects just an address, not the
  whole vector.

* test-suite/tests/socket.test ("AF_INET6/SOCK_STREAM"): New set of
  tests.

14 years agoFix incorrect doc mentions of INADDR_LOCALHOST
Neil Jerram [Thu, 1 Oct 2009 21:27:07 +0000 (22:27 +0100)]
Fix incorrect doc mentions of INADDR_LOCALHOST

Thanks to Scott McPeak for reporting this.

* doc/ref/posix.texi (Network Sockets and Communication): Change
  INADDR_LOCALHOST to INADDR_LOOPBACK.

14 years agoAdd define-module to signals.test
Neil Jerram [Thu, 1 Oct 2009 20:56:49 +0000 (21:56 +0100)]
Add define-module to signals.test

* test-suite/tests/signals.test (test-suite): Add define-module form.

14 years agoChange signals.test to LGPLv3+
Neil Jerram [Thu, 1 Oct 2009 20:54:49 +0000 (21:54 +0100)]
Change signals.test to LGPLv3+

* test-suite/tests/signals.test: Update licence statement.

14 years agoRemove unused environments code and tests
Neil Jerram [Wed, 30 Sep 2009 22:06:02 +0000 (23:06 +0100)]
Remove unused environments code and tests

* libguile/environments.c, libguile/environments.h,
  test-suite/tests/environments.nottest: Deleted.

14 years agoFix spurious `throw from within critical section' errors
Neil Jerram [Tue, 10 Mar 2009 23:55:31 +0000 (23:55 +0000)]
Fix spurious `throw from within critical section' errors

The crux of this problem was that the thread doing a throw, and so
checking scm_i_critical_section_level, was different from the thread
that was in a critical section.

* libguile/async.h (scm_i_critical_section_level): Removed, replaced
  by per-thread critical_section_level.
  (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END): Use
  per-thread critical_section_level.

* libguile/continuations.c (scm_dynthrow): Check per-thread
  critical_section_level.

* libguile/threads.c (guilify_self_1): Init per-thread
  critical_section_level.
  (scm_i_critical_section_level): Removed.

* libguile/threads.h (scm_i_thread): New critical_section_level field.

* libguile/throw.c (scm_ithrow): Check per-thread critical_section_level.

14 years agoAvoid throw from critical section, given invalid sigaction call
Neil Jerram [Thu, 5 Mar 2009 20:03:33 +0000 (20:03 +0000)]
Avoid throw from critical section, given invalid sigaction call

* libguile/scmsigs.c (scm_sigaction_for_thread): Exit critical section
  before raising out-of-range error.

* test-suite/Makefile.am (SCM_TESTS): Add signals.test.

* test-suite/tests/signals.test: New file.

14 years agoMake `weaks.test' slightly more robust.
Ludovic Courtès [Mon, 28 Sep 2009 21:27:53 +0000 (23:27 +0200)]
Make `weaks.test' slightly more robust.

* test-suite/tests/weaks.test (global-weak): Use `string-copy' on all
  the keys, in case one of them is retained in `scm_source_whash' or
  similar.

14 years agoImprove description of `scm_set_smob_mark ()'.
Ludovic Courtès [Mon, 28 Sep 2009 21:21:47 +0000 (23:21 +0200)]
Improve description of `scm_set_smob_mark ()'.

* doc/ref/api-smobs.texi (Smobs): Improve description of
  `scm_set_smob_mark ()'.  Mention malloc(3) regions.

14 years agoRemove unneeded SMOB/port mark/free procedures.
Ludovic Courtès [Fri, 25 Sep 2009 11:45:16 +0000 (13:45 +0200)]
Remove unneeded SMOB/port mark/free procedures.

* libguile/arrays.c (array_mark, array_free): Remove.
  (scm_init_arrays): Adjust accordingly.

* libguile/bitvectors.c (bitvector_free): Remove.
  (scm_c_make_bitvector): Use `scm_gc_malloc_pointerless ()'.
  (scm_init_bitvectors): Adjust accordingly.

* libguile/strports.c (scm_make_stptob): Remove `scm_set_port_mark ()'
  call.

* libguile/vports.c (scm_make_sfptob): Likewise.

14 years agoRemove default port/SMOB finalizers.
Ludovic Courtès [Fri, 25 Sep 2009 10:29:02 +0000 (12:29 +0200)]
Remove default port/SMOB finalizers.

* libguile/ports.c (scm_port_free0): Remove.
  (scm_make_port_type): Set `free' to NULL.

* libguile/smob.c (scm_make_smob_type): Leave `free' to NULL.
  (scm_smob_free): Remove.

* libguile/smob.h (scm_smob_free): Remove.

* libguile/deprecated.c (scm_smob_free): New.

* libguile/deprecated.h (scm_smob_free): New declaration.

14 years agoClean meta/guile-config
Neil Jerram [Fri, 25 Sep 2009 23:51:50 +0000 (00:51 +0100)]
Clean meta/guile-config

* meta/Makefile.am (CLEANFILES): New, containing guile-config.

14 years agoDon't include guile-config and guile-tools in distribution
Neil Jerram [Fri, 25 Sep 2009 21:45:17 +0000 (22:45 +0100)]
Don't include guile-config and guile-tools in distribution

They need to be regenerated, with the correct prefix, when configure
and make run.

* meta/Makefile.am (EXTRA_DIST): Remove bin_SCRIPTS.

14 years agoFix make distcheck by looking for guile-config in $(srcdir)
Neil Jerram [Fri, 25 Sep 2009 19:18:34 +0000 (20:18 +0100)]
Fix make distcheck by looking for guile-config in $(srcdir)

make distcheck is currently failing for me with:

In file included from /usr/local/include/libguile/threads.h:35,
                 from /usr/local/include/libguile/async.h:28,
                 from /usr/local/include/libguile.h:37,
                 from ../../examples/box/box.c:22:
/usr/local/include/libguile/pthread-threads.h:33:31: error: libguile/boehm-gc.h: No such file or directory
In file included from /usr/local/include/libguile.h:93,
                 from ../../examples/box/box.c:22:

- which is because it's picking up a load of installed headers,
instead of those in the _inst tree

- which is because there is no output from the preceding guile-config
invocation:

PATH=/home/neil/SW/Guile/ovnight/guile-master-20090924/_inst/bin:$PATH PKG_CONFIG_PATH=/home/neil/SW/Guile/ovnight/guile-master-20090924/_inst/lib/pkgconfig /home/neil/SW/Guile/ovnight/guile-master-20090924/_inst/bin/guile-config compile

- which is because .../_inst/bin/guile-config is empty

- which is because the rule in meta/Makefile.am that generates
guile-config is missing $(srcdir), and so doesn't find
guile-config.in.

* meta/Makefile.am (guile-config): Look for guile-config.in in
  $(srcdir).

14 years agoMissing free in nl-langinfo
Michael Gran [Fri, 25 Sep 2009 14:47:56 +0000 (07:47 -0700)]
Missing free in nl-langinfo

This is a regression.

* libguile/i18n.c (scm_nl_langinfo): free c_result

14 years agoFix encoding of strings returned by nl-langinfo
Michael Gran [Fri, 25 Sep 2009 14:27:11 +0000 (07:27 -0700)]
Fix encoding of strings returned by nl-langinfo

Strings returned by nl-langinfo were always being encoded using the
global setlocale and not the scm_t_locale passed to the function.

* libguile/i18n.c (scm_nl_langinfo): fix encoding of strings

14 years agoLanguage-specific case-conversion doesn't honor locale
Michael Gran [Thu, 24 Sep 2009 15:07:38 +0000 (08:07 -0700)]
Language-specific case-conversion doesn't honor locale

Libunistring uses a function uc_locale_language to extract the
current language from the locale information.  It does this by calling
setlocale.  This makes incompatible with Guile functions that use the
locale_t thread-specific locale API, because the values returned by the
call to setlocale ignore the locale set by uselocale.

As a workaround, this patch extracts the language from the locale_t
structure's __names field.

A more complete solution is needed.  Perhaps that solution would test
that the __names field exists in the configure step and revert to
!USE_GNU_LOCALE_API in that case.

* libguile/i18n.c (locale_language): new function that performs the
  same job as uc_locale_language but is compatible with uselocale
  (u32_locale_casecoll, u32_locale_tocase): replace uc_locale_language
  with locale_language

14 years agoTests for locale-specific case conversion
Michael Gran [Thu, 24 Sep 2009 15:10:03 +0000 (08:10 -0700)]
Tests for locale-specific case conversion

* test-suite/tests/i18n.test: add tests for case conversion of Turkish
  letters 'i' to verify that the language is being honored.

14 years agoTry to adjust i18n for strict aliasing
Michael Gran [Thu, 24 Sep 2009 14:50:49 +0000 (07:50 -0700)]
Try to adjust i18n for strict aliasing

* libguile/i18n.c (u32_locale_tocase, scm_char_locale_downcase)
  (scm_char_locale_upcase, scm_string_locale_downcase)
  (scm_string_locale_upcase): use the scm_t_uint32 type for buffers
  that are used primarily for libunistring and not for Guile strings.

14 years agoMove "-z relro" out of $LDFLAGS so it's not in `guile-2.0.pc'.
Ludovic Courtès [Wed, 23 Sep 2009 22:04:37 +0000 (00:04 +0200)]
Move "-z relro" out of $LDFLAGS so it's not in `guile-2.0.pc'.

* acinclude.m4 (GUILE_GNU_LD_RELRO): Substitute `GNU_LD_FLAGS'.

* libguile/Makefile.am (libguile_la_LDFLAGS): Add $(GNU_LD_FLAGS).

* srfi/Makefile.am (AM_LDFLAGS): New.

14 years agoHave `guile-config' close over `pkg-config' and $(pkgconfigdir).
Ludovic Courtès [Wed, 23 Sep 2009 20:45:07 +0000 (22:45 +0200)]
Have `guile-config' close over `pkg-config' and $(pkgconfigdir).

* meta/Makefile.am (guile-config): New target.
  (EXTRA_DIST): Add `guile-config.in'.

* meta/guile-config.in: New, formerly `guile-config'.  Use the right
  installed `guile', with the right $PKG_CONFIG_PATH.  Disable
  auto-compilation.
  (%pkg-config-program): New variable.
  (pkg-config): Use it.

14 years agoPartially revert e5f5113c21f396705d7479a570c96690135c9d36.
Ludovic Courtès [Wed, 23 Sep 2009 20:13:09 +0000 (22:13 +0200)]
Partially revert e5f5113c21f396705d7479a570c96690135c9d36.

The intent is to maintain the readability of `pmatch' invocations.

* module/language/assembly/disassemble.scm (disassemble-load-program):
  Don't use wildcards in `pmatch' invocations, even when the matched
  elements are unused.

* module/language/glil/decompile-assembly.scm (decompile-toplevel,
  decompile-load-program): Likewise.

* module/system/xref.scm (program-callee-rev-vars): Likewise.

* module/language/assembly.scm (byte-length): Likewise.

* module/language/tree-il/compile-glil.scm (flatten): Likewise.

14 years agoReinstate backward-compatible `scm_array_p ()'.
Ludovic Courtès [Wed, 23 Sep 2009 20:04:55 +0000 (22:04 +0200)]
Reinstate backward-compatible `scm_array_p ()'.

* libguile/generalized-arrays.c (scm_array_p_2): New, formerly
  `scm_array_p ()'.
  (scm_array_p): Add second argument, for compatibility with 1.8 and
  earlier and to match what the doc says and what `SCM_VALIDATE_ARRAY'
  expects.

* libguile/generalized-arrays.h (scm_array_p_2): New.
  (scm_array_p): Adjust.

14 years agoModify char and string locale upcase and downcase for Unicode
Michael Gran [Wed, 23 Sep 2009 04:08:29 +0000 (21:08 -0700)]
Modify char and string locale upcase and downcase for Unicode

* libguile/i18n.c (u32_locale_tocase): new helper function
  (scm_char_locale_downcase, scm_char_locale_upcase): add capability
  for UCS-4 characters.
  (scm_string_locale_downcase, scm_string_locale_upcase): modify for
  the new scheme strings.

14 years agoManual link from `Guile Initialization' to `Initialization'
Neil Jerram [Tue, 22 Sep 2009 00:03:43 +0000 (01:03 +0100)]
Manual link from `Guile Initialization' to `Initialization'

Thanks to Dale Smith for suggesting this.

* doc/ref/libguile-linking.texi: Add ref to full doc of Guile
  initialisation functions.

14 years agoChanges so that benchmark-guile runs successfully
Neil Jerram [Mon, 21 Sep 2009 23:30:44 +0000 (00:30 +0100)]
Changes so that benchmark-guile runs successfully

* benchmark-suite/benchmarks/bytevectors.bm: Add "coding: latin1"
  comment where Guile will find it.

* benchmark-suite/benchmarks/chars.bm: Ditto.

* benchmark-suite/benchmarks/srfi-13.bm: Ditto.

* benchmark-suite/benchmarks/read.bm ("read"): Divide numbers of
  iterations by 10, so that the benchmarks complete within a few
  minutes.

* benchmark-suite/lib.scm (benchmark): Use `run-benchmark' in macro
  definition, not `,run-benchmark'.

* benchmark-suite/benchmarks/0-reference.bm,
  benchmark-suite/benchmarks/continuations.bm,
  benchmark-suite/benchmarks/if.bm,
  benchmark-suite/benchmarks/logand.bm: Add define-module.

* benchmark-suite/results/neil-arudy: New file, containing benchmark
  results from my computer.

14 years agoGDS usability: operation without a mouse
Neil Jerram [Mon, 21 Sep 2009 23:00:59 +0000 (00:00 +0100)]
GDS usability: operation without a mouse

Derek Peschel provided this patch and described it as follows.

"Most of the time I use Terminal in OS X, rather than xterm.  I also don't
bother with the GUI versions of Emacs.  So unfortunately I have no mouse
support in Emacs.  Also the system I'm testing Guile on thinks my terminal
doesn't support color and I haven't fixed it yet.  The attached patch makes
GDS more usable for me.

"With no mouse, the "[click here to show error stack]" design is very
inconvenient.  You added a C-M (return) binding at some point.  I copied
that, but I also changed the message to show it.  And I made the return
work when the cursor is after the right bracket."

* emacs/gds-scheme.el (gds-display-results): Make "click here" message
  more helpful for people without mice.  Also extend text properties
  so that a RET key press works at the end of that line.

14 years agoTypo fixes
Neil Jerram [Sat, 19 Sep 2009 00:23:09 +0000 (01:23 +0100)]
Typo fixes

14 years agoFix GDB in Emacs incantation
Neil Jerram [Sat, 19 Sep 2009 00:20:31 +0000 (01:20 +0100)]
Fix GDB in Emacs incantation

14 years agoTests for record types
Michael Gran [Mon, 21 Sep 2009 03:59:05 +0000 (20:59 -0700)]
Tests for record types

* test-suite/tests/records.test: new tests

14 years agoMore tests for strings
Michael Gran [Mon, 21 Sep 2009 03:58:08 +0000 (20:58 -0700)]
More tests for strings

* test-suite/tests/vectors.test: test make-vector and interactions between
  strings and vectors

* test-suite/tests/strings.test: test string-null?, string? and backslash
  escapes

* test-suite/tests/srfi-13.test: test null input strings in string-any and
  string-every

14 years agoRemove unused variables in system/language.
Ludovic Courtès [Sun, 20 Sep 2009 22:35:19 +0000 (00:35 +0200)]
Remove unused variables in system/language.

* module/language/assembly.scm (byte-length): Don't match unused
  record slots.

* module/language/tree-il.scm (tree-il->scheme, post-order!,
  pre-order!): Likewise.

* module/language/tree-il/analyze.scm (analyze-lexicals): Likewise.

* module/language/tree-il/compile-glil.scm (flatten): Likewise.

* module/language/assembly/disassemble.scm (disassemble-load-program):
  Don't match unused list elements.

* module/language/glil/decompile-assembly.scm (decompile-toplevel,
  decompile-load-program): Likewise.

* module/system/xref.scm (program-callee-rev-vars): Likewise.

* module/language/assembly/compile-bytecode.scm
  (write-bytecode)[write-sized-loader]: Remove.

* module/language/assembly/decompile-bytecode.scm (decode-load-program):
  Factorize `pad' variables.

* module/language/ecmascript/base.scm (object->value/string,
  object->value/number)[v]: Remove.

* module/language/ecmascript/tokenize.scm (read-slash)[c0]: Remove.

* module/language/objcode/spec.scm (decompile-value)[nargs]: Remove.

* module/system/repl/command.scm (time)[vms-start, vms-end]: Remove.

* module/system/repl/repl.scm (prompting-meta-read): Use `prompt'.

14 years agoRemove unused variables in ice-9/goops/srfi/scripts.
Ludovic Courtès [Sun, 20 Sep 2009 22:10:28 +0000 (00:10 +0200)]
Remove unused variables in ice-9/goops/srfi/scripts.

* module/ice-9/boot-9.scm (scm-style-repl)[-abort]: Remove.

* module/oop/goops.scm (class)[slot-defs]: Remove.
  (compute-slot-accessors)[name]: Remove.
  (compute-get-n-set)[env]: Remove.

* module/oop/goops/active-slot.scm (compute-get-n-set)[env, name]:
  Remove.

* module/oop/goops/dispatch.scm (cache-try-hash!)[max-misses]: Remove.

* module/oop/goops/save.scm (make-mapper)[dims]: Remove.

* module/scripts/autofrisk.scm (>>checks)[prog]: Remove.

* module/srfi/srfi-19.scm (priv:read-directives)[ireaderf, eireader4]:
  Remove.

14 years agoHonor and confine expansion-time side-effects to `current-reader'.
Ludovic Courtès [Mon, 17 Aug 2009 20:28:54 +0000 (22:28 +0200)]
Honor and confine expansion-time side-effects to `current-reader'.

* module/language/scheme/spec.scm (scheme)[#:reader]: Honor the
  compilation environment's `current-reader'.

* module/system/base/compile.scm (*compilation-environment*): New
  fluid.
  (current-compilation-environment): New procedure.
  (make-compilation-module): Provide a fresh `current-reader' fluid.
  (read-and-compile): Set `*compilation-environment*' appropriately.
  (compile): Likewise.

* test-suite/tests/compiler.test (read-and-compile): New.
  ("current-reader"): New test prefix.

14 years agoFix copyright in `(srfi srfi-4 gnu)'.
Ludovic Courtès [Sun, 20 Sep 2009 20:29:28 +0000 (22:29 +0200)]
Fix copyright in `(srfi srfi-4 gnu)'.

14 years agoCompile in a fresh module by default.
Ludovic Courtès [Fri, 14 Aug 2009 17:30:14 +0000 (19:30 +0200)]
Compile in a fresh module by default.

* module/system/base/compile.scm (make-compilation-module,
  language-default-environment): New procedures.
  (read-and-compile, compile): Have ENV default to
  `(language-default-environment from)'.
  (compile-and-load): Compile in `(current-module)'.

* module/system/repl/common.scm (repl-compile): Explicitly compile in
  the current module so that macro definitions are visible.

* libguile/load.c (kw_env): New variable.
  (do_try_autocompile): Call `compile-file' with `#:env (current-module)'.

* test-suite/tests/compiler.test ("psyntax")["compile uses a fresh module by
  default", "compile-time definitions are isolated"]: New tests.
  ["compile in current module"]: Specify `#:env (current-module)'.
  ["redefinition"]: Adjust.

* test-suite/tests/bytevectors.test (c&e): Explicitly compile in the
  current module so that its imports are visible.

14 years agofix bitvectors after the array handle refactoring
Andy Wingo [Thu, 17 Sep 2009 11:52:09 +0000 (13:52 +0200)]
fix bitvectors after the array handle refactoring

* libguile/uniform.h (scm_array_handle_uniform_element_bit_size): New
  public accessor.

* libguile/uniform.c (scm_array_handle_uniform_element_size): Better
  errors in non-byte-aligned arrays.
  (scm_uniform_vector_element_type, scm_uniform_vector_element_size)
  (scm_c_uniform_vector_ref, scm_c_uniform_vector_set_x):
  (scm_uniform_vector_to_list): Don't require byte-aligned access.

* libguile/bytevectors.c (scm_uniform_array_to_bytevector):
* libguile/arrays.c (scm_from_contiguous_typed_array):  Fix for
  uniform arrays whose element size is not a multiple of the byte size.

14 years agofix thinko in api-memory.texi
Andy Wingo [Thu, 17 Sep 2009 10:24:28 +0000 (12:24 +0200)]
fix thinko in api-memory.texi

14 years agoi18n: Remove non-local exists from `u32_locale_casecoll ()'.
Ludovic Courtès [Fri, 18 Sep 2009 10:58:54 +0000 (12:58 +0200)]
i18n: Remove non-local exists from `u32_locale_casecoll ()'.

* libguile/i18n.c (u32_locale_casecoll): Add RESULT argument.  Return
  zero or ERRNO.
  (compare_u32_strings_ci): Adjust accordingly.

14 years agoi18n: Always use locale-dependent string collation.
Ludovic Courtès [Fri, 18 Sep 2009 10:32:09 +0000 (12:32 +0200)]
i18n: Always use locale-dependent string collation.

* libguile/i18n.c (compare_u32_strings, compare_u32_strings_ci): Always
  use locale-dependent string collation.

* test-suite/tests/i18n.test: Recoded in UTF-8.
  (%french-utf8-locale-name): New.
  (under-locale-or-unresolved): New.  Don't catch errors on GNU systems.
  (under-french-locale-or-unresolved): Use it.
  (under-french-utf8-locale-or-unresolved): New.
  ("text collation (French)")["string-locale-ci=? (2 args, wide
  strings)", "string-locale-ci=? (3 args, wide strings)",
  "string-locale-ci<>? (wide strings)", "string-locale-ci<>? (wide and
  narrow strings)", "char-locale-ci<>? (wide)"]: New tests.

14 years agoi18n: Avoid needless heap allocation.
Ludovic Courtès [Fri, 18 Sep 2009 10:21:22 +0000 (12:21 +0200)]
i18n: Avoid needless heap allocation.

* libguile/i18n.c (SCM_STRING_TO_U32_BUF): Allocate buffers on the stack
  rather on the heap.
  (SCM_U32_BUF_FREE): Remove.  Callers updated.

14 years agoi18n: Simplify `RUN_IN_LOCALE_SECTION' (GNU version).
Ludovic Courtès [Fri, 18 Sep 2009 10:15:26 +0000 (12:15 +0200)]
i18n: Simplify `RUN_IN_LOCALE_SECTION' (GNU version).

* libguile/i18n.c (RUN_IN_LOCALE_SECTION)[USE_GNU_LOCALE_API]: Remove
  extraneous uselocale(3) call.

14 years agoAdd the `%host-type' global variable.
Ludovic Courtès [Fri, 18 Sep 2009 09:40:03 +0000 (11:40 +0200)]
Add the `%host-type' global variable.

* configure.ac: Define `HOST_TYPE'.

* libguile/load.c (sys_host_type): New variable.

* doc/ref/api-options.texi (Build Config): Document `%host-type'.

14 years agoAdapt i18n string and char comparison funcs for Unicode
Michael Gran [Thu, 17 Sep 2009 15:14:08 +0000 (08:14 -0700)]
Adapt i18n string and char comparison funcs for Unicode

* libguile/i18n.c (RUN_IN_LOCALE_SECTION) [USE_GNU_LOCALE_API]: new
  macro for this define.  Should work the same as the !USE_GNU_LOCAL_API
  version
  (SCM_STRING_TO_U32_BUF, SCM_U32_BUF_FREE): helper macros
  (compare_u32_strings, compare_u32_strings_ci): new functions that
  compare scheme strings in the presence of the locale
  (u32_locale_casecoll): new helper function for compare_u32_strings_ci
  (compare_strings, compare_strings_ci): removed and replaced by
  compare_u32_strings and compare_u32_strings_ci
  (scm_string_locale_lt, scm_string_locale_gt, scm_string_locale_ci_lt)
  (scm_string_locale_ci_gt, scm_string_locale_ci_eq): modified to
  use new compare_u32_strings and compare_u32_strings_ci comparison
  functions
  (scm_char_locale_lt, scm_char_locale_gt, scm_char_locale_ci_lt)
  (scm_char_locale_ci_gt, scm_char_locale_ci_eq): modified to use
  new compare_u32_strings and compare_u32_strings_ci comparison
  functions

14 years agoRemove deprecation warnings from the build
Neil Jerram [Thu, 17 Sep 2009 00:18:14 +0000 (01:18 +0100)]
Remove deprecation warnings from the build

* module/srfi/srfi-35.scm: Remove explicit use of (ice-9 syncase).

* test-suite/tests/r5rs_pitfall.test: Same again.

* test-suite/tests/syncase.test: Remove "(ice-9 syncase) loads" test;
  syncase is always loaded now.

14 years agoConvenience for running GDB on Guile in Emacs
Neil Jerram [Wed, 16 Sep 2009 23:17:58 +0000 (00:17 +0100)]
Convenience for running GDB on Guile in Emacs

* meta/gdb-uninstalled-guile.in: Add (in a comment) an elisp form that
  can be evaluated to run GDB on Guile in Emacs.

14 years agoFix omission of VM frames from backtrace
Neil Jerram [Wed, 16 Sep 2009 23:14:16 +0000 (00:14 +0100)]
Fix omission of VM frames from backtrace

From the time when a #<program> was a SMOB, really_make_boot_program
in vm.c was still using SCM_SET_SMOB_FLAGS to set the
SCM_F_PROGRAM_IS_BOOT flag - which meant that it was setting flag
1<<32 :-) which obviously was then missed by the SCM_PROGRAM_IS_BOOT
calls in stacks.c.

* libguile/programs.h (SCM_F_PROGRAM_IS_BOOT): Use a less significant
  bit for this flag, now that programs use a tc7 type.

* libguile/vm.c (really_make_boot_program): Don't use
  SCM_SET_SMOB_FLAGS, now that programs aren't SMOBs.

14 years agoFix incorrect stack count warnings
Neil Jerram [Wed, 16 Sep 2009 23:05:06 +0000 (00:05 +0100)]
Fix incorrect stack count warnings

* libguile/stacks.c (stack_depth): Decrement depth count for a
  macro-expansion frame.  (Missing this decrement will cause a "stack
  count incorrect" warning but is actually benign, as it only means
  that scm_make_stack allocates a bit more space for the stack than it
  really needs.)

  (read_frames): Increment count of remaining unused frames, when
  cutting out a macro transformer application frame.  (Missing this
  increment could cause the "stack count incorrect" warning, and could
  make read_frames think it's filled up all the available stack frames
  when there's actually still one frame unused; this wasn't benign,
  because it could cause information to be missing from a stack
  trace.)

14 years agoRemove unhittable else branch for nonexistent type of debug frame
Neil Jerram [Wed, 16 Sep 2009 22:59:15 +0000 (23:59 +0100)]
Remove unhittable else branch for nonexistent type of debug frame

* libguile/stacks.c (stack_depth): Remove unhittable else branch
  apparently catering to a kind of frame that isn't an eval, apply or
  void frame - in fact there are no other kinds of frames.

14 years agoadd the libdir to the ltdl lib search path
Andy Wingo [Wed, 16 Sep 2009 16:10:19 +0000 (18:10 +0200)]
add the libdir to the ltdl lib search path

* libguile/Makefile.am (libpath.h): Fix pkgdatadir, pkglibdir, and
  pkgincludedir entries. Add a new define, SCM_LIB_DIR.

* libguile/dynl.c (sysdep_dynl_init): Add the libdir to the libltdl
  search path. Should fix
  http://thread.gmane.org/gmane.lisp.guile.bugs/4289/focus=4296 -- that
  is, it should allow guile to be invoked from whereever it is
  installed, without munging LTDL_LIBRARY_PATH or the like variables.

  There is a trick though -- during the build, we don't want to be
  looking in the $libdir for loadable modules. So as with
  GUILE_SYSTEM_PATH, we have GUILE_SYSTEM_LTDL_PATH.

* meta/uninstalled-env.in: Set GUILE_SYSTEM_LTDL_PATH to "" when
  building.

14 years agoBump version number for 1.9.3.
Ludovic Courtès [Tue, 15 Sep 2009 21:54:09 +0000 (23:54 +0200)]
Bump version number for 1.9.3.

* GUILE-VERSION (GUILE_MICRO_VERSION): Increment.

14 years agoUse fixnums for int32 when the native word size of greater than 4 bytes.
Ludovic Courtès [Tue, 15 Sep 2009 21:48:01 +0000 (23:48 +0200)]
Use fixnums for int32 when the native word size of greater than 4 bytes.

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'.

14 years agoKeep the weak pair API internal.
Ludovic Courtès [Tue, 15 Sep 2009 21:12:39 +0000 (23:12 +0200)]
Keep the weak pair API internal.

* libguile/weaks.h (scm_weak_car_pair, scm_weak_cdr_pair,
  scm_doubly_weak_pair): Make them internal.

14 years agoFix bug #27450 ("Fat mutexes not GC'd until their owner dies").
Ludovic Courtès [Tue, 15 Sep 2009 20:46:55 +0000 (22:46 +0200)]
Fix bug #27450 ("Fat mutexes not GC'd until their owner dies").

* 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.

14 years agoFix the (currently unused) weak pair accessors.
Ludovic Courtès [Tue, 15 Sep 2009 20:33:03 +0000 (22:33 +0200)]
Fix the (currently unused) weak pair accessors.

* libguile/weaks.h (SCM_WEAK_PAIR_WORD): Fixed; changed to return
  `SCM_UNDEFINED' when the word has been nullified.

14 years ago"Document" the `set-module-eval-closure!' weak hash table glitch.
Ludovic Courtès [Tue, 15 Sep 2009 20:31:45 +0000 (22:31 +0200)]
"Document" the `set-module-eval-closure!' weak hash table glitch.

* 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.

14 years agoNitpick in `srfi-14.c'.
Ludovic Courtès [Mon, 14 Sep 2009 22:40:44 +0000 (00:40 +0200)]
Nitpick in `srfi-14.c'.

* libguile/srfi-14.c (scm_i_ucs_range_to_char_set): Fix warning about
  the position of BASE_CS.

14 years agoMake the precise stack mark procedure more robust.
Ludovic Courtès [Mon, 14 Sep 2009 22:40:00 +0000 (00:40 +0200)]
Make the precise stack mark procedure more robust.

* libguile/vm.c (vm_stack_mark): Return if VM is NULL.

14 years agoUse GC-robust queues/lists in `threads.c'.
Ludovic Courtès [Mon, 14 Sep 2009 22:39:04 +0000 (00:39 +0200)]
Use GC-robust queues/lists in `threads.c'.

* libguile/threads.c (remqueue, dequeue, on_thread_exit): Initialize the
  "next" link of the item returned/removed.

14 years agoRemove explicit thread/condvar/mutex finalization.
Ludovic Courtès [Mon, 14 Sep 2009 21:37:15 +0000 (23:37 +0200)]
Remove explicit thread/condvar/mutex finalization.

* libguile/threads.c (fat_mutex_free): Remove explicit `scm_gc_free ()'
  call.
  (fat_cond_free, thread_free): Remove.
  (scm_threads_prehistory): Adjust accordingly.

14 years agoUpdate `NEWS'.
Ludovic Courtès [Sun, 13 Sep 2009 22:41:27 +0000 (00:41 +0200)]
Update `NEWS'.

14 years agoMerge `libguile-i18n' into `libguile'.
Ludovic Courtès [Sun, 13 Sep 2009 22:40:03 +0000 (00:40 +0200)]
Merge `libguile-i18n' into `libguile'.

* GUILE-VERSION (LIBGUILE_I18N_MAJOR, LIBGUILE_I18N_INTERFACE_CURRENT,
  LIBGUILE_I18N_INTERFACE_REVISION, LIBGUILE_I18N_INTERFACE_AGE,
  LIBGUILE_I18N_INTERFACE): Remove.

* doc/ref/api-i18n.texi (i18n Introduction): Don't mention
  `libguile-i18n'.

* libguile.h: Include "libguile/i18n.h".

* libguile/Makefile.am (lib_LTLIBRARIES): Remove `libguile-i18n-v*'.
  (libguile_la_SOURCES): Add `i18n.c'.
  (libguile_i18n_v_*_SOURCES, libguile_i18n_v_*_CFLAGS,
  libguile_i18n_v_*_LIBADD, libguile_i18n_v_*_LDFLAGS): Remove.

* libguile/i18n.c (scm_bootstrap_i18n): New function.

* libguile/i18n.h (scm_nl_langinfo, scm_init_i18n): Made internal.
  (scm_bootstrap_i18n): New declaration.

* libguile/init.c (scm_i_init_guile): Invoke `scm_bootstrap_i18n ()'.

* module/ice-9/i18n.scm: Load from `libguile' instead of
  `libguile-i18n-v-0'.

14 years agoSwitch the `encoding*.test' files to LGPLv3+.
Ludovic Courtès [Sun, 13 Sep 2009 14:49:35 +0000 (16:49 +0200)]
Switch the `encoding*.test' files to LGPLv3+.

* 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.

14 years agoUpdate `scm_without_guile ()' documentation.
Ludovic Courtès [Sun, 13 Sep 2009 14:22:34 +0000 (16:22 +0200)]
Update `scm_without_guile ()' documentation.

* doc/ref/api-scheduling.texi (Blocking): Mention that
  `scm_without_guile ()' & co. aren't needed any longer.