1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-11 08:10:21 +02:00
Commit graph

12971 commits

Author SHA1 Message Date
Michael Gran
6234ff203d Display wide strings using escapes
* libguile/print.c (iprin1): for now, display wide strings
  as escaped strings
2009-08-18 22:32:08 -07:00
Michael Gran
f59cf9981a Avoid double-casts of stringbuf
Conversion from char to scm_t_wchar require an intermediate cast to
unsigned char.  By changing the return type of SCM_STRINGBUF_INLINE_CHARS
to unsigned char *, doublecasts in the code can be avoided.  Also,
some clarification of return types.

* libguile/strings.c (STRINGBUF_OUTLINE_CHARS)
(STRINGBUF_INLINE_CHARS): now returns unsigned char *; all callers changed.
2009-08-18 21:14:56 -07:00
Michael Gran
8ef6962953 Avoid compilation warnings in SCM_MAKE_CHAR
* libguile/chars.h (SCM_MAKE_CHAR): change inequality
2009-08-18 21:13:38 -07:00
Michael Gran
3dd11c9b13 Benchmarks for common character and string procedures
* benchmark-suite/benchmarks/chars.bm: new benchmarks

* benchmark-suite/benchmarks/srfi-13.bm: new benchmarks
2009-08-18 21:11:58 -07:00
Ludovic Courtès
512c359507 Remove unneeded `scm_without_guile ()' call.
* libguile/scmsigs.c (read_without_guile_data, do_read_without_guile,
  read_without_guile): Remove.
  (signal_delivery_thread): Use read(2) instead of `read_without_guile ()'.
2009-08-19 00:13:55 +02:00
Ludovic Courtès
3c13664ebe Reinstate missing IA64 helper functions.
* libguile/threads.c (scm_ia64_register_backing_store_base,
  scm_ia64_ar_bsp): New, formerly in `gc.c', which was removed in the
  BDW-GC branch.
2009-08-19 00:06:14 +02:00
Ludovic Courtès
05762e724b Use `scm_gc_malloc_pointerless ()' for bytevectors.
* libguile/bytevectors.c (make_bytevector): Use
  `scm_gc_malloc_pointerless ()' for the buffer itself.

* libguile/r6rs-ports.c (scm_get_bytevector_some,
  scm_get_bytevector_all, bop_buffer_grow): Likewise.
2009-08-18 22:12:31 +02:00
Andy Wingo
7f171dbfa0 remove (ice-9 lineio)'s dependency on (ice-9 readline)
* module/ice-9/lineio.scm: Use (ice-9 rdelim) instead of (ice-9
  readline) to remove readline dependency.
2009-08-18 17:52:46 +02:00
Andy Wingo
9591a2b016 `load' autocompiles
* libguile/load.h:
* libguile/load.c (scm_sys_warn_autocompilation_enabled): New primitive,
  not exported. Since `load' autocompiles now, it should warn in the
  same way that the bits hardcoded into C warn.
  (scm_try_autocompile): Use scm_sys_warn_autocompilation_enabled.

* module/ice-9/boot-9.scm (autocompiled-file-name): New helper.
  (load): Try autocompiling the argument, if appropriate. Will
  autocompile files passed on Guile's command line. `primitive-load' is
  unaffected.
2009-08-18 11:06:04 +02:00
Ludovic Courtès
3b882d69fb Remove unneeded SMOB mark/free procedures.
* libguile/bytevectors.c (free_bytevector): Remove.
  (scm_bootstrap_bytevectors): Update accordingly.

* libguile/r6rs-ports.c (bip_mark, cbp_mark, bop_free, bop_proc_mark):
  Remove.
  (initialize_bytevector_input_ports,
  initialize_custom_binary_input_ports,
  initialize_bytevector_output_ports,
  initialize_custom_binary_output_ports): Update accordingly.
2009-08-18 00:31:32 +02:00
Ludovic Courtès
1ac8a47f01 Fix malloc/scm_c_take_bytevector mismatch.
* libguile/bytevectors.c (STRING_TO_UTF): Use `make_bytevector ()'
  instead of `scm_c_take_bytevector ().
  (scm_string_to_utf8): Likewise.
2009-08-18 00:09:26 +02:00
Ludovic Courtès
fbb857a472 Merge branch 'master' into boehm-demers-weiser-gc
Conflicts:
	lib/Makefile.am
	libguile/Makefile.am
	libguile/frames.c
	libguile/gc-card.c
	libguile/gc-freelist.c
	libguile/gc-mark.c
	libguile/gc-segment.c
	libguile/gc_os_dep.c
	libguile/load.c
	libguile/macros.c
	libguile/objcodes.c
	libguile/programs.c
	libguile/strings.c
	libguile/vm.c
	m4/gnulib-cache.m4
	m4/gnulib-comp.m4
	m4/inline.m4
2009-08-18 00:06:45 +02:00
Ludovic Courtès
e33a910dd0 Thanks, Mike. 2009-08-17 23:06:49 +02:00
Ludovic Courtès
9957b1c707 Update `NEWS' for commit d8dd381fa7. 2009-08-17 23:05:50 +02:00
Ludovic Courtès
a9b8b7b02f Bump version number for 1.9.2.
* GUILE-VERSION (GUILE_MICRO_VERSION): Increment.
2009-08-15 14:41:46 +02:00
Ludovic Courtès
e4ca305f24 Turn off auto-compilation to stand-alone tests.
* test-suite/standalone/Makefile.am (TESTS_ENVIRONMENT): Add
  "GUILE_AUTO_COMPILE=0".
2009-08-15 14:35:29 +02:00
Ludovic Courtès
54dd0ca509 Update the manual and NEWS' regarding guile-2.0.pc'.
* NEWS: Mention `guile-2.0.pc'.

* doc/ref/autoconf.texi (Autoconf Macros): Update to `guile-2.0'.
2009-08-15 14:26:17 +02:00
Ludovic Courtès
54b38caf19 Add proper --help' and --version' for `guile-tools compile'.
* configure.ac: Produce `meta/guile-tools'.

* meta/Makefile.am (EXTRA_DIST): Add `guile-tools.in'.
  (bin_SCRIPTS): Remove `guile-tools'.

* meta/uninstalled-env.in (PATH): Add "${top_builddir}/meta".

* module/scripts/compile.scm (%options): Add `--version'.
  (parse-args): Show the offending option name upon error.
  (show-version): New.
  (compile): Use `%guile-bug-report-address'.
2009-08-15 14:18:57 +02:00
Andy Wingo
acf04ab462 update NEWS for 1.9.2
* NEWS: Update.
2009-08-15 12:49:55 +02:00
Ludovic Courtès
7577d1c4ba Update `.gitignore' for GNU Global. 2009-08-15 12:06:28 +02:00
Ludovic Courtès
c1a15f3dd7 Switch from guile-1.8.pc' to guile-2.0.pc'.
* configure.ac: Produce guile-2.0*.pc.

* meta/Makefile.am (EXTRA_DIST): Rename guile-1.8*.pc.in to
  guile-2.0*.pc.in.
  (pkgconfig_DATA): Update accordingly.

* meta/guile-config (guile-module): Likewise.
2009-08-15 12:05:36 +02:00
Ludovic Courtès
e3c9c676ae Uncomment run-time objcode alignment check.
This should now work thanks to the changes in
28b119ee3d ("make sure all programs are
8-byte aligned").  This commit is a follow-up to
ec99fe8ecb ("Add FIXMEs about misaligned
objcode-metas.").

* libguile/objcodes.c (scm_c_make_objcode_slice): Uncomment assertion
  that checks for proper alignment of PTR.

* module/language/assembly/compile-bytecode.scm (write-bytecode): Update
  comment about META's alignment.
2009-08-13 23:59:51 +02:00
Ludovic Courtès
b3ce13b667 Remove deprecated semi-public memoizers.
* libguile/eval.c (scm_m_expand_body, scm_macroexp, scm_unmemocar):
  Remove.
  (scm_m_undefine): Make `static'.

* libguile/eval.h (scm_m_undefine, scm_m_expand_body, scm_unmemocar,
  scm_macroexp): Remove declarations.
2009-08-13 23:36:46 +02:00
Ludovic Courtès
4d0949ea45 Make the evaluator's memoizers private.
* libguile/eval.c (macroexp): Move upwards.
  (scm_m_quote, scm_m_begin, scm_m_if, scm_m_set_x, scm_m_and, scm_m_or,
  scm_m_case, scm_m_cond, scm_m_lambda, scm_m_letstar, scm_m_do,
  scm_m_quasiquote, scm_m_delay, scm_m_generalized_set_x,
  scm_m_define, scm_m_letrec, scm_m_let, scm_m_at, scm_m_atat,
  scm_m_apply, scm_m_cont, scm_m_nil_cond, scm_m_atfop,
  scm_m_atbind, scm_m_atslot_ref, scm_m_atslot_set_x,
  scm_m_at_call_with_values, scm_m_eval_when): New static
  declarations; definitions made static.
  (s_atslot_ref, s_atslot_set_x): New, from `goops.c'.

* libguile/eval.h (scm_m_quote, scm_m_begin, scm_m_if, scm_m_set_x,
  scm_m_vref, scm_m_vset, scm_m_and, scm_m_or, scm_m_case, scm_m_cond,
  scm_m_lambda, scm_m_letstar, scm_m_do, scm_m_quasiquote, scm_m_delay,
  scm_m_generalized_set_x, scm_m_future, scm_m_define, scm_m_letrec,
  scm_m_let, scm_m_at, scm_m_atat, scm_m_apply, scm_m_cont,
  scm_m_nil_cond, scm_m_atfop, scm_m_atbind, scm_m_atslot_ref,
  scm_m_atslot_set_x, scm_m_atdispatch, scm_m_at_call_with_values,
  scm_m_eval_when): Remove public declarations.

* libguile/goops.c (s_atslot_ref, s_atslot_set_x): Remove.
2009-08-13 23:30:49 +02:00
Ludovic Courtès
d785171115 compiler.test: Enforce evaluation order.
* test-suite/tests/compiler.test ("psyntax")["redefinition", "compile in
  current module", "compile in fresh module"]: Use `begin' to enforce
  evaluation order.  Thanks Andy!
2009-08-13 16:16:08 +02:00
Ludovic Courtès
16f451f308 Allow fresh modules to be passed to `compile'.
* module/ice-9/boot-9.scm (module-name): When making MOD non-anonymous,
  bind it in the `(%app modules)' name space.

* test-suite/tests/compiler.test ("psyntax")["compile in current
  module", "compile in fresh module"]: New tests.

* test-suite/tests/modules.test ("foundations")["modules don't remain
  anonymous"]: New test.
2009-08-13 15:57:01 +02:00
Ludovic Courtès
b9434165b6 Allow redefinitions in compiled code as in `(define round round)'.
* module/ice-9/psyntax-pp.scm: Regenerate.

* module/ice-9/psyntax.scm (chi-top)[define-form]: If a same-named
  imported variable exists, take its value instead of `#f'.

* test-suite/tests/compiler.test ("psyntax")["redefinition"]: New tests.
2009-08-13 15:50:37 +02:00
Andy Wingo
98850fd727 update docs for recent vm/compiler work
* doc/ref/compiler.texi:
* doc/ref/vm.texi: Update for recent changes.
* module/language/assembly/disassemble.scm (disassemble-load-program):
  Don't print nops, they are distracting.
2009-08-12 23:38:05 +02:00
Andy Wingo
aaae0d5ab3 "fix" <let>-bound lambda expressions too
* module/language/tree-il/compile-glil.scm (compile-glil): Compute
  warnings before optimizing, as unreferenced variables will be
  optimized out.

* libguile/_scm.h: Fix C99 comment.

* module/language/tree-il/fix-letrec.scm (partition-vars): Also analyze
  let-bound vars.
  (fix-letrec!): Fix a bug whereby a set! to an unreffed var would be
  called for value, not effect. Also "fix" <let>-bound lambda
  expressions -- really speeds up pmatch.

* test-suite/tests/tree-il.test ("lexical sets", "the or hack"): Update
  to take into account the new optimizations.
2009-08-12 21:29:08 +02:00
Michael Gran
eca29b0202 Don't include libunistring headers in Guile public headers
This requres the creation of a new type
scm_t_string_failed_conversion_handler to replace libunistring's
enum iconveh_ilseq_handler.

* libguile/strings.h: don't include <uniconv.h>
(scm_t_string_failed_conversion_handler): new enum type
(SCM_FAILED_CONVERSION_ERROR, SCM_FAILED_CONVERSION_QUESTION_MARK):
(SCM_FAILED_CONVERSION_ESCAPE_SEQUENCE): new enum type values

* libguile/strings.c (scm_to_stringn): now takes type
scm_t_string_failed_conversion_handler.  All callers changed.

* libguile/print.c: include <uniconv.h>

* libguile/ports.c (scm_lfwrite_substr): use
scm_t_string_conversion_handler's constants

* libguile/gen-scmconfig.c (SCM_ICONVEH_ERROR):
(SCM_ICONVEH_QUESTION_MARK, SCM_ICONVEH_ESCAPE_SEQUENCE): store
iconveh_ilseq_hander constants as #define's
2009-08-12 09:21:55 -07:00
Michael Gran
3c7cf7f5c0 Regression, scm_string fails to test for circular lists
* libguile/string.c (scm_string): Restores the functionality
  where scm_string tests for circular lists

* test-suite/tests/strings.test: add test for circular lists
2009-08-12 09:21:37 -07:00
Michael Gran
bd4911efd2 Some signed/unsigned comparison and conversions
* libguile/ports.c (scm_lfwrite_str, scm_lfwrite_substr): signed/unsigned
  conversion and comparison

* libguile/strings.c (scm_string_append): signed/unsigned comparison
2009-08-12 08:50:45 -07:00
Andy Wingo
94ff26b96b rework the vm support for wide strings
* libguile/_scm.h (SCM_OBJCODE_MINOR_VERSION): Bump.

* libguile/vm-engine.c (vm_error_bad_wide_string_length): New error
  case.

* libguile/vm-i-loader.c (load-unsigned-integer, load-integer)
  (load-keyword): Remove these instructions. The former two are
  obsoleted by make-int64/make-uint64, the latter via make-keyword.
  (load-string): Only handle narrow strings.
  (load-symbol): Only handle narrow symbols. The wide case is handled
  via make-symbol.
  (load-wide-string): New instruction, for wide strings.

* libguile/vm-i-system.c (define): Move here from loaders.c, as now it
  just takes a sym on the stack.
  (make-keyword, make-symbol): New instructions.

* module/language/assembly.scm: Remove removed instructions. No more
  width byte in load-string etc.

* module/language/assembly/compile-bytecode.scm (write-bytecode): Adapt
  to change in instruction set.

* module/language/glil/compile-assembly.scm (glil->assembly): Compile
  define by pushing the sym then emitting (define).
  (dump-object): Dump narrow and wide strings differently. Use
  make-keyword and make-symbol as appropriate.

* module/language/tree-il/compile-glil.scm (flatten): When compiling a
  ref to a primitive (not a call), first see if the primitive is
  actually bound in the root module. (That's not the case with e.g.
  bytevector-u8-ref).

* module/system/xref.scm (program-callee-rev-vars): Don't parse out
  "nexts".

* test-suite/tests/asm-to-bytecode.test ("compiler"): Adapt to bytecode
  format change.
2009-08-12 16:34:05 +02:00
Michael Gran
6cf4830798 Fix disassembly of strings and symbols
* module/language/assembly/decompile-bytecode.scm (decode-bytecode):
  fix disassembly of strings, symbols, keywords, and defines
2009-08-12 00:26:12 -07:00
Michael Gran
744c8724a7 Quiet signed/unsigned comparison warnings in chars.[ch]
* libguile/chars.h (SCM_MAKE_CHAR): quiet signed/unsigned
  comparison warnings

* libguile/chars.c (scm_i_charname):
  (scm_i_charname_to_char): quiet signed/unsigned comparison
  warnings
2009-08-11 22:56:18 -07:00
Michael Gran
9909c3956a Avoid unitialized and unused warnings in scm_string_append
* libguile/strings.c (scm_string_append): avoid warnings
2009-08-11 22:12:22 -07:00
Michael Gran
4cd00cc6b2 Revert to locale-dependent toupper and tolower
To avoid leaving Guile in a broken state, the conversion
from locale-dependent case modification to Unicode case modification
should be an atomic commit

* libguile/chars.c (scm_c_upcase): revert to locale-dependent
  toupper and tolower
2009-08-11 21:27:20 -07:00
Michael Gran
30a6b9caa9 Only pass ints to tolower and toupper
* libguile/strings.c (unistring_escapes_to_guile_escapes): cast
  tolower's parameter to int

* libguile/read.c (CHAR_DOWNCASE): cast tolower's parameter to int
2009-08-11 21:12:52 -07:00
Andy Wingo
eb1482ac46 debitrot the ecmascript compiler
* module/Makefile.am (ECMASCRIPT_LANG_SOURCES):
* module/language/ecmascript/compile-ghil.scm:
* module/language/ecmascript/compile-tree-il.scm: SOURCES): Replace the
  GHIL compiler with a ->tree-il compiler. Not fully functional, but the
  basics work.

* module/language/ecmascript/spec.scm: Only include the tree-il compiler.

* module/language/ecmascript/tokenize.scm (read-punctuation): Avoid
  mutating a constant.
2009-08-12 00:14:44 +02:00
Andy Wingo
6e5c02b8a3 make the fallback path look less like line noise
* libguile/_scm.h:
* libguile/load.c: Rework to only include the relevant pieces in the
  fallback path.
2009-08-11 21:16:05 +02:00
Andy Wingo
86cfb42d56 include objcode cookie in the fallback path
* libguile/_scm.h (SCM_OBJCODE_COOKIE): Move the objcode cookie define
  here, so that load.c can use it. This is a private header.

* libguile/load.c (FALLBACK_DIR): Include the objcode cookie in the
  fallback path. Should fix problems when objcode changes incompatibly
  during the 1.9 series.

* libguile/objcodes.c: Adapt to SCM_OBJCODE_COOKIE move.

This should fix http://article.gmane.org/gmane.lisp.guile.devel/9059.
2009-08-11 20:25:44 +02:00
Michael Gran
f5d7662fc8 More string and symbol tests
* test-suite/tests/strings.test: more tests

        * test-suite/tests/symbols.test: more tests
2009-08-10 23:05:52 -07:00
Michael Gran
88ed5759cd Fix %string-dump and %symbol-dump fields
* libguile/strings.c (scm_sys_string_dump): don't print
        stringbuf. Print read-only status.
        (scm_sys_symbol_dump): don't print stringbuf.  Print interned
        status.
2009-08-10 23:05:38 -07:00
Ludovic Courtès
dab1ed3767 Change `defined?' to accept a module as its second argument.
Reported by Daniel Kraft <d@domob.eu>.

* doc/ref/api-binding.texi (Binding Reflection): Update documentation of
  `defined?'.

* libguile/evalext.c (scm_defined_p): Expect a module as the second
  argument, not a lexical environment.
2009-08-10 19:24:34 +02:00
Michael Gran
32be5735cd Make scm_charprint and scm_i_string_wide_chars SCM_INTERNAL.
Also, scm_charprint is renamed to scm_i_charprint.

        * libguile/strings.h: make scm_i_string_wide_chars internal.

        * libguile/print.h: rename scm_charprint to scm_i_charprint.  Make
        internal.

        * libguile/print.c (scm_i_charprint): renamed from scm_charprint
        (scm_charprint): renamed to scm_i_charprint. All callers changed.
2009-08-10 05:51:05 -07:00
Michael Gran
6ce6923b68 Improve %string-dump and %symbol-dump
%string-dump and %symbol-dump are modified to return assocation lists
of string and symbol attributes instead of printing to stderr.  They
are no longer conditional on SCM_DEBUG.

        * libguile/strings.c (scm_sys_string_dump)
        (scm_sys_symbol_dump): now returns alist of properties.  No longer
        require that SCM_DEBUG be defined.
        (scm_sys_stringbuf_hist): now conditional on
        SCM_STRING_LENGTH_HISTOGRAM

        * libguile/strings.h: scm_sys_string_dump and scm_sys_symbol dump
        are now declared as API
2009-08-10 00:09:33 -07:00
Michael Gran
50b1996f1b More comments for string functions
* libguile/strings.c: comments
2009-08-09 18:06:59 -07:00
Michael Gran
4847dc172f Missing parentheses in SCM_MAKE_CHAR macro
* libguile/chars.h (SCM_MAKE_CHAR): missing parentheses
2009-08-09 16:58:14 -07:00
Michael Gran
b07992900b Port position macros shouldn't require enclosing braces
The port position macros incorrectly required enclosing braces
when used within if statements.

        * libguile/ports.h (SCM_INCLINE, SCM_ZEROCOL, SCM_INCCOL)
        (SCM_DECCOL, SCM_TABCOL): enclose macro in do/while

        * libguile/ports.c (update_port_lf): remove extra braces
2009-08-09 16:58:14 -07:00
Ludovic Courtès
9af080f720 Use a linker version script for libguile.
* libguile/Makefile.am (libguile_la_LDFLAGS)[HAVE_LD_VERSION_SCRIPT]:
  Use `libguile.map'.
  (EXTRA_DIST): Add `libguile.map'.

* libguile/libguile.map: New file.
2009-08-09 23:40:11 +02:00