bpt/guile.git
14 years agoUse Gnulib's `getaddrinfo' module.
Ludovic Courtès [Sun, 14 Feb 2010 16:06:13 +0000 (17:06 +0100)]
Use Gnulib's `getaddrinfo' module.

* m4/gnulib-cache.m4: Add `getaddrinfo'.

* libguile/Makefile.am (libguile_la_LDFLAGS): Add `$(GETADDRINFO_LIB)
  $(HOSTENT_LIB) $(SERVENT_LIB)'.

14 years agoDocument trailing whitespace policy.
Thien-Thi Nguyen [Tue, 9 Feb 2010 13:29:36 +0000 (14:29 +0100)]
Document trailing whitespace policy.

* HACKING (Coding standards): Delete trailing whitespace.
Add blurb documenting trailing whitespace policy.

Signed-off-by: Thien-Thi Nguyen <ttn@gnuvola.org>
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
14 years agoDocument the maximum number of arguments for a subr.
Ludovic Courtès [Sat, 13 Feb 2010 22:50:06 +0000 (23:50 +0100)]
Document the maximum number of arguments for a subr.

* doc/ref/api-procedures.texi (Primitive Procedures): Specify the
  maximum number of arguments.  Patch by guign@mails.selgrad.org.

14 years agoReinstate `scm_protects', for backward compatibility.
Ludovic Courtès [Sat, 13 Feb 2010 18:33:51 +0000 (19:33 +0100)]
Reinstate `scm_protects', for backward compatibility.

Partly reverts e7efe8e793fa51ea898aea4477939c598b3e9fac ("decruftify
scm_sys_protects").

* libguile/gc.c (protects): Rename to...
  (scm_protects): ... this.

* libguile/gc.h (scm_protects): Add declaration.

14 years agoFix documentation of the `string->utf' and `utf->string' functions.
Ludovic Courtès [Tue, 9 Feb 2010 23:39:25 +0000 (00:39 +0100)]
Fix documentation of the `string->utf' and `utf->string' functions.

* doc/ref/api-data.texi (Bytevectors as Strings): Describe optional
  parameter of `string->utf{16,32}' and `utf{16,32}->string'.

14 years agoUse the R6RS I/O API in `write-bytecode'.
Ludovic Courtès [Tue, 9 Feb 2010 23:34:05 +0000 (00:34 +0100)]
Use the R6RS I/O API in `write-bytecode'.

* module/language/assembly/compile-bytecode.scm
  (write-bytecode)[u32-bv]: New variable.
  [write-char, write-uint16-be, write-uint16-le, write-uint32-le]:
  Remove.
  [write-string, write-uint32-be, write-uint32, write-wide-string,
  write-bytevector]: Rewrite using the `(rnrs io ports)' API.
  [write-uint24-be]: Rename to...
  [write-int24-be]: ... this.  Use `(rnrs io ports)' API.  Callers
  updated.
  [write-uint16]: Remove.

14 years agoChange `write-bytecode' to accept a bytevector.
Ludovic Courtès [Fri, 5 Feb 2010 10:11:56 +0000 (11:11 +0100)]
Change `write-bytecode' to accept a bytevector.

* module/language/assembly/compile-bytecode.scm (write-bytecode):
  Replace the WRITE-BYTE and GET-ADDR parameters with PORT.  New ADDRESS
  and EMIT-OPCODE? parameters.  Callers updated.
  [write-byte, get-addr]: New procedures.
  Adjust to write to PORT.
  (compile-bytecode): Update accordingly.

* test-suite/tests/asm-to-bytecode.test (munge-bytecode): Return a
  bytevector instead of a u8vector.
  (comp-test): Deal with bytevectors.

14 years agovlist: Slightly improve readability and consistency.
Ludovic Courtès [Fri, 5 Feb 2010 09:38:38 +0000 (10:38 +0100)]
vlist: Slightly improve readability and consistency.

* module/ice-9/vlist.scm (define-inline): Fix case with non-singleton
  body.
  (make-vhash-assoc): Remove.  Change to...
  (%vhash-assoc): ... this, using `define-inline'.

14 years agocontinuations return multiple values on the stack
Andy Wingo [Mon, 8 Feb 2010 21:59:25 +0000 (22:59 +0100)]
continuations return multiple values on the stack

* libguile/vm.h (struct scm_vm_cont): Instead of saving the "IP", save
  "RA" and "MVRA". That is, save singly-valued and multiply-valued
  return addresses, so that we can return multiple values on the stack.
  (scm_i_vm_reinstate_continuation): Remove.
* libguile/vm.c (vm_capture_continuation): Rename from capture_vm_cont,
  and change the prototype so we can capture the RA and MVRA, and so
  that tail calls to call/cc can capture a continuation without the
  call/cc application frame.
  (vm_return_to_continuation): Rename from reinstate_vm_cont, and take
  arguments to return to the continuation. Handles returning to single
  or multiple-value RA.
  (scm_i_vm_capture_continuation): Change to invoke
  vm_capture_continuation. Kept around for the benefit of make-stack.

* libguile/vm-i-system.c (continuation-call): Handle reinstatement of
  the VM stack, with arguments.
  (call/cc, tail-call/cc): Adapt to new vm_capture_continuation
  prototype. tail-call/cc captures tail continuations.

* libguile/stacks.c (scm_make_stack): Update for scm_vm_cont structure
  change.

* libguile/continuations.h (struct scm_contregs): Remove throw_value
  member, which was used to return a value to a continuation.
  (scm_i_check_continuation): New internal function, checks that a
  continuation may be reinstated.
  (scm_i_reinstate_continuation): Replaces scm_i_continuation_call; just
  reinstates the C stack.
  (scm_i_contregs_vm, scm_i_contregs_vm_cont): New internal accessors.
* libguile/continuations.c (scm_i_make_continuation): Return
  SCM_UNDEFINED if we are returning again.
  (grow_stack, copy_stack_and_call, scm_dynthrow): Remove extra arg, as
  vm opcodes handle value returns.
  (copy_stack): No need to instate VM continuation.
  (scm_i_reinstate_continuation): Adapt.

14 years agoscm_i_make_continuation takes vm and vm_cont args explicitly
Andy Wingo [Sun, 7 Feb 2010 13:50:51 +0000 (14:50 +0100)]
scm_i_make_continuation takes vm and vm_cont args explicitly

* libguile/continuations.h:
* libguile/continuations.c (scm_i_make_continuation): Take VM and VM
  continuation arguments as well; I'm not convinced that saving all VM
  continuations was the right thing, and in any case we only ever saved
  the latest. Running a new VM should create a continuation barrier.

* libguile/stacks.c (scm_make_stack):
* libguile/vm-i-system.c (call/cc, tail-call/cc): Adapt callers.

* libguile/vm.h (scm_i_vm_capture_continuation)
  (scm_i_vm_reinstate_continuation): Change to be internal, and to only
  capture and reinstate continuations for a particular VM.

14 years agomake scm_make_continuation internal
Andy Wingo [Sun, 7 Feb 2010 13:16:54 +0000 (14:16 +0100)]
make scm_make_continuation internal

* libguile/continuations.h:
* libguile/continuations.c (scm_i_make_continuation): Change from
  scm_make_continuation, and make internal.

* libguile/vm-i-system.c (call/cc, tail-call/cc): Adapt callers.

* test-suite/standalone/test-unwind.c (check_cont_body): Adapt a test.

* doc/ref/api-control.texi (Continuations): Update docs.

14 years agoeval.c uses scm_i_call_with_current_continuation
Andy Wingo [Mon, 8 Feb 2010 12:33:21 +0000 (13:33 +0100)]
eval.c uses scm_i_call_with_current_continuation

* libguile/continuations.h
* libguile/continuations.c (scm_i_call_with_current_continuation): New
  internal function. Not exported because I'm not sure whether or not
  this should have a continuation barrier in the future. Uses a
  hand-coded VM procedure.

* libguile/eval.c (eval): Use scm_i_call_with_current_continuation.

14 years agocontinuations are vm procedures
Andy Wingo [Sat, 6 Feb 2010 16:00:03 +0000 (17:00 +0100)]
continuations are vm procedures

* libguile/vm-i-system.c (continuation-call): New op, like subr-call or
  foreign-call, but for continuations.

* libguile/continuations.h: Add scm_i_continuation_call internal
  declaration.
  (SCM_CONTINUATIONP): Reimplement in terms of
  SCM_PROGRAM_IS_CONTINUATION.
  (scm_tc16_continuation, SCM_CONTREGS, SCM_CONTINUATION_LENGTH)
  (SCM_SET_CONTINUATION_LENGTH, SCM_JMPBUF, SCM_DYNENV, SCM_THROW_VALUE)
  (SCM_CONTINUATION_ROOT, SCM_DFRAME): Remove these from the exposed
  API.
  (scm_i_continuation_to_frame): New internal declaration.
* libguile/continuations.c
* libguile/continuations.c: Add trickery like in foreign.c, smob.c, and
  gsubr.c, so that we can make procedural trampolines for continuations.
  (scm_i_continuation_to_frame): New internal function, from stacks.c.

* libguile/programs.h (SCM_F_PROGRAM_IS_CONTINUATION)
  (SCM_PROGRAM_IS_CONTINUATION): Add a flag for programs that are
  continuations. Probably should add flags for the other trampoline
  types too.
* libguile/programs.c (scm_i_program_print): Print continuations as
  before.

* libguile/stacks.c (scm_stack_id, scm_make_stack): Use
  scm_i_continuation_to_frame in the continuation case.

14 years agopush a prompt handler value even in the inline-handler case
Andy Wingo [Fri, 5 Feb 2010 10:30:53 +0000 (11:30 +0100)]
push a prompt handler value even in the inline-handler case

* module/language/tree-il/compile-glil.scm (flatten): Push a handler
  value even in the inline-handler case, to make prompt's interface more
  uniform, and also to correspond to the existing VM implementation.

14 years agoconnect a few more wires to promptenstein
Andy Wingo [Tue, 2 Feb 2010 21:59:55 +0000 (22:59 +0100)]
connect a few more wires to promptenstein

* libguile/tags.h (scm_tc7_prompt): Allocate a tc7 for prompt objects.

* libguile/control.h (SCM_F_PROMPT_INLINE, SCM_F_PROMPT_ESCAPE)
  (SCM_PROMPT_P, SCM_PROMPT_FLAGS, SCM_PROMPT_INLINE_P)
  (SCM_PROMPT_ESCAPE_P, SCM_PROMPT_TAG, SCM_PROMPT_REGISTERS)
  (SCM_PROMPT_DYNENV, SCM_PROMPT_HANDLER)
  (SCM_PROMPT_PRE_UNWIND_HANDLER, SCM_PROMPT_SETJMP)
  (struct scm_prompt_registers):
* libguile/control.c (scm_c_make_prompt): Flesh out a simple prompts
  implementation.

* libguile/vm-i-system.c (prompt): Wire up the implementation.
* libguile/vm.c: Add a needed #include.

14 years agoOptimize reader by preferring stack-allocated buffers
Michael Gran [Wed, 3 Feb 2010 04:33:41 +0000 (20:33 -0800)]
Optimize reader by preferring stack-allocated buffers

* libguile/read.c (read_token): now takes a C buffer instead of a SCM.
  string.  All callers changed.
  (read_complete_token): now takes C buffers, not SCM strings.  No longer
  does port position updates or encoding processing.  All callers changed.
  (scm_read_number, scm_read_mixed_case_symbol, scm_read_number_and_radix)
  (scm_read_character): Do port updates and string processing no longer
  done by read_complete_token. Some reordering for optimization.

14 years agoUse vhashes in `unused-variable-analysis'.
Ludovic Courtès [Tue, 2 Feb 2010 22:58:03 +0000 (23:58 +0100)]
Use vhashes in `unused-variable-analysis'.

* module/language/tree-il/analyze.scm (unused-variable-analysis): Use
  vhashes instead of alists/lists.

14 years agoUse vhashes in `arity-analysis'.
Ludovic Courtès [Tue, 2 Feb 2010 23:00:05 +0000 (00:00 +0100)]
Use vhashes in `arity-analysis'.

* module/language/tree-il/analyze.scm (arity-analysis): Use vhashes
  instead of alists.

14 years agoUse vhashes in `unbound-variable-analysis'.
Ludovic Courtès [Tue, 2 Feb 2010 22:59:34 +0000 (23:59 +0100)]
Use vhashes in `unbound-variable-analysis'.

* module/language/tree-il/analyze.scm (unbound-variable-analysis): Use
  vhashes instead of alists/lists.

14 years agoUse vhashes in `unused-toplevel-analysis'.
Ludovic Courtès [Tue, 2 Feb 2010 22:59:03 +0000 (23:59 +0100)]
Use vhashes in `unused-toplevel-analysis'.

* module/language/tree-il/analyze.scm (graph-reachable-nodes): Add
  REACHABLE argument.  Update to use vhash instead of alists or lists.
  (graph-reachable-nodes*): Adjust accordingly.
  (partition*): New function.
  (unused-toplevel-analysis): Adjust to use vhash instead of alists or
  lists.

14 years agoAdd `(ice-9 vlist)'.
Ludovic Courtès [Tue, 2 Feb 2010 22:57:02 +0000 (23:57 +0100)]
Add `(ice-9 vlist)'.

* module/ice-9/vlist.scm, test-suite/tests/vlist.test,
  benchmark-suite/benchmarks/vlists.bm: New files.

* module/Makefile.am (ICE_9_SOURCES): Add `vlist.scm'.

* test-suite/Makefile.am (SCM_TESTS): Add `tests/vlist.test'.

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

* doc/ref/api-compound.texi (VLists, VHashes): New nodes.

14 years agoInline SRFI-9 constructors too.
Ludovic Courtès [Sat, 30 Jan 2010 21:54:20 +0000 (22:54 +0100)]
Inline SRFI-9 constructors too.

* module/srfi/srfi-9.scm (define-record-type)[constructor]: Use
  `define-inlinable' instead of `define'.

* test-suite/lib.scm (exception:syntax-pattern-unmatched): New variable.

* test-suite/tests/srfi-9.test ("constructor")["foo 0 args (inline)",
  "foo 2 args (inline)"]: New tests.
  ["foo 0 args", "foo 2 args"]: Adjust to constructor inlining.

* testsuite/t-records.scm: Remove wrong-arg-count case.

14 years agoSRFI-9: Fix `define-inlinable'.
Ludovic Courtès [Fri, 29 Jan 2010 10:26:17 +0000 (11:26 +0100)]
SRFI-9: Fix `define-inlinable'.

* module/srfi/srfi-9.scm (define-inlinable): Fix the catch-all case of
  the generated macro.

14 years agoadd (ice-9 control)
Andy Wingo [Sat, 30 Jan 2010 23:02:00 +0000 (00:02 +0100)]
add (ice-9 control)

* module/language/tree-il/primitives.scm (define-primitive-expander):
  Allow quoted datums. Allow all self-evaluating expressions to be
  constants.
  (prompt, control): Add primitive expanders to turn these into @prompt
  and @control.

* module/ice-9/control.scm: New module, for delimited continuation
  operators.

* module/Makefile.am: Add.

14 years agoadd @control and @prompt stub primitives
Andy Wingo [Sat, 30 Jan 2010 23:01:11 +0000 (00:01 +0100)]
add @control and @prompt stub primitives

* libguile/Makefile.am:
* libguile/control.c:
* libguile/control.h:
* libguile/init.c: Add stub @control and @prompt primitives, for use
  when bootstrapping (ice-9 control).

14 years agoGLIL and assembly support for prompt compilation
Andy Wingo [Sat, 30 Jan 2010 14:09:41 +0000 (15:09 +0100)]
GLIL and assembly support for prompt compilation

* module/language/glil/compile-assembly.scm (glil->assembly): Compile
  <glil-prompt> appropriately.

* module/language/assembly/disassemble.scm (code-annotation):
* module/language/assembly/decompile-bytecode.scm (decode-load-program):
* module/language/assembly/compile-bytecode.scm (write-bytecode):
  Assemble and disassemble `prompt' appropriately.

14 years agotree-il -> glil compilation of prompt, dynamic-wind, control
Andy Wingo [Sat, 30 Jan 2010 14:52:48 +0000 (15:52 +0100)]
tree-il -> glil compilation of prompt, dynamic-wind, control

* module/language/tree-il/compile-glil.scm (flatten): Compile <prompt>,
  <dynamic-wind>, and <control>.

14 years agoadd return/nvalues
Andy Wingo [Sun, 31 Jan 2010 09:44:44 +0000 (10:44 +0100)]
add return/nvalues

* libguile/vm-i-system.c (return/nvalues): New instruction, like
  call/nargs.

14 years agoGLIL support for <prompt>
Andy Wingo [Sat, 30 Jan 2010 14:51:44 +0000 (15:51 +0100)]
GLIL support for <prompt>

* module/language/glil.scm (<glil>): Add <glil-prompt>, with
  handler-label and escape-only? fields.

14 years agotree-il analyzer and inliner handle <prompt>
Andy Wingo [Sat, 30 Jan 2010 14:49:50 +0000 (15:49 +0100)]
tree-il analyzer and inliner handle <prompt>

* module/language/tree-il/analyze.scm (analyze-lexicals): Add cases for
  <prompt>, <dynamic-wind>, and <control>. If a continuation is not
  referenced in the body of a prompt handler, mark the prompt as
  escape-only.
* module/language/tree-il/inline.scm (inline!): Inline the handler of a
  prompt if it is a simple lambda.

14 years agodynamic-wind compilation to VM ops
Andy Wingo [Sun, 31 Jan 2010 19:30:46 +0000 (20:30 +0100)]
dynamic-wind compilation to VM ops

* module/language/tree-il/primitives.scm: Resolve calls to dynamic-wind
  to <dynamic-wind>, thereby inlining the dynwind to VM ops, and
  allowing inline allocation of the body thunk.

14 years agonew tree-il for prompt, control, and dynamic-wind
Andy Wingo [Sat, 30 Jan 2010 14:47:44 +0000 (15:47 +0100)]
new tree-il for prompt, control, and dynamic-wind

* module/language/tree-il.scm: Initial tree-il support for <prompt>,
  <control>, and <dynamic-wind>.

14 years agoinitial VM support for delimited continuations and dynamic-wind
Andy Wingo [Sat, 30 Jan 2010 14:45:37 +0000 (15:45 +0100)]
initial VM support for delimited continuations and dynamic-wind

* libguile/vm-i-system.c (prompt, wind, throw, unwind):
  New instructions, for implementing dynamic-wind and delimited
  continuations.
* libguile/vm.c: Add some stub support for the new instructions.
* libguile/vm-engine.c: Some new error conditions.

14 years agoadd a test for ffi and pointers
Andy Wingo [Wed, 27 Jan 2010 21:25:29 +0000 (22:25 +0100)]
add a test for ffi and pointers

* test-suite/standalone/test-ffi:
* test-suite/standalone/test-ffi-lib.c: Add a pointer test.

14 years agoadd simple foreign finalization, and pointer support
Andy Wingo [Wed, 27 Jan 2010 21:12:58 +0000 (22:12 +0100)]
add simple foreign finalization, and pointer support

* libguile/foreign.h:
* libguile/foreign.c (scm_foreign_set_finalizer_x): New function, for a
  limited form of finalization (like `free').
  (scm_alignof, scm_sizeof, parse_ffi_type, fill_ffi_type): For the
  purposes of make-foreign-function, treat '* (the asterisk symbol) as a
  pointer.

* module/system/foreign.scm: Export foreign-set-finalizer!.

14 years agostatprof bugfixes
Andy Wingo [Wed, 27 Jan 2010 20:52:05 +0000 (21:52 +0100)]
statprof bugfixes

* module/statprof.scm (get-call-data): For closures, get call data by
  the program's objcode.
  (statprof-start, statprof-stop): Fix bug in which all statprof runs
  were enabling the apply hook regardless of the setting of
  #:count-calls?. The result was distorted timings, where procedure
  calls were unfairly penalized.
  (procedure=?): Streamline.

14 years agoinline calls to variable-bound?
Andy Wingo [Wed, 27 Jan 2010 20:48:06 +0000 (21:48 +0100)]
inline calls to variable-bound?

* module/language/tree-il/compile-glil.scm (*primcall-ops*):
* module/language/tree-il/primitives.scm
  (*interesting-primitive-names*): Actually resolve calls to
  `variable-bound?' to the opcode that we have for it.

14 years agofix to variable-bound? instruction prototype
Andy Wingo [Wed, 27 Jan 2010 20:47:01 +0000 (21:47 +0100)]
fix to variable-bound? instruction prototype

* libguile/vm-i-system.c (variable-bound?): Correctly declare as popping
  one item.

14 years agoremove incremental NEWS entries in preparation for 1.9.8
Andy Wingo [Wed, 27 Jan 2010 20:45:47 +0000 (21:45 +0100)]
remove incremental NEWS entries in preparation for 1.9.8

* NEWS

14 years agoadd a test for foreign functions taking struct args
Andy Wingo [Tue, 26 Jan 2010 21:55:58 +0000 (22:55 +0100)]
add a test for foreign functions taking struct args

* test-suite/standalone/test-ffi (f-sum-struct):
* test-suite/standalone/test-ffi-lib.c (test_ffi_sum_struct): Add a
  struct test. Wheee....

14 years agoturn asserts into exceptions in foreign.c
Andy Wingo [Tue, 26 Jan 2010 21:55:13 +0000 (22:55 +0100)]
turn asserts into exceptions in foreign.c

* libguile/foreign.c (scm_foreign_ref, scm_foreign_set_x)
  (scm_i_foreign_print, fill_ffi_type, cif_to_procedure, unpack): Turn a
  number of asserts into proper errors.

14 years agoadd make-c-struct, parse-c-struct
Andy Wingo [Tue, 26 Jan 2010 21:18:42 +0000 (22:18 +0100)]
add make-c-struct, parse-c-struct

* module/system/foreign.scm: Export alignof and sizeof.
  (make-c-struct, parse-c-struct): New public functions.

14 years agoadd `alignof' and `sizeof' Scheme functions
Andy Wingo [Tue, 26 Jan 2010 21:16:35 +0000 (22:16 +0100)]
add `alignof' and `sizeof' Scheme functions

* libguile/foreign.h:
* libguile/foreign.c (scm_alignof, scm_sizeof): New functions.

14 years agoadd ffi tests
Andy Wingo [Mon, 25 Jan 2010 22:45:15 +0000 (23:45 +0100)]
add ffi tests

* test-suite/standalone/Makefile.am:
* test-suite/standalone/test-ffi:
* test-suite/standalone/test-ffi-lib.c: Add some tests for the ffi.

14 years agoimplement foreign-call
Andy Wingo [Mon, 25 Jan 2010 17:04:45 +0000 (18:04 +0100)]
implement foreign-call

* libguile/foreign.h:
* libguile/foreign.c (scm_i_foreign_call): New internal function,
  actually implementing foreign calls. Untested.

* libguile/vm-i-system.c (foreign-call): Wire up the call to
  scm_i_foreign_call.

14 years agofirst pass at implementing low-level foreign functions
Andy Wingo [Mon, 25 Jan 2010 17:15:35 +0000 (18:15 +0100)]
first pass at implementing low-level foreign functions

* libguile/Makefile.am (AM_CPPFLAGS): Move LIBFFI_CFLAGS here (from
  AM_CFLAGS), allowing snarfing to work.

* libguile/foreign.h (scm_make_foreign_function): New public function.

* libguile/foreign.c: Flesh out an implementation of foreign functions.
  (scm_take_foreign_pointer): Bugfix for the case in which we have a
  finalizer.

* module/system/foreign.scm: Export `make-foreign-function'.

14 years agorenumber VM opcodes
Andy Wingo [Mon, 25 Jan 2010 00:59:19 +0000 (18:59 -0600)]
renumber VM opcodes

* libguile/vm-i-loader.c:
* libguile/vm-i-scheme.c:
* libguile/vm-i-system.c: Renumber ops. Add a foreign-call op stub.
  Rearrange some ops.

* libguile/_scm.h (SCM_OBJCODE_MINOR_VERSION): Bump

14 years agobyte access to foreigns via bytevectors
Andy Wingo [Mon, 18 Jan 2010 13:36:23 +0000 (14:36 +0100)]
byte access to foreigns via bytevectors

* libguile/foreign.h:
* libguile/foreign.c (scm_foreign_ref, scm_foreign_set_x): Remove all
  bits about offsets and aliasing; bytevectors are much better at that.
  (scm_foreign_to_bytevector, scm_bytevector_to_foreign): New functions
  for getting at the bytes of a memory region.

* module/system/foreign.scm (foreign->bytevector, bytevector->foreign):
  Export these.

14 years agomove foreign function interface to its own module
Andy Wingo [Mon, 18 Jan 2010 11:16:13 +0000 (12:16 +0100)]
move foreign function interface to its own module

* libguile/foreign.h:
* libguile/init.c: Change so that init just registers an extension,
  later called by foreign.scm.

* libguile/foreign.c (scm_init_foreign): Define constants for the
  various foreign types.

* module/Makefile.am:
* module/system/foreign.scm: New module, for the foreign function
  interface.

14 years agoforeign.h presents a more pointer-centric interface
Andy Wingo [Mon, 18 Jan 2010 10:42:35 +0000 (11:42 +0100)]
foreign.h presents a more pointer-centric interface

* libguile/foreign.c:
* libguile/foreign.h: Rework interface to be more pointer-centric.
  Details are:
  (SCM_FOREIGN_TYPE_STRUCT, SCM_FOREIGN_TYPE_POINTER): Removed; now the
  pointer in a foreign is first-class. If it points to a native type
  like uint32, then it still has a tag; but if it points to something
  else, like a struct or a pointer or something, then its type is VOID
  (i.e., void*).
  (SCM_FOREIGN_POINTER): Rename from SCM_FOREIGN_OBJECT.
  (SCM_FOREIGN_VALUE_REF, SCM_FOREIGN_VALUE_SET): Rename from
  SCM_FOREIGN_OBJECT_REF and SCM_FOREIGN_OBJECT_SET, to indicate that
  they only work with value types.
  (SCM_FOREIGN_HAS_FINALIZER): Reserve a bit to indicate if the foreign
  pointer in question has a finalizer registered.
  (SCM_FOREIGN_LEN): For void* pointers, optionally store the length in
  bytes of the associated memory region.
  (SCM_FOREIGN_VALUE_P): Rename from SCM_FOREIGN_SIMPLE_P.
  (SCM_VALIDATE_FOREIGN_VALUE): Rename from SCM_VALIDATE_FOREIGN_SIMPLE.
  (scm_take_foreign_pointer): Rename from scm_c_take_foreign. Remove
  scm_c_from_foreign.
  (scm_foreign_type): New accessor.
  (scm_foreign_ref, scm_foreign_set_x): Take some optional args, used
  when dereferencing void pointers.

* libguile/dynl.h:
* libguile/dynl.c (scm_dynamic_pointer): New function, used by
  scm_dynamic_func. Adapt code to foreign.h changes.

* libguile/goops.c (scm_enable_primitive_generic_x)
  (scm_set_primitive_generic_x): Use the SCM_SET_SUBR_GENERIC macro.

* libguile/gsubr.c (create_gsubr): Adapt to API change.
* libguile/gsubr.h (SCM_SUBRF, SCM_SUBR_GENERIC): Store the pointer
  directly, not indirected.

* libguile/snarf.h (SCM_DEFINE, SCM_IMMUTABLE_FOREIGN): Store subr
  pointers directly. Adapt to SCM_FOREIGN_TYPE_VOID change.

* libguile/vm-i-system.c (subr-call): Access the void* directly.

14 years agoadd libffi dependency
Andy Wingo [Fri, 15 Jan 2010 21:55:11 +0000 (22:55 +0100)]
add libffi dependency

* configure.ac:
* libguile/Makefile.am (AM_CFLAGS, libguile_la_LDFLAGS): Add a libffi
  dependency, for making a dynamic FFI.

14 years agoRecognize structs with both "pr" and "pw" flags as simple.
Ludovic Courtès [Mon, 25 Jan 2010 23:00:58 +0000 (00:00 +0100)]
Recognize structs with both "pr" and "pw" flags as simple.

* libguile/struct.c (set_vtable_layout_flags): Keep the
  `SCM_VTABLE_FLAG_SIMPLE' flag when VTABLE has a mixture of `r' and `w'
  fields.

* libguile/struct.h (SCM_VTABLE_FLAG_SIMPLE): Adjust comment.

14 years agoAdd ASCII art representing the basic struct layout.
Ludovic Courtès [Mon, 25 Jan 2010 22:43:41 +0000 (23:43 +0100)]
Add ASCII art representing the basic struct layout.

* libguile/struct.h: Add ASCII art version of the basic struct layout as
  shown in Andy's diagrams.

14 years agoReinstate 2-word displacement for structs.
Ludovic Courtès [Mon, 25 Jan 2010 22:41:27 +0000 (23:41 +0100)]
Reinstate 2-word displacement for structs.

* libguile/struct.c (scm_init_struct): Reinstate 2-word displacement
  removed by 01e74380f6170b5cb1105e5df9a368ab257420ef.

14 years agoR6RS string escapes broken on string output
Michael Gran [Sat, 23 Jan 2010 17:15:10 +0000 (09:15 -0800)]
R6RS string escapes broken on string output

scm_to_stringn failed to do the necessary escape conversion for
R6RS hex escapes

* libguile/strings.c (unistring_escapes_to_r6rs_escapes): new function
  (scm_to_stringn): use new function when r6rs hex escapes are enabled

* test-suite/tests/reader.test: new test for string display

14 years agoRevert "Install `standard-library.info'."
Ludovic Courtès [Sat, 23 Jan 2010 16:03:11 +0000 (17:03 +0100)]
Revert "Install `standard-library.info'."

This reverts commit 0e64cbea3d22411564af302a63b670fe0617ccf3.

14 years agoAdd `struct-ref' and `struct-set' VM opcodes.
Ludovic Courtès [Sat, 23 Jan 2010 15:43:50 +0000 (16:43 +0100)]
Add `struct-ref' and `struct-set' VM opcodes.

* libguile/vm-i-scheme.c (make_struct): Optimize the
  `SCM_VTABLE_FLAG_SIMPLE' case.
  (struct_ref, struct_set): New opcodes.

* module/language/tree-il/compile-glil.scm (*primcall-ops*): Add
  `struct-ref' and `struct-set!'.

* module/language/tree-il/primitives.scm
  (*interesting-primitive-names*): Likewise.
  (*effect-free-primitives*): Add `struct-ref'.

14 years agoSlightly improve comments and style in `struct.c'.
Ludovic Courtès [Sat, 23 Jan 2010 15:41:28 +0000 (16:41 +0100)]
Slightly improve comments and style in `struct.c'.

* libguile/struct.c (scm_i_struct_inherit_vtable_magic): Comment.
  Punctuate comments within the body, have them follow GCS.
  (scm_make_vtable_vtable): Clarify comments.

14 years agoClarify GC-registered displacements for structs.
Ludovic Courtès [Sat, 23 Jan 2010 15:39:14 +0000 (16:39 +0100)]
Clarify GC-registered displacements for structs.

* libguile/struct.c (scm_init_struct): Remove unneeded
  `GC_REGISTER_DISPLACEMENT ()' call.  Comment the remaining one.

14 years agoOptimize struct initialization and accessors for the common case.
Ludovic Courtès [Sat, 23 Jan 2010 15:21:13 +0000 (16:21 +0100)]
Optimize struct initialization and accessors for the common case.

* libguile/struct.c (set_vtable_layout_flags): New function.
  (scm_i_struct_inherit_vtable_magic): Use it.
  (scm_struct_init): Optimize the case where HANDLE's vtable has the
  `SCM_VTABLE_FLAG_SIMPLE' flag.
  (scm_struct_ref): Likewise.
  (scm_struct_ref): Likewise, when `SCM_VTABLE_FLAG_SIMPLE_RW' is also set.

* libguile/struct.h (SCM_VTABLE_BASE_LAYOUT): Update comment for the
  next-to-last hidden field.
  (scm_vtable_index_reserved_6): Rename to...
  (scm_vtable_index_size): ... this.
  (SCM_VTABLE_FLAG_RESERVED_0): Rename to...
  (SCM_VTABLE_FLAG_SIMPLE): ... this.
  (SCM_VTABLE_FLAG_RESERVED_1): Rename to...
  (SCM_VTABLE_FLAG_SIMPLE_RW): ... this.

* test-suite/tests/structs.test ("low-level struct
  procedures")["struct-ref", "struct-set!", "struct-ref out-of-range",
  "struct-set! out-of-range"]: New tests.

14 years agoInstall `standard-library.info'.
Ludovic Courtès [Fri, 22 Jan 2010 15:55:24 +0000 (16:55 +0100)]
Install `standard-library.info'.

* doc/ref/Makefile.am (BUILT_SOURCES): Move `standard-library.texi'
  to...
  (nodist_info_TEXINFOS): ... here.  New variable.

14 years agoFix `uniform-vector-read!' and `uniform-vector-write'.
Ludovic Courtès [Wed, 20 Jan 2010 22:58:39 +0000 (23:58 +0100)]
Fix `uniform-vector-read!' and `uniform-vector-write'.

* libguile/deprecated.c (scm_uniform_vector_read_x,
  scm_uniform_vector-write): Account for optional arguments.  Make sure
  the former always returns an integer.

* libguile/deprecated.h (scm_uniform_vector_read_x,
  scm_uniform_vector_write, scm_uniform_array_read_x,
  scm_uniform_array_write): Mark as `SCM_DEPRECATED'.

14 years agoBump version number for 1.9.7.
Ludovic Courtès [Tue, 19 Jan 2010 22:28:59 +0000 (23:28 +0100)]
Bump version number for 1.9.7.

* GUILE-VERSION (GUILE_MICRO_VERSION): Increment.

14 years agoUpdate `NEWS'.
Ludovic Courtès [Tue, 19 Jan 2010 21:29:13 +0000 (22:29 +0100)]
Update `NEWS'.

14 years agoDocument `guile-tools compile'.
Ludovic Courtès [Tue, 19 Jan 2010 21:28:38 +0000 (22:28 +0100)]
Document `guile-tools compile'.

* doc/ref/api-evaluation.texi (Compilation): Document `guile-tools
  compile'.

14 years agoReinstate `scm_is_bool ()' as a function.
Ludovic Courtès [Tue, 19 Jan 2010 20:41:41 +0000 (21:41 +0100)]
Reinstate `scm_is_bool ()' as a function.

* libguile/boolean.c (scm_is_bool): New function.

* libguile/boolean.h (scm_is_bool): New function declaration.

14 years agoMake `sockets.test' more robust.
Ludovic Courtès [Tue, 19 Jan 2010 17:49:06 +0000 (18:49 +0100)]
Make `sockets.test' more robust.

* test-suite/tests/socket.test ("AF_INET6/SOCK_STREAM"): Gracefully
  handle cases where this combination is not supported.

14 years agoDocument modal encodings problem in ref doc
Michael Gran [Tue, 19 Jan 2010 16:42:44 +0000 (08:42 -0800)]
Document modal encodings problem in ref doc

* doc/ref/api-io.texi (Ports): note that modal encodings are not
  supported

14 years agoFix use of utimensat(2).
Ludovic Courtès [Mon, 18 Jan 2010 23:23:33 +0000 (00:23 +0100)]
Fix use of utimensat(2).

* libguile/posix.c (scm_utime): Use "#ifdef HAVE_UTIMENSAT", not "#if
  HAVE_UTIMENSAT".  Fix GCC warning around call to utimensat(2):
  "passing argument 3 of 'utimensat' from incompatible pointer type".

* test-suite/tests/posix.test ("utime"): New test prefix.

14 years agoMove string internals description in ref doc
Michael Gran [Mon, 18 Jan 2010 15:07:34 +0000 (07:07 -0800)]
Move string internals description in ref doc

* doc/ref/api-data.texi: move string internals section

14 years agoString ref doc updates for case and conversion
Michael Gran [Mon, 18 Jan 2010 04:10:15 +0000 (20:10 -0800)]
String ref doc updates for case and conversion

* doc/ref/api-data.texi: clarifications on Alphabetic Case Mapping and
  Conversion To/From C.

14 years agoDocument string-bytes-per-char and %string-dump
Michael Gran [Sun, 17 Jan 2010 23:25:40 +0000 (15:25 -0800)]
Document string-bytes-per-char and %string-dump

* doc/ref/api-data.texi (String Internals): new subsubsection.  Document
  string-bytes-per-char and %string-dump.

14 years agoobject->assembly shouldn't presume existence of %nil
Michael Gran [Sun, 17 Jan 2010 21:41:14 +0000 (13:41 -0800)]
object->assembly shouldn't presume existence of %nil

The %nil constant only exists if SCM_ENABLE_ELISP is defined.

* module/language/assembly (object->assembly): check for existence of %nil

14 years agoreader options macros incorrect when SCM_ENABLE_ELISP undefined
Michael Gran [Sun, 17 Jan 2010 21:40:18 +0000 (13:40 -0800)]
reader options macros incorrect when SCM_ENABLE_ELISP undefined

When compiled with SCM_ENABLE_ELISP undefined, the reader options
macros SCM_R6RS_ESCAPES_P and SCM_SQUARE_BRACKETS_P point past
the end of the scm_read_opts struct.

*libguile/private-options.h (SCM_R6RS_ESCAPES_P) [!SCM_ENABLE_ELISP]: modified
 (SCM_SQUARE_BRACKETS_P) [!SCM_ENABLE_ELISP]: modified
 (SCM_N_READ_OPTIONS): modified

14 years agofix doc snarfing with fedora 12
Andy Wingo [Sun, 17 Jan 2010 17:22:51 +0000 (18:22 +0100)]
fix doc snarfing with fedora 12

* module/scripts/snarf-check-and-output-texi.scm
  (process-multiline-directive): Be more accepting of source location
  markers in the preprocessed source, by adding a couple cases in which
  they can appear. Not foolproof, but it does adapt to what new GCCs are
  putting out (e.g. cpp (GCC) 4.4.2 20091222 (Red Hat 4.4.2-20)).

14 years agonanosecond timestamp support in stat and utime
Andy Wingo [Sun, 17 Jan 2010 15:56:21 +0000 (16:56 +0100)]
nanosecond timestamp support in stat and utime

* libguile/posix.h:
* libguile/posix.c (scm_utime): Add optional nanosecond arguments. This
  is an incompatible change on the C level, but it's unlikely people are
  using this POSIX wrapper function, because they would just use the
  POSIX function directly. Hopefully, anyway.

* module/system/base/compile.scm (call-with-output-file/atomic):
  Propagate source timestamps to targets with nanosecond precision, if
  available. Fixes build on systems with ext4 filesystems.

* libguile/filesys.c (scm_stat2scm):
* module/ice-9/posix.scm (stat:atimensec, stat:mtimensec)
  (stat:ctimensec): Add three new elements to Scheme stat structures,
  for nanosecond-level timestamps.

* configure.ac: Add checks for utimensat, and for nanosecond fields in
  struct stat. We should switch to using Gnulib things for these,
  though.

* doc/ref/posix.texi (File System): Add documentation for utime's
  additional arguments, and nanosecond stat timestamp accessors.

14 years agofix (class-of #u32())
Andy Wingo [Fri, 15 Jan 2010 21:33:49 +0000 (22:33 +0100)]
fix (class-of #u32())

* libguile/goops.c (scm_class_of, create_standard_classes): Return
  <bytevector> or <uvec> for bytevectors, as appropriate.

14 years agoadd reader option for parsing [] as ().
Andy Wingo [Fri, 15 Jan 2010 21:24:31 +0000 (22:24 +0100)]
add reader option for parsing [] as ().

* libguile/private-options.h:
* libguile/read.c (scm_read_opts, SCM_SQUARE_BRACKETS_P): Add an option
  for treating [ and ] as parentheses, on by default. Note that this
  makes them delimiters also, so [ and ] cannot appear in a symbol name,
  with this read option on.
  (scm_read_sexp): If we start with [, we end with ].
  (scm_read_expression): Add case for [.

14 years agofix call counting in statprof, enhance repl support
Andy Wingo [Thu, 14 Jan 2010 21:52:07 +0000 (22:52 +0100)]
fix call counting in statprof, enhance repl support

* module/statprof.scm: Use VM modules, instead of using @ hacks.
  (statprof): New public export, a functional interface to the profiler.
  (profile-signal-handler, count-call, statprof-start, statprof-stop):
  Fix call counting with the VM.
  (statprof-call-data->stats): Hack around a case in which a call could
  be sampled but not counted, if you get my drift.
  (procedure=?): Update for current API.
  (with-statprof): Use `statprof'.

* module/system/repl/command.scm (profile): Use the `statprof'
  procedural interface.

14 years agovm.c uses scm_c_take_bytevector instead of scm_take_u8vector
Andy Wingo [Thu, 14 Jan 2010 12:55:50 +0000 (13:55 +0100)]
vm.c uses scm_c_take_bytevector instead of scm_take_u8vector

* libguile/vm.c (really_make_boot_program): Use scm_c_take_bytevector to
  avoid loading srfi-4 at boot time.

14 years ago1.8 compat in ice-9 syncase
Andy Wingo [Wed, 13 Jan 2010 23:40:20 +0000 (00:40 +0100)]
1.8 compat in ice-9 syncase

* module/ice-9/syncase.scm: Export datum->syntax-object and
  syntax-object->datum as aliases of datum->syntax and syntax->datum.
  Thanks to Daniel Llorens del Río for the suggestion.

14 years agovm-trace prints return values
Andy Wingo [Wed, 13 Jan 2010 23:09:54 +0000 (00:09 +0100)]
vm-trace prints return values

* module/system/vm/trace.scm (vm-trace): Add a #:width argument. Print
  return values, as Chez Scheme does.

14 years agoRETURN_HOOK communicates the number of returned values
Andy Wingo [Wed, 13 Jan 2010 22:14:12 +0000 (23:14 +0100)]
RETURN_HOOK communicates the number of returned values

* libguile/vm-engine.h (RUN_HOOK1): Add some machinery whereby a hook
  can push an arg on the stack, run the hook, then drop the value.
  (RETURN_HOOK): Use it here, so we push the number of returned values.

* libguile/vm-i-system.c (return, return-values): Adapt to RETURN_HOOK
  changes.

14 years agovm-trace only traces execution of its thunk
Andy Wingo [Wed, 13 Jan 2010 21:49:14 +0000 (22:49 +0100)]
vm-trace only traces execution of its thunk

* module/system/vm/trace.scm (vm-trace): Change to just export the one
  procedure, vm-trace. This way it's threadsafe and more robust. Also
  refactor to not print any of Guile's internal bits. Hopefully Neil
  will be happier :)

* module/system/repl/command.scm (option): Adapt to removal of
  vm-trace-on! and vm-trace-off!, as those are unlikely to DTRT.

14 years agoremove unused var in read.c
Andy Wingo [Wed, 13 Jan 2010 20:08:54 +0000 (21:08 +0100)]
remove unused var in read.c

* libguile/read.c (scm_read_character): Remove unused var.

14 years agoUse `mkstemp' instead of `mktemp'.
Thien-Thi Nguyen [Wed, 13 Jan 2010 08:49:44 +0000 (09:49 +0100)]
Use `mkstemp' instead of `mktemp'.

* test-suite/standalone/test-unwind.c (check_ports):
Use `mkstemp' instead of `mktemp'.

Signed-off-by: Thien-Thi Nguyen <ttn@gnuvola.org>
14 years agoUpdate configure script hints wrt precious env vars.
Thien-Thi Nguyen [Sat, 9 Jan 2010 09:07:48 +0000 (10:07 +0100)]
Update configure script hints wrt precious env vars.

* README: Don't suggest setting vars before running configure.
Instead, suggest specifying them on the configure command-line.

Signed-off-by: Thien-Thi Nguyen <ttn@gnuvola.org>
14 years agoDocument R6RS hex escapes
Michael Gran [Wed, 13 Jan 2010 15:26:10 +0000 (07:26 -0800)]
Document R6RS hex escapes

* doc/ref/api-data.texi (Characters, String Syntax): document r6rs hex
  escapes

* doc/ref/api-options.texi (Reader Options): document r6rs-hex-escapes
  reader option

14 years agoDisable \u and \U escapes when r6rs-hex-escapes enabled
Michael Gran [Wed, 13 Jan 2010 15:02:07 +0000 (07:02 -0800)]
Disable \u and \U escapes when r6rs-hex-escapes enabled

When the reader option 'r6rs-hex-escapes is enabled, the \uNNNN and
\UNNNNNN string escape sequences should be disabled.

* libguile/read.c (scm_read_string): added checks for SCM_R6RS_ESCAPES_P

14 years agoMove r6rs-hex-escape tests into reader.test
Michael Gran [Wed, 13 Jan 2010 05:27:30 +0000 (21:27 -0800)]
Move r6rs-hex-escape tests into reader.test

* test-suite/tests/reader.test (r6rs-hex-escapes): new tests

* test-suite/tests/chars.test (R6RS Hex escapes): remove tests by reverting
  to previous version

* test-suite/tests/strings.test (R6RS Hex escapes): remove tests by
  reverting to previous version

14 years agoReader option for R6RS hex escapes
Michael Gran [Wed, 13 Jan 2010 05:02:41 +0000 (21:02 -0800)]
Reader option for R6RS hex escapes

This adds a reader option 'r6rs-hex-escapes that modifies the
behavior of numeric escapes in characters and strings.  When enabled,
variable-length character hex escapes (#\xNNN) are allowed and become
the default output format for numerically-escaped characters.  Also,
string hex escapes switch to a semicolon terminated hex escape (\xNNNN;).

* libguile/print.c (PRINT_CHAR_ESCAPE): new macro
  (iprin1): use new macro PRINT_CHAR_ESCAPE

* libguile/private-options.h (SCM_R6RS_ESCAPES_P): new #define

* libguile/read.c (scm_read_opts): add new option r6rs-hex-escapes
  (SCM_READ_HEX_ESCAPE): modify to take a terminator parameter
  (scm_read_string): parse R6RS hex string escapes
  (scm_read_character): parse R6RS hex character escapes

* test-suite/tests/chars.test (with-read-options): new procedure
  (R6RS hex escapes): new tests

* test-suite/tests/strings.test (with-read-options): new procedure
  (R6RS hex escapes): new tests

14 years agofix texinfo reflection for procedures
Andy Wingo [Tue, 12 Jan 2010 21:50:10 +0000 (22:50 +0100)]
fix texinfo reflection for procedures

* module/system/vm/program.scm (program-arguments-alist): Rename from
  program-arguments, a name shadowed by features.c
  (arglist->arguments-alist, arity->arguments-alist)
  (arguments-alist->lambda-list, program-lambda-list, write-program):
  Adapt callers.

* module/system/vm/frame.scm (frame-lookup-binding): Return #f if the
  binding is not found, not an error.
  (frame-binding-set!, frame-binding-ref): Adapt to error appropriately.
  (frame-arguments): Dispatch to frame-call-representation.
  (frame-call-representation): Refactor a bit.

* module/ice-9/session.scm (procedure-arguments): Adapt to
  program-arguments name change.

* module/texinfo/reflection.scm (get-proc-args): Refactor to actually
  work with VM procedures.

14 years agoallow simple value definitions with define*-public
Andy Wingo [Tue, 12 Jan 2010 19:15:36 +0000 (20:15 +0100)]
allow simple value definitions with define*-public

* module/ice-9/optargs.scm (define*-public): Allow (define*-public ID
  VAL).

14 years agohopefully fix shared c32 / c64 uniform arrays
Andy Wingo [Tue, 12 Jan 2010 19:14:06 +0000 (20:14 +0100)]
hopefully fix shared c32 / c64 uniform arrays

* libguile/srfi-4.c (DEFINE_SRFI_4_C_FUNCS): Add a width parameter,
  indicating the number of sizeof(ctype) entries comprised by one
  element of the uniform; normally 1, but 2 for c32 and c64.

14 years agomake-array bugfix
Andy Wingo [Mon, 11 Jan 2010 23:21:16 +0000 (00:21 +0100)]
make-array bugfix

* libguile/vm-i-scheme.c (make-array): Fix terrible stack corruption
  bug.

14 years agoinspector integration in debugger
Andy Wingo [Mon, 11 Jan 2010 23:20:50 +0000 (00:20 +0100)]
inspector integration in debugger

* module/system/vm/debug.scm: Integrate with the inspector. Add a
  "procedure" command.

14 years agofix srfi-4 shared vector access from c
Andy Wingo [Mon, 11 Jan 2010 23:20:10 +0000 (00:20 +0100)]
fix srfi-4 shared vector access from c

* libguile/srfi-4.c (DEFINE_SRFI_4_C_FUNCS): Fix
  elements/writable_elements for shared vectors. Thanks to Daniel
  Llorens del Río for the info.

14 years agoprograms print as #<procedure ...>
Andy Wingo [Mon, 11 Jan 2010 23:19:18 +0000 (00:19 +0100)]
programs print as #<procedure ...>

* module/system/vm/program.scm (write-program): Print as #<procedure
  ...>. Fix stdin printing.

* doc/ref/vm.texi: Update a little bit.

14 years agoadd a silly inspector
Andy Wingo [Mon, 11 Jan 2010 23:18:24 +0000 (00:18 +0100)]
add a silly inspector

* module/Makefile.am:
* module/system/vm/inspect.scm: Add a very simple and stupid inspector.

14 years agoremove section on enclose-array
Andy Wingo [Mon, 11 Jan 2010 21:29:38 +0000 (22:29 +0100)]
remove section on enclose-array

* doc/ref/api-compound.texi (Array Procedures): Remove section on
  `enclose-array', as it doesn't exist any more.