`interaction-evironment'.
(define-public, defmacro-public): Use `export' instead of explicit
module magic.
(eval-when): New macro.
(define-module, use-modules, use-syntax, export): Use it to
restrict the use of these forms to the top level.
(define-public, defmacro-public): Only export binding when on
top-level.
(process-define-module): Call `set-current-module' with the
defined module.
(define-module): Simply call `process-define-module' without any
fuss (but only on top-level).
(named-module-use!): New function.
(top-repl): Do not use `define-module'. Use equivalent low-level
means instead.
in C for now.
* rdelim.scm: export the C primitives too.
* documentation.scm: use (ice-9 rdelim).
* filesys.c (scm_link): docstring fix.
* fports.h (scm_setfileno): obsolete declaration removed.
* posix.c: bogus popen declaration removed.
* rdelim.c: new file, split from ioext.c with new proc
scm_init_rdelim.
* rdelim.h: new file.
* Makefile.am: add rdelim.c and related files.
* init.c: call scm_init_rdelim. include rdelim.h.
* ice-9.scm (scm-line-incrementors read-line! read-delimited!
read-delimited read-line): moved to rdelim.scm.
scm-line-incrementors is not exported.
* boot-9.scm: import (ice-9 rdelim) for backwards compatibility,
for now.
* lineio.scm: use module (ice-9 rdelim).
* Makefile.am (ice9_sources): add rdelim.scm.
removed. values and call-with-values are now primitives and
the other two were only exported by accident. don't define
*values-rtd* record type or handle multiple values in
scm-style-repl.
`symbol-append'.
(symbol-append): Map `symbol->string' on
args.
(obarray-symbol-append, obarray-gensym): Simply removed. I don't
think I'll announce this in NEWS even. One of the functions never
even worked... /mdj.
(find-and-link-dynamic-module, keyword->symbol): Use
`symbol->string'.
(try-module-autoload, process-define-module): Rewrote using R5RS
semantics.
record-modifier, scm-style-repl): Add second arg to eval.
(read-hash-extend #\.): Ditto. (This is actually a bugfix!)
(eval-in-module): Redefined to be eval and deprecated.
'() instead of #f.
(make-modules-in): Name modules with their real (= full) names.
(the-root-module, the-scm-module): Named `(guile)' instead of
`the-root-module'.
(the-scm-module): Set kind to 'interface.
* boot-9.scm (load-user-init): rewritten. first work out the home
directory and then try to open the file (previously it could try
to open a file in more than one place). catch exceptions when
trying to get a directory from the user database. don't check
that ~/.guile is not a directory before trying to load it (a lack
of ~/.guile is not a crime, but if the file is not valid for any
reason then primitive-load will raise an error).
* error.c, gh_data.c, ports.c, script.c, strop.c: include <string.h>.
* strings.c (scm_string_ref): make the 2nd argument compulsory.
previously it defaulted to zero for no good reason that I can see.
use a local variable for SCM_INUM (k). replace
SCM_VALIDATE_INUM_DEF with SCM_VALIDATE_INUM_COPY.
(scm_makfromstr): cosmetic changes.
(scm_string): Accept only chars in the list, not strings, for
conformance to R5RS (particularly for list->string, which is
supposed to be the inverse of string->list.) remove
SCM_DEFER_INTS/SCM_ALLOW_INTS, which is unnecessary since
scm_makstr handles the cell allocation. when reporting wrong-type
arg, don't report the position as 1.
* posix.c (scm_init_posix): intern PIPE_BUF if it's defined.
* boot-9.scm (find-and-link-dynamic-module): pass strings, not symbols,
to string-append.
`simple-format' message strings: substitute ~A for %s, and ~S for
%S.
* boot-9.scm: Added (define format simple-format) to expose that
primitive via the simpler name until format.scm is loaded.
* configure.in: add --disable-arrays option, probably temporary.
* the following changes allow guile to be built with the array
"module" omitted. some of this stuff is just tc7 type support,
which wouldn't be needed if uniform array types were converted
to smobs.
* tag.c (scm_utag_bvect ... scm_utag_cvect): don't define unless
HAVE_ARRAYS.
(scm_tag): don't check array types unless HAVE_ARRAYS.
* sort.c (scm_restricted_vector_sort_x, scm_sorted_p):
remove the unused array types.
* (scm_stable_sort, scm_sort): don't support vectors if not
HAVE_ARRAYS. a bit excessive.
* random.c (vector_scale, vector_sum_squares,
scm_random_solid_sphere_x, scm_random_hollow_sphere_x,
scm_random_normal_vector_x): don't define unless HAVE_ARRAYS.
* gh_data.c (makvect, gh_chars2byvect, gh_shorts2svect,
gh_longs2ivect, gh_ulongs2uvect, gh_floats2fvect, gh_doubles2dvect,
gh_uniform_vector_length, gh_uniform_vector_ref):
don't define unless HAVE_ARRAYS.
(gh_scm2chars, gh_scm2shorts, gh_scm2longs, gh_scm2floats,
gh_scm2doubles):
don't check vector types if not HAVE_ARRAYS.
* eq.c (scm_equal_p), eval.c (SCM_CEVAL), print.c (scm_iprin1),
gc.c (scm_gc_mark, scm_gc_sweep), objects.c (scm_class_of):
don't support the array types unless HAVE_ARRAYS is defined.
* tags.h: make nine tc7 types conditional on HAVE_ARRAYS.
* read.c (scm_lreadr): don't check for #* unless HAVE_ARRAYS is
defined (this should use read-hash-extend).
* ramap.c, unif.c: don't check whether ARRAYS is defined.
* vectors.c (scm_vector_set_length_x): moved here from unif.c. call
scm_uniform_element_size if HAVE_ARRAYS.
vectors.h: prototype too.
* unif.c (scm_uniform_element_size): new procedure.
* init.c (scm_boot_guile_1): don't call scm_init_ramap or
scm_init_unif unless HAVE_ARRAYS is defined.
* __scm.h: don't define ARRAYS.
* Makefile.am (EXTRA_libguile_la_SOURCES): unif.c and ramap.c
moved here from libguile_la_SOURCES.
* Makefile.am (ice9_sources): add arrays.scm.
* boot-9.scm: load arrays.scm if 'array is provided.
* arrays.scm: new file with stuff from boot-9.scm.
* socket.c (scm_htons, scm_ntohs, scm_htonl, scm_ntohl): new
functions for network data conversion.
* numbers.c (scm_num2long, scm_num2longlong):
throw out-of-range instead of wrong-type-arg if appropriate.
(scm_iint2str): handle -2^31 correctly.
(scm_num2long): handle -2^31 bignum correctly.
(scm_num2long_long): rewrite the bigdig case: basically copied
from scm_num2long.
numbers.h: (SCM_BITSPERLONGLONG): deleted.
* unif.c (rapr1): use sprintf instead of intprint for unsigned
longs: intprint can't cope with large values.
* numbers.c (scm_num2ulong): check more consistently that the
input is not negative. if it is, throw out-of-range instead of
wrong-type-arg.
* ramap.c (scm_array_fill_int): don't limit fill to INUM for
uvect, ivect or llvect.
Check that fill doesn't overflow short uniform array.
* __scm.h: add another long to the definition of long_long and
ulong_long.
* unif.c (scm_raprin1): use 'l' instead of "long_long" in the
print representation of llvect. read can't handle more than
one character.
(scm_dimensions_to_uniform_array): make "fill" an optional argument
instead of a rest argument.
* tags.h (scm_tc7_llvect): wasn't defined anywhere, so use the free
tag 29 for now.
* __scm.h: don't mention LONGLONGS.
* unif.c, numbers.c, eq.c, gc.c, print.c, eval.c, ramap.c:
replace LONGLONGS with HAVE_LONG_LONGS as set by configure.
* net_db.c (scm_inet_aton): throw errors using the misc-error key
instead of system-error. inet_aton doesn't set errno.
system-error isn't right in gethost either, since it's throwing
the value of h_errno instead of errno. so:
(scm_host_not_found_key, scm_try_again_key,
scm_no_recovery_key, scm_no_data_key): new error keys.
(scm_resolv_error): new procedure, use the new keys.
(scm_gethost): call scm_resolv_error not scm_syserror_msg.
* error.c: (various): use scm_cons instead of scm_listify
to build short lists.
* boot-9.scm (read-hash-extend to set up arrays): add 'l' for
long_long uniform vectors.
* networking.scm (sethostent, setnetent, setprotoent, setservent):
take an optional argument STAYOPEN. default is #f.
* readline.c (scm_init_readline): set rl_readline_name to Guile,
to allow conditionals in .inputrc.
* * boot-9.scm (top-repl): Use (ice-9 debug) (ice-9 debugger) (ice-9
session) (ice-9 threads) (ice-9 regex) from guile-user only if
top-repl is called. This makes startup time for scripts 30% of
what it was before... Removed redundant code for loading of
readline.
readline is used by the repl run by this thread.
(handle-system-error): Print "Backtrace:" before backtrace since
this is no longer done by display-backtrace.
with the configuration date of ice-9. This test yields too many
false positives to be helpful. For example, if you build Guile
for several architectures but have them all share a "share"
directory (which is supposed to work), then all but one
architecture's Guile will complain that the configuration dates
don't match. Which is true, but indicates nothing wrong.
* boot-9.scm: Delete code which compares ice-9-config-stamp with
libguile-config-stamp.
* version.scm.in: Delete.
* Makefile.am (ice9_generated): Delete.
(subpkgdata_DATA): Remove ice9_generated.
(EXTRA_DIST): Remove version.scm.in.
* Makefile.in: Regenerate.
session) (ice-9 threads) (ice-9 regex) from guile-user only if
top-repl is called. This makes startup time for scripts 30% of
what it was before... Removed redundant code for loading of
readline.
* boot-9.scm (read-path-list-notation,
read-path-list-notation-warning): Deleted.
Don't register read-path-list-notation-warning as a reader for
objects starting with '#/'.
system. Here's a simple version for the old module system:
* boot-9.scm (module-observers, module-weak-observers,
module-observer-id, set-module-observers!,
set-module-observer-id!): New accessors.
(module-type): Added slots `observers', `weak-observers' and
`observer-id'.
(module-observe, module-observe-weak, module-unobserve,
module-modified!): New procedures.
(module-make-local-var!, module-add!, module-remove!,
module-clear!, module-define!, module-use!): Call module-modified!.
(error-catching-loop): likewise.
* boot-9.scm (scm-style-repl): -read: don't call
consume-trailing-whitespace if val is eof object. Allows
exiting repl with single control-D.
* boot-9.scm (error-catching-loop): don't force output within
error catching loop after quit received.
(top-repl): flush all ports when the repl terminates.
* boot-9.scm (error-catching-loop): flush all ports before
primitive exit if non-interactive.
force-output on current-error-port if interactive.
* boot-9.scm (reopen-file): deleted.
* popen.scm (open-output-pipe, open-input-pipe): moved from
boot-9.scm.
* popen.scm: new file.