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

15227 commits

Author SHA1 Message Date
Ludovic Courtès
02a362a665 Fix invalid assertion about mutex ownership in threads.c.
* libguile/threads.c (do_thread_exit): Don't assert m->owner == t->handle
  since that is not the case when MUTEX was abandoned by T.  Reported by Mark
  Weaver and others.
2012-11-05 21:43:13 +01:00
Ludovic Courtès
93825c9f06 Have SCM_NUM2FLOAT' and SCM_NUM2DOUBLE' use `scm_to_double'.
* libguile/validate.h (SCM_NUM2FLOAT, SCM_NUM2DOUBLE): Use
  `scm_to_double' instead of the deprecated functions.  Reported by
  Aleix Conchillo Flaqué <aconchillo@gmail.com>.
2012-11-05 19:16:09 +01:00
Ludovic Courtès
b29b2c87b4 Fix copyright years in `futures.scm'.
* module/ice-9/futures.scm: Update copyright years.
2012-11-05 19:16:09 +01:00
Mark H Weaver
acc1d8e37a Preserve additional R6RS library name components after srfi :n
* module/ice-9/r6rs-libraries.scm (resolve-r6rs-interface):
  (srfi :n ...) -> (srfi srfi-n ...) instead of (srfi srfi-n).
2012-11-04 23:53:16 -05:00
Ludovic Courtès
134c95f1e6 futures: Have workers work when futures are available.
Reported by David Pirotte.

* module/ice-9/futures.scm (process-futures): Wait on %FUTURES-AVAILABLE
  only when %FUTURES is empty.

  The problem was obvious when running (begin (use-modules (ice-9
  threads)) (par-map 1+ (iota 400000))) : eventually, only the main
  thread would do the work, while the others would remain idle, waiting
  on %FUTURES-AVAILABLE.
2012-11-03 01:05:19 +01:00
Ludovic Courtès
1d4e6ee301 Fix `generalized-vector->list' indexing bug with shared arrays.
Fixes <http://bugs.gnu.org/12465>.
Reported by Daniel Llorens <daniel.llorens@bluewin.ch>.

* libguile/generalized-vectors.c (scm_generalized_vector_to_list): Fix
  initial value of POS; pass the `h.base + pos', not just `pos' as the
  `vref' argument.

* test-suite/tests/arrays.test ("array->list")["http://bugs.gnu.org/12465
  - ok", "http://bugs.gnu.org/12465 - bad]: New tests.
  ("generalized-vector->list"): New test prefix.
2012-11-03 00:20:57 +01:00
Ludovic Courtès
80aeb9af0d test-suite: Add a nameless form of `pass-if-equal'.
* test-suite/test-suite/lib.scm (pass-if-equal): Add a nameless pattern.
* test-suite/tests/arrays.test ("array->list"): Use `pass-if-equal'.
2012-11-02 23:43:45 +01:00
Ludovic Courtès
139ce19474 scandir: Use lstat' instead of stat'.
* module/ice-9/ftw.scm (scandir): Use `lstat', not `stat'.

* test-suite/tests/ftw.test ("scandir")["symlink to directory"]: New
  test.
2012-11-01 00:48:59 +01:00
Ludovic Courtès
f3bb42fc9b test-suite: Use pass-if-equal' in ftw.test'.
* test-suite/tests/ftw.test ("file-system-fold")["test-suite (never
  enter)", "test-suite/lib.scm (flat file)"]: Use `pass-if-equal'
  instead of `pass-if'.
2012-11-01 00:48:59 +01:00
Ludovic Courtès
d4eee584e0 test-suite: Add `pass-if-equal'.
* test-suite/test-suite/lib.scm (pass-if-equal): New macro.
  (run-test): Upon `fail', pass ARGS to REPORT.
2012-11-01 00:48:58 +01:00
Mark H Weaver
10744b7c50 Fix formatting of comments in scm_read_array.
* libguile/read.c (scm_read_array): Fix formatting of comments.
2012-10-30 22:58:19 -04:00
Mark H Weaver
fa746547fc scm_read_shebang: handle non-ascii characters properly.
* libguile/read.c (scm_read_shebang): Abort scan for reader directive
  if a character other than [-a-z0-9] is encountered.
2012-10-30 22:53:22 -04:00
Mark H Weaver
fb210d8d16 Test number-theoretic division by -0.0.
* test-suite/tests/numbers.test ("Number-theoretic division"): Fix typo
  so that we actually test for division by -0.0.
2012-10-30 02:23:07 -04:00
Mark H Weaver
8d50005868 Minor tweaks to srfi-105.test
* test-suite/tests/srfi-105.test ("curly-infix"): Minor tweaks.
2012-10-29 19:37:56 -04:00
Mark H Weaver
bf9eb54aab Implement SRFI-105 curly infix expressions.
* libguile/private-options.h: Add SCM_CURLY_INFIX_P macro, and increment
  SCM_N_READ_OPTIONS.

* libguile/read.c (sym_nfx, sym_bracket_list, sym_bracket_apply): New
  variables.
  (scm_read_opts): Add curly-infix reader option.  Reformat to comply
  with GNU coding standards.
  (scm_t_read_opts): Add curly_infix_p and neoteric_p fields.
  (init_read_options): Initialize new fields.
  (CHAR_IS_DELIMITER): Add '{', '}', '[', and ']' as delimiters if
  curly_infix_p is set.

  (set_port_square_brackets_p, set_port_curly_infix_p): New functions.

  (read_inner_expression): New function which contains the code that was
  previously in 'scm_read_expression'.  Handle curly braces when
  curly_infix_p is set.  If curly_infix_p is set and square_brackets_p
  is unset, follow the Kawa convention: [...] => ($bracket-list$ ...)

  (scm_read_expression): New function body to handle neoteric
  expressions where appropriate.

  (scm_read_shebang): Handle the new reader directives: '#!curly-infix'
  and the non-standard '#!curly-infix-and-bracket-lists'.

  (scm_read_sexp): Handle curly infix lists.

* module/ice-9/boot-9.scm (%cond-expand-features): Add srfi-105 feature
  identifier.

* doc/ref/srfi-modules.texi (SRFI-105): Add stub doc for SRFI-105.

* doc/ref/api-evaluation.texi (Scheme Read): Add documentation for the
  'curly-infix' read option, and the '#!curly-infix' and
  '#!curly-infix-and-bracket-lists' reader directives.

* doc/ref/api-options.texi (Runtime Options): Add 'curly-infix' to the
  list of read options.

* test-suite/Makefile.am: Add tests/srfi-105.test.

* test-suite/tests/srfi-105.test: New file.
2012-10-26 19:52:32 -04:00
Mark H Weaver
9331ffd891 Implement #!fold-case and #!no-fold-case reader directives.
* libguile/read.c (set_port_case_insensitive_p): New function.

  (scm_read_shebang): Handle #!fold-case and #!no-fold-case.

* doc/ref/api-evaluation.texi (Case Sensitivity, Scheme Read): Document
  the #!fold-case and #!no-fold-case reader directives.

* test-suite/tests/reader.test ("per-port-read-options"): Add tests.
2012-10-26 17:06:55 -04:00
Mark H Weaver
ea8c976155 Implement per-port read options.
* libguile/read.c (scm_t_read_opts): Update comment to mention the
  per-port read options.

  (sym_port_read_options): New variable.

  (set_port_read_option): New function.

  (init_read_options): Add new 'port' parameter, and consult the
  per-port read option overrides when initializing the 'scm_t_read_opts'
  struct.  Move to bottom of file.

  (scm_read): Pass 'port' parameter to init_read_options.
2012-10-26 17:06:14 -04:00
Mark H Weaver
851c3cd16e Repurpose scm_i_port_weak_hash to associate an alist with each port.
* libguile/ports.c (scm_i_port_weak_hash): Document that the values in
  this hash table will now be alists.  Previously the value slots were
  unused.

  (scm_new_port_table_entry): Change the initial value of the entry in
  scm_i_port_weak_hash from SCM_BOOL_F to SCM_EOL.
2012-10-23 22:44:55 -04:00
Mark H Weaver
02327c0c51 Generalize scm_read_shebang to handle other reader directives.
* libguile/read.c (READER_DIRECTIVE_NAME_MAX_SIZE): New C macro.
  (scm_read_shebang): Rewrite to handle arbitrary reader directives.
2012-10-23 22:44:52 -04:00
Mark H Weaver
3655ed8983 Add source properties to more datum types in scm_read_sharp_extension.
* libguile/read.c (scm_read_sharp_extension): Attach source properties
  to the result of a custom token reader if the returned datum is not
  immediate.  Previously, source properties were added to pairs only.
2012-10-23 22:44:49 -04:00
Mark H Weaver
b1b5433d66 Change reader to pass read options to helpers via explicit parameter.
* libguile/read.c (enum t_keyword_style, struct t_read_opts,
  scm_t_read_opts): New types.
  (init_read_options): New function.

  (CHAR_IS_DELIMITER): Look up square-brackets option via local 'opts'.

  (scm_read): Call 'init_read_options', and pass 'opts' to helpers.

  (flush_ws, maybe_annotate_source, read_complete_token, read_token,
  scm_read_bytevector, scm_read_character,
  scm_read_commented_expression, scm_read_expression,
  scm_read_guile_bit_vector, scm_read_keyword,
  scm_read_mixed_case_symbol, scm_read_nil, scm_read_number,
  scm_read_number_and_radix, scm_read_quote, scm_read_sexp,
  scm_read_sharp, scm_read_sharp_extension, scm_read_shebang,
  scm_read_srfi4_vector, scm_read_string, scm_read_syntax,
  scm_read_vector, scm_read_array): Add 'opts' as an additional
  parameter, and use it to look up read options.  Previously the global
  read options were consulted directly.
2012-10-23 22:42:38 -04:00
Mark H Weaver
603234c611 Minor tweaks to delimiter handling in read.c
* libguile/read.c (CHAR_IS_R5RS_DELIMITER, CHAR_IS_DELIMITER): Move the
  '[' and ']' delimiters from CHAR_IS_R5RS_DELIMITER to
  CHAR_IS_DELIMITER.  Parenthesize all references to the macro
  parameter.  Don't check the global square-brackets read option until
  after we know the character is '[' or ']'.
  (scm_read_sexp): Don't check the global square-brackets read option
  until after we know the character is ']'.
2012-10-23 22:42:34 -04:00
Mark H Weaver
493ceb99e5 Move array reader from arrays.c to read.c
* libguile/arrays.c (read_decimal_integer): Move to read.c.
  (scm_i_read_array): Remove.  Incorporate the code into the
  'scm_read_array' static function in read.c.

* libguile/arrays.h (scm_i_read_array): Remove prototype.

* libguile/read.c (read_decimal_integer): Move here from read.c.
  (scm_read_array): Incorporate the code from 'scm_i_read_array'.  Call
  'scm_read_vector' and 'scm_read_sexp' instead of 'scm_read'.
2012-10-23 22:42:30 -04:00
Ian Price
ead2496f73 Fix typo in scheme-using.texi
* doc/ref/scheme-using.texi (System Commands): Fix typo.
2012-10-18 00:12:33 -04:00
Ian Price
591065954c Fix @@ usage in --listen option
* module/ice-9/command-line.scm (compile-shell-switches): Fix usage of
  @@, which no longer supports arbitrary expressions, only identifiers.
2012-10-18 00:08:13 -04:00
Mark H Weaver
b3a2259ce3 Remove prototype for scm_read_token, which does not exist.
* libguile/read.h: Remove prototype for scm_read_token.
2012-10-17 04:48:43 -04:00
Mark H Weaver
495797ceb5 Improve formatting of options help given long option names
* module/ice-9/boot-9.scm (define-option-interface): When printing
  options help, e.g. for (read-options 'help), expand the width of the
  first column by another tab stop, to accommodate option names of up to
  23 characters.
2012-10-17 04:48:40 -04:00
Ludovic Courtès
f865ffaab1 web: Fix possible file descriptor leak in `open-socket-for-uri'.
* module/web/client.scm (open-socket-for-uri): Always close S in the
  `system-error' handler.
2012-10-13 21:13:10 +02:00
Ludovic Courtès
d74fcce9b9 web: Pass `AI_NUMERICSERV' when given a port number.
* module/web/client.scm (open-socket-for-uri)[addresses]: Pass
  AI_NUMERICSERV as the `getaddrinfo' hint when (uri-port URI) is true.
2012-10-12 23:21:39 +02:00
Ludovic Courtès
2663411bd7 web: Change `http-get' to try all the addresses for the given URI.
* module/web/client.scm (open-socket-for-uri): Try all the addresses
  returned by `getaddrinfo' until one succeeds.
2012-10-12 23:21:39 +02:00
Ludovic Courtès
8ac870dee4 Implement `hash' for structs.
* libguile/hash.c (scm_hasher): Call `scm_i_struct_hash' upon
  `scm_tcs_struct'.
* libguile/struct.c (scm_i_struct_hash): New function.
* libguile/struct.h (scm_i_struct_hash): New declaration.

* test-suite/tests/structs.test ("hash"): New test prefix.
2012-10-12 23:21:39 +02:00
Mark H Weaver
6996f07f57 Thanks Daniel Hartwig.
* THANKS (Contributors since the last release): Add Daniel Hartwig.
2012-10-12 08:26:34 -04:00
Daniel Hartwig
5f085775ab In string-split, add support for character sets and predicates.
* libguile/srfi-13.c (string-split): Add support for splitting on
  character sets and predicates, like string-index and others.
* test-suite/tests/strings.test (string-split): Add tests covering
  the new argument types.
* doc/ref/api-data.texi (string-split): Update.

Signed-off-by: Mark H Weaver <mhw@netris.org>
2012-10-12 08:15:08 -04:00
Mark H Weaver
8b22ced1c9 Revert "Preserve keyword identifier in 'syntax-rules' and 'define-syntax-rule'"
This reverts commit 3e3d32dd9b.
2012-10-10 13:13:19 -04:00
Mark H Weaver
3e3d32dd9b Preserve keyword identifier in 'syntax-rules' and 'define-syntax-rule'
* module/ice-9/psyntax-pp.scm (syntax-rule, define-syntax-rule):
  Preserve the keyword identifier.

* module/ice-9/psyntax-pp.scm: Regenerate.
2012-10-08 14:08:43 -04:00
Mark H Weaver
75a5de18a0 Simplify calls to 'eqv?' when one argument is an immediate constant.
* module/language/tree-il/primitives.scm (maybe-simplify-to-eq): New
  helper procedure shared by expanders for 'eqv?' and 'equal?'.
  (*primitive-expand-table*): Add expansion rule for 'eqv?'.

* test-suite/tests/tree-il.test ("primitives"): Add tests.
2012-10-08 11:56:10 -04:00
Mark H Weaver
bcf87e35e1 Don't simplify 'equal?' to 'not' or 'null?'.
* module/language/tree-il/primitives.scm (*primitive-expand-table*):
  Don't simplify 'equal?' to 'not' or 'null?', but only to 'eq?'.

* test-suite/tests/tree-il.test ("primitives"): Adjust tests.
2012-10-08 00:37:09 -04:00
Mark H Weaver
ebd363161e Don't simplify 'equal?' to 'eq?' when constant is an *inexact* small integer.
* module/language/tree-il/primitives.scm (*primitive-expand-table*):
  Refine test for fixnums to verify that the small integer is exact.

* test-suite/tests/tree-il.test ("primitives"): Add test.
2012-10-07 23:57:13 -04:00
Ludovic Courtès
2446f8e126 Simplify calls to `equal?' when one argument is a constant.
* module/language/tree-il/primitives.scm (*primitive-expand-table*): Add
  expansion rules for `equal?', when called with one constant and
  another argument.

* test-suite/tests/tree-il.test (pass-if-primitives-resolved): New
  macro.
  ("primitives"): New test prefix.
2012-10-06 22:34:00 +02:00
Mark H Weaver
226a56a3d4 Improve error reporting in 'append!'
* libguile/list.c (scm_append_x): Report correct argument number when
  validating arguments.  Validate that the last cdr of each argument is
  null or nil.  Rename formal rest argument from 'lists' to 'args'.

* test-suite/tests/list.test (append!): Update tests to expect correct
  handling of improper lists.
2012-10-06 06:04:29 -04:00
Mark H Weaver
88644a10d8 Change inappropriate uses of expect-fail X to pass-if not X in chars.test
* test-suite/tests/chars.test (basic char handling): Change
  inappropriate uses of 'expect-fail' to 'pass-if' with 'not' applied to
  the test.
2012-10-04 07:57:27 -04:00
Chris K. Jester-Young
d6e1c8bfdb In fold-matches, set regexp/notbol unless matching string start.
* module/ice-9/regex.scm (fold-matches): Set regexp/notbol if the
  starting position is nonzero.
* test-suite/tests/regexp.test (fold-matches): Check that when
  matching /^foo/ against "foofoofoofoo", only one match results.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2012-09-26 23:46:05 +02:00
Ludovic Courtès
b6aedd68bc Don't stat(2) and access(2) the .go location before using it.
* module/system/base/compile.scm (ensure-directory): Rename to...
  (ensure-directory): ... this.  Update callers.  When ERRNO is EEXIST,
  assume DIR is a writable directory instead of calling `stat' and
  `access?' again.  Fixes UID/EUID mismatches for setuid binaries.
  Reported by rixed@happyleptic.org at
  <http://lists.gnu.org/archive/html/guile-user/2012-06/msg00023.html>.
2012-09-11 23:44:59 +02:00
Ludovic Courtès
e7350baf1e Rewrite SRFI-31 in terms of `syntax-rules'.
* module/srfi/srfi-31.scm: Use `#:export' instead of `#:export-syntax'.
  (rec): Rewrite using `syntax-rules'.

* test-suite/tests/srfi-31.test ("rec special form"): Change exception
  type to EXCEPTION:SYNTAX-PATTERN-UNMATCHED.
2012-09-11 23:39:32 +02:00
Ian Price
9855388378 Document (ice-9 curried definitions)
* doc/ref/Makefile.am (guile_TEXINFOS): Add curried.texi to list
* doc/ref/curried.texi: New file.
* doc/ref/guile.texi (Guile Modules): Add "Curried Definitions" to menu.
* doc/ref/scheme-ideas.texi (Lambda Alternatives): Refer to "Curried Definitions"
  from the `define' section.
2012-09-06 22:15:40 +01:00
Ian Price
4aaceda29f `define-public' is no a longer curried definition by default.
* module/ice-9/boot-9.scm (define-public): Remove currying functionality.
* module/ice-9/curried-definitions.scm (define-public): New export.
2012-09-06 13:08:33 +01:00
Ludovic Courtès
068adc1980 build: Fix race between installing guild' and the guile-tools' symlink.
Fixes <http://bugs.gnu.org/12015>.
Report and patch by Song.Li <Song.Li@windriver.com>.

* meta/Makefile.am (install-data-hook): Rename to...
  (install-exec-hook): ... this.
2012-09-03 22:40:46 +02:00
Ludovic Courtès
8a84f7fb46 doc: Use scm_{to,from}_double instead of old API in example.
Fixed <http://bugs.gnu.org/12241>.
Reported by Kurt W. Gochko <kgochko@comcast.net>.

* doc/ref/tour.texi (Writing Guile Extensions): Change example to use
  scm_{to,from}_double instead of the pre-1.8 API.
2012-09-03 22:35:33 +02:00
Ludovic Courtès
a8872c78a4 build: Use Automake's `color-tests'.
* configure.ac: Use Automake's `color-tests'.
2012-09-03 22:33:45 +02:00
Ian Price
d6bd182618 ISO 8601 time format specifies zero padding for hours, not blank padding.
* doc/ref/srfi-modules.texi ("SRFI-19 Date to string"): Fix iso 8601 format strings.
* module/srfi/srfi-19.scm (directives): Fix iso 8601 format strings.
2012-08-27 00:10:44 +02:00