Andy Wingo [Thu, 22 Jan 2015 13:49:36 +0000 (14:49 +0100)]
Merge commit '
01a301d1b606b84d986b735049e7155d2f4cd6aa'
Conflicts:
libguile/hash.c
Andy Wingo [Thu, 22 Jan 2015 13:48:40 +0000 (14:48 +0100)]
Merge commit '
894d0b894daae001495c748b3352cd79918d3789'
Conflicts:
libguile/hash.c
Andy Wingo [Thu, 22 Jan 2015 13:38:00 +0000 (14:38 +0100)]
Andy Wingo [Thu, 22 Jan 2015 13:37:52 +0000 (14:37 +0100)]
Andy Wingo [Thu, 22 Jan 2015 13:37:18 +0000 (14:37 +0100)]
Merge commit '
cdcba5b2f6270de808e51b3b933374170611b91d'
Conflicts:
module/statprof.scm
Andy Wingo [Thu, 22 Jan 2015 12:34:48 +0000 (13:34 +0100)]
Merge commit '
5d971db802eaa8038db17e1aa5b4c69452739744'
Conflicts:
libguile/ports.c
Andy Wingo [Thu, 22 Jan 2015 12:33:07 +0000 (13:33 +0100)]
Andy Wingo [Thu, 22 Jan 2015 12:32:59 +0000 (13:32 +0100)]
Merge commit '
7c433cbbce83bc9f2f9967afba00bbb68e312657'
Conflicts:
meta/Makefile.am
Andy Wingo [Thu, 22 Jan 2015 12:30:25 +0000 (13:30 +0100)]
Merge commit '
5fac1a7ada362d78f13143acbc0ceca7f2f101de'
Conflicts:
configure.ac
doc/ref/libguile-parallel.texi
Andy Wingo [Thu, 22 Jan 2015 12:24:30 +0000 (13:24 +0100)]
Andy Wingo [Thu, 22 Jan 2015 12:16:49 +0000 (13:16 +0100)]
Merge commit '
81d2c84674f03f9028f26474ab19d3d3f353881a'
Some fixups in bytevectors.c.
Andy Wingo [Thu, 22 Jan 2015 12:04:34 +0000 (13:04 +0100)]
Andy Wingo [Thu, 22 Jan 2015 12:04:11 +0000 (13:04 +0100)]
Andy Wingo [Mon, 19 Jan 2015 15:57:42 +0000 (16:57 +0100)]
Keywords have a tc7
* libguile/tags.h (scm_tc7_keyword): Allocate a tc7, so that the VM can
have cheap keyword? tests.
* libguile/keywords.c:
* libguile/keywords.h: Adapt.
* libguile/goops.c (scm_class_of, scm_sys_goops_early_init): Capture
<keyword>.
* libguile/print.c (iprin1): Inline keyword printer.
* libguile/evalext.c (scm_self_evaluating_p): Add keywords here.
* libguile/deprecated.h:
* libguile/deprecated.c (scm_tc16_keyword): Deprecate.
* module/language/cps/compile-bytecode.scm (compile-fun): Add keyword?
case, and bitvector? case while we're at it.
* module/language/cps/effects-analysis.scm (define-primitive-effects):
Add bytevector?, keyword?, and bitvector? cases.
* module/language/cps/primitives.scm (*branching-primcall-arities*): Add
keyword?.
* module/language/cps/types.scm (bitvector?, keyword?, bytevector?): Add
branch inferrers.
* module/language/tree-il/primitives.scm (*interesting-primitive-names*):
(*effect-free-primitives*):
(*effect+exception-free-primitives*): Add bytevector?, keyword?, and
bitvector?.
* module/oop/goops.scm (<keyword>): New class.
* module/system/base/types.scm (%tc7-keyword, cell->object): Add cases.
* module/system/vm/assembler.scm (br-if-keyword): New definition.
* module/system/vm/disassembler.scm (code-annotation): Add br-if-tc7
case for keywords.
* test-suite/tests/types.test ("clonable objects"): Update now that
keywords are cloneable.
Andy Wingo [Mon, 19 Jan 2015 09:37:34 +0000 (10:37 +0100)]
Add allocate-struct, struct-ref, struct-set! instructions
* libguile/vm-engine.c (allocate-struct, struct-ref, struct-set!): New
instructions, to complement their "immediate" variants.
* module/language/cps/compile-bytecode.scm (compile-fun):
* module/system/vm/assembler.scm (system): Wire up the new instructions.
Andy Wingo [Thu, 22 Jan 2015 11:50:18 +0000 (12:50 +0100)]
Merge commit '
5af307de43e4b65eec7f235b48a8908f2a00f134'
Conflicts:
test-suite/tests/reader.test
Andy Wingo [Thu, 22 Jan 2015 11:46:11 +0000 (12:46 +0100)]
Ludovic Courtès [Sun, 11 Jan 2015 21:40:07 +0000 (22:40 +0100)]
Optimize 'string-hash'.
This yields a 50% improvement on the "narrow string" benchmark of
'hash.bm', 41% on "wide string", and 76% on "long string".
* libguile/hash.c (scm_i_string_hash): Rewrite to avoid
'scm_i_string_ref' calls.
Ludovic Courtès [Sun, 11 Jan 2015 21:37:00 +0000 (22:37 +0100)]
Add 'string-hash' benchmarks.
* benchmark-suite/benchmarks/hash.bm: New file.
* benchmark-suite/Makefile.am (SCM_BENCHMARKS): Add it.
Ludovic Courtès [Sun, 11 Jan 2015 21:11:17 +0000 (22:11 +0100)]
Deprecate 'scm_string_hash'.
This function has been unused internally for some time and is undocumented.
* libguile/hash.c (scm_string_hash): Wrap if #if SCM_ENABLE_DEPRECATED
== 1.
* libguile/hash.h (scm_string_hash): Likewise, and replace SCM_API with
SCM_DEPRECATED.
Ludovic Courtès [Sun, 11 Jan 2015 20:57:54 +0000 (21:57 +0100)]
Optimize 'write' for strings.
This shows a 19% improvement on the "string without escapes"
micro-benchmark of 'write.bm', and 12% on "string with escapes".
* libguile/print.c (iprin1) <scm_tc7_string>: Replace 'scm_i_string_ref'
loop with a call to 'write_string'.
(display_character): Adjust description of return value in comment.
(write_string): New function.
Ludovic Courtès [Sun, 11 Jan 2015 19:58:34 +0000 (20:58 +0100)]
Avoid converting the 'mode' argument of 'open-file'.
* libguile/fports.c (scm_open_file_with_encoding): const-qualify 'md'
and 'ptr'. Add call to 'scm_i_try_narrow_string'. Use
'scm_i_string_chars' instead of 'scm_to_locale_string' plus '
scm_dynwind_free'.
* test-suite/tests/ports.test ("invalid wide mode string",
"valid wide mode string"): New tests.
Ludovic Courtès [Sun, 11 Jan 2015 19:44:36 +0000 (20:44 +0100)]
statprof: 'statprof' and 'with-statprof' return the code's return values.
* module/statprof.scm (statprof): Return the return values of THUNK.
(with-statprof): Adjust docstring accordingly.
* test-suite/tests/statprof.test ("return values"): New test.
* doc/ref/statprof.texi (Statprof): Adjust accordingly.
Ludovic Courtès [Fri, 9 Jan 2015 14:47:15 +0000 (15:47 +0100)]
Improve deprecation message of 'scm_add_to_port_table'.
Reported by Thien-Thi Nguyen <ttn@gnu.org>.
* libguile/ports.c (scm_add_to_port_table): Mention
'scm_new_port_table_entry'.
Mark H Weaver [Sun, 14 Dec 2014 15:24:00 +0000 (10:24 -0500)]
Assembler: Cope with non-string port filenames.
Fixes <http://bugs.gnu.org/19354>.
Reported by Linas Vepstas <linasvepstas@gmail.com>.
* module/system/vm/assembler.scm (write-sources): Intern the filename
only if it's a string. (For sockets, the filename is a symbol).
Andy Wingo [Wed, 10 Dec 2014 13:34:44 +0000 (14:34 +0100)]
Convert primitive-eval to "compile" its expressions to linked closures
* libguile/memoize.c (memoize): Fix meta on subsequent case-lambda
clauses.
* module/ice-9/eval.scm (primitive-eval): Rewrite to compile expressions
to thunks, to avoid runtime dispatch cost.
Andy Wingo [Wed, 10 Dec 2014 15:25:19 +0000 (16:25 +0100)]
Fix syntax.test
* test-suite/tests/syntax.test (exception:variable-ref): Change expected
error.
Andy Wingo [Sun, 7 Dec 2014 18:03:19 +0000 (19:03 +0100)]
Minor evaluator tweaks
* libguile/eval.c (eval): Remove unused variable.
* libguile/memoize.c (unmemoize): Fix unmemoization.
* module/ice-9/eval.scm: Attempt to speed up common box-ref cases.
Andy Wingo [Sun, 7 Dec 2014 14:52:34 +0000 (15:52 +0100)]
Simplify variable resolution in the evaluator
* libguile/expand.c (convert_assignment): Handle creation of the default
lambda-case body here.
* libguile/eval.c (eval):
* module/ice-9/eval.scm (primitive-eval):
* libguile/memoize.h:
* libguile/memoize.c (MAKMEMO_BOX_REF, MAKMEMO_BOX_SET):
(MAKMEMO_TOP_BOX, MAKMEMO_MOD_BOX): Refactor all global var resolution
to go through "resolve". Add "box-ref" and "box-set!". Rename
memoize-variable-access! to %resolve-variable, and don't be
destructive.
Andy Wingo [Sun, 7 Dec 2014 08:34:22 +0000 (09:34 +0100)]
Closure conversion in evaluator
* libguile/memoize.c (MAKMEMO_CAPTURE_ENV, push_nested_link)
(push_flat_link, env_link_is_flat, env_link_vars)
(env_link_add_flat_var, lookup, capture_flat_env, memoize): Capture
flat environments around closures.
Andy Wingo [Sat, 6 Dec 2014 18:43:24 +0000 (19:43 +0100)]
Add capture-env to evaluator
* libguile/eval.c (eval):
* libguile/memoize.c (memoized_tags, unmemoize):
* libguile/memoize.h (SCM_M_CAPTURE_ENV):
* module/ice-9/eval.scm (primitive-eval): Add capture-env memoized
expression type.
Ludovic Courtès [Sat, 6 Dec 2014 14:57:23 +0000 (15:57 +0100)]
build: Better handle substitutions in 'guile-2.0.pc' & co.
* meta/Makefile.am (dependency_substitutions): Use '|' as the separate
instead of ','. See <http://hydra.nixos.org/build/
17684751>.
Andy Wingo [Fri, 5 Dec 2014 15:54:35 +0000 (16:54 +0100)]
Simplify the interpreter for trivial inits and no letrec
* libguile/memoize.c (FULL_ARITY): Serialize "ninits" and the unbound
value instead of the init list.
(memoize): Adapt to FULL_ARITY changes. Remove LETREC case.
(unmemoize): Adapt to memoized code change.
* libguile/eval.c (BOOT_CLOSURE_PARSE_FULL): Adapt to parse ninits and
unbound instead of inits.
(eval): Lexical-ref can no longer raise an error.
(prepare_boot_closure_env_for_apply): Adapt to inits change.
* module/ice-9/eval.scm (primitive-eval): Adapt to ninits/unbound
change.
* libguile/expand.c (expand_named_let): Fix lambda-case creation to make
lists for opt and inits.
Andy Wingo [Thu, 4 Dec 2014 14:07:01 +0000 (15:07 +0100)]
Assignment conversion in the interpreter
* libguile/expand.c (compute_assigned, convert_assignment)
(scm_convert_assignment): New functions.
* libguile/expand.h: Declare scm_convert_assignment.
* libguile/memoize.c (scm_memoize_expression): Do assignment conversion
before memoization.
* test-suite/tests/syntax.test ("letrec"): Detection of unbound letrec
variables now works.
Ludovic Courtès [Wed, 3 Dec 2014 22:09:12 +0000 (23:09 +0100)]
build: Add missing substitutions for 'guile-2.0.pc'.
This is a followup to
5fac1a7.
* meta/Makefile.am (substitute): Add GUILE_* and LIBGUILE_* substitutions,
and $(dependency_substitutions).
(dependency_substitutions): New variable.
Ludovic Courtès [Wed, 3 Dec 2014 18:07:28 +0000 (19:07 +0100)]
doc: Clarify the unit of the 'offset' argument of 'seek'.
Reported in <http://bugs.gnu.org/18520>
by David Kastrup <dak@gnu.org>.
* doc/ref/api-io.texi (Random Access): Clarify the unit of the 'offset'
argument to 'seek'.
Ludovic Courtès [Wed, 3 Dec 2014 17:59:00 +0000 (18:59 +0100)]
Add the 'guild' and 'guile' variables to 'guile-2.0.pc'.
* configure.ac: Remove meta/guile-2.0.pc and
meta/guile-2.0-uninstalled.pc from 'AC_CONFIG_FILES'.
* meta/Makefile.am (substitute): New variable.
(guile-2.0.pc, guile-2.0-uninstalled.pc): New targets.
(guile-config, guild): Use $(substitute) instead of duplicated sed
script.
(CLEANFILES): Add the .pc files.
* meta/guile-2.0.pc.in (bindir, guild, guile): New variables.
* doc/ref/libguile-parallel.texi (Parallel Installations): Document the
'guild' and 'guile' pkg-config variables.
Ludovic Courtès [Tue, 2 Dec 2014 20:25:26 +0000 (21:25 +0100)]
Update (system base lalr) from upstream.
Suggested by Jan Nieuwenhuizen <janneke@gnu.org>.
* module/system/base/lalr.upstream.scm: Update from
<https://github.com/schemeway/lalr-scm.git>, commit
4c4f149.
Ludovic Courtès [Tue, 2 Dec 2014 17:35:55 +0000 (18:35 +0100)]
doc: Tell when 'GUILE_INSTALL_LOCALE' first appeared.
* doc/ref/guile-invoke.texi (Environment Variables): Add footnote about
the Guile version where 'GUILE_INSTALL_LOCALE' appeared.
Chris Jester-Young [Sun, 30 Nov 2014 10:20:54 +0000 (05:20 -0500)]
Implement SRFI 28: Basic Format Strings.
* module/srfi/srfi-28.scm: New module.
* module/Makefile.am (SRFI_SOURCES): Add srfi/srfi-28.scm.
* doc/ref/srfi-modules.texi (SRFI-28): New node.
Ludovic Courtès [Thu, 20 Nov 2014 20:32:44 +0000 (21:32 +0100)]
doc: Clarify behavior of 'select' in the presence of signal interruptions.
Fixes <http://bugs.gnu.org/18988>.
Reported by Chris Vine <chris@cvine.freeserve.co.uk>.
* libguile/filesys.c (scm_select): Clarify handling of signal
interruptions.
* doc/ref/posix.texi (Ports and File Descriptors): Adjust accordingly.
Rob Browning [Wed, 24 Sep 2014 21:47:55 +0000 (16:47 -0500)]
Recognize m68k, s390x, and sh4 as compilation targets
* module/system/base/target.scm (cpu-endianness, triplet-pointer-size):
Add cases for "m68k", "sh4", and "s390x".
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Mark H Weaver [Wed, 12 Nov 2014 05:40:47 +0000 (00:40 -0500)]
Fix bytevector-fill! to accept fill arguments greater than 127.
Fixes <http://bugs.gnu.org/19027>.
* libguile/bytevectors.c (scm_bytevector_fill_x): Accept fill arguments
between -128 and 255.
* test-suite/tests/bytevectors.test ("2.2 General Operations"): Add
tests.
Mark H Weaver [Wed, 12 Nov 2014 05:35:34 +0000 (00:35 -0500)]
Avoid signed overflow and use size_t in bytevectors.c.
* libguile/bytevectors.c (ULONG_MAX): Remove (unportable) fallback
definition. It is no longer used.
(scm_make_bytevector): Use 'size_t' instead of 'unsigned' for
indices. Use 'scm_t_uint8' instead of 'signed char' for elements
and c_fill. Previously relied on GNU-C-specific behavior when
casting integers in the range 128-255 to signed char.
(GENERIC_INTEGER_ACCESSOR_PROLOGUE, INTEGER_LIST_TO_BYTEVECTOR)
(scm_bytevector_eq_p, scm_bytevector_copy_x, scm_bytevector_copy)
(scm_bytevector_to_u8_list, scm_u8_list_to_bytevector)
(scm_bytevector_fill_x): Use 'size_t' instead of 'unsigned' for
indices. Use 'scm_t_uint8' for elements.
Mark H Weaver [Wed, 12 Nov 2014 05:19:10 +0000 (00:19 -0500)]
Add SCM_VALIDATE_SIZE_COPY and SCM_NUM2SIZE.
* libguile/validate.h (SCM_VALIDATE_SIZE_COPY, SCM_NUM2SIZE): New
macros.
Mark H Weaver [Wed, 12 Nov 2014 04:14:26 +0000 (23:14 -0500)]
Fix bytevector-copy when applied to SRFI-4 homogeneous numeric vectors.
Fixes <http://bugs.gnu.org/18866>.
Reported by tantalum <sph@posteo.eu>.
* libguile/bytevectors.c (scm_bytevector_copy): Always create a VU8
bytevector.
* test-suite/tests/bytevectors.test: Add test.
Thomas Klausner [Wed, 29 Oct 2014 23:33:39 +0000 (00:33 +0100)]
Avoid bash-specific '==' comparison operator in guile.m4.
Fixes <http://bugs.gnu.org/18898>.
* meta/guile.m4 (GUILE_PROGS): Use '=' instead of the bash-specific '=='
comparison operator in 'test' call.
Mark H Weaver [Wed, 12 Nov 2014 03:30:14 +0000 (22:30 -0500)]
Fix strerror error handling when given a non-integer argument.
Fixes <http://bugs.gnu.org/18065>.
Reported and fixed by Glenn Michaels <gmichaels@Safe-mail.net>.
* libguile/error.c (scm_strerror): Convert the argument to a C integer
outside of the critical section, to avoid deadlock on error.
* THANKS: Add Glenn Michaels to the fixes section.
Andy Wingo [Sun, 9 Nov 2014 15:56:33 +0000 (15:56 +0000)]
texinfo: fix @url{@@} parsing
* module/texinfo.scm (texi-command-specs): The body of @url{} can have
texinfo commands.
* test-suite/tests/texinfo.test ("test-texinfo->stexinfo"): Add tests.
Andy Wingo [Wed, 15 Oct 2014 09:49:41 +0000 (11:49 +0200)]
web: Location header is URI-reference; better URI-reference support
* module/web/uri.scm (validate-uri): Add reference? keyword argument,
for validating references.
(build-uri): Clarify comments to indicate that the result is an
absolute URI.
(build-uri-reference): New interface, to build URI-references.
(string->uri-reference): Rename from string->uri*. Fix fragment
parsing to not include the #.
(string->uri): Adapt to string->uri-reference name change.
* module/web/request.scm (request-absolute-uri): Add default-scheme
optional argument. Use it if the request-uri has no scheme, or
error.
* module/web/http.scm (write-uri): Reflow to use "when". Fix writing of
URI-reference instances.
(declare-uri-reference-header!): Rename from
declare-relative-uri-header!. Use string->uri-reference.
("Location"): Declare as a URI-reference header, as per RFC 7231.
* module/web/client.scm (open-socket-for-uri): Handle the case in which
there is no URI scheme.
* test-suite/tests/web-http.test:
* test-suite/tests/web-uri.test: Add tests.
Ludovic Courtès [Fri, 31 Oct 2014 21:53:04 +0000 (22:53 +0100)]
Use on-stack or GC-managed memory in 'search-path'.
* libguile/load.c (stringbuf_free): Remove.
(stringbuf_grow): Use 'scm_gc_malloc_pointerless' instead of 'scm_realloc'.
(search_path): Use stack-allocated INITIAL_BUFFER instead of
'scm_malloc'. Remove use of 'stringbuf_free'.
Ludovic Courtès [Fri, 31 Oct 2014 22:27:44 +0000 (23:27 +0100)]
Reduce C heap allocations in 'search-path'.
* libguile/load.c (scm_c_string_has_an_ext): Rename to...
(string_has_an_ext): ... this. Add docstring. Change
'str' to be an SCM, and remove 'len' parameter. Change loop body to
use 'scm_string_suffix_p'.
(search_path): Update accordingly.
Daniel Llorens [Thu, 30 Oct 2014 10:42:05 +0000 (11:42 +0100)]
Merge branch 'lloda-array-support'
Mark H Weaver [Wed, 15 Oct 2014 00:36:11 +0000 (20:36 -0400)]
i18n: Add HAVE_USELOCALE as a requirement for USE_GNU_LOCALE_API.
* configure.ac: Check for uselocale.
* libguile/i18n.c: Add HAVE_USELOCALE to the list of requirements
before defining USE_GNU_LOCALE_API.
Mark H Weaver [Sat, 11 Oct 2014 02:36:54 +0000 (22:36 -0400)]
scm_boot_guile: Gracefully handle the case where argc == 0.
Fixes <http://bugs.gnu.org/18680>.
Reported by Nala Ginrut <nalaginrut@gmail.com>.
* libguile/init.c (scm_boot_guile): Do not canonicalize argv[0] unless
argc > 0.
* THANKS: Add Nala Ginrut to the fixes section.
Mark H Weaver [Tue, 7 Oct 2014 03:53:08 +0000 (23:53 -0400)]
Thank Per Bothner.
* THANKS: Add Per Bothner to the "libraries" section (for SRFI-64).
Ludovic Courtès [Mon, 6 Oct 2014 13:22:44 +0000 (15:22 +0200)]
build: Adjust autogen.sh to 'libtoolize' name on Darwin.
Reported by Daniel Llorens.
* autogen.sh: Use 'glibtoolize' on Darwin.
Mark H Weaver [Thu, 2 Oct 2014 00:45:41 +0000 (20:45 -0400)]
read: Accept "\(" in string literals.
Suggested by David Kastrup <dak@gnu.org> in <http://bugs.gnu.org/13644>.
* libguile/read.c (scm_read_string_like_syntax): Accept "\(" as
equivalent to "(".
* doc/ref/api-data.texi (String Syntax): Document it.
* test-suite/tests/reader.test ("reading"): Add test.
Mark H Weaver [Wed, 1 Oct 2014 22:57:44 +0000 (18:57 -0400)]
docs: Fix documented return type of 'scm_c_export'.
Fixes <http://bugs.gnu.org/17869>.
Reported and fixed by Alexei Matveev <alexei.matveev@gmail.com>.
* doc/ref/api-modules.texi (Accessing Modules from C): Change documented
return type of 'scm_c_export' to 'void' to reflect reality.
* THANKS: Add Alexei Matveev to the fixes section.
Daniel Llorens [Fri, 19 Sep 2014 12:48:59 +0000 (14:48 +0200)]
Intern general arrays
* module/system/vm/assembler.scm (intern-constant, link-data): handle
the array case.
Daniel Llorens [Fri, 19 Sep 2014 12:48:22 +0000 (14:48 +0200)]
Pack array dimensions in array object
* libguile/arrays.c (scm_i_make_array): redo object layout.
* libguile/arrays.h (SCM_I_ARRAY_V, SCM_ARRAY_BASE, SCM_I_ARRAY_DIMS):
to match new layout.
(SCM_I_ARRAY_SET_V, SCM_ARRAY_SET_BASE): new setters.
(SCM_I_ARRAY_MEM, scm_i_t_array): unused, remove.
(scm_i_shap2ra, scm_make_typed_array, scm_from_contiguous_typed_array,
scm_from_contiguous_array, scm_make_shared_array, scm_transpose_array,
scm_array_contents): fix uses of SCM_I_ARRAY_V, SCM_ARRAY_BASE as
lvalues.
* libguile/array-map.c (make1array, scm_ramapc): fix uses of
SCM_I_ARRAY_V, SCM_ARRAY_BASE as lvalues.
Daniel Llorens [Fri, 19 Sep 2014 12:47:40 +0000 (14:47 +0200)]
Run some of arrays.test under both compiler & interpreter
* test-suite/test-suite/lib.scm (c&e): accept (pass-if exp) clause.
* test-suite/tests/arrays.test: use with-prefix/c&e instead of
with-prefix where possible.
Mark H Weaver [Tue, 30 Sep 2014 07:50:47 +0000 (03:50 -0400)]
Merge branch 'stable-2.0'
Conflicts:
benchmark-suite/benchmarks/ports.bm
libguile/async.h
libguile/bytevectors.c
libguile/foreign.c
libguile/gsubr.c
libguile/srfi-1.c
libguile/vm-engine.h
libguile/vm-i-scheme.c
module/Makefile.am
module/language/tree-il/analyze.scm
module/language/tree-il/peval.scm
module/scripts/compile.scm
module/scripts/disassemble.scm
test-suite/tests/asm-to-bytecode.test
test-suite/tests/peval.test
test-suite/tests/rdelim.test
Andy Wingo [Fri, 12 Sep 2014 15:00:59 +0000 (17:00 +0200)]
Add (ice-9 unicode) module
* libguile/unicode.c:
* libguile/unicode.h:
* test-suite/tests/unicode.test:
* module/ice-9/unicode.scm: New files.
* module/Makefile.am:
* libguile/Makefile.am:
* test-suite/Makefile.am:
* libguile/init.c: Wire new files into the build.
* doc/ref/api-data.texi: Add docs.
Mark H Weaver [Sun, 28 Sep 2014 16:51:11 +0000 (12:51 -0400)]
peval: Handle optional argument inits that refer to previous arguments.
Fixes <http://bugs.gnu.org/17634>.
Reported by Josep Portella Florit <jpf@primfilat.com>.
* module/language/tree-il/peval.scm (inlined-application): When inlining
an application whose operator is a lambda expression with optional
arguments that rely on default initializers, expand into a series of
nested let expressions, to ensure that previous arguments are in scope
when the default initializers are evaluated.
* test-suite/tests/peval.test ("partial evaluation"): Add tests.
Mark H Weaver [Thu, 25 Sep 2014 02:03:58 +0000 (22:03 -0400)]
doc: Improve description of vector-unfold and vector-unfold-right.
* doc/ref/srfi-modules.texi (SRFI-43 Constructors)[vector-unfold]:
Improve description.
* module/srfi/srfi-43.scm (vector-unfold, vector-unfold-right):
Improve docstrings.
David Kastrup [Wed, 24 Sep 2014 01:39:29 +0000 (21:39 -0400)]
Fix ungetc for characters 0x80 <= c < 0xf0 in UTF-8.
Fixes <http://bugs.gnu.org/18536>.
* libguile/ports.c (scm_ungetc_unlocked): Fix bad UTF-8 reencoding,
introduced in commit
be7ecef05c1eea66f30360f658c610710c5cb22e.
Signed-off-by: David Kastrup <dak@gnu.org>
Ludovic Courtès [Mon, 22 Sep 2014 20:51:23 +0000 (22:51 +0200)]
Add 'EXIT_SUCCESS' and 'EXIT_FAILURE'.
Suggested by Frank Terbeck <ft@bewatermyfriend.org>.
* libguile/posix.c (scm_init_posix): Define 'EXIT_SUCCESS' and
'EXIT_FAILURE'.
* doc/ref/posix.texi (Processes): Document them.
David Michael [Mon, 22 Sep 2014 03:21:25 +0000 (23:21 -0400)]
guile-readline: Use the current directory if HOME is unset.
* guile-readline/ice-9/readline.scm (history-file): When the HOME
environment variable is unset, use the current directory instead.
Ludovic Courtès [Sat, 20 Sep 2014 12:36:09 +0000 (14:36 +0200)]
build: Use 'libtoolize' in autogen.sh.
Fixes <http://bugs.gnu.org/18470>.
Reported by Rob Browning <rlb@defaultvalue.org>.
* autogen.sh: Invoke 'libtoolize' instead of 'libtool'.
David Kastrup [Sat, 20 Sep 2014 09:17:54 +0000 (05:17 -0400)]
Fix SCM_SMOB_OBJECT{_,_0_,_1_,_2_,_3_}LOC.
Fixes <http://bugs.gnu.org/18495>.
* libguile/smob.h (SCM_SMOB_OBJECT_LOC, SCM_SMOB_OBJECT_0_LOC)
(SCM_SMOB_OBJECT_1_LOC, SCM_SMOB_OBJECT_2_LOC)
(SCM_SMOB_OBJECT_3_LOC): These elementary API macros have been broken
by commit
56164dc47f6616b359f0ad23be208f01a77b55fa in 2009.
Signed-off-by: David Kastrup <dak@gnu.org>
Mark H Weaver [Sat, 20 Sep 2014 08:51:02 +0000 (04:51 -0400)]
guild disassemble: Use #:prefix instead of #:renamer.
* module/scripts/disassemble.scm: Use #:prefix instead of #:renamer
in #:use-module clause.
Mark H Weaver [Sat, 20 Sep 2014 08:42:49 +0000 (04:42 -0400)]
Document #:prefix option in use-module clauses.
* doc/ref/api-modules.texi (Using Guile Modules): Document #:prefix
option.
Mark H Weaver [Sat, 20 Sep 2014 08:09:14 +0000 (04:09 -0400)]
SRFI-43: vector-concatenate: Fix error message.
* module/srfi/srfi-43.scm (vector-concatenate): Fix the 'who' of an
error message.
Mark H Weaver [Sat, 20 Sep 2014 08:05:43 +0000 (04:05 -0400)]
VM: Use register "a3" for IP_REG on m68k.
Subset of a patch by Andreas Schwab <schwab@linux-m68k.org>.
Reported by Rob Browning <rlb@defaultvalue.org>.
* libguile/vm-engine.h (IP_REG)[__mc68000__]: Use register "a3".
Mark H Weaver [Sat, 20 Sep 2014 07:59:51 +0000 (03:59 -0400)]
VM: Allow the C compiler to choose FP_REG on ARM.
Reported by Rob Browning <rlb@defaultvalue.org>.
* libguile/vm-engine.h (IP_REG)[__arm__]: Remove explicit register
choice ("r7") for FP_REG, which was reported to cause compilation
failures on ARM.
Mark H Weaver [Sat, 20 Sep 2014 07:49:46 +0000 (03:49 -0400)]
Do not assume that 64-bit integers will be 64-bit aligned.
* libguile/foreign.c (raw_bytecode, objcode_cells):
* libguile/gsubr.c (raw_bytecode, objcode_cells): Use SCM_ALIGNED to
ensure 64-bit alignment.
Mark H Weaver [Sat, 20 Sep 2014 01:18:09 +0000 (21:18 -0400)]
VM: ASM_MUL for ARM: Add earlyclobber constraint to the SMULL outputs.
Reported by Rob Browning <rlb@defaultvalue.org>.
* libguile/vm-i-scheme.c (ASM_MUL)[ARM]: Add earlyclobber (&) constraint
to the SMULL output registers.
Ludovic Courtès [Wed, 17 Sep 2014 11:43:55 +0000 (13:43 +0200)]
tests: Link test against Gnulib.
Reported by Eli Zaretskii <eliz@gnu.org>.
* test-suite/standalone/Makefile.am (test_scm_take_locale_symbol_LDADD):
Add libgnu.la, for the 'strdup' replacement.
Andy Wingo [Fri, 12 Sep 2014 15:00:59 +0000 (17:00 +0200)]
Add (ice-9 unicode) module
* libguile/unicode.c:
* libguile/unicode.h:
* test-suite/tests/unicode.test:
* module/ice-9/unicode.scm: New files.
* module/Makefile.am:
* libguile/Makefile.am:
* test-suite/Makefile.am:
* libguile/init.c: Wire new files into the build.
* doc/ref/api-data.texi: Add docs.
Ludovic Courtès [Tue, 26 Aug 2014 21:41:14 +0000 (23:41 +0200)]
Thank Franck.
Ludovic Courtès [Tue, 26 Aug 2014 21:40:22 +0000 (23:40 +0200)]
Handle ~p in 'format' warnings.
Fixes <http://bugs.gnu.org/18299>.
Reported by Frank Terbeck <ft@bewatermyfriend.org>.
* module/language/tree-il/analyze.scm (format-string-argument-count):
Add case for ~p.
* test-suite/tests/tree-il.test ("warnings")["format"]("~p", "~p, too
few arguments", "~:p", "~:@p, too many arguments", "~:@p, too few
arguments"): New tests.
Andy Wingo [Sun, 24 Aug 2014 15:07:49 +0000 (17:07 +0200)]
Separate &boolean type into &true and &false
* module/language/cps/types.scm (&all-types): Represent true and false
as separate bits, so that #f can be removed from types on true
branches. Adapt all users.
* module/language/cps/type-fold.scm (&scalar-types):
(fold-and-reduce): Adapt to boolean type representation change.
Eli Zaretskii [Fri, 15 Aug 2014 06:47:52 +0000 (09:47 +0300)]
On MS-Windows, don't return file names with backslashes from search-path.
* libguile/load.c (search_path): On MS-Windows, convert all
backslashes to forward slashes if the file was found on PATH.
Mark H Weaver [Thu, 14 Aug 2014 02:47:32 +0000 (22:47 -0400)]
Copy the result from 'nl_langinfo' before it can be overwritten.
Based on a patch by Eli Zaretskii <eliz@gnu.org>.
* libguile/i18n.c (copy_string_or_null): New static function.
(scm_nl_langinfo): Use 'copy_string_or_null' to copy the result from
'nl_langinfo' and 'nl_langinfo_l' before the next call and before
releasing the locale mutex.
Eli Zaretskii [Wed, 13 Aug 2014 15:41:15 +0000 (18:41 +0300)]
Make temporary file in coding.test work on MS-Windows.
* test-suite/tests/coding.test (with-temp-file): Instead of
hard-coding "/tmp" as the temporary directory, use $TMPDIR or
$TEMP from the environment, and fall back on "/tmp" if none of
those 2 is defined.
Ludovic Courtès [Tue, 12 Aug 2014 20:23:07 +0000 (22:23 +0200)]
doc: "!#" does not need to appear on a line of its own.
* doc/ref/api-evaluation.texi (Block Comments): Remove "which must appear on a
line of their own". Reported by David Michael <fedora.dm0@gmail.com>.
David Kastrup [Mon, 11 Aug 2014 02:50:08 +0000 (22:50 -0400)]
Clarify that object-properties cannot be reliably applied to numbers.
* doc/ref/api-utility.texi (Object Properties)[make-object-property]:
Clarify that object-properties cannot be reliably applied to numbers.
Signed-off-by: David Kastrup <dak@gnu.org>
Ian Price [Thu, 31 Jul 2014 15:05:58 +0000 (16:05 +0100)]
Provide curried version of define*-public.
* module/ice-9/curried-definitions.scm (define*-public): New macro.
Ian Price [Wed, 30 Jul 2014 17:58:16 +0000 (18:58 +0100)]
Prevent add-to-load-path from adding duplicate entries
* module/ice-9/boot-9.scm (add-to-load-path): Remove argument from
%load-path (if it exists) before pushing. This also means that the
`elt' will always be at the front of %load-path.
Andy Wingo [Sun, 20 Jul 2014 18:52:06 +0000 (20:52 +0200)]
Better simplification of literal constants that continue to branches
* module/language/cps/simplify.scm (eta-reduce): Constants that continue
to branches eta-reduce to the true or false branch.
Andy Wingo [Sun, 20 Jul 2014 18:19:01 +0000 (20:19 +0200)]
CPS will not see "not" primcalls
* module/language/tree-il/compile-cps.scm (convert): Remove "not"
primcalls.
* module/language/cps/effects-analysis.scm (values):
* module/language/cps/types.scm: Remove special cases for the "not"
primcall.
Andy Wingo [Sun, 6 Jul 2014 10:38:26 +0000 (12:38 +0200)]
Simplify pass rewrite scope tree to reflect dominator tree
* module/language/cps/simplify.scm (redominate): Add micropass to
rewrite the scope tree to reflect the dominator tree. Will enable
better eta reduction.
Andy Wingo [Sun, 6 Jul 2014 10:17:58 +0000 (12:17 +0200)]
Remove dead case in CSE
* module/language/cps/cse.scm (apply-cse): Remove a case that couldn't
occur.
Andy Wingo [Mon, 21 Jul 2014 15:30:16 +0000 (17:30 +0200)]
CSE allocate-struct fix
* module/language/cps/cse.scm (compute-equivalent-subexpressions):
Fix handling of allocate-struct in tail position.
Andy Wingo [Mon, 21 Jul 2014 15:03:51 +0000 (17:03 +0200)]
Fix typo in arities.scm
* module/language/cps/arities.scm (fix-arities*): Fix typo.
Andy Wingo [Mon, 21 Jul 2014 10:19:33 +0000 (12:19 +0200)]
Stabilize renumber.scm:sort-conts.
* module/language/cps/renumber.scm (sort-conts): Prevent spurious
continuation reordering.
Andy Wingo [Mon, 21 Jul 2014 19:37:20 +0000 (21:37 +0200)]
maybe_annotate_source does not annotate negative positions
* libguile/read.c (maybe_annotate_source): Don't annotate with negative
lines or columns.
Andy Wingo [Mon, 21 Jul 2014 19:36:30 +0000 (21:36 +0200)]
Soft port fill-input doesn't alter line or column
* libguile/vports.c (sf_fill_input): Save and restore the line/column
info around the ungetc.
Andy Wingo [Mon, 21 Jul 2014 19:35:49 +0000 (21:35 +0200)]
scm_ungetc_unlocked should not result in negative columns
* libguile/ports.c (scm_ungetc_unlocked): Use DECCOL in all cases, to
avoid negative columns.