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

14736 commits

Author SHA1 Message Date
Andy Wingo
1903eae4c9 Merge remote-tracking branch 'origin/stable-2.0'
Conflicts:
	GUILE-VERSION
2011-04-28 15:53:35 +02:00
Andy Wingo
91956a94fe allow while as an expression
* module/ice-9/boot-9.scm (while): Specify the return value as #f under
  normal conditions, #t under (break), and arg... under (break arg...).
* test-suite/tests/syntax.test ("while"): Test.
* doc/ref/api-control.texi (while do): Document.
2011-04-28 15:48:35 +02:00
Andy Wingo
18e444b40e add reset and shift
* module/ice-9/control.scm (reset, shift): Add implementations of these
  operators from Wolfgang J Moeller, derived from implementations by
  Oleg Kiselyov.
  (reset*, shift*): Procedural variants.

* test-suite/tests/control.test ("shift and reset"): Add tests,
  originally from Oleg Kiselyov.
2011-04-28 15:48:28 +02:00
Ludovic Courtès
6b480ced9c Fix typo in `NEWS'. 2011-04-27 22:48:20 +02:00
Ludovic Courtès
1aad664739 Bump version number for 2.0.1.
* GUILE-VERSION (GUILE_MICRO_VERSION): Increment.
  (LIBGUILE_INTERFACE_CURRENT): Increment to account for new C functions
  such as `scm_c_public_ref' and `scm_from_latin1_keyword'.
  (LIBGUILE_INTERFACE_AGE): Increment.
2011-04-27 22:39:38 +02:00
Ludovic Courtès
2e6829d24d Update `NEWS'. 2011-04-27 22:30:31 +02:00
Ludovic Courtès
756b1dfa6e Keep a 2.0.0-compatible `define-inlinable' macro in (srfi srfi-9).
Partially reverts 165b10ddfa and
531c9f1dc5.

* module/srfi/srfi-9.scm (define-inlinable): New macro.
2011-04-27 22:26:05 +02:00
Ludovic Courtès
de424d9594 Document `(ice-9 binary-ports)'.
* doc/ref/api-io.texi (R6RS I/O Ports): Mention `(ice-9 binary-ports)'.

* NEWS: Update.
2011-04-27 22:14:31 +02:00
Ludovic Courtès
4cadf64f9a Add tests for UTF-8 ill-formed sequence handling.
* test-suite/tests/ports.test ("string ports"): Add for
  `test-decoding-error' tests for ill-formed UTF-8 sequences.  Thanks
  to Mark H Weaver <mhw@netris.org> for pointing this out.
2011-04-27 21:55:42 +02:00
Ludovic Courtès
a42d79711b Gracefully handle unterminated UTF-8 sequences instead of hitting an `assert'.
* libguile/ports.c (get_codepoint): Return EILSEQ when OUTPUT_SIZE == 0.

* test-suite/tests/ports.test ("string ports"): Add 2 tests for
  unterminated sequences.
2011-04-27 20:34:08 +02:00
Ludovic Courtès
d84783a80c Add a couple more Unicode I/O tests.
* test-suite/tests/ports.test ("string ports")["%default-port-encoding
  is honored"]: Make sure `(port-encoding p)' is as expected.
  ["peek-char [utf-16]"]: New test.
2011-04-27 16:28:32 +02:00
Ludovic Courtès
9a201881e6 Rewrite port decoding error tests using a mini DSL.
* test-suite/tests/ports.test ("string ports")[test-decoding-error]: New
  macro.
  ["read-char, wrong encoding, error", "read-char, wrong encoding,
  escape", "read-char, wrong encoding, substitute", "peek-char, wrong
  encoding, error"]: Rewrite using `test-decoding-error'.
2011-04-27 16:28:29 +02:00
Ludovic Courtès
94b55d3fa0 Gracefully handle `setlocale' errors at the REPL.
* module/ice-9/top-repl.scm (top-repl): Catch exceptions from
  `setlocale'.  Reported by CRLF0710 <crlf0710@gmail.com>.
2011-04-27 00:57:53 +02:00
Ludovic Courtès
fb9cfa83a7 Remove the `sizeof (mpz_t)' check.
* libguile/numbers.c: Remove `sizeof (mpz_t)' check, which wasn't need
  anymore since `make_bignum' doesn't make any such assumption.
2011-04-26 00:03:44 +02:00
Ludovic Courtès
7c86abd9ce Use scm_with_guile' in test-pthread-create'.
* test-suite/standalone/test-pthread-create.c (inner_main): New
  function.
  (main): Call it within `scm_with_guile', instead of using
  `scm_init_guile'.  This improves portability--e.g.,
  `GC_get_stack_base', used by `scm_init_guile', failed on Darwin
  up to BDW-GC 7.1alpha4 included (thanks, Mark, for the hint.)
2011-04-25 23:59:42 +02:00
Ludovic Courtès
dd7d0148f2 Update Gnulib to v0.0-5158-g7d06b32; remove strcase' and version-etc-fsf'.
* m4/gnulib-cache.m4: Remove `strcase' and `version-etc-fsf'.

* configure.ac (POTENTIAL_GCC_CFLAGS): Remove `-Wundef'.

* libguile/script.c: Don't include <version-etc.h>.
2011-04-25 23:59:37 +02:00
Ludovic Courtès
eb0ffdd819 Fix `#ifdef HAVE_CONFIG_H' stanza in some stand-alone tests.
* test-suite/standalone/test-asmobs-lib.c,
  test-suite/standalone/test-extensions-lib.c,
  test-suite/standalone/test-ffi-lib.c,
  test-suite/standalone/test-list.c,
  test-suite/standalone/test-num2integral.c,
  test-suite/standalone/test-with-guile-module.c: Change `#ifndef
  HAVE_CONFIG_H' to `#ifdef HAVE_CONFIG_H' (!).
2011-04-25 23:59:35 +02:00
Ludovic Courtès
d0476fa2b0 Compile more file system related procedures when `--disable-posix'.
* libguile/filesys.c (scm_tc16_dir, scm_directory_stream_p, scm_opendir,
  scm_readdir, scm_rewinddir, scm_closedir, scm_dir_print,
  scm_dir_free, scm_lstat): Compile unconditionally.
2011-04-25 22:52:00 +02:00
Ludovic Courtès
d20912e67d Move {total,current}-processor-count' outside of posix.c'.
* libguile/posix.c (scm_total_processor_count,
  scm_current_processor_count): Move to...
* libguile/threads.c: ... here.

* libguile/posix.h (scm_total_processor_count,
  scm_current_processor_count): Move declarations to...
* libguile/threads.h: ... here.

* test-suite/tests/posix.test ("nproc"): Move tests to...
* test-suite/tests/threads.test: ... here.
2011-04-25 22:41:58 +02:00
Ludovic Courtès
bbec460245 Make the `sizeof (mpz_t)' check at compile-time.
* libguile/init.c (scm_i_init_guile): Remove the `sizeof (mpz_t)'
  run-time check.

* libguile/numbers.c: Add a compile-time check for `sizeof (mpz_t)'.
2011-04-25 22:36:30 +02:00
Ludovic Courtès
4a23562339 Add pthread-related tests.
* test-suite/standalone/Makefile.am (test_scm_spawn_thread_CFLAGS,
  test_scm_spawn_thread_LDADD, test_pthread_create_CFLAGS,
  test_pthread_create_LDADD, test_pthread_create_secondary_CFLAGS,
  test_pthread_create_secondary_LDADD): New variables.
  (check_PROGRAMS)[BUILD_PTHREAD_SUPPORT]: Add `test-scm-spawn-thread',
  `test-pthread_create', `test-pthread_create-secondary'.
  (TESTS)[BUILD_PTHREAD_SUPPORT]: Likewise.

* test-suite/standalone/test-scm-spawn-thread.c,
  test-suite/standalone/test-pthread-create.c,
  test-suite/standalone/test-pthread-create-secondary.c: New files.
2011-04-25 16:45:24 +02:00
Ludovic Courtès
912308835d Make `scm_i_ensure_signal_delivery_thread' call in Guile mode.
* libguile/threads.c (on_thread_exit): Move
  `scm_i_ensure_signal_delivery_thread' call...
  (do_thread_exit): ... here.
2011-04-25 16:45:22 +02:00
Ludovic Courtès
96128014bf Make sure binary ports pass `binary-port?' regardless of the locale.
* libguile/r6rs-ports.c (make_bip, make_cbip, make_bop, make_cbop):
  Set `c_port->encoding' to NULL.

* test-suite/tests/r6rs-ports.test ("7.2.7 Input
  Ports")["bytevector-input-port is binary"]: New test.
  ("7.2.7 Input Ports")["make-custom-binary-input-port"]: Make sure PORT
  passes `binary-port?' and `input-port?'.
  ("8.2.10 Output ports")["bytevector-output-port is binary"]: New test.
  ["make-custom-binary-output"]: Rename to...
  ["make-custom-binary-output-port"]: ... this.

* test-suite/tests/ports.test ("string ports")["read-char, wrong
  encoding, error", "read-char, wrong encoding, escape", "read-char,
  wrong encoding, substitute", "peek-char, wrong encoding, error"]: Use
  `set-port-encoding!' instead of `%default-port-encoding' to set the
  encoding of bytevector input ports.

* test-suite/tests/rdelim.test ("read-line")["decoding error", "decoding
  error, substitute"]: Likewise.

* doc/ref/api-io.texi (R6RS Port Manipulation): Document `binary-port?'
  and `textual-port?'.

* doc/ref/r6rs.texi (R6RS Incompatibilities): Mention the soft
  distinction between textual and binary ports.
2011-04-22 23:58:00 +02:00
Ludovic Courtès
969bb92e9b Turn the libunistring/iconv configure check into a macro.
* acinclude.m4 (GUILE_LIBUNISTRING_WITH_ICONV_SUPPORT): New macro.

* configure.ac: Use it.
2011-04-22 16:59:08 +02:00
Ludovic Courtès
a508fbdb01 Fix typo in `configure.ac'.
* configure.ac: Add missing comma in `AC_RUN_IFELSE' invocation.
2011-04-22 16:59:07 +02:00
Ludovic Courtès
ed756f7817 Increase the timeout of timing-sensitive thread tests.
* test-suite/tests/threads.test ("timed locking succeeds if mutex
  unlocked within timeout", "timed unlocking returns #t if condition
  signaled", "timed joining succeeds if thread exits within timeout"):
  Increase the timeout.  Reported by Dale P. Smith <dsmich@roadrunner.com>.
2011-04-22 16:59:05 +02:00
Andy Wingo
514ff6ea07 add test that libunistring was built with iconv support
* configure.ac: Add check that libunistring was built with iconv
  support.  Thanks to Mark Weaver for the debugging and test program.
2011-04-21 16:02:09 +02:00
Mark H Weaver
c3d8450c75 Clarify units of string length in decription of scm_from_stringn
* doc/ref/api-data.texi (Conversion to/from C): In description of
  scm_from_stringn, clarify that the length is specified in bytes.
2011-04-21 09:56:11 -04:00
Mark H Weaver
68a78738a4 Clarify the units of returned lengths in string conversion functions
* doc/ref/api-data.texi (Conversion to/from C): In descriptions of
  scm_to_stringn and scm_to_{latin1,utf8,utf32}, clarify that the
  returned length is in units of bytes or code points, not characters.
  Also change NULL to @code{NULL} in a few places.
2011-04-19 23:59:17 -04:00
Andy Wingo
0fbdbe6c84 fix pre-GC_set_start_callback compilation
* libguile/gc.c: Move declaration of run_before_gc_hook up.
2011-04-15 16:41:34 +00:00
Andy Wingo
66b229d56e pre-GC_set_start_callback compatibility
* configure.ac: Add a check for GC_set_start_callback.

* libguile/gc.c (scm_i_gc): If we don't have GC_set_start_callback, run
  the before-gc hook manually here.
  (scm_init_gc): Otherwise set it as a start callback.

* libguile/hashtab.c (weak_gc_callback, weak_gc_hook)
  (weak_gc_finalizer, scm_c_register_weak_gc_callback): Fix to work
  either way, with or without GC_set_start_callback.
2011-04-15 18:31:06 +02:00
Andy Wingo
631e49ed76 weak hash table vacuum on before-gc C hook
* libguile/hashtab.c (weak_gc_callback)
  (scm_c_register_weak_gc_callback): Change implementation to use the
  before-gc C hook instead of the after-gc finalizers.
2011-04-15 18:05:23 +02:00
Andy Wingo
cc3546b027 use gc_start_callback + asyncs for after-gc-hook, instead of finalizers
* libguile/gc.c (run_before_gc_c_hook, scm_storage_prehistory)
  (after_gc_async_thunk, queue_after_gc_hook, scm_init_gc): Instead of
  playing our finalizer trick, connect to the GC start callback, and use
  it to queue an async after-gc-hook.  Seems to fix the after-gc-hook on
  non-threaded builds.  Though this does re-enable the before-gc C hook,
  we don't wire up the Scheme hook because we're in the alloc lock; and
  indeed, a before-GC scheme hook isn't a great idea...
2011-04-15 17:45:52 +02:00
Andy Wingo
1e56cff233 add --fresh-auto-compile
* doc/ref/api-evaluation.texi (Compilation): Add discussion of
  --fresh-auto-compile.
* doc/ref/scheme-scripts.texi (Invoking Guile): Add --fresh-auto-compile
  option.

* NEWS: Add entry.

* libguile/load.c: Define %fresh-auto-compile.
  (scm_primitive_load_path): Use it here.
  (scm_init_load_should_auto_compile): Init from GUILE_AUTO_COMPILE env
  var, with a value of "fresh".

* module/ice-9/boot-9.scm (load-in-vicinity): Auto-compilation cache is
  stale if %fresh-auto-compile is true.

* module/ice-9/command-line.scm (compile-shell-switches): Parse out
  --fresh-auto-compile.
2011-04-15 11:27:27 +02:00
Ludovic Courtès
ee037cee3e Build `filesys.x'.
* libguile/Makefile.am (DOT_X_FILES): Add `filesys.x'.
2011-04-15 09:09:30 +02:00
Ludovic Courtès
073167ef7b Allow compilation with `--disable-posix'.
Reported by Dmitry Dzhus <dima@dzhus.org>.

* configure.ac: Remove `AC_LIBOBJ([filesys])'.  Document
  `--disable-posix' as omitting non-essential POSIX interfaces.

* libguile/Makefile.am (libguile_@GUILE_EFFECTIVE_VERSION@_la_SOURCES):
  Add `filesys.c'.
  (DOT_DOC_FILES): Add `filesys.doc'.
  (EXTRA_libguile_@GUILE_EFFECTIVE_VERSION@_la_SOURCES): Remove
  `filesys.c'.

* libguile/posix.c (scm_mkstemp, scm_access): Move to `filesys.c'.
  (scm_init_posix): Move `R_OK' etc. to `filesys.c'.

* libguile/filesys.c (scm_chown, scm_chmod, scm_umask, scm_open_fdes,
  scm_open, scm_close, scm_close_fdes, scm_link, scm_tc16_dir,
  scm_directory_stream_p, scm_opendir, scm_readdir, scm_rewinddir,
  scm_closedir, scm_dir_print, scm_dir_free, scm_chdir, scm_getcwd,
  set_element, fill_select_type, get_element, retrieve_select_type,
  scm_select, scm_fcntl, scm_fsync, scm_symlink, scm_readlink,
  scm_lstat, scm_copy_file): Conditionalize on HAVE_POSIX.
  (scm_mkstemp, scm_access): New functions.
  (scm_init_filesys): Conditionalize `scm_tc16_dir', `O_RDONLY', etc. on
  HAVE_POSIX.  Define `R_OK', `W_OK', etc.

* libguile/fports.c (fport_print): Use `scm_ttyname' only when
  HAVE_POSIX.

* libguile/i18n.c (lock_locale_mutex, unlock_locale_mutex): New
  functions.  Update users of `scm_i_locale_mutex' to use them.

* libguile/init.c (scm_i_init_guile): Always call `scm_init_filesys'.

* meta/guile-tools.in (main): Use `setlocale' only when it is defined.

* module/ice-9/boot-9.scm: Always load `ice-9/posix'.
2011-04-15 00:09:16 +02:00
Ludovic Courtès
22072f2155 Include <sched.h> in `posix.c'.
* configure.ac: Check for <sched.h>.

* libguile/posix.c [HAVE_SCHED_H]: Include <sched.h>, for
  `sched_setaffinity' & co.
  Reported by Marco Maggi <marco.maggi-ipsu@poste.it>.
2011-04-14 23:16:21 +02:00
Ludovic Courtès
022ae742d1 Add tests for `-Wformat' and gettext.
* test-suite/tests/tree-il.test ("warnings")["non-literal format string
  using gettext", "one missing argument, gettext"]: New tests.
2011-04-14 23:14:14 +02:00
Andy Wingo
3936cebc77 fix analyze.scm literal string warnings
* module/language/tree-il/analyze.scm (const-fmt): Return any literal
  value, not just strings.  The string case is checked later.
2011-04-14 16:53:18 +02:00
Andy Wingo
90779ad9a1 fix embarrassing bugs in (ice-9 command-line)
* module/ice-9/command-line.scm (compile-shell-switches): Whoops, fix a
  few cases that forgot to loop back to the beginning.
2011-04-14 16:46:49 +02:00
Andy Wingo
e07f0a5566 guile -v prints LGPLv3+.
* module/ice-9/command-line.scm (compile-shell-switches): Though Guile
  may be distributed under the GPLv3, Guile is actually LGPLv3+.
2011-04-14 16:18:56 +02:00
Andy Wingo
1693983a61 script.c calls out to (ice-9 command-line)
* libguile/script.c (scm_shell_usage): Call (ice-9 command-line)'s
  shell-usage.
  (scm_compile_shell_switches): Likewise, call (ice-9 command-line)'s
  compile-shell-switches.
2011-04-14 16:15:47 +02:00
Andy Wingo
26ac1e3f42 add packager info to %build-info
* libguile/load.c (init_build_info): Add packager, packager-version, and
  packager-bug-reports to %build-info, if they are available.
2011-04-14 16:06:40 +02:00
Andy Wingo
da5d81a1f7 add (ice-9 command-line)
* module/ice-9/command-line.scm: New module for parsing Guile's command
  line, ported from script.c.  Includes local eval-string implementation
  to make `guile -c 1' faster, by not having to load the compiler.
* module/Makefile.am: Add to build.
2011-04-14 16:06:07 +02:00
Andy Wingo
56e313894b don't warn about non-literal fmt strings for e.g. (_ "foo")
* module/language/tree-il/analyze.scm (const-fmt, format-analysis):
  Allow format strings to be gettexted, using the conventional _ name.
2011-04-14 16:04:18 +02:00
Andy Wingo
7c81eba25b update NEWS
* NEWS: Update for 2.0.1.
2011-04-13 14:07:22 +02:00
Andy Wingo
9d6a151fbd (rnrs arithmetic fixnums) fixnum? export a procedure again
* module/rnrs/arithmetic/fixnums.scm (fixnum?): Restore this export to
  be a procedure, not syntax.
  (inline-fixnum?): This is what fixnum? was.  Use it internally.
2011-04-13 12:50:41 +02:00
Andy Wingo
37325c9bd2 revert 4a2ac0623c
* module/ice-9/popen.scm (open-pipe*): No need to pump the pipes
  guardian here, now that hooks are working again.
2011-04-13 12:50:41 +02:00
Andy Wingo
8e76ce94a2 --disable-threads fix
* libguile/threads.c (do_thread_exit_trampoline, on_thread_exit):
  (scm_i_init_thread_for_guile): Only register and unregister threads
  with bdw-gc when we are building with threads support.  Thanks to
  Marijn for the report.
2011-04-13 12:50:36 +02:00
Andy Wingo
0c81a0c13a bump effective version to 2.2
* .gitignore:
* GUILE-VERSION (GUILE_EFFECTIVE_VERSION):
* configure.ac:
* doc/example-smob/Makefile (CFLAGS, LIBS):
* doc/guile.1:
* doc/ref/libguile-concepts.texi:
* doc/ref/srfi-modules.texi:
* doc/ref/vm.texi:
* meta/Makefile.am (EXTRA_DIST, pkgconfig_DATA):
* meta/guile-config.in (guile-module):
* meta/guile-2.2-uninstalled.pc.in:
* meta/guile-2.2.pc.in: Bump effective version to 2.2.
2011-04-11 23:45:04 +02:00