1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-04 22:40:25 +02:00
Commit graph

14736 commits

Author SHA1 Message Date
Neil Jerram
b65ff721a6 Move GOOPS chapter's Stk copyright notice upfront
So as to enable more free refactoring of the rest of the chapter

* doc/ref/goops.texi (Copyright Notice): New section containing the
  Stk copyright.

* doc/ref/goops-tutorial.texi (Copyright): Equivalent section here
  deleted.
2010-09-22 01:36:19 +01:00
Neil Jerram
b997e7f517 GOOPS doc simplification
* doc/ref/goops.texi (GOOPS): Simplify the introductory blurb.
2010-09-22 01:36:19 +01:00
Andy Wingo
d8e2ba23fc (system repl command) cleanups
* module/system/repl/command.scm (profile, trace, inspect)
  (pretty-print): Use repl-prepare-eval-thunk instead of the lower-level
  compile and make-program.
2010-09-21 21:48:09 +02:00
Andy Wingo
65bce23759 breakpoints from recursive prompts work
* module/system/vm/traps.scm (new-disabled-trap): Don't manipulate the
  VM trace level in the enable and disable handlers. Unfortunately, this
  makes traps not work unless you enable hooks, but given that
  vm_dispatch_hook has to set trace-level to 0, there needs to be an
  object with a broader view of what traps are enabled. That object is
  the hook state.

* module/system/vm/trap-state.scm (trap-state->trace-level): New
  procedure.
  (with-default-trap-handler): Add an optional trap-state argument. Now
  makes sure that the vm-trace-level is set appropriately during the
  execution of the thunk, allowing for breakpoints from recursive
  prompts.
2010-09-21 21:37:11 +02:00
Ludovic Courtès
194865d2f7 SRFI-1: Rewrite `alist-copy' in Scheme.
This partially reverts commit b1fff4e793
(Sat Apr 2 2005).

* libguile/srfi-1.c (scm_srfi1_alist_copy): Remove.
* libguile/srfi-1.h (scm_srfi1_alist_copy): Remove declaration.

* module/srfi/srfi-1.scm (alist-copy): New procedure.
2010-09-20 00:01:23 +02:00
Ludovic Courtès
cd99e21cd4 Remove the SRFI-1 C proxies.
* libguile/srfi-1.c (srfi1_module, CACHE_VAR): Remove.
  (scm_srfi1_break, scm_srfi1_break_x, scm_srfi1_car_plus_cdr,
  scm_srfi1_drop_right_x, scm_srfi1_drop_while, scm_srfi1_eighth,
  scm_srfi1_fifth, scm_srfi1_fold, scm_srfi1_last, scm_srfi1_list_index,
  scm_srfi1_list_tabulate, scm_srfi1_lset_adjoin, scm_srfi1_ninth,
  scm_srfi1_not_pair_p, scm_srfi1_reduce, scm_srfi1_reduce_right,
  scm_srfi1_seventh, scm_srfi1_sixth, scm_srfi1_span, scm_srfi1_span_x,
  scm_srfi1_take_x, scm_srfi1_take_while, scm_srfi1_take_while_x,
  scm_srfi1_tenth, scm_srfi1_xcons): Remove.

* libguile/srfi-1.h: Remove the corresponding declarations.
2010-09-20 00:01:23 +02:00
Andy Wingo
e366757659 default-trap-handler bugfix
* module/system/vm/trap-state.scm (default-trap-handler): Fix thinko.
2010-09-19 12:20:58 +02:00
Göran Weinholt
7bcbdce17c Fix make-variable-transformer export
* module/rnrs/syntax-case.scm: Add make-variable-transformer to the
  imports. This was causing an unbound variable error even though
  (rnrs) had been imported.
2010-09-19 12:15:37 +02:00
Andy Wingo
589520bc59 add ,traps ,delete ,disable ,enable
* module/system/repl/command.scm (traps, delete, disable, enable): New
  meta-commands.
2010-09-19 11:32:47 +02:00
Andy Wingo
b9badc35ab implement breakpoints in the repl
* module/system/vm/trap-state.scm: New file, tracks a VM-specific set of
  traps.
* module/Makefile.am: Add trap-state.scm.

* module/system/repl/error-handling.scm: While in a with-error-handling
  block, bind a default trap handler that invokes a recursive prompt.

* module/system/repl/command.scm: Add a `break' repl meta-command.
2010-09-19 11:32:11 +02:00
Andy Wingo
c939b1275b add (system vm traps)
* module/system/vm/traps.scm: New module, implements higher-level traps
  based on the VM hooks. Inspired by (ice-9 debugging traps). Instead of
  the ice-9's variety, these traps have a procedural interface instead
  of a GOOPS interface.

* module/Makefile.am: Add the new module.
2010-09-17 13:33:47 +02:00
Andy Wingo
893fb8d0cc vm hooks run without hooks
* libguile/vm.c (vm_dispatch_hook): Run hooks with the trace-level set
  to 0. We really don't want hooks running while hooks are running.
2010-09-17 10:59:36 +02:00
Andy Wingo
e912d7d5af fix bad Makefile.am addition 2010-09-16 18:28:29 +02:00
Andy Wingo
8d033f4839 instruction tracing tweak
* module/system/vm/trace.scm (vm-trace): No need to output the opcode
  number, and display the ip as a decimal, not a hexidecimal.
2010-09-16 13:04:57 +02:00
Andy Wingo
839eb61cde only trace instructions inside the thunk
* module/system/vm/trace.scm (vm-trace): Only trace instructions when
  we're in the dynamic extent of the thunk.
2010-09-16 12:58:59 +02:00
Andy Wingo
8ad2fadc49 update vm hooks doc
* doc/ref/api-evaluation.texi (VM Behaviour): Half-hearted doc update.
2010-09-16 12:52:17 +02:00
Andy Wingo
f312025167 add vm-abort-continuation-hook, vm-restore-continuation-hook
* libguile/vm-i-system.c (call_cc, tail_call_cc): Call the new
  RESTORE_CONTINUATION_HOOK when a continuation is restored.
  (prompt): Call the new ABORT_CONTINUATION_HOOK when entering the abort
  handler's continuation.

* libguile/vm-engine.h (ABORT_CONTINUATION_HOOK)
  (RESTORE_CONTINUATION_HOOK):
* libguile/vm.h (SCM_VM_ABORT_CONTINUATION_HOOK)
  (SCM_VM_RESTORE_CONTINUATION_HOOK):
* libguile/vm.c: (scm_vm_abort_continuation_hook): New hook, called when
  entering an abort handler.
  (scm_vm_restore_continuation_hook): New hook, called after returning
  to a continuation.

* module/system/vm/vm.scm: Add hooks to export list.
2010-09-16 12:48:41 +02:00
Andy Wingo
c45d4d775d trim our set of vm hooks
* libguile/vm.h (SCM_VM_PUSH_CONTINUATION_HOOK)
  (SCM_VM_POP_CONTINUATION_HOOK): New hooks, to replace
  enter/exit/return.
  (SCM_VM_BOOT_HOOK, SCM_VM_HALT_HOOK, SCM_VM_BREAK_HOOK): Remove these
  useless hooks.

* libguile/vm.c (scm_vm_push_continuation_hook)
  (scm_vm_pop_continuation_hook): New accessors.

* libguile/vm-i-system.c: Remove boot, halt, break, enter, exit, and
  return hooks. Also remove the break instruction. Instead now when we
  push a new continuation onto the stack we call PUSH_CONTINUATION_HOOK,
  and when we pop via a return we call POP_CONTINUATION_HOOK. APPLY_HOOK
  is now decoupled from continuation pushes and pops.

* libguile/vm-engine.h:
* libguile/vm-engine.c: Adapt for hooks.

* module/system/vm/trace.scm (vm-trace): Adapt for hooks. Also revive
  the #:instructions? #t mode.

* module/system/vm/vm.scm: Adapt exports for new set of hooks.
2010-09-16 12:16:02 +02:00
Andy Wingo
7c42238610 remove unused (system vm profile)
* module/Makefile.am:
* module/system/vm/profile.scm: Remove (system vm profile). We use
  statprof.
2010-09-16 12:03:10 +02:00
Ludovic Courtès
f1ee6d54d2 Fix write-beyond-end-of-string error in the conversion to R6RS string escapes.
Reported by Mike Gran <spk121@yahoo.com>.

* libguile/strings.c (scm_i_unistring_escapes_to_guile_escapes,
  scm_i_unistring_escapes_to_r6rs_escapes): Augment comments.
  (scm_to_stringn): When `handler ==
  SCM_FAILED_CONVERSION_ESCAPE_SEQUENCE && SCM_R6RS_ESCAPES_P', realloc
  BUF so that it's large enough for the worst case.

* libguile/print.c (display_character): When `result != NULL && strategy
  == SCM_FAILED_CONVERSION_ESCAPE_SEQUENCE && SCM_R6RS_ESCAPES_P', make
  LOCALE_ENCODED large enough to hold an R6RS escape.
2010-09-15 23:32:28 +02:00
Ludovic Courtès
fd5eec2b6e Optimize `peek-char'.
This makes `peek-char' 40x faster on a port whose encoding is
faster on a UTF-8 port containing multi-byte codepoints.

The `xml->sxml' procedure is 4x faster on a 2.7 MiB XML file.

* libguile/ports.c (get_codepoint): New procedure, moved here from
  `scm_getc', with the additional BUF and LEN parameters.
  (scm_getc): Use it.
  (scm_peek_char): Use it instead of the `scm_getc'/`scm_ungetc'
  sequence.

* test-suite/tests/ports.test ("string ports")["peek-char [latin-1]",
  "peek-char [utf-8]"]: New tests.

* benchmark-suite/Makefile.am (SCM_BENCHMARKS): Add
  `benchmarks/ports.bm'.

* benchmark-suite/benchmarks/ports.bm: New file.
2010-09-15 18:38:57 +02:00
Ludovic Courtès
e9c3018cec Fix copyright year and module name of `write.bm'.
* benchmark-suite/benchmarks/write.bm: Fix copyright year and module
  name.
2010-09-15 18:27:47 +02:00
Ludovic Courtès
33d92fe6ca Re-introduce pretty-printing of combining characters.
This had been removed by commit 07f49ac786
("Factorize and optimize `write' for strings and characters.").
Thanks Mike!

* libguile/print.c (write_combining_character): New procedure.
  (write_character): Use it.

* test-suite/tests/chars.test ("basic char handling")["combining accent
  is pretty-printed", "combining X is pretty-printed"]: New tests.

* test-suite/tests/encoding-iso88591.test ("characters")["write A
  followed by combining accent"]: New test.

* test-suite/tests/encoding-utf8.test ("characters")["write A followed
  by combining accent"]: New test.
2010-09-15 01:02:54 +02:00
Ludovic Courtès
27fdb70373 Remove commented out code from `print.c'.
* libguile/print.c (scm_write, scm_display, scm_write_char): Remove
  `#if 0'-d code.
2010-09-14 16:11:22 +02:00
Ludovic Courtès
07f49ac786 Factorize and optimize `write' for strings and characters.
According to `write.bm', this makes `write' 2.6 times faster for strings.

* libguile/print.c (iprin1): Use `write_character' when
  `SCM_WRITINGP (pstate)' and `SCM_CHARP (exp)' or `scm_is_string (exp)'.
  (scm_i_charprint): Remove.
  (display_character, write_character): New functions.
  (scm_write_char): Use `display_character' instead of
  `scm_i_charprint'.

* libguile/print.h (scm_i_charprint): Remove declaration.

* benchmark-suite/benchmarks/write.bm: New file.

* benchmark-suite/Makefile.am (SCM_BENCHMARKS): Add
  `benchmarks/write.bm'.
2010-09-14 16:11:19 +02:00
Ludovic Courtès
4ff2b9f4b6 Internally expose `scm_i_unistring_escapes_to_{guile,r6rs}_escapes'.
* libguile/strings.c (unistring_escapes_to_guile_escapes): Rename to...
  (scm_i_unistring_escapes_to_guile_escapes): ... this.  Change `char **bufp'
  to `char *buf'; leave realloc responsibility to the caller.  Update caller.
  (unistring_escapes_to_r6rs_escapes): Rename to...
  (scm_i_unistring_escapes_to_r6rs_escapes): ... this.  Likewise.
2010-09-14 16:10:08 +02:00
Andy Wingo
d773d4c8bc doc/ref lib-version.texi removal
* doc/ref/.gitignore:
* doc/ref/Makefile.am:
* doc/ref/guile.texi: Remove rules for generating an unused
  lib-version.texi.
2010-09-12 23:44:16 +02:00
Andy Wingo
cf7e51b489 libguile gitignore
* libguile/.gitignore: Fix for recent cpp-{E,SIG} change.
2010-09-12 23:39:52 +02:00
Andy Wingo
140b4f6e3a build tweak to remove SRFI version definitions
* GUILE-VERSION: Remove SRFI version definitions, as they are no longer
  needed.
2010-09-12 23:30:43 +02:00
Andy Wingo
37710f7e8f move srfi-1 and srfi-60 C impl to libguile, without public C api
* libguile/srfi-1.c:
* libguile/srfi-1.h:
* libguile/srfi-60.c:
* libguile/srfi-60.h:
* libguile/ChangeLog-srfi: Move here, from the srfi/ dir. The C API is
  internal. Add API to register the extensions, called by init.c.

* libguile/init.c: Verily, register srfi extensions.

* libguile/Makefile.am: Add srfi files.

* module/srfi/srfi-1.scm:
* module/srfi/srfi-60.scm: Update load-extension invocation.

* Makefile.am:
* configure.ac: Remove srfi/ dir.

* test-suite/standalone/Makefile.am:
* test-suite/standalone/test-srfi-1.c: Remove srfi-1 C test, we don't
  support this API any more.
2010-09-12 23:29:11 +02:00
Andy Wingo
4453f887ed remove empty srfi-4, srfi-13, and srfi-14 shlibs
* srfi/srfi-13.c:
* srfi/srfi-13.h:
* srfi/srfi-14.c:
* srfi/srfi-14.h:
* srfi/srfi-4.c:
* srfi/srfi-4.h:
* srfi/Makefile.am:
* configure.ac: Remove empty shlibs and headers for srfis 4, 13, and
  14. The "version" was never programmatically exported, so there's no
  possible way people could have used these.
2010-09-12 22:45:41 +02:00
Neil Jerram
4fb23c1722 Create tags for Scheme source
* am/guilec: Set ETAGS_ARGS.

* module/Makefile.am: When adding sources to EXTRA_DIST, add them to
  ETAGS_ARGS too.
2010-09-12 21:08:56 +01:00
Michael Gran
cf313a947b Provide non-locale C/Scheme string conversion functions
* doc/ref/api-data.texi: document scm_to_stringn, scm_from_stringn,
  scm_to_latin1_stringn, and scm_from_latin1_stringn
* libguile/strings.h (scm_to_stringn): make public
  (scm_to_latin1_stringn): new declaration
  (scm_from_latin1_stringn): new declaration
* libguile/strings.c (scm_to_latin1_stringn): new function
  (scm_from_latin1_stringn): new function
2010-09-12 08:29:31 -07:00
Neil Jerram
58228cc689 Document scm_wrong_type_arg_msg
* doc/ref/api-control.texi: New def for scm_wrong_type_arg_msg.
2010-09-11 18:37:02 +01:00
Neil Jerram
22f68e8b4c Remove non-existent *environment* APIs from api-undocumented.texi
* doc/ref/api-undocumented.texi: Remove entries for the never used,
  and now removed, environment API.
2010-09-11 16:34:19 +01:00
Neil Jerram
175323953a Remove unnecessary blank "Indices" page.
* doc/ref/guile.texi: Remove `Indices' heading.
2010-09-11 15:45:05 +01:00
Andy Wingo
664a8b0d66 new procedure: source-procedures
* module/system/xref.scm (source-procedures): New public procedure,
  gives the procedures defined at a given source location.
2010-09-10 13:29:56 +02:00
Andy Wingo
348fb7040f (system xref) uses module-submodules
* module/system/xref.scm (ensure-callers-db): Fix up to use
  module-submodules.
2010-09-10 12:55:09 +02:00
Andy Wingo
d8e4f9e509 regenerate psyntax-pp.scm
* module/ice-9/psyntax-pp.scm: Regenerate.
2010-09-10 11:03:59 +02:00
Andy Wingo
c439c756ce simplify module/Makefile.am rules to not require touch
* module/Makefile.am (ice-9/psyntax-pp.go, ice-9/psyntax-pp.scm.gen)
  (ice-9/eval.go): Simplify rules to not require `touch', now that .go
  files are checked for freshness, not for synchronicity.
2010-09-10 11:01:23 +02:00
Ludovic Courtès
f328f86230 Clarify feature macro conditionals.
* libguile/numbers.c (scm_log10): Check whether `HAVE_COMPLEX_DOUBLE'
  and `HAVE_CLOG10' are defined instead of checking whether they are
  non-zero.
  (scm_sqrt): Likewise for `HAVE_COMPLEX_DOUBLE' and
  `HAVE_USABLE_CSQRT'.
2010-09-08 00:38:49 +02:00
Ludovic Courtès
2e65b52f8a Use Gnulib's isnan' and isinf' modules.
This updates Gnulib to v0.0-4219-g84cdd8b.

* m4/gnulib-cache.m4: Add `isinf' and `isnan'.

* configure.ac: Remove checks for `floatingpoint.h', `ieeefp.h', and
  `nan.h'.

* libguile/gen-scmconfig.c (main): Remove definitions of
  `SCM_HAVE_FLOATINGPOINT_H', `SCM_HAVE_IEEEFP_H', and
  `SCM_HAVE_NAN_H'.

* libguile/numbers.c (isnan)[SCO && !HAVE_ISNAN]: Remove.
  (isinf)[SCO && !HAVE_ISINF]: Remove.
  (xisinf, xisnan): Remove.  Change callers to use `isinf' and `isnan'.
  (guile_ieee_init): Remove the `defined HAVE_ISINF' and `define
  HAVE_ISNAN' conditions.

* libguile/numbers.h: Remove code conditional on
  `SCM_HAVE_FLOATINGPOINT_H', `SCM_HAVE_IEEEFP_H', or `SCM_HAVE_NAN_H'.
2010-09-08 00:34:27 +02:00
Ludovic Courtès
18f2d5aa4d Use `have-lib' when checking for libltdl.
Suggested by primus <rprimus@gmail.com>.

* configure.ac: Use `AC_LIB_HAVE_LINKFLAGS' when checking for libltdl.

* libguile/Makefile.am (libguile_@GUILE_EFFECTIVE_VERSION@_la_LIBADD):
  Add $(LTLIBLTDL).

* README: Update to make it clear that libgc and libffi don't have a
  `--with-XXX-prefix' option.
2010-09-06 22:49:24 +02:00
Ludovic Courtès
2ee073587a Rename make-foreign-function' to pointer->procedure'.
* libguile/foreign.c (scm_make_foreign_function): Rename to...
  (scm_pointer_to_procedure): ... this.
* libguile/foreign.h: Adjust accordingly.
* module/system/foreign.scm: Likewise.
* test-suite/standalone/test-ffi: Likewise.
* test-suite/tests/foreign.test: Likewise.
* doc/ref/api-foreign.texi: Likewise.
2010-09-06 22:24:44 +02:00
Andy Wingo
7884975a89 fix to program-module
* libguile/programs.c (scm_program_module): Fix an edge case in which
  this function returned non-modules. Thanks to José Antonio Ortega
  Ruiz, Caballero del Cálculo Lambda for the report.
2010-09-06 13:58:13 +02:00
Ludovic Courtès
cb5a528382 Add `.version' to the distribution.
* Makefile.am (EXTRA_DIST): Add `.version'.  Remove `m4/autobuild.m4'.
2010-09-04 20:37:34 +02:00
Ludovic Courtès
4d85751c10 Bump version number for 1.9.12.
* GUILE-VERSION (GUILE_MICRO_VERSION): Increment.
2010-09-04 20:20:14 +02:00
Andy Wingo
0f6611fb8b fix guile-tools --help and --version
* meta/guile-tools.in: Fix --help and --version.
2010-09-04 11:00:33 -07:00
Andy Wingo
76aea207c8 boot-9 refactor
* module/ice-9/boot-9.scm (make-root-module, make-scm-module): Remove
  these functions; they are only called once, so we inline them at their
  call sites.
  (the-root-module, the-scm-module): The aforementioned call sites.
2010-09-04 10:28:46 -07:00
Ludovic Courtès
1d3aa2baae Update `NEWS' for 1.9.12.
* NEWS: Update.
2010-09-04 16:56:15 +02:00