out to interact badly with the Emacs support and the Tcl/Tk
support. It's not a high enough priority at the moment to be
worth fixing. I'm leaving the other readline support in, though.
* readline.scm: New module.
* boot-9.scm (repl-reader): New function.
(scm-style-repl): Call repl-reader, instead of doing the reading
ourselves. Remove repl-report-reset; it was never used for
anything.
(top-repl): If we've got the readline primitives, then redefine
repl-reader to use them.
If we've got the readline primitives, import the readline module.
expect-strings to fix the => syntax under the new regex system.
(top): include regex module in define-module statement.
* (error-catching-loop): new local variable "interactive". if
#f, abort terminates the process.
(set-batch-mode?!, batch-mode?): new closures, defined in
error-catching-loop. the names are from scsh.
* boot-9.scm (struct-layout): Use `vtable-index-layout' instead of
`0'.
1997-10-02 Mikael Djurfeldt <mdj@nada.kth.se>
* boot-9.scm (struct-printer, make-struct-printer,
set-struct-printer-in-vtable!, *struct-printer*): Removed.
(record-type-vtable, make-record-type): Don't use make-struct-printer.
(record-type-vtable): User fields "prpr" (printer is no longer a
user field).
(record-type-name, record-type-fields): Decreased slot index by
one; Use `vtable-offset-user'.
* boot-9.scm: Split off modules into separate, autoloadable files.
This reduces startup time from 10.5s to 5.5s (user cpu).
* calling.scm, common-list.scm, ls.scm, q.scm, runq.scm,
string-fun.scm: New files, containing stuff that used to be in
boot-9.scm.
* Makefile.am (ice9_sources): List new files here, for
distribution and installation.
* Makefile.in: Regenerated.
separate-fields-after-char, separate-fields-before-char): Call
continuation function, RET, as advertised: with each separated
field a separate argument.
* Makefile.in: Regenerated with automake 1.2a.
registered.
(try-module-dynamic-link): Removed the first test which
corresponds to a call to `try-module-linked'.
(resolve-module): Resolve modules in this order: 1. Already
registered modules (for example those which have been statically
linked), 2. Try to autoload an .scm-file, 3. Try to dynamically
link a .so-file.
length --> string-length. (Thanks to Aleksandar Bakic.)
(separate-fields-discarding-char, separate-fields-after-char,
separate-fields-before-char): Bugfix from Maciej Stachowiak
<mstachow@mit.edu>. Thanks!
* slib.scm: Added hack which transfers syntactic information from
the builtin variable `define' to the slib version if module (ice-9
syncase) has been loaded. This is necessary to get correct
expansion inside the slib module.
* psyntax.ss (build-let, build-named-let): New output
constructors.
(build-lexical-var): Seed gensym with symbolic name.
(self-evaluating?): Add keywords among self-evaluating types.
(let): New core form.
(if): Removed from core language.
(or, and, let, cond): Removed syntactic definitions.
(sc-expand3): New procedure: Expander which takes optional mode
and eval-syntactic-expanders-when arguments.
* syncase.scm (psyncomp): New procedure: Recompiles psyntax.pp.
Should be used inside the (ice-9 syncase) module with (use-syntax
syncase) and with the current directory containing the psyntax.ss
source.
Added hack to transfer syntactic information from the builtin
variable `define' to the slib version if module (ice-9 slib) has
been loaded.
* syncase.scm (putprop, getprop): Modified to use the object
properties of the variable object corresponding to the symbol;
This way we can ride on the mechanisms of the module system.
Changed `builtin-variable' calls to `define-public' calls.
Setup the hooks sc-expand and sc-interface.
* boot-9.scm (sc-interface, sc-expand): New builtin variables.
(set-current-module): Switch to and from sc-expand as
scm:eval-transformer when going into and out of modules using
syncase macros.
(module-use!): Set scm:eval-transformer to sc-expand when adding
the syncase interface.
* stime.c (scm_times): new procedure.
* ioext.c (scm_fseek): if the first argument is a file descriptor
call lseek.
(scm_ftell): if the first argument is a file descriptor call lseek
(sic).
* filesys.h: prototypes for scm_open_fdes, scm_fsync.
* filesys.c (scm_chmod): if the first argument is a file descriptor,
call fchmod.
(scm_chown): if the first argument is a port or file descriptor,
call fchown.
(scm_truncate_file): new procedure.
Add DEFER/ALLOW INTS to a few other procedures.
(scm_fsync): new procedure.
(scm_open_fdes): new procedure.
(scm_open): use scm_open_fdes. If mode isn't specified, 666 will
now be used.
(scm_fcntl): the first argument can now be a file descriptor. The
third argument is now optional.
* posix.c (scm_execl, scm_execlp): make the filename argument
compulsory, since omitting it causes SEGV.
(scm_sync): return unspecified instead of #f.
(scm_execle): new procedure.
(environ_list_to_c): new procedure.
(scm_environ): use environ_list_to_c. disable interrupts.
(scm_convert_exec_args): take pos and subr arguments and
improve error checking.
* boot-9.scm: define tms accessors: clock, utime, stime, cutime,
cstime.
primitive-load-path so that backtraces get narrowed properly at
the top.
* boot-9.scm (top-repl): Save stack already in signal handler in
order to narrow it correctly.
(save-stack): Adjust narrowing tag for the top of load-stacks.
* ioext.c (scm_dup_to_fdes): renamed from scm_primitive_dup2.
Scheme name is now dup->fdes.
(scm_dup_to_fdes): make the second argument optional and
fold in the functionality of scm_primitive_dup.
(scm_primitive_dup): deleted.
* fports.h (SCM_P): prototypes for scm_setvbuf, scm_setfileno.
* fports.c (scm_setbuf0): don't disable the setbuf if MSDOS or
ultrix are defined. Use setvbuf instead of setbuf.
(scm_setvbuf): new procedure.
(scm_init_fports): intern _IOFBF, _IOLBF, _IONBF.
(scm_setfileno): moved from ioext.c.
(scm_fgets): cast SCM_STREAM to (FILE *), remove unused lp variable.
(top of file): Delete 25 lines of probably obsolete CPP hair for MSDOS.
* boot-9.scm (move->fdes, dup->port): use dup->fdes, not primitive-dup.
(dup->fdes): deleted, now done in C.
* ioext.c (scm_primitive_dup2): return the new file descriptor
instead of SCM_UNSPECIFIED, since similarity to scm_primitive_dup
is convenient.
(scm_fdopen): bug fix: don't try to make port unbuffered until its
stream has been set.
(scm_duplicate_port): deleted, there's now an implementation in
boot-9.scm.
(scm_primitive_dup2): do nothing if newfd == oldfd.
* boot-9.scm (dup->port, dup->inport, dup->outport, dup->fdes,
dup, fdes->inport, fdes->outport, port->fdes): new procedures.
(duplicate-port): was a C primitive, now it's here.
(move->fdes): allow the first argument to be a file descriptor.
Return the modified port or file descriptor (was unspecified.)
* boot-9.scm (read-path-list-notation): New function.
(parse-path-symbol): Deleted. Replaced by above.
Plug in read-path-list-notation as the parser for #/ lists,
instead of the anonymous lambda form calling parse-path-symbol.
(Thanks to Maurizio Vitale.)
from the (ice-9 common-list) module; make the `init' argument
optional in the scm module's definition, to match the deleted
definition. Harmony reigneth? (Thanks to Bernard URBAN.)
different version of ice-9. People have been skewing things and
sending in bug reports.
* version.scm.in: New file, which the configure script munges to
produce version.scm, which contains the ice-9 config stamp.
* boot-9.scm: Compare the libguile and ice-9 config stamps;
display a warning if the two are different.
* Makefile.am: Install version.scm, but don't distribute it.
Distribute version.scm.in, but don't install it.
* Makefile.in: Regenerated.
check. Correctly check for struct printer tag.
* boot-9.scm (with-regexp-parts): Comment this out. It has no
users in the core, and relies on mildly hairy details of the old
regexp interface.
* boot-9.scm (ipow-by-squaring, butlast): Fix uses of outdated
function names.
* boot-9.scm (with-excursion-getter-and-setter, q-rear): Doc
fixes.
make-struct-printer, set-struct-printer-in-vtable!): New bindings
to support printing of structures.
(record-type-vtable, make-record-type): Add slot to hold printing
function and initialize it with something appropriate. Removed
commented out printing code.
(record-type-name, record-type-fields): Adjusted slot offsets.
(%print-module): Reduce argument list to "mod" and "port".
* _scm.h: if HAVE_RESTARTS is defined then don't use a SYSCALL
loop.
* posix.c (scm_uname): interpret only negative values as an error.
Solaris normally returns a positive value.
* script.c (scm_compile_shell_switches): if we are not going into
an interactive repl, set scm_mask_ints to zero so that asyncs can
run.
* simpos.c (scm_system): don't ignore/unignore signals around
the "system" call.
* posix.c (scm_open_pipe): don't ignore/unignore signals around
the "popen" call.
* init.c (scm_boot_guile_1): don't call scm_init_signals, it's
done in boot-9.scm instead.
* scmsigs.c, async.c: Major rewriting of signal handling code.
(scm_sigaction): new procedure.
(scm_sleep): don't wrap sleep in SCM_SYSCALL, it would mess up the
timing.
(scm_raise): return unspecified, throw error on failure.
* boot-9.scm: signal-handler, alarm-thunk: removed.
don't define ticks-interrupt etc.
top-repl: install signal handlers for SIGINT, SIGFPE, SIGSEGV, SIGBUS
during call to scm-style-repl.
* acconfig.h: mention HAVE_RESTARTS.
* configure.in: check for sigaction and restartable system calls.
arithmetic (from Marko.Kohtala@ntc.nokia.com).
* boot-9.scm (open-input-pipe, open-output-pipe): defined here
instead of in libguile.
(tm:sec etc.) new accessors for broken-down time.
(set-tm:sec etc.) new setters for broken-down time.