1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-05 06:50:21 +02:00
Commit graph

16114 commits

Author SHA1 Message Date
Mark H Weaver
5fbf680be9 Make divide functions return values via (SCM *) output arguments
* libguile/numbers.c (scm_euclidean_divide, scm_centered_divide): Change
  API to return two values via output arguments of type (SCM *), instead
  of packing into a values object.

  (scm_i_euclidean_divide, scm_i_centered_divide): New internal wrappers
  that call the above functions and pack the result into a values
  object.

* libguile/numbers.h: Change prototypes to reflect new API.

* doc/ref/api-data.h (Arithmetic): Update manual.
2011-02-14 20:30:30 +01:00
Mark H Weaver
a85c1f93f0 Added internal C function to extract from values object
* libguile/values.c (scm_i_extract_values_2): New internal function
  that extracts two values from a values object.

* libguile/values.h: Added prototype.
2011-02-14 20:29:54 +01:00
Andy Wingo
1fa6ac0014 update thanks
* THANKS: Add Ian Price
2011-02-14 20:23:43 +01:00
Andy Wingo
99015f6d4e add vector-move test cases
* test-suite/tests/vectors.test ("vector-move-left!")
  ("vector-move-right!"): Add test cases for recent bug.
2011-02-14 20:21:04 +01:00
Ian Price
ca65967360 fix fencepost error in vector-move-left! and -right!
* libguile/vectors.c (scm_vector_move_right_x, scm_vector_move_left_x):
  Fix edge case.
2011-02-14 20:19:15 +01:00
Ludovic Courtès
533d8212af Pass all the flags when building `gen-scmconfig' in a cross-compile setup.
* libguile/Makefile.am (gen-scmconfig.$(OBJEXT)): When cross-compiling,
  pass all the CPPFLAGS and CFLAGS.
2011-02-14 13:48:08 +01:00
Ludovic Courtès
d215190e5c Leave the default `*current-warning-prefix*' at the REPL.
* module/system/repl/common.scm (repl-compile): Leave the default
  `*current-warning-prefix*'.
2011-02-14 13:47:20 +01:00
Ludovic Courtès
066a37a13e Temporarily fix unistr.in.h' to allow compilation with -Wundef'.
See <http://thread.gmane.org/gmane.comp.lib.gnulib.bugs/24225> for details.

* lib/unistr.in.h: Change #if's into #ifdef's.
2011-02-14 11:36:51 +01:00
Ludovic Courtès
49114fd43d Update Gnulib; add new modules.
This updates Gnulib to v0.0-4889-ge375fe3.

* m4/gnulib-cache.m4: Add `accept', `bind', `close', `connect',
  `getpeername', `getsockname', `getsockopt', `listen', `malloc',
  `malloca', `recv', `recvfrom', `send', `sendto', `setsockopt',
  `shutdown', `socket', and `sockets', requested by
  Jan Nieuwenhuizen <janneke-list@xs4all.nl> for cross-MinGW32 builds.
  Add `trunc', requested by Mark H Weaver <mhw@netris.org>.
2011-02-14 11:36:25 +01:00
Neil Jerram
d9a00aa536 Thank Ralf
* THANKS: Thank Ralf.
2011-02-14 08:30:33 +00:00
Neil Jerram
c8eb279799 Typo fix
* doc/ref/api-modules.texi (R6RS Libraries): "libraries
  implementation" -> "library implementation".
2011-02-13 22:34:12 +00:00
Neil Jerram
4f04896d6e Procedure/macro index includes Autoconf macros
* doc/ref/indices.texi (Procedure Index): Make explicit that the
  procedure/macro index includes Autoconf macros.
2011-02-13 22:28:25 +00:00
Neil Jerram
679cceeda4 Misc textual editing
* doc/ref/api-scheduling.texi (Asyncs): "queueing" -> "queuing".

* benchmark-suite/lib.scm, doc/sources/unix.texi (Unix conventions),
  test-suite/lib.scm: "postpend" -> "append".

* doc/ref/api-compound.texi (Array Syntax, Dictionary Types),
  doc/ref/api-control.texi (Catch), doc/ref/api-data.texi (Complex
  Numbers, Conversion, Random, Symbol Props, Symbol Uninterned),
  doc/ref/api-options.texi (Build Config, Common Feature Symbols),
  doc/ref/api-regex.texi (Match Structures),
  doc/ref/api-undocumented.texi, doc/ref/compiler.texi (Tree-IL,
  GLIL), doc/ref/data-rep.texi (Immediate objects), doc/ref/goops.texi
  (Slot Description Example), doc/ref/history.texi (A Scheme of Many
  Maintainers, Status), doc/ref/libguile-program.texi (Available
  Functionality), doc/ref/misc-modules.texi (Formatted Output),
  doc/ref/mod-getopt-long.texi (getopt-long Reference),
  doc/ref/posix.texi (Network Socket Address, Network Sockets and
  Communication), doc/ref/srfi-modules.texi (SRFI-1 Association Lists,
  SRFI-10, SRFI-19 String to date, SRFI-27 Random Sources),
  doc/ref/vm.texi (Instruction Set, Top-Level Environment
  Instructions, Procedure Call and Return Instructions),
  doc/sources/unix.texi (Unix conventions): Correct spacing after
  "i.e." and "e.g.".
2011-02-13 22:13:33 +00:00
Neil Jerram
4827afeb13 Avoid uses of "resp. signed"
* doc/ref/api-data.texi (Bytevectors as Integers, Bytevectors and
  Integer Lists): Split signed and unsigned deffns.
2011-02-13 21:50:35 +00:00
Neil Jerram
66c33af01c Reword intro of `Accessing Arrays from C'
* doc/ref/api-compound.texi (Accessing Arrays from C): Reword to avoid
  awkward "rectangularily organized".
2011-02-13 21:49:31 +00:00
Ralf Wildenhues
995953e54d docs: fix typos in manual, and a couple in code comments.
* doc/ref/api-data.texi: Use \sqrt{2} consistently rather than \sqrt2.
  Add @: for correct spacing after "i.e.".
2011-02-13 21:42:04 +00:00
Ralf Wildenhues
1a1ce64dfb docs: fix markup in api-options.texi.
* doc/ref/api-options.texi (Build Config): Use @var for
metasyntactic variable.  Add newline after @noindent.
Use @env for GUILE_LOAD_PATH.
2011-02-13 21:29:58 +00:00
Noah Lavine
482d311b39 Set sockaddr_in.sin_len field when it exists.
* configure.ac: Detect when struct sockaddr_in has a sin_len field.
  Remove obsolete comment.
* libguile/socket.c (scm_to_sockaddr, scm_fill_sockaddr): Set the
  sin_len field in our struct sockaddr_in when it exists.
2011-02-13 22:08:44 +01:00
Andy Wingo
e8ab529d57 bump objcode version to 2.0; introduce minor-version compatibility
* libguile/_scm.h (SCM_OBJCODE_MAJOR_VERSION): Bump to 2.
  (SCM_OBJCODE_MINOR_VERSION): Reset to 0.
  (SCM_OBJCODE_MACHINE_VERSION_STRING, SCM_OBJCODE_COOKIE): Reorder so
  the minor version is the last byte.

* libguile/objcodes.c (make_objcode_by_mmap): Accept objcodes whose
  minor version is less than SCM_OBJCODE_MINOR_VERSION, not just equal
  to.
2011-02-13 22:02:01 +01:00
Noah Lavine
333a81ccba zero newly allocated sockaddrs
* libguile/socket.c (scm_to_sockaddr, scm_fill_sockaddr): Zero the
  sockaddrs, so we do not pass uninitialized memory to the kernel.
2011-02-13 21:04:00 +01:00
Ludovic Courtès
5a79300f85 Add %auto-compilation-options', used by compile-file' when auto-compiling.
* module/ice-9/boot-9.scm (%auto-compilation-options): New variable.
  (load-in-vicinity): Honor it.

* libguile/load.c (kw_opts, sym_compile_file,
  sym_auto_compilation_options): New variables.
  (do_try_auto_compile): Honor %AUTO-COMPILATION-OPTIONS.

* module/system/repl/common.scm (repl-default-options): Have
  `compile-options' default to %AUTO-COMPILATION-OPTIONS.
2011-02-13 19:18:02 +01:00
Ludovic Courtès
a4060f6710 Add `*current-warning-prefix*'.
* module/system/base/message.scm (*current-warning-prefix*): New
  variable.
  (%warning-types): Honor `*current-warning-prefix*'.

* module/scripts/compile.scm (compile): Use an empty
  `*current-warning-prefix*'.

* module/system/repl/common.scm (repl-compile): Likewise.

* test-suite/tests/tree-il.test (call-with-warnings): Likewise.
2011-02-13 19:13:36 +01:00
Andy Wingo
eb7a16a9f8 primitive-load defaults to utf-8, not latin-1
* libguile/load.c (scm_primitive_load): Default to utf-8.
2011-02-13 18:19:00 +01:00
Ludovic Courtès
7354a105cd Have `the-scm-module' be its own public interface (bug #30623).
* module/ice-9/boot-9.scm (the-scm-module): Make it its own public
  interface.

* test-suite/tests/modules.test ("foundations")["the-root-module",
  "the-scm-module"]: New tests.
2011-02-13 15:36:52 +01:00
Andy Wingo
6f06e8d35f autocompile -> auto-compile
* NEWS:
* check-guile.in:
* doc/guile.1:
* doc/ref/scheme-scripts.texi:
* libguile/init.c:
* libguile/load.c:
* libguile/load.h:
* libguile/script.c:
* module/Makefile.am:
* module/ice-9/boot-9.scm:
* module/scripts/compile.scm:
* module/system/base/compile.scm:
* test-suite/Makefile.am:
* test-suite/tests/popen.test: Change "autocompile" to "auto-compile" or
  "auto_compile", as appropriate, in variable names, function names,
  command line arguments, and the documentation.
2011-02-13 15:06:11 +01:00
Andy Wingo
c50775e246 `load' is a macro (!) that resolves paths relative to source file dir
* module/ice-9/boot-9.scm (load-in-vicinity): New helper, loads a file
  relative to a path.
  (load): Turn into a macro that captures the name of the source file
  being expanded, and dispatches to load-in-vicinity.  Referencing
  `load' by bare name returns a closure that embeds the current source
  file name.
2011-02-13 15:06:11 +01:00
Andy Wingo
6c51a40ace read-enable 'positions by default
* libguile/read.c (scm_read_opts): Default "positions" to #t.  The
  compiler was already turning it on anyway, and this allows
  primitive-load without --auto-compile to also propagate source
  information through the expander, for better errors and to let macros
  know their source.

* module/language/scheme/spec.scm: No need to enable positions here
  now.
2011-02-13 15:06:11 +01:00
Andy Wingo
d7265e376d use scm_c_make_struct in scm_values
* libguile/values.c (scm_values): Micro-optimization.
2011-02-13 15:06:11 +01:00
Ludovic Courtès
be90d0b6f9 Add `scm_t_subr' typedef (fix bug #23681).
* libguile/__scm.h (scm_t_subr): New typedef.

* libguile/deprecated.h (scm_make_gsubr, scm_make_gsubr_with_generic,
  scm_call_catching_errors): Use it.

* libguile/gsubr.h (scm_c_make_gsubr, scm_c_define_gsubr,
  scm_c_define_gsubr_with_generic): Likewise.

* libguile/smob.h (scm_smob_descriptor)[apply]: Likewise.
  (scm_set_smob_apply): Likewise.

* libguile/snarf.h (SCM_FUNC_CAST_ARBITRARY_ARGS): Likewise.
2011-02-13 14:50:05 +01:00
Ludovic Courtès
10b9343f04 Change `scm_ramapc' prototype to avoid empty declarators (bug #23681).
* libguile/array-map.h (scm_ramapc): Change `cproc' to `void *' instead
  of using empty declarators.

* libguile/array-map.c (scm_ramapc): Adjust accordingly.
2011-02-13 14:47:33 +01:00
Ludovic Courtès
b339459e94 Fix prototype of `scm_the_vm'.
* libguile/vm.h (scm_the_vm): Use `(void)' instead of `()'.
2011-02-13 14:45:47 +01:00
Andy Wingo
dc20f5a809 fix syntax-error printing
* module/ice-9/boot-9.scm: Fix to make "extra" a rest arg.
2011-02-12 16:38:02 +01:00
Andy Wingo
aae64b37e5 fix scm-error invocation on SIGINT in top-repl.scm
* module/ice-9/top-repl.scm (call-with-sigint): Pass '() as the format
  args when invoking scm-error, to ensure that the error is printable.
2011-02-12 15:58:21 +01:00
Mark H Weaver
4a46bc2a5f Fixes and improvements to number-theoretic division operators
* libguile/numbers.c (scm_euclidean_quotient, scm_euclidean_divide,
  scm_centered_quotient, scm_centered_divide): Fix bug in inum/inum
  case, where (quotient most-negative-fixnum -1) would not be converted
  to a bignum.

  (scm_euclidean_quotient): Be more anal-retentive about calling
  scm_remember_upto_here_1 after mpz_sgn, (even though mpz_sgn is
  documented as being implemented as a macro and certainly won't
  do any allocation).  It's better to be safe than sorry here.

  (scm_euclidean_quotient, scm_centered_quotient): In the bignum/inum
  case, check if the divisor is 1, since this will allow us to avoid
  allocating a new bignum.

  (scm_euclidean_divide, scm_centered_quotient, scm_centered_divide):
  When computing the intermediate truncated quotient (xx / yy) and
  remainder, use (xx % yy) instead of (xx - qq * yy), on the theory that
  the compiler is more likely to handle this case intelligently and
  maybe combine the operations.

  (scm_euclidean_divide): In the bignum/inum case, we know that the
  remainder will fit in an fixnum, so don't bother allocating a bignum
  for it.

  (scm_euclidean_quotient, scm_euclidean_remainder,
  scm_euclidean_divide, scm_centered_quotient, scm_centered_remainder,
  scm_centered_divide): Minor stylistic changes.

* test-suite/tests/numbers.test: Rework testing framework for
  number-theoretic division operators to be more efficient and
  comprehensive in its testing of code paths and problem cases.
2011-02-12 13:00:43 +01:00
Mark H Weaver
bc3d34f587 Add comment about handling of exactness specifiers
* libguile/numbers.c: Add discussion on the handling of exactness
  specifiers to the comment above the string-to-number conversion
  functions.
2011-02-12 13:00:43 +01:00
Mark H Weaver
18104cac0b Fix extensibility of 1-argument atan
* libguile/numbers.c (scm_atan): Call SCM_WTA_DISPATCH_1 instead of
  SCM_WTA_DISPATCH_2 if the second argument is unbound.  Arguably,
  SCM_WTA_DISPATCH_* should handle that case gracefully, but currently
  it doesn't.
2011-02-12 13:00:43 +01:00
Mark H Weaver
1ce7279a06 Fix mistake in comment in tags.h
* libguile/tags.h: Fix comment in discussion of data representation.
  tc3-code #0b110 indicates a small integer and #0b100 indicates a
  non-integer immediate.  Previously, these were reversed.
2011-02-12 13:00:43 +01:00
Mark H Weaver
1a3152f7df Bump copyright date in REPL version string
* module/system/repl/common.scm (*version*): Add 2011 to copyright
  date range.
2011-02-12 13:00:43 +01:00
Ludovic Courtès
e66ff09adb Make sure we don't override the user's extension search path.
* libguile/dynl.c (augment_env): New function.
  (sysdep_dynl_init): Use it instead of `lt_dladdsearchdir'.

* configure.ac: Define `SHARED_LIBRARY_PATH_VARIABLE'.
2011-02-12 12:25:18 +01:00
Ralf Wildenhues
726788204f Save config.cache before tests which are likely to fail.
Guile's configure script takes fairly long.  On a system without
automatic build dependency installation, it is amplified by the fact
that your user might be both impatient and not read the build
instructions, thus needs to rerun configure several times only to find
out there is another dependency to install.  Still, there is help even
for such kinds of misguided figures such as me: save the temporary
config.cache file (if one is used anyway) before embarking upon the set
of tests that are likely to error out.  That way, the second and further
reruns are much faster.

The downside of this patch is that, when fixing the errors requires
changing to precious variables (such as CPPFLAGS or so), the user will
need to 'rm -f config.cache' to keep configure happy.

* configure.ac: Call AC_CACHE_SAVE before the gmp tests.
2011-02-12 12:01:03 +01:00
Andreas Rottmann
32b6312952 install r6rs exception printer
* module/rnrs/exceptions.scm: Install an exception printer for R6RS
  exceptions.
2011-02-11 16:07:44 +01:00
Andy Wingo
39d41afe18 better narrowing in catch-all handlers in throw.c
* libguile/throw.c (handler_message): Narrow away the catch-closure and
  throw frames.
2011-02-11 15:30:25 +01:00
Andy Wingo
9179e8a5ff pre-boot lookup of print-exception works
* libguile/backtrace.c (scm_print_exception): Use scm_module_variable to
  look up print-exception so that it works before boot-9 is loaded.

* libguile/throw.c (CACHE_VAR): Tweak to use scm_from_latin1_symbol.
2011-02-11 15:21:58 +01:00
Andy Wingo
e0c70a8b06 scm_handle_by_message uses scm_print_exception
* libguile/throw.c (handler_message, should_print_backtrace): Use
  scm_print_exception.  Add a helper function to determine when to print
  a backtrace; don't do so on read or syntax errors.
2011-02-11 15:16:25 +01:00
Andy Wingo
9ddf197eb2 scm_display_error_message, display-error use print-exception
* libguile/backtrace.c (scm_display_error_message)
  (scm_i_display_error): Use scm_print_exception.
2011-02-11 15:15:29 +01:00
Andy Wingo
e8df456a15 print-exception gets a c binding
* libguile/backtrace.c (scm_print_exception): Add C binding for
  print-exception, which dispatches to whatever is defined in Scheme.
  (boot_print_exception): Add initial binding, replaced later in
  Scheme.

* module/ice-9/boot-9.scm: Expect there to already be a print-exception
  binding.
2011-02-11 13:13:26 +01:00
Andy Wingo
eaba53b7c8 repl.scm: use print-exception
* module/system/repl/repl.scm: Remove custom exception printers in favor
  of print-exception.
2011-02-11 12:57:08 +01:00
Andy Wingo
f87db65719 (system repl error-handling) uses print-exception
* module/system/repl/error-handling.scm (error-string): Just use
  print-exception instead of rolling our own printer.
  (call-with-error-handling): Simplify.
2011-02-11 12:57:08 +01:00
Andy Wingo
40b91dc897 add set-exception-printer!, print-exception to boot-9
* module/ice-9/boot-9.scm (set-exception-printer!, print-exception):
  Define an extensible exception-printing mechanism.
  Also register printers for all keys thrown by Guile.
  Inspired by a patch by Andreas Rottmann.
2011-02-11 12:57:02 +01:00
Andy Wingo
423fca76e6 frame-source available in default environment
* libguile/frames.c (scm_frame_source): Don't call out to (system vm
  frames), as this routine is used when printing exceptions.  Make
  available in the default environment (ugh).

* module/system/vm/frame.scm: Remove frame-source definition and
  export.
2011-02-11 12:43:05 +01:00