bpt/guile.git
14 years agoadd foreign value wrapper
Andy Wingo [Mon, 4 Jan 2010 11:11:33 +0000 (12:11 +0100)]
add foreign value wrapper

* libguile/foreign.h:
* libguile/foreign.c: New files, implementing simple wrappers around
  foreign values, such as those that one might link in dynamically from
  a library.

* libguile/tags.h (scm_tc7_foreign): Take a tc7 for foreign values.

* libguile.h:
* libguile/init.c: Add foreign.h to headers and init.

* libguile/print.c (iprin1): Add printer for foreign values.

* libguile/gc.c (scm_i_tag_name): Case for foreign values.
* libguile/goops.c (scm_class_of, create_standard_classes): Add a class
  for foreign values.

* libguile/evalext.c (scm_self_evaluating_p): Add case for foreign
  values.

* libguile/Makefile.am: Add foreign.[ch] to the build.

14 years agoUpdate `.gitignore'.
Ludovic Courtès [Sun, 3 Jan 2010 18:15:42 +0000 (19:15 +0100)]
Update `.gitignore'.

14 years agoAdd per-directory Emacs local variables.
Ludovic Courtès [Sun, 3 Jan 2010 18:15:05 +0000 (19:15 +0100)]
Add per-directory Emacs local variables.

14 years agoRemove dependency on GNU Make and reliance on /usr/bin/env.
Ludovic Courtès [Sun, 3 Jan 2010 18:06:52 +0000 (19:06 +0100)]
Remove dependency on GNU Make and reliance on /usr/bin/env.

Both were introduced in commit c55cb58a ("integrate guile-lib docs").

* doc/ref/Makefile.am ($(snarf_doc)scmfiles): Rename target to...
  ($(snarf_doc)-scmfiles): ... this.  Change to generate a makefile
  snippet containing a variable definition.  Automake-include the
  generated snippet, `standard-library.am'.
  (EXTRA_DIST): Add `$(snarf_doc).am'.
  (CLEANFILES): Remove `$(snarf_doc)scmfiles'.

* doc/ref/make-texinfo.scm: Remove executable bit and "#!/usr/bin/env".

* doc/ref/standard-library.am: New file.

14 years agorename goto/args and friends to tail-call, tail-apply, etc
Andy Wingo [Sun, 3 Jan 2010 13:49:40 +0000 (14:49 +0100)]
rename goto/args and friends to tail-call, tail-apply, etc

* libguile/vm-i-system.c (tail-call, tail-call/nargs, tail-apply)
  (tail-call/cc): Rename these back to tail-* from goto/*. We should
  reserve the rename-then-goto name for when you actually do a rename
  and goto, not when you shuffle the stack.

* doc/ref/vm.texi:
* module/language/glil/decompile-assembly.scm:
* module/language/tree-il/compile-glil.scm:
* test-suite/tests/tree-il.test: Adapt all callers and documentation.

14 years agoadd truncated-print tests
Andy Wingo [Sun, 3 Jan 2010 12:35:35 +0000 (13:35 +0100)]
add truncated-print tests

* doc/ref/misc-modules.texi (Pretty Printing): Fix an error in
  truncated-print example.

* test-suite/Makefile.am:
 * test-suite/tests/print.test: Add truncated-print tests.

14 years agofix bug in generalized-vector->list
Andy Wingo [Sun, 3 Jan 2010 11:36:37 +0000 (12:36 +0100)]
fix bug in generalized-vector->list

* libguile/generalized-vectors.c (scm_generalized_vector_to_list): Fix
  bug iterating over indices of array. Thanks to Tristan Colgate for the
  report.

* test-suite/tests/srfi-4.test: Add tests that uniform-vector->list
  works for all kinds of uniform vectors.

14 years agoSupport for Unicode string normalization functions
Julian Graham [Sun, 3 Jan 2010 06:06:05 +0000 (01:06 -0500)]
Support for Unicode string normalization functions

* libguile/strings.c, libguile/strings.h (normalize_str,
  scm_string_normalize_nfc, scm_string_normalize_nfd, scm_normalize_nfkc,
  scm_string_normalize_nfkd): New functions.
* test-suite/tests/strings.test: Unit tests for `string-normalize-nfc',
  `string-normalize-nfd', `string-normalize-nfkc', and
  `string-normalize-nfkd'.
* doc/ref/api-data.texi (String Comparison): Documentation for normalization
  functions.

14 years agocleanups to debugger
Andy Wingo [Tue, 29 Dec 2009 20:26:48 +0000 (21:26 +0100)]
cleanups to debugger

* module/system/vm/debug.scm (debugger-repl): Remove the `bindings'
  command, it is superseded by `locals'.
  Update the TODO.
  (debug-pre-unwind-handler): Remove scary "beta" warning. Already being
  able to bt #:width 1000 #:full? #t is quite useful...

14 years agodebugger's backtrace implemented in scheme
Andy Wingo [Tue, 29 Dec 2009 20:19:05 +0000 (21:19 +0100)]
debugger's backtrace implemented in scheme

* module/system/vm/debug.scm (print-locals): Factor out to a function.
  (collect-frames, print-frames): Implement the guts of `backtrace' in
  Scheme.
  (debugger-repl): Add #:width and #:full? options to `backtrace'.
  Backtrace uses the backtrace code implemented in scheme.

14 years agoframes.c no longer exports frame-source -- frame.scm does so already
Andy Wingo [Tue, 29 Dec 2009 20:17:07 +0000 (21:17 +0100)]
frames.c no longer exports frame-source -- frame.scm does so already

* libguile/frames.c (scm_frame_source): No longer exported to Scheme
  via init's call to scm_init_frames; in fact just calls the Scheme
  version. Perhaps this function is on its way out, though :)

14 years ago~:@y allows for truncation to an absolute maximum width
Andy Wingo [Tue, 29 Dec 2009 20:15:08 +0000 (21:15 +0100)]
~:@y allows for truncation to an absolute maximum width

* module/ice-9/format.scm (format): Allow ~:@y to interpret the width as
  the maximum width, inclusive of whatever else has already been output.
* doc/ref/misc-modules.texi (Formatted Output): Document this.

14 years agointegers at debugger select frames
Andy Wingo [Tue, 29 Dec 2009 13:35:10 +0000 (14:35 +0100)]
integers at debugger select frames

* module/system/vm/debug.scm (debugger-repl): Fix implementation of
  frame-at-index. Allow integers as commands, as a shorthand for "frame
  N".

14 years agoclean up (system vm frames), add locals command to debugger
Andy Wingo [Tue, 29 Dec 2009 13:09:50 +0000 (14:09 +0100)]
clean up (system vm frames), add locals command to debugger

* libguile/frames.c (scm_init_frames): No need to bootstrap the VM here,
  it should be already bootstrapped by init.c.
  (scm_bootstrap_frames): No need to register an extension, as
  scm_init_frames is called by init.c.

* module/system/vm/frame.scm: Don't load the scm_init_frames extension,
  as the primitives from frames.c are loaded by Guile's init.
  (frame-bindings): Change to return bindings, as can be accessed by the
  binding: accessors from program.scm.
  (frame-lookup-binding): Revive and make this one work with current
  code.
  (frame-binding-set!):
  (frame-binding-ref): Use the new frame-lookup-binding. Perhaps these
  should handle boxing and unboxing, though.
  (frame-source): New accessor, returns a source object.
  (frame-call-representation): Change to return a full list, as
  truncated-print can truncate for us.
  (frame-environment, frame-object-binding, frame-object-name): Update
  not to take an address, as the address is part of the frame.
  (frame-variable-exists?, frame-variable-ref, frame-variable-set!)
  (frame-local-variables, frame-program-name, print-frame)
  (print-frame-chain-as-backtrace, frame-file, frame-line-number)
  (make-frame-chain, bootstrap-frame?, frame-number, frame-address):
  Remove these outdated functions.

* module/system/vm/debug.scm (debugger-repl): Use
  frame-call-representation, and ~@y.
  (locals): New command, prints local variables in a frame.

14 years agoadd ~@y truncated printing directive to format
Andy Wingo [Tue, 29 Dec 2009 12:26:41 +0000 (13:26 +0100)]
add ~@y truncated printing directive to format

* doc/ref/misc-modules.texi (Formatted Output): Add documentation for
  the new ~@y format directive.
  (Pretty Printing): Add documentation for truncated-write.

* module/ice-9/format.scm (format): Add ~@y, for doing a truncated
  print. Also, allow both ~y variants to take a width parameter.

14 years agoadd truncated-print to (ice-9 pretty-print)
Andy Wingo [Mon, 28 Dec 2009 17:10:51 +0000 (18:10 +0100)]
add truncated-print to (ice-9 pretty-print)

* module/ice-9/pretty-print.scm (pretty-print): Rework so "port" is the
  kwarg, and "port*" is the optional arg. #:port is still the keyword.

  (truncated-print): Add a printer that will ensure that the output
  stays within a certain width. It could use genwrite but it doesn't
  because it seems nice to allow breadth-first allocation of screen
  space, and it's also nice to balance some delimiters (e.g. #< and >).

14 years agofix bug in string array implementation type mask
Andy Wingo [Tue, 29 Dec 2009 11:35:13 +0000 (12:35 +0100)]
fix bug in string array implementation type mask

* libguile/strings.c (SCM_ARRAY_IMPLEMENTATION): The mask for the string
  array implementation should be 0x7f, without masking out 0x2.
  Otherwise numbers were being thought to be vectors!

* test-suite/tests/unif.test: Add test.

* libguile/vectors.c (SCM_ARRAY_IMPLEMENTATION): Only register one
  implementation, because weak vectors can be checked with the mask &
  ~2, and the functions are the same.

14 years agoAdd documentation for scm_c_upcase et al
Michael Gran [Mon, 28 Dec 2009 23:26:10 +0000 (15:26 -0800)]
Add documentation for scm_c_upcase et al

* doc/ref/api-data.texi: document scm_c_upcase, scm_c_downcase,
  scm_c_titlecase, and scm_t_wchar

14 years agopretty-print is a lambda*
Andy Wingo [Mon, 28 Dec 2009 15:37:59 +0000 (16:37 +0100)]
pretty-print is a lambda*

* module/ice-9/pretty-print.scm (pretty-print): Fix to always be a
  define*. Shouldn't change behavior, but it will be more
  introspectible.

14 years agofix bug bindings lexical vars within optargs initializers
Andy Wingo [Mon, 28 Dec 2009 15:36:29 +0000 (16:36 +0100)]
fix bug bindings lexical vars within optargs initializers

* module/language/tree-il/analyze.scm (analyze-lexicals): Fix bug in
  which variables bound within inits were being improperly allocated.
* module/language/tree-il/compile-glil.scm (vars->bind-list): More
  detail in terrible debugging clause.
* test-suite/tests/optargs.test ("lambda* inits"): Add tests for binding
  vars within inits.

14 years agoMerge branch 'read-fix'
Andy Wingo [Mon, 28 Dec 2009 16:36:44 +0000 (17:36 +0100)]
Merge branch 'read-fix'

14 years agoFix bugs reading long tokens
Andy Wingo [Mon, 28 Dec 2009 16:35:48 +0000 (17:35 +0100)]
Fix bugs reading long tokens

The commit "don't take string-write mutex in read.c:read_token", from
8b0d7b9d94b9f142dc4f08ce12b345321359b3cd, had a number of bugs. Not sure
how I missed these before.

* libguile/read.c (read_token): Remove a couple of bogus
  scm_i_string_stop_writing () calls, now that we no longer take the
  string-write mutex.
  (read_complete_token): read_token really needs a fresh buffer, which
  was not the case when we are reading long tokens and thus hit the
  overflow case. Fixes fractions.test.

14 years agofix defmacro*
Andy Wingo [Mon, 28 Dec 2009 10:47:17 +0000 (11:47 +0100)]
fix defmacro*

* module/ice-9/optargs.scm (defmacro*): Fix implementation -- defmacro*
  takes Lisp-like arguments.
  (defmacro*-public): Fix also, expanding into defmacro*.

* THANKS: Thanks to Tristan Colgate for the report.

* test-suite/tests/optargs.test: Add defmacro* tests.

14 years ago(syntax foo) -> #'foo in boot-9
Andy Wingo [Mon, 28 Dec 2009 10:44:06 +0000 (11:44 +0100)]
(syntax foo) -> #'foo in boot-9

* module/ice-9/boot-9.scm: Change instances of (syntax foo) to use the
  reader macro #'.

14 years agoIncorrect indexing into character name list
Michael Gran [Mon, 28 Dec 2009 02:44:29 +0000 (18:44 -0800)]
Incorrect indexing into character name list

When converting a character into a character name, an incorrect
character name could theoretically have been returned.

* libguile/chars.c (scm_i_charname): used wrong index into
  scm_alt_charnames

14 years agoAutomatic manual updates following libguile docstring changes
Neil Jerram [Sun, 27 Dec 2009 23:24:09 +0000 (23:24 +0000)]
manual updates following libguile docstring changes

Affecting the following procedures:

* doc/ref/api-compound.texi (Uniform Numeric Vectors):
  uniform-array-read!

* doc/ref/api-data.texi (Complex): make-rectangular, string=?,
  string<?, string<=?, string>?, string>=?, string-ci=?, string-ci<?,
  string-ci<=?, string-ci>?, string-ci>=?, string-append/shared

* doc/ref/api-evaluation.texi (Reader Extensions): read-hash-extend

* doc/ref/api-procedures.texi (Procedures with Setters): procedure,
  macro?, macro-type

* doc/ref/api-undocumented.texi: module-import-interface,
  %method-more-specific?

* doc/ref/new-docstrings.texi: uniform-array->bytevector,
  %start-stack, guardian-destroyed?, guardian-greedy?,
  destroy-guardian!, gc-dump, gc-disable, gc-enable,
  make-generalized-vector, set-primitive-generic!, nl-langinfo,
  %warn-autocompilation-enabled, make-syncase-macro,
  make-extended-syncase-macro, syncase-macro-type,
  syncase-macro-binding, memoize-expression, unmemoize-expression,
  memoized-expression-typecode, memoized-expression-data,
  memoized-typecode, memoize-variable-access!, module-local-variable,
  module-variable, eval-closure-module, module-transformer,
  module-public-interface, define!, module-reverse-lookup, cddr,
  make-promise, %get-stack-size, %string-dump, %symbol-dump,
  string-bytes-per-char, uniform-vector-element-type,
  uniform-vector-element-size, canonicalize-path, getrlimit, setrlimit

* doc/maint/guile.texi: Corresponding tracking updates.

14 years agoDoc for getsid
Neil Jerram [Sun, 27 Dec 2009 18:44:41 +0000 (18:44 +0000)]
Doc for getsid

* NEWS: Note new getsid primitive.

* doc/ref/posix.texi (Processes): Document getsid.

14 years agoAdd support for getsid
Neil Jerram [Sun, 27 Dec 2009 16:59:54 +0000 (16:59 +0000)]
Add support for getsid

* configure.ac: Check availability of getsid() C library call.

* libguile/posix.c (scm_getsid): New primitive.

* libguile/posix.h: Declaration for new primitive.

14 years agoSupport for Unicode general categories
Julian Graham [Thu, 24 Dec 2009 05:25:19 +0000 (00:25 -0500)]
Support for Unicode general categories

* libguile/chars.c, libguile/chars.h (scm_char_general_category): New function.
* test-suite/tests/chars.test: Unit tests for `char-general-category'.
* doc/ref/api-data.texi (Characters): Documentation for
  `char-general-category'.

14 years agoimplement up, down, frame, and bindings in the repl
Andy Wingo [Thu, 24 Dec 2009 13:20:41 +0000 (14:20 +0100)]
implement up, down, frame, and bindings in the repl

* module/system/vm/debug.scm (debugger-repl): Implement up, down, frame,
  and bindings using the new command infrastructure.

14 years agorewrite debugger command loop
Andy Wingo [Thu, 24 Dec 2009 07:28:59 +0000 (08:28 +0100)]
rewrite debugger command loop

* module/system/vm/debug.scm: Rewrite the command loop to have better
  introspection and argument handling.

14 years agokeyword arg errors throw to 'keyword-argument-error
Andy Wingo [Wed, 23 Dec 2009 21:59:12 +0000 (22:59 +0100)]
keyword arg errors throw to 'keyword-argument-error

* libguile/vm-engine.c (VM_NAME): Keyword arg errors are now thrown to
  'keyword-argument-error.

* libguile/vm.c: Define sym_keyword_argument_error, and statically
  allocate some other symbols.

* module/ice-9/optargs.scm (parse-lambda-case): Throw to
  'keyword-argument-error in kwarg error cases.

* module/ice-9/psyntax.scm (build-lambda-case): Remove a couple
  workarounds for the old memoizer. Throw to 'wrong-number-of-args if
  the lambda-case fails to parse.

* module/ice-9/psyntax-pp.scm: Regenerated.

* test-suite/tests/optargs.test: Update expected exceptions.

14 years agoimplement a silly debugger
Andy Wingo [Tue, 22 Dec 2009 22:38:06 +0000 (23:38 +0100)]
implement a silly debugger

* module/system/vm/debug.scm: Implement the skeleton of a debugger. Not
  very useful yet.

* module/system/repl/repl.scm (call-with-backtrace): Have the pre-unwind
  hook drop the user into the debugger. Hopefully we can have something
  better within a couple weeks.

14 years agofix warning-caught bug in boot-9
Andy Wingo [Tue, 22 Dec 2009 21:52:48 +0000 (22:52 +0100)]
fix warning-caught bug in boot-9

* module/ice-9/boot-9.scm: Fix bug caught by warnings.

14 years agoComplete support for version information in Guile's `module' form.
Julian Graham [Mon, 21 Dec 2009 23:33:12 +0000 (00:33 +0100)]
Complete support for version information in Guile's `module' form.

* module/ice-9/boot-9.scm (try-load-module, try-module-autoload): Check
  for version argument and use `find-versioned-module' if present.
* module/ice-9/boot-9.scm (find-versioned-module, version-matches?)
  (module-version, set-module-version!, version-matches?): New
  functions.
* module/ice-9/boot-9.scm (module-type, make-module, resolve-module)
  (try-load-module, process-define-module, make-autoload-interface)
  (compile-interface-spec): Add awareness and checking of version
  information.
* doc/ref/api-modules.texi (R6RS Version References): New subsubsection.
  (General Information about Modules): Explain differences in search
  process when version references are used.
  (Using Guile Modules) (Creating Guile Modules): Document `#:version'
  keyword.

14 years agoSupport for renaming bindings on module export.
Julian Graham [Thu, 10 Dec 2009 05:29:11 +0000 (00:29 -0500)]
Support for renaming bindings on module export.

* module/ice-9/boot-9.scm (module-export!, module-replace!)
  (module-re-export!): Allow members of export list to be pairs, mapping
  internal names to external ones.

* doc/ref/api-modules.texi (Creating Guile Modules): Update
  documentation for `#:export', `#:export-syntax', `#:replace',
  `#:re-export', `#:re-export-syntax', `export', and `re-export' to
  reflect new format for arguments.

14 years agoImproved support for Unicode title case in Guile's string and character APIs.
Julian Graham [Tue, 22 Dec 2009 05:19:56 +0000 (00:19 -0500)]
Improved support for Unicode title case in Guile's string and character APIs.

* doc/ref/api-data.texi (Characters): Documentation for `char-titlecase'.
* doc/ref/api-i18n.texi (Character Case Mapping): Documentation for
  `char-locale-titlecase' and `string-locale-titlecase'.

* libguile/chars.c, libguile/chars.h (scm_char_titlecase, scm_c_titlecase): New
  functions.

* libguile/i18n.c, libguile/i18n.h (chr_to_case, scm_char_locale_titlecase,
  str_to_case, scm_string_locale_titlecase): New functions.
* libguile/i18n.c (scm_char_locale_downcase, scm_char_locale_upcase,
  scm_string_locale_downcase, scm_string_locale_upcase): Refactor to share code
  via chr_to_case and str_to_case, as appropriate.
* module/ice-9/i18n.scm (char-locale-title-case, string-locale-titlecase): New
  functions.

* libguile/srfi-13.c (string_titlecase_x): Use uc_totitle instead of uc_toupper.

* test-suite/tests/chars.test: Tests for `char-titlecase'.
* test-suite/tests/i18n.test: Tests for `char-locale-titlecase' and
  `string-locale-titlecase'.
* test-suite/tests/srfi-13.test: Tests for `string-titlecase'.

14 years agountabify boot-9.scm
Andy Wingo [Mon, 21 Dec 2009 23:58:12 +0000 (00:58 +0100)]
untabify boot-9.scm

* module/ice-9/boot-9.scm: Untabify.

14 years agotracing at repl
Andy Wingo [Mon, 21 Dec 2009 22:13:05 +0000 (23:13 +0100)]
tracing at repl

* module/system/repl/command.scm (option, trace): Integrate tracing (via
  ,trace or ,tr).

14 years ago(system vm trace) sorta working
Andy Wingo [Mon, 21 Dec 2009 22:03:43 +0000 (23:03 +0100)]
(system vm trace) sorta working

* module/system/vm/trace.scm: Update to work with the current VM and its
  tracing infrastructure.

14 years agodon't take string-write mutex in read.c:read_token
Andy Wingo [Mon, 21 Dec 2009 21:12:31 +0000 (22:12 +0100)]
don't take string-write mutex in read.c:read_token

* libguile/read.c (read_token): Don't take the string-write mutex when
  reading a token into a buffer, because it's assumed that the buffer is
  fresh (not seen by other threads), and a soft port can call a
  procedure that needs the string-write mutex.

14 years agorework vm tracing
Andy Wingo [Mon, 21 Dec 2009 20:57:20 +0000 (21:57 +0100)]
rework vm tracing

* libguile/vm-engine.c (VM_NAME): Engines take the VM itself (not the
  vp), so they can pass the VM to hooks. No more hook args, we dispatch
  without them.

* libguile/vm-engine.h (RUN_HOOK): Dispatch the hook if the trace level
  is positive (instead of if the hook is there). Don't cache registers
  on return from the dispatch.

* libguile/vm.h:
* libguile/vm.c (vm_dispatch_hook): Don't bother with a dynwind; instead
  decrement the trace level when going into a hook, and if we have a
  nonlocal exit, the trace level never gets incremented again. Worse is
  better.
  (make_vm, scm_vm_trace_level, scm_set_vm_trace_level_x): New concept,
  trace level. If positive, we run the hooks, otherwise we don't. Should
  work. Removed scm_vm_trace_frame, I don't think that was the right way
  to do it.

* module/system/vm/vm.scm: Replace vm-trace-frame with vm-trace-level
  and set-vm-trace-level!; the hooks actually get the frame as an
  argument now.

14 years agoadd scm_call_n, scm_c_run_hookn
Andy Wingo [Mon, 21 Dec 2009 20:06:27 +0000 (21:06 +0100)]
add scm_call_n, scm_c_run_hookn

* libguile/eval.h:
* libguile/eval.c (scm_call_n): New function, applies a function to an
  array of args.

* libguile/hooks.h:
* libguile/hooks.c (scm_c_run_hookn): New function, runs a hook with an
  array of args.

14 years agoremove "module system quirks" from the manual
Andy Wingo [Mon, 21 Dec 2009 10:54:48 +0000 (11:54 +0100)]
remove "module system quirks" from the manual

* doc/ref/api-modules.texi (Module System Quirks): Remove this outdated
  section.

14 years agopoor man's statprof integration with the repl: ,pr
Andy Wingo [Sun, 20 Dec 2009 23:08:18 +0000 (00:08 +0100)]
poor man's statprof integration with the repl: ,pr

* module/system/repl/command.scm (profile): Add a very poor integration
  of statprof with the repl.

14 years agoadd test suites
Andy Wingo [Sun, 20 Dec 2009 22:11:34 +0000 (23:11 +0100)]
add test suites

14 years agointegrate guile-lib docs
Andy Wingo [Fri, 18 Dec 2009 12:31:02 +0000 (13:31 +0100)]
integrate guile-lib docs

14 years agotexinfo fixes
Andy Wingo [Sun, 20 Dec 2009 22:18:32 +0000 (23:18 +0100)]
texinfo fixes

* module/texinfo.scm (parser-error): Throw to 'parser-error, as ssax's
  input-parse does.
  (texi-command-depth): Fix docstring so as not to confuse emacs.
  (parse-table-args): Fix parser-error call to include port.

14 years agotweaks to statprof
Andy Wingo [Sun, 20 Dec 2009 22:17:05 +0000 (23:17 +0100)]
tweaks to statprof

* module/statprof.scm (make-call-data): Change so that call-data holds
  the proc, not its name. Remove set-call-data-name!.
  (get-call-data): Adapt caller.
  (sample-stack-procs): Always sample procedures on the stack, even
  anonymous ones.
  (profile-signal-handler): Fix stack cutting to work with compiled
  statprof.scm.
  (count-call): Always count calls, even to anonymous procedures.
  (statprof-call-data->stats): Use call-data-printable for printing the
  call data.
  (statprof-display-anomolies): Fix a couple longstanding bugs caught by
  compiler warnings.

14 years agoimport statprof, sxml, and texinfo from guile-lib
Andy Wingo [Sun, 20 Dec 2009 23:01:13 +0000 (00:01 +0100)]
import statprof, sxml, and texinfo from guile-lib

* module/Makefile.am (LIB_SOURCES): Add statprof, sxml, and texinfo to
  the build.
  (NOCOMP_SOURCES): Reindent, and add the upstream SSAX files.

* module/statprof.scm:
* module/sxml/apply-templates.scm:
* module/sxml/fold.scm:
* module/sxml/simple.scm:
* module/sxml/ssax.scm:
* module/sxml/ssax/input-parse.scm:
* module/sxml/transform.scm:
* module/sxml/upstream/COPYING.SSAX:
* module/sxml/upstream/SSAX.scm:
* module/sxml/upstream/SXML-tree-trans.scm:
* module/sxml/upstream/SXPath-old.scm:
* module/sxml/upstream/assert.scm:
* module/sxml/upstream/input-parse.scm:
* module/sxml/xpath.scm:
* module/texinfo.scm:
* module/texinfo/docbook.scm:
* module/texinfo/html.scm:
* module/texinfo/indexing.scm:
* module/texinfo/plain-text.scm:
* module/texinfo/reflection.scm:
* module/texinfo/serialize.scm:
* module/texinfo/string-utils.scm: Add files from guile-lib to Guile.
  It's only Richard, Andreas, Rob, and myself that have copyright on
  these, and we have all assigned to the FSF. SSAX itself is in the
  public domain.

14 years agoversion.h depends on config.status
Andy Wingo [Sun, 20 Dec 2009 22:26:42 +0000 (23:26 +0100)]
version.h depends on config.status

* libguile/Makefile.am (version.h): Depend on config.status, so if we
  reconfigure we make sure to regenerate the version.

14 years agohandle interrupts in mv-call, return/values
Andy Wingo [Sun, 20 Dec 2009 22:12:34 +0000 (23:12 +0100)]
handle interrupts in mv-call, return/values

* libguile/vm-i-system.c (mv-call, return/values): Interrupt before
  entering and leaving MV frames as well as normal frames.

14 years agoremove scm_add_method
Andy Wingo [Tue, 15 Dec 2009 10:58:04 +0000 (11:58 +0100)]
remove scm_add_method

* libguile/goops.h:
* libguile/goops.c (scm_add_method): Remove this function. It didn't
  work, and even if we fixed it to work it wouldn't be as good as using
  Scheme's `add-method!'.

14 years agoguile-config depends on config.status
Andy Wingo [Tue, 15 Dec 2009 09:57:59 +0000 (10:57 +0100)]
guile-config depends on config.status

* meta/Makefile.am (guile-config): Depend on config.status, so that if
  $prefix changes, guile-config gets rebuilt.

14 years agoin the load path, look in library-dir before site-dir
Andy Wingo [Tue, 15 Dec 2009 09:49:22 +0000 (10:49 +0100)]
in the load path, look in library-dir before site-dir

* libguile/load.c (scm_init_load_path): Search first in Guile's
  version-specific path (the library path), *then* in the site dir. This
  should allow us to import some of Guile-lib's modules into Guile,
  perhaps customizing them with Guile-version-specific foo, without
  accidentally falling back to system-installed guile-lib in the
  sitedir. Also should reduce the number of stats by half, in the common
  case.

14 years agopsyntax's labels and marks now unique over a read/write boundary
Andy Wingo [Sun, 20 Dec 2009 14:29:09 +0000 (15:29 +0100)]
psyntax's labels and marks now unique over a read/write boundary

* module/ice-9/psyntax.scm (gen-label, new-mark): Labels and marks need
  to be unique across read/write boundaries -- it's not sufficient for
  them to simply be unique within a process by virtue of (string #\i)
  constructing a new object. This used to mostly work before, because
  the collapsing of duplicate constants didn't catch many syntax-object
  cases -- but for some reason the attached test case brings out the
  problem. So switch to use gensyms. Potentially more costly, but it's
  what upstream psyntax does now.

  This bug took me fully two days to figure out.

* module/ice-9/psyntax-pp.scm: Regenerated.

* test-suite/tests/syncase.test ("serializable labels and marks"): Add
  test case.

14 years agoDocument need for pkg-config to build Guile
Neil Jerram [Sat, 19 Dec 2009 22:37:24 +0000 (22:37 +0000)]
Document need for pkg-config to build Guile

* README: Say that ./configure needs pkg-config; why; and how to work
  around it.

14 years agoUpdate and simplify statement about RnRS support
Neil Jerram [Fri, 18 Dec 2009 01:11:40 +0000 (01:11 +0000)]
Update and simplify statement about RnRS support

* doc/ref/scheme-intro.texi (Guile Scheme): Mention R6RS as well as
  R5RS.  Simplify text.

14 years agomake the use of the 5-argument @xref command consistent
Brian Gough [Tue, 15 Dec 2009 10:28:49 +0000 (10:28 +0000)]
make the use of the 5-argument @xref command consistent

A few of the @xref references to external manuals in the documentation
are using an old 4-argument form that produces an undefined reference
in the printed manual.  The following patch makes them consistent with
the 5-argument @xrefs used elsewhere in the manual.

--
Brian Gough

Network Theory Ltd,
Publishing Free Software Manuals --- http://www.network-theory.co.uk/

>From 6ca0417830dc5a98699a15808591dc1f2a90dfac Mon Sep 17 00:00:00 2001
From: Brian Gough <bjg@gnu.org>
Date: Mon, 14 Dec 2009 21:34:59 +0000
Subject: [PATCH] make the use of the 5-argument @xref command consistent
 when referring to other manuals.

14 years agoAllow more characters in coding system names in Emacs-style declarations.
Ken Raeburn [Mon, 16 Nov 2009 17:16:05 +0000 (12:16 -0500)]
Allow more characters in coding system names in Emacs-style declarations.

* libguile/read.c (scm_i_scan_for_encoding): Allow more punctuation
  symbols in coding system names.

14 years agomore typo fixes
Brian Gough [Tue, 15 Dec 2009 10:16:14 +0000 (10:16 +0000)]
more typo fixes

More spelling corrections and fixes for doubled words (e.g. "the the")

--
Brian Gough

Network Theory Ltd,
Publishing Free Software Manuals --- http://www.network-theory.co.uk/

>From 7be02beedc739c32cce2c8ec8f4ac814c994a13f Mon Sep 17 00:00:00 2001
From: Brian Gough <bjg@gnu.org>
Date: Mon, 14 Dec 2009 22:06:22 +0000
Subject: [PATCH] fix various documentation typos (spelling & doubled words)

14 years agotypo fix
Brian Gough [Tue, 15 Dec 2009 10:14:48 +0000 (10:14 +0000)]
typo fix

Correction for garbled sentence.

--
Brian Gough

Network Theory Ltd,
Publishing Free Software Manuals --- http://www.network-theory.co.uk/

>From f819b597a46ad4ed23597e5a81d1acab46f15147 Mon Sep 17 00:00:00 2001
From: Brian Gough <bjg@gnu.org>
Date: Mon, 14 Dec 2009 20:04:34 +0000
Subject: [PATCH] typo fix

14 years agoadded brief introduction about SLIB
Brian Gough [Tue, 15 Dec 2009 10:12:07 +0000 (10:12 +0000)]
added brief introduction about SLIB

This patch adds a short introduction to the SLIB section of the manual
with a link to the SLIB homepage.

--
Brian Gough

Network Theory Ltd,
Publishing Free Software Manuals --- http://www.network-theory.co.uk/

>From 60548b6e039bf57694b7841996cfda011cb8a4bf Mon Sep 17 00:00:00 2001
From: Brian Gough <bjg@gnu.org>
Date: Mon, 14 Dec 2009 20:49:27 +0000
Subject: [PATCH] added brief introduction about SLIB

14 years agoHash Table examples - hashq takes different number of arguments
Brian Gough [Mon, 14 Dec 2009 22:19:32 +0000 (22:19 +0000)]
Hash Table examples - hashq takes different number of arguments

In the "Hash Tables Example" in the manual, hashq needs 2 arguments
instead of 1 (patch below).  I've updated the hash table output as
well to match the current version.

--
Brian Gough

Network Theory Ltd,
Publishing Free Software Manuals --- http://www.network-theory.co.uk/

>From fdb6101d2e064620746ebfc9f9cd28bbdd2470e8 Mon Sep 17 00:00:00 2001
From: Brian Gough <bjg@gnu.org>
Date: Mon, 14 Dec 2009 19:59:32 +0000
Subject: [PATCH] update docs for Hash Table Examples
 hashq now takes two arguments
 order of elements in hash table is different now

14 years agoreplace ascii figures with scalable ps/pdf versions.
Brian Gough [Wed, 9 Dec 2009 18:04:42 +0000 (18:04 +0000)]
replace ascii figures with scalable ps/pdf versions.

use ascii figures in HTML output, to work around deficiency in makeinfo
where images are not copied to target directory.

14 years agouse explicit ./scriptname to help novice users
Brian Gough [Wed, 9 Dec 2009 17:59:59 +0000 (17:59 +0000)]
use explicit ./scriptname to help novice users

14 years agouse correct url to ftp.gnu.org
Brian Gough [Wed, 9 Dec 2009 17:53:08 +0000 (17:53 +0000)]
use correct url to ftp.gnu.org

14 years agoBump version number for 1.9.6.
Ludovic Courtès [Tue, 15 Dec 2009 22:45:37 +0000 (23:45 +0100)]
Bump version number for 1.9.6.

* GUILE-VERSION (GUILE_MICRO_VERSION): Increment.

14 years agoRemove unneeded #include <assert.h>.
Ludovic Courtès [Tue, 15 Dec 2009 19:20:38 +0000 (20:20 +0100)]
Remove unneeded #include <assert.h>.

* libguile/backtrace.c, libguile/eval.c, libguile/gc.c,
  libguile/goops.c, libguile/memoize.c, libguile/threads.c,
  libguile/uniform.c, libguile/vm.c,
  test-suite/standalone/test-conversion.c,
  test-suite/standalone/test-list.c: Don't include <assert.h>.

14 years agoUse Gnulib's `sys_stat' module; update Gnulib.
Ludovic Courtès [Tue, 15 Dec 2009 19:14:02 +0000 (20:14 +0100)]
Use Gnulib's `sys_stat' module; update Gnulib.

* .x-sc_prohibit_S_IS_definition: New file.

* m4/gnulib-cache.m4: Add `sys_stat'.

* libguile/filesys.c: Remove `S_IS*' macro definitions for Ultrix and
  MinGW.

14 years agoRemove obsolete test-suite makefile snippets.
Ludovic Courtès [Tue, 15 Dec 2009 18:23:08 +0000 (19:23 +0100)]
Remove obsolete test-suite makefile snippets.

* test-suite/Makefile.am (SCM_TESTS_DIRS): Remove.
  (dist-hook): Remove target.

14 years agoDisable thread-local storage on Solaris 8.
Ludovic Courtès [Tue, 15 Dec 2009 18:22:19 +0000 (19:22 +0100)]
Disable thread-local storage on Solaris 8.

* acinclude.m4 (GUILE_THREAD_LOCAL_STORAGE): Special-case `*solaris2.8'.

14 years agoChange the Elisp compiler from GPLv2+ to LGPLv3+.
Ludovic Courtès [Tue, 15 Dec 2009 18:10:48 +0000 (19:10 +0100)]
Change the Elisp compiler from GPLv2+ to LGPLv3+.

* module/language/elisp/bindings.scm, module/language/elisp/lexer.scm,
  module/language/elisp/parser.scm, module/language/elisp/runtime.scm,
  module/language/elisp/runtime/function-slot.scm,
  module/language/elisp/runtime/macro-slot.scm,
  module/language/elisp/runtime/value-slot.scm: Switch from GPLv2+ to
  LGPLv3+; fix copyright year.

14 years agoUse portable shell in `meta/uninstalled-env'.
Ludovic Courtès [Tue, 15 Dec 2009 00:11:01 +0000 (01:11 +0100)]
Use portable shell in `meta/uninstalled-env'.

* meta/uninstalled-env.in: Don't use the `-q' and `-E' options, which are
  specific to GNU grep.  Don't set-and-export environment variables at
  once since this is a GNU Bash extension.

14 years agoUse the right `grep' command.
Ludovic Courtès [Tue, 15 Dec 2009 00:00:36 +0000 (01:00 +0100)]
Use the right `grep' command.

* libguile/Makefile.am (.c.i): Use $(GREP), not `grep'.
  (check_signals, check_errnos): Use $(EGREP), not `egrep'.

14 years agoRemove GNU Make-specific function call.
Ludovic Courtès [Mon, 14 Dec 2009 23:59:14 +0000 (00:59 +0100)]
Remove GNU Make-specific function call.

* libguile/Makefile.am (c-tokenize.$(OBJEXT)): Remove use of GNU Make's
  `filter-out' function.

14 years agoRemove extraneous semicolon after `SCM_ARRAY_IMPLEMENTATION' & co.
Ludovic Courtès [Mon, 14 Dec 2009 23:53:13 +0000 (00:53 +0100)]
Remove extraneous semicolon after `SCM_ARRAY_IMPLEMENTATION' & co.

* libguile/bitvectors.c, libguile/srfi-4.c, libguile/strings.c,
  libguile/vectors.c: Remove extraneous semicolon after
  `SCM_ARRAY_IMPLEMENTATION' and `SCM_VECTOR_IMPLEMENTATION'
  invocations.

14 years agoRemove extraneous functions from `AC_REPLACE_FUNCS'.
Ludovic Courtès [Mon, 14 Dec 2009 23:45:14 +0000 (00:45 +0100)]
Remove extraneous functions from `AC_REPLACE_FUNCS'.

* configure.ac: Remove `inet_aton' and `putenv' from `AC_REPLACE_FUNCS'.

14 years agoAvoid `SCM_UNPACK ()' in constant expressions.
Ludovic Courtès [Mon, 14 Dec 2009 23:43:32 +0000 (00:43 +0100)]
Avoid `SCM_UNPACK ()' in constant expressions.

They made Sun C 5.8 emit a warning such as:

  line 71: warning: dead part of constant expression is nonconstant

* libguile/print.c (scm_print_opts): Don't use `SCM_UNPACK ()' here.

* libguile/read.c (scm_read_opts): Likewise.

14 years agoRemove `return' from `void' function.
Ludovic Courtès [Mon, 14 Dec 2009 23:38:50 +0000 (00:38 +0100)]
Remove `return' from `void' function.

* libguile/print.c (scm_print_symbol_name): Remove `return' statement.

14 years agoDon't use GCC zero-length arrays.
Ludovic Courtès [Mon, 14 Dec 2009 22:11:47 +0000 (23:11 +0100)]
Don't use GCC zero-length arrays.

* libguile/frames.c, libguile/objcodes.c, libguile/programs.c,
  libguile/vm-engine.c, libguile/vm-i-system.c, libguile/vm.c: Use
  `SCM_C_OBJCODE_BASE ()' instead of accessing the `base' field of
  `struct scm_objcode'.

* libguile/objcodes.h (struct scm_objcode)[base]: Remove.

14 years agoRemove uses of the non-standard `__FUNCTION__'.
Ludovic Courtès [Mon, 14 Dec 2009 14:21:54 +0000 (15:21 +0100)]
Remove uses of the non-standard `__FUNCTION__'.

* libguile/gc.c (scm_gc_sweep): Replace `__FUNCTION__' by `FUNC_NAME'.

* libguile/read.c (scm_read_r6rs_block_comment): Likewise.

14 years agoexpose frame-previous, once again
Andy Wingo [Mon, 14 Dec 2009 23:20:47 +0000 (00:20 +0100)]
expose frame-previous, once again

* libguile/frames.h:
* libguile/frames.c (scm_frame_previous): Rename from scm_c_frame_prev,
  and expose to Scheme. Skip boot frames.

* libguile/stacks.c (stack_depth, narrow_stack, scm_make_stack)
  (scm_stack_ref): Adjust for scm_frame_previous skipping boot frames.

14 years agoFix test environment issue with ltdl from Libtool 2.2.6b.
Ludovic Courtès [Mon, 14 Dec 2009 09:59:25 +0000 (10:59 +0100)]
Fix test environment issue with ltdl from Libtool 2.2.6b.

Earlier versions of ltdl would look for extensions under $PWD; this
behavior changed in 2.2.6b.

* test-suite/standalone/Makefile.am (TESTS_ENVIRONMENT): Define
  $builddir.

* test-suite/standalone/test-asmobs: Specify the full path to
  `libtest-asmobs', using $builddir.

* test-suite/standalone/test-extensions: Likewise.

14 years agomore NEWS updates
Andy Wingo [Sun, 13 Dec 2009 19:18:50 +0000 (20:18 +0100)]
more NEWS updates

* NEWS: Update some more.

14 years agoprimitive-eval passes first N args on stack directly, not via apply
Andy Wingo [Sun, 13 Dec 2009 16:05:10 +0000 (17:05 +0100)]
primitive-eval passes first N args on stack directly, not via apply

* libguile/memoize.c (MAKMEMO_CALL): Memoize in the number of arguments
  at the call site.
  (memoize, scm_m_cond, memoize_named_let, unmemoize):
* libguile/eval.c (eval): Adapt to changes in call memoization.

* module/ice-9/eval.scm (primitive-eval): For calls, pass the first N
  arguments directly on the stack, and only the rest as a consed
  argument list to apply. Currently N is 4.

14 years agointerpreted closures cons less.
Andy Wingo [Sun, 13 Dec 2009 15:18:39 +0000 (16:18 +0100)]
interpreted closures cons less.

* module/ice-9/eval.scm (primitive-eval): When making a closure with N
  formals, actuall return a closure with N formals, if N is less than
  *max-static-argument-count*, which currently is 8. If N is greater
  than 8, do the arg-parsing loop as we did before. Requires some
  macrology, but should reduce unnecessary consing for interpreted
  closures.

* test-suite/tests/goops.test:
* test-suite/tests/hooks.test: Now that checks like (thunk? foo) are
  going to work as a for interpreted code, remove some (throw
  'unresolved).

14 years agocommit draft of NEWS
Andy Wingo [Fri, 11 Dec 2009 23:10:14 +0000 (00:10 +0100)]
commit draft of NEWS

14 years agolame tweak to the inliner
Andy Wingo [Fri, 11 Dec 2009 20:51:02 +0000 (21:51 +0100)]
lame tweak to the inliner

* module/language/tree-il/inline.scm: Tweak to avoid a (if #t #t #f).
  Yes, it's lame.

14 years agoprepare NEWS for 1.9.6
Andy Wingo [Fri, 11 Dec 2009 17:17:01 +0000 (18:17 +0100)]
prepare NEWS for 1.9.6

* NEWS: Prepare NEWS for 1.9.6.

14 years agoTweak the "unused modules are removed" test.
Ludovic Courtès [Fri, 11 Dec 2009 22:27:47 +0000 (23:27 +0100)]
Tweak the "unused modules are removed" test.

* test-suite/tests/gc.test ("gc")["unused modules are removed"]: Add
  loop to clean up stale references from the stack.

14 years agoSRFI-1: Use the built-in optional argument support.
Ludovic Courtès [Fri, 11 Dec 2009 14:20:12 +0000 (15:20 +0100)]
SRFI-1: Use the built-in optional argument support.

* module/srfi/srfi-1.scm (iota, unfold, unfold-right, alist-delete,
  alist-delete!): Use `define*' and optional arguments instead of rest
  arguments.

14 years agoFix expansion of `(+ 1 x)'.
Ludovic Courtès [Fri, 11 Dec 2009 13:56:49 +0000 (14:56 +0100)]
Fix expansion of `(+ 1 x)'.

* module/language/tree-il/primitives.scm (+): Fix typo.

14 years agoTypo.
Ludovic Courtès [Fri, 11 Dec 2009 13:32:34 +0000 (14:32 +0100)]
Typo.

* test-suite/Makefile.am (SCM_TESTS): Fix typos:
  `.text' -> `.test'.

14 years agoSRFI-9: Make accessors inlinable.
Ludovic Courtès [Sun, 6 Dec 2009 22:15:18 +0000 (23:15 +0100)]
SRFI-9: Make accessors inlinable.

* module/srfi/srfi-9.scm (define-inlinable): New macro.
  (define-record-type): Use it.

14 years agoSRFI-9: Reimplement in terms of structs, using `syntax-case'.
Ludovic Courtès [Sun, 6 Dec 2009 00:00:04 +0000 (01:00 +0100)]
SRFI-9: Reimplement in terms of structs, using `syntax-case'.

* module/srfi/srfi-9.scm (define-record-type): Rewrite to use raw
  structs instead of records.  Use `syntax-case' instead of
  `define-macro'.

14 years agoAdd struct & vector benchmarks.
Ludovic Courtès [Fri, 11 Dec 2009 11:58:06 +0000 (12:58 +0100)]
Add struct & vector benchmarks.

* benchmark-suite/benchmarks/structs.bm,
  benchmark-suite/benchmarks/vectors.bm: New files.

* benchmark-suite/Makefile.am (SCM_BENCHMARKS): Add.

* benchmark-suite/benchmarks/bytevectors.bm: Fix copyright.

14 years agoAdd opcodes for `struct?', `struct-vtable', and `make-struct'.
Ludovic Courtès [Fri, 11 Dec 2009 11:44:29 +0000 (12:44 +0100)]
Add opcodes for `struct?', `struct-vtable', and `make-struct'.

* libguile/vm-engine.c (VM_NAME)[vm_error_not_a_struct]: New label.

* libguile/vm-i-scheme.c (VM_VALIDATE_STRUCT): New macro.
  (struct_p, struct_vtable, make_struct): New instructions.

* module/language/tree-il/compile-glil.scm (*primcall-ops*): Add
  `struct?', `struct-vtable', and `make-struct'.

* module/language/tree-il/primitives.scm (*interesting-primitive-names*,
  *effect-free-primitives*): Likewise.

14 years agovm no longer measures bogoclock or times, relies on os for that
Andy Wingo [Fri, 11 Dec 2009 11:38:47 +0000 (12:38 +0100)]
vm no longer measures bogoclock or times, relies on os for that

* libguile/vm.h (struct scm_vm): Remove "time" and "clock" members. The
  time was bogusly measured, and the "clock" measured instructions
  retired, which is not a very useful measurement, and it was causing
  lots of memory accesses. Not that I have done a proper profile,
  though...
  (scm_vm_stats): Remove this procedure, which provided access to "time"
  and "clock".

* libguile/vm.c:
* libguile/vm-engine.h:
* libguile/vm-engine.c:
* libguile/vm-i-system.c: Adapt to scm_vm changes and scm_vm_stats
  removal.

* module/system/repl/command.scm:
* module/system/vm/vm.scm: Adapt to vm-stats removal by removing
  vm-stats from <repl>.

14 years agoinline calls to (memv foo CONSTANT-LIST)
Andy Wingo [Fri, 11 Dec 2009 11:20:55 +0000 (12:20 +0100)]
inline calls to (memv foo CONSTANT-LIST)

* module/language/tree-il/primitives.scm
  (*interesting-primitive-names*): Recognize memv and memq as well.

* module/language/tree-il/inline.scm (inline!): Inline calls to memq and
  memv where the list is a constant.