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

6354 commits

Author SHA1 Message Date
Ludovic Courtès
dde9c5a431 Update to Gnulib v0.0-3448-g6078aa4 for its <netdb.h> fix.
Reverts commit 691b9ec196 ("getaddrinfo:
Define macros lacking in NetBSD 5.0.").

* libguile/net_db.c (AI_ALL, AI_V4MAPPED, AI_ADDRCONFIG): Remove
  placeholder definitions, how provided by Gnulib's <netdb.h>.
2010-02-17 17:50:43 +01:00
Ludovic Courtès
691b9ec196 getaddrinfo: Define macros lacking in NetBSD 5.0.
* libguile/net_db.c (AI_ALL, AI_V4MAPPED, AI_ADDRCONFIG): New
  macros, when not already defined.
2010-02-17 01:14:26 +01:00
Ludovic Courtès
f353687c68 Include <libguile/__scm.h> in "foreign.h".
* libguile/foreign.h: Include <libguile/__scm.h>.
2010-02-17 00:44:14 +01:00
Ludovic Courtès
2bfa4d5ccd Add missing $(LTLIBINTL), suggested by Gnulib.
* libguile/Makefile.am (libguile_la_LIBADD): Add $(LTLIBINTL).
2010-02-16 20:57:13 +01:00
Ludovic Courtès
56d288b844 i18n: Define `nl_item' when it's not available (needed for Cygwin).
* configure.ac: Add check for `nl_item'.

* libguile/i18n.c: Separate check for `HAVE_LANGINFO_H' and
  `HAVE_NL_TYPES_H'.
  [!HAVE_NL_ITEM]: Define `nl_item'.
2010-02-16 20:57:13 +01:00
Michael Gran
8a8da78d97 Faster read of semicolon comments
There is no need to do character encoding processing within
semicolon comments.

* libguile/read.c (scm_read_semicolon_comment): changed
2010-02-15 20:45:58 -08:00
Ludovic Courtès
44d3d11144 Fix builds of `i18n.c' on non-GNU systems.
* libguile/i18n.c (chr_to_case, str_to_case): Add `func_name' argument
  and `FUNC_NAME' macro.  Update callers.
2010-02-15 19:40:42 +01:00
Ludovic Courtès
3474222a65 Use #f' for addrinfo:canonname' when it wasn't supplied by getaddrinfo(3).
* libguile/net_db.c (scm_from_addrinfo): Use `#f' when `ai_canonname'
  isn't set.
2010-02-15 18:42:34 +01:00
Ludovic Courtès
55ae00ea73 Add `getaddrinfo' and related procedures.
* libguile/net_db.c (sym_getaddrinfo_error, sym_ai_passive,
  sym_ai_canonname, sym_ai_numerichost, sym_ai_numericserv,
  sym_ai_v4mapped, sym_ai_all, sym_ai_addrconfig, sym_eai_badflags,
  sym_eai_noname, sym_eai_again, sym_eai_fail, sym_eai_family,
  sym_eai_socktype, sym_eai_service, sym_eai_memory, sym_eai_system,
  sym_eai_overflow, sym_eai_nodata, sym_eai_addrfamily,
  sym_eai_inprogress, sym_eai_canceled, sym_eai_notcanceled,
  sym_eai_alldone, sym_eai_intr, sym_eai_idn_encode): New variables.
  (scm_from_addrinfo, scm_getaddrinfo, scm_gai_strerror): New functions.

* libguile/net_db.h (scm_getaddrinfo, scm_gai_strerror): New functions.

* module/ice-9/networking.scm (addrinfo:flags, addrinfo:fam,
  addrinfo:socktype, addrinfo:protocol, addrinfo:addr,
  addrinfo:canonname): New procedures.

* test-suite/tests/net-db.test: New file.

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

* doc/ref/posix.texi (Network Databases)[getaddrinfo]: New subsection.
  [The Host Database]: Suggest using `getaddrinfo'.
2010-02-14 20:56:47 +01:00
Ludovic Courtès
61cd9dc907 Use Gnulib's `getaddrinfo' module.
* m4/gnulib-cache.m4: Add `getaddrinfo'.

* libguile/Makefile.am (libguile_la_LDFLAGS): Add `$(GETADDRINFO_LIB)
  $(HOSTENT_LIB) $(SERVENT_LIB)'.
2010-02-14 17:06:13 +01:00
Ludovic Courtès
acbccb0c83 Reinstate `scm_protects', for backward compatibility.
Partly reverts e7efe8e793 ("decruftify
scm_sys_protects").

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

* libguile/gc.h (scm_protects): Add declaration.
2010-02-13 19:33:51 +01:00
Andy Wingo
d8873dfe47 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.
2010-02-08 22:59:25 +01:00
Andy Wingo
269479e31f 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.
2010-02-08 13:35:42 +01:00
Andy Wingo
997659f898 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.
2010-02-08 13:35:06 +01:00
Andy Wingo
babfc7b2c3 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.
2010-02-08 13:34:26 +01:00
Andy Wingo
1d1cae0e2e 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.
2010-02-08 13:00:54 +01:00
Andy Wingo
adaf86ec49 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.
2010-02-08 12:38:18 +01:00
Michael Gran
69f90b0b05 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.
2010-02-02 20:33:41 -08:00
Andy Wingo
b9c100d008 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).
2010-01-31 20:40:24 +01:00
Andy Wingo
2d9260d12c add return/nvalues
* libguile/vm-i-system.c (return/nvalues): New instruction, like
  call/nargs.
2010-01-31 20:40:24 +01:00
Andy Wingo
4f66bcdeff 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.
2010-01-31 20:40:21 +01:00
Andy Wingo
3435f3c07c 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!.
2010-01-27 22:12:58 +01:00
Andy Wingo
0515661235 fix to variable-bound? instruction prototype
* libguile/vm-i-system.c (variable-bound?): Correctly declare as popping
  one item.
2010-01-27 21:47:01 +01:00
Andy Wingo
75383ddbd7 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.
2010-01-26 22:56:42 +01:00
Andy Wingo
9a396cbdbe add alignof' and sizeof' Scheme functions
* libguile/foreign.h:
* libguile/foreign.c (scm_alignof, scm_sizeof): New functions.
2010-01-26 22:56:42 +01:00
Andy Wingo
4d9130a5b7 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.
2010-01-26 22:56:41 +01:00
Andy Wingo
d8b04f04e9 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'.
2010-01-26 22:56:41 +01:00
Andy Wingo
827dc8dcb6 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
2010-01-26 22:56:41 +01:00
Andy Wingo
20aafae22a 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.
2010-01-26 22:56:41 +01:00
Andy Wingo
ab4779ffcf 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.
2010-01-26 22:56:41 +01:00
Andy Wingo
52fd9639fd 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.
2010-01-26 22:56:41 +01:00
Andy Wingo
75c242a256 add libffi dependency
* configure.ac:
* libguile/Makefile.am (AM_CFLAGS, libguile_la_LDFLAGS): Add a libffi
  dependency, for making a dynamic FFI.
2010-01-26 22:56:41 +01:00
Ludovic Courtès
e03b7f73e2 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.
2010-01-26 00:00:58 +01:00
Ludovic Courtès
bb190ddbba 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.
2010-01-25 23:43:41 +01:00
Ludovic Courtès
227eff6a77 Reinstate 2-word displacement for structs.
* libguile/struct.c (scm_init_struct): Reinstate 2-word displacement
  removed by 01e74380f6.
2010-01-25 23:41:27 +01:00
Michael Gran
d31b951951 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
2010-01-23 09:21:46 -08:00
Ludovic Courtès
a752c0dc27 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'.
2010-01-23 16:43:50 +01:00
Ludovic Courtès
696ac4dfcc 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.
2010-01-23 16:41:28 +01:00
Ludovic Courtès
01e74380f6 Clarify GC-registered displacements for structs.
* libguile/struct.c (scm_init_struct): Remove unneeded
  `GC_REGISTER_DISPLACEMENT ()' call.  Comment the remaining one.
2010-01-23 16:39:14 +01:00
Ludovic Courtès
aa42c03669 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.
2010-01-23 16:21:13 +01:00
Ludovic Courtès
73d1aaafb2 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'.
2010-01-20 23:58:39 +01:00
Ludovic Courtès
baedef98ee Reinstate `scm_is_bool ()' as a function.
* libguile/boolean.c (scm_is_bool): New function.

* libguile/boolean.h (scm_is_bool): New function declaration.
2010-01-19 21:41:41 +01:00
Ludovic Courtès
adfb428466 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.
2010-01-19 00:23:33 +01:00
Michael Gran
870d7a2b4f 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
2010-01-17 13:40:18 -08:00
Andy Wingo
06bfe276c8 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.
2010-01-17 16:56:34 +01:00
Andy Wingo
f826a8864a fix (class-of #u32())
* libguile/goops.c (scm_class_of, create_standard_classes): Return
  <bytevector> or <uvec> for bytevectors, as appropriate.
2010-01-15 22:33:49 +01:00
Andy Wingo
5afa815c9c 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 [.
2010-01-15 22:31:23 +01:00
Andy Wingo
7055591c2e 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.
2010-01-14 13:55:50 +01:00
Andy Wingo
45cc48673a 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.
2010-01-13 23:14:12 +01:00
Andy Wingo
a8fc38526a remove unused var in read.c
* libguile/read.c (scm_read_character): Remove unused var.
2010-01-13 21:08:54 +01:00