(SCM_KEYWORD_STYLE): defined.
* read.c (scm_read_opts): add a keywords option. This isn't a
boolean option, in case someone wants to add support for DSSSL
keywords too.
Setup scm_keyword_prefix symbol.
(scm_lreadr): Only process keywords if SCM_KEYWORD_STYLE is
set to 'prefix.
* I've left keyword support disabled by default, since it doesn't
seem to break the module system and it gives R4RS standard behaviour.
It can be reactivated with (read-set! keywords 'prefix).
(idea from Mikael: make it a pair so scm_permanent object only
called once.)
(scm_read_hash_extend): don't call scm_permanent_object.
(ideas from Mikael): if chr is already in the list, replace its
procedure instead of appending it again. If chr is #f, remove
it from the list.
(scm_get_hash_procedure): take CDR of scm_read_hash_procedures.
* gdbint.c (gdb_read): update scm_lreadr usage.
* load.h: update prototypes.
* load.c (scm_primitive_load, scm_read_and_eval_x,
scm_primitive_load_path): remove case_insensitive_p, sharp arguments.
* read.h: add prototype for scm_read_hash_extend. Change args for
other prototypes.
* read.c (scm_read_hash_procedures): new variable.
(scm_read_hash_extend): new procedure.
(scm_get_hash_procedure): new procedure.
* (scm_lreadr): use scm_get_hash_procedure instead of an argument
for extended # processing.
(scm_read, scm_lreadr, scm_lreadrecparen, scm_lreadparen,
scm_read_token): remove case_i, sharp arguments. Change callers.
* read.h (SCM_N_READ_OPTIONS): increase to 3.
(SCM_CASE_INSENSITIVE_P): define.
* read.c: add case-insensitive option to scm_read_opts.
* (scm_read_token): use SCM_CASE_INSENSITIVE_P instead of an argument
to determine whether to convert symbol case.
(default_case_i): definition removed.
* read.c (scm_read_token): if case_i, downcase ic before doing
anything with it.
Configure with --enable-guile-debug if you want a bunch of extra
functions used for debugging when developing Guile.
* acconfig.h: Added new preprocessor symbol GUILE_DEBUG.
with 3 or more args internally to the evaluator. This is mainly
because we don't want to pass entry and exit points of the
debug support twice, but it also seems to increase the speed of
the evaluator for such calls (e. g. (+ 1 2 3)).
display-application; Set fancy printing parameters individually
for different types of display (backtrace, error, application).
(These should of course be customizable!)
from pairs with a GLOC in the car.
* symbols.c (msymbolize): Bugfix: Also initialize SCM_SYMBOL_HASH,
otherwise `symbol-hash' will behave badly.
(scm_symbol_hash): Bugfix: Must msymbolize if tc7_ssymbol, othwise
we get segmentation fault!
* symbols.c: Added #include "weaks.h". New functions
`builtin-bindings' and `builtin-weak-bindings'. (These will be
moved to an extraneous library when we split libguile.)
* throw.c (scm_handle_by_message): if a 'quit is caught, use its
args to derive an exit status. Allows (quit) to work from a
script.
(scm_exit_status): new function.
#include "eq.h".
(ENTER_APPLY): Bugfix: Reset apply-frame trap on trap as is done
with the others.
(ENTER_APPLY, scm_deval): Reset trace flag on apply-frame and
exit-frame traps.
source files that are not always included in libguile but should
have their dependencies calculated by automake. This variable is
recognized by automake, no further magic is needed.
(libguile_la_DEPENDENCIES): Changed to @LIBLOBJS@. Libtool wants
to deal exclusively with *.lo files, as it seems. The *.o files
are built automatically when the corresponding *.lo file gets
built.
inet_aton.c, srcprop.c, stacks.c, and strerror.c from this list.
They should only be included in the library at configure.in's
discretion.
(libguile_la_LDADD): Include the appropriate .lo files here.
(libguile_la_DEPENDENCIES): List the corresponding .o files here,
so we know when to build them (and their .lo bretheren).
* configure.in (LIBLOBJS): New substituted variable. We let
configure decide which .o files to include in LIBOBJS, and then
put the corresponding list of .lo files in LIBLOBJS. The latter
is what we pass to libtool.
* Makefile.in, configure: regenerated.
old scm_sysintern but doesn't take a second value argument.
(scm_sysintern): Now uses scm_sysintern0.
(scm_sysintern_no_module_lookup): Renamed to
scm_sysintern0_no_module_lookup and doesn't take a second value
argument any longer.
* symbols.h (scm_sysintern0: Added declaration.
* options.c (scm_init_opts): Use scm_sysintern0 instead of
scm_sysintern when interning option keys. Otherwise we risk
destroying the values of already interned variables.
* symbols.c (scm_sym2vcell): Bugfix: Treat definedp as
scheme-level boolean (use SCM_NFALSEP).
* backtrace.c (scm_init_backtrace): Make Scheme-level variable
`the-last-stack'.
(scm_backtrace): New function. (C version of old function from
boot-9.scm) Motivation: Make it possible to display backtraces
without depending on boot-9.scm. (I'm uncertain if this
motivation is good enough...)
* root.h (scm_root_state): Add member the_last_stack_var.
(scm_the_stack_var): Defined to scm_root->the_last_stack_var.
* root.c (mark_root): Mark scm_the_last_stack_var.
* init.c (scm_start_stack): Initialize scm_the_last_stack_var to
SCM_BOOL_F.
1. mark_lazy_catch didn't mark the smob.
2. Both functions above have standard variants:
(lazy_catch_funs): Changed mark_lazy_catch --> scm_mark0,
free_lazy_catch --> scm_free0.
(scm_lazy_catch): Rewritten to use it.
(scm_ithrow): Handle the new lazy catch representation.
Use SCM_LAZY_CATCH_P, instead of assuming that any wind list entry
that doesn't have a jmpbuf is a lazy catch clause.
(tc16_lazy_catch, struct lazy_catch, mark_lazy_catch,
free_lazy_catch, print_lazy_catch, lazy_catch_funs,
make_lazy_catch, SCM_LAZY_CATCH_P): Support funs, including a new
smob.
(scm_init_throw): Register the new lazy-catch smob type.
* throw.h (scm_internal_lazy_catch): decl for new function.
(scm_lazy_catch): Rewritten to use it.
(scm_ithrow): Handle the new lazy catch representation.
Use SCM_LAZY_CATCH_P, instead of assuming that any wind list entry
that doesn't have a jmpbuf is a lazy catch clause.
(tc16_lazy_catch, struct lazy_catch, mark_lazy_catch,
free_lazy_catch, print_lazy_catch, lazy_catch_funs,
make_lazy_catch, SCM_LAZY_CATCH_P): Support funs, including a new
smob.
(scm_init_throw): Register the new lazy-catch smob type.
* throw.h (scm_internal_lazy_catch): decl for new function.
* throw.c (scm_internal_catch): Doc fixes.
configure.in. Including this might cause problems if applications
that link against libguile include their own copies of alloca, but
if they're using autoconf, they should be adding libguile to LIBS
before calling AC_FUNC_ALLOCA anyway, in which case they'll find
the copy in libguile, and things will be okay. (I think.)
unif.c.
strop.h: move prototypes too.
* posix.c (scm_init_posix): don't intern EINTR since it's now done
elsewhere.
* ioext.c (scm_init_ioext): don't intern stat macros, S_IRUSR
etc. I deleted them from filesys.c long ago, but didn't
notice they were here too (although ineffective since
sys/stat.h wasn't included).