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

14224 commits

Author SHA1 Message Date
Andy Wingo
c32f0d6b87 stexi->shtml supports itemx
* module/texinfo/html.scm (entry, rules): Allow @itemx,
2011-01-25 17:59:45 +01:00
Ludovic Courtès
667230810b Install the current locale when starting the REPL.
* module/ice-9/top-repl.scm (top-repl): Install the current locale.
2011-01-24 23:37:46 +01:00
Ludovic Courtès
da288f50bf Remove useless branches in the port code.
* libguile/ports.c (scm_i_get_port_encoding): Remove useless `if'.
  (scm_set_port_encoding_x): Remove redundant `find_valid_encoding'
  call.
2011-01-24 23:15:18 +01:00
Ludovic Courtès
d9544bf012 Always initialize a port's encoding name.
* libguile/ports.c (scm_i_set_port_encoding_x): Always initialize
  PT->encoding to something non-NULL.  This fixes callers of
  `scm_encoding_error' such that they always pass a non-NULL encoding
  name.  Reported by Matei Conovici.
2011-01-24 23:15:18 +01:00
Andy Wingo
2116e65843 update the man page
* doc/guile.1: Update a bit.
2011-01-24 22:48:26 +01:00
Ludovic Courtès
eda0622095 Choose the input source file encoding in a locale-independent way.
This is so that compiling the same code on environments with different
locale settings yields the same result.

* module/system/base/compile.scm (compile-file): When ENC if #f, default
  to "UTF-8" instead of `(fluid-ref %default-port-encoding)'.

* doc/ref/api-evaluation.texi (Compilation): Document the default output
  file name and default source file encoding for `compile-file' and
  `guile-tools compile'.
2011-01-24 21:44:44 +01:00
Ludovic Courtès
bc03d89fa2 Remove unexpected non-ASCII character.
* module/language/tree-il/fix-letrec.scm: Replace U+2019 with an ASCII
  quote.  The iconv implementation on FreeBSD would immediately notice
  and bail out when reading it under a US-ASCII locale.
2011-01-23 23:43:50 +01:00
Ludovic Courtès
4325620f6d Rewrite scm_lfwrite_substr' in terms of scm_display'.
* libguile/ports.c (scm_lfwrite_substr): Rewrite in terms of
  `scm_display'.
2011-01-23 01:26:07 +01:00
Ludovic Courtès
a917871527 Remove `scm_lfwrite_str'.
* libguile/ports.c (scm_lfwrite_str): Remove.

* libguile/ports.h (scm_lfwrite_str): Remove declaration.

* libguile/numbers.c (scm_i_print_fraction): Use `scm_display' instead
  of `scm_lfwrite_str'.
2011-01-23 01:14:51 +01:00
Ludovic Courtès
23aad1505d Augment `THANKS'. 2011-01-23 00:37:25 +01:00
Ludovic Courtès
31d4d02be7 Hide the string escaping hacks.
* libguile/strings.c (scm_i_unistring_escapes_to_guile_escapes): Rename
  to...
  (unistring_escapes_to_guile_escapes): ... this.  Make `static'.
  (scm_i_unistring_escapes_to_r6rs_escapes): Rename to...
  (unistring_escapes_to_r6rs_escapes): ... this.  Make `static'.

* libguile/strings.h (scm_i_unistring_escapes_to_guile_escapes,
  scm_i_unistring_escapes_to_r6rs_escapes): Remove declarations.
2011-01-23 00:37:25 +01:00
Ludovic Courtès
f4bc4e5934 Rewrite read-char', display', etc. using iconv calls instead of libunistring.
Thanks to Bruno Haible for his suggestions.  See
<http://lists.gnu.org/archive/html/bug-libunistring/2010-09/msg00007.html>,
for details.

* libguile/ports.c (register_finalizer_for_port): Always register a
  finalizer for PORT.
  (finalize_port): Close ENTRY->input_cd and ENTRY->output_cd.
  (scm_new_port_table_entry): Initialize the `input_cd' and `output_cd'
  fields.
  (utf8_to_codepoint): New function.
  (get_codepoint): Rewrite to use `iconv' instead of libunistring.
  (scm_i_set_port_encoding_x): Initialize the `input_cd' and `output_cd'
  fields.
  (update_port_lf): Move upward.  Use `switch' instead of `if's.

* libguile/ports.h (scm_t_port)[input_cd, output_cd]: New fields.

* libguile/print.c (codepoint_to_utf8, display_string): New functions.
  (display_character): Use `display_string'.
  (write_combining_character): Likewise.
  (iprin1): Use `display_string' instead of `scm_lfwrite_str', and
  `display_character' instead of `scm_putc'.
  (write_character): Likewise.
  (write_character_escaped): New function.

* test-suite/tests/encoding-escapes.test ("display output
  escapes")["Rashomon"]: Use lower-case escapes.
  ["fake escape"]: New test.
2011-01-23 00:37:25 +01:00
Andy Wingo
8e43ed5d0b infinities are no longer integers
* libguile/numbers.c (scm_is_integer): Infinities are not integers, per
  the R6RS.
  (scm_even_p, scm_odd_p): Passing an infinity to even? or odd? is an
  error.

* test-suite/tests/numbers.test ("integer?"): Adapt test.
  ("expt"): Add tests for +inf.0 and -inf.0 exponents.

* NEWS: Add NEWS entries.
2011-01-23 00:06:24 +01:00
Andy Wingo
0715410946 web.texi fix
* doc/ref/web.texi (HTTP Headers): Fix transfer-encoding example.
2011-01-22 19:56:23 +01:00
Andy Wingo
cde24ce12b scm_with_guile calls GC_call_with_gc_active
* configure.ac: Check for GC_call_with_gc_active.

* libguile/threads.h (scm_i_thread): Remove "top", as it's not used.

* libguile/threads.c (with_gc_inactive, with_gc_active): Define shims to
  GC_do_blocking and GC_call_with_gc_active.
  (scm_i_init_thread_for_guile): Don't do thread base adjustment here,
  do it in scm_i_with_guile_and_parent.  The previous logic would never
  be run.
  (scm_i_with_guile_and_parent): If we enter Guile mode, leave it too.
  Take care of adjusting the thread stack base here too.  Also, call
  with_gc_active.
  (scm_without_guile): Refactor.
2011-01-22 19:55:31 +01:00
Andy Wingo
6d6b2d4fcd update NEWS for hungry-eol-escapes
* NEWS: Update for hungry-eol-escapes.
2011-01-21 09:24:36 +01:00
Andy Wingo
c869f0c157 document hungry-eol-escapes
* doc/ref/api-data.texi (String Syntax): Document hungry-eol-escapes.
* doc/ref/api-evaluation.texi (Scheme Read):
* doc/ref/api-options.texi (Runtime Options): Update read-options 'help
  output.
2011-01-21 09:24:36 +01:00
Andy Wingo
684d664e39 implement r6rs hungry escaped EOL
* libguile/private-options.h (SCM_HUNGRY_EOL_ESCAPES_P): New private
  option.
* libguile/read.c: Define SCM_HUNGRY_EOL_ESCAPES_P, defaulting to #f.
  (skip_intraline_whitespace): New helper.
  (scm_read_string): If SCM_HUNGRY_EOL_ESCAPES_P,
  skip_intraline_whitespace after an escaped EOL.

* test-suite/tests/reader.test ("read-options"): Add test.
2011-01-21 09:24:32 +01:00
Andy Wingo
b04f841d5f implement port-eof?
* module/rnrs/io/ports.scm (port-eof?): Implement.
* module/rnrs.scm: Re-export port-eof?.

* test-suite/tests/r6rs-ports.test ("7.2.5 End-of-File Object"): Add
  test.

Thanks to Göran Weinholt for the report.
2011-01-21 08:27:08 +01:00
Andy Wingo
dc78bee588 add NEWS for expt change
* NEWS: Update for Mark's expt patch.
2011-01-20 23:44:40 +01:00
Andy Wingo
7cd99cbad6 update NEWS for 1.9.14
* NEWS: Fold 1.9.14 entries into main text.
2011-01-20 23:39:56 +01:00
Mark H Weaver
01c7284ae5 Fix bugs in expt and integer-expt
* libguile/numbers.c (scm_expt): Fix bug that caused expt to throw an
  exception whenever the base was exact and the exponent was an
  inexact integer, e.g. (expt 5 6.0).

  (scm_expt): Fix bug that caused expt to introduce spurious imaginary
  parts in the result when the base was an inexact negative real and
  the exponent was an integer, e.g. (expt -1.0 2)

  (scm_integer_expt, scm_expt): Change behavior of (integer-expt 0 -1),
  and therefore also (expt 0 -1), to return NaN, per R6RS (actually,
  R6RS says we should throw an exception or return an "unspecified
  number object", but for now we use NaN).  Formerly we returned 0, per
  R5RS. R5RS claims that 0^x=0 for all non-zero x, but that's
  mathematically incorrect, and probably an oversight.

  (scm_integer_expt): Consistently throw a wrong-argument-type exception
  when the exponent is inexact.  Formerly, it didn't always check this
  if the base was 0, 1, or -1.

* test-suite/tests/numbers.test ("integer-expt", "expt"): Add tests.
2011-01-20 23:28:37 +01:00
Noah Lavine
b1846b7fb3 Add ECMAScript Unicode literal support
* module/language/ecmascript/tokenize.scm: add unicode literals

* test-suite/tests/ecmascript.test ("parser"): Add new tests for Latin-1
  and Unicode escapes in string literals.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2011-01-17 23:03:32 +01:00
Neil Jerram
a7d8a8a63b Add "REPORTING BUGS" and "COPYING" sections to Guile man page
Thanks to Mark Harig for the suggestion.

* doc/guile.1: Added "REPORTING BUGS" and "COPYING" sections, modelled
  on those in the Emacs man page.
2011-01-15 21:16:39 +00:00
Neil Jerram
91a60e5701 Document missing Guile command line options
Thanks to Mark Harig for pointing this out and suggesting the text.

* doc/ref/scheme-scripts.texi (Invoking Guile): Mention --autocompile
  and --no-autocompile.
2011-01-15 20:57:01 +00:00
Neil Jerram
24d386ac5b Manual page fixes
Thanks to Mark Harig for pointing these out.

* doc/guile.1: Remove mention of the tutorial, since it no longer
  exists (as a separate document).  Document the -q option.

* THANKS: Add Mark Harig.
2011-01-15 20:51:27 +00:00
Neil Jerram
0b452f2c53 Confront the MOP
* doc/ref/goops.texi (The Metaobject Protocol): Bring forward to
  before `Class Options', and add intro text to explain why.  All of
  the sections now remaining are ones where the MOP is more likely to
  be relevant than not.
2011-01-14 21:53:37 +00:00
Neil Jerram
12fe9fcf51 Move GOOPS Error Handling' to after Introspection'
* doc/ref/goops.texi (GOOPS Error Handling): Move to just after
  `Introspection'.
2011-01-14 21:23:54 +00:00
Neil Jerram
9320479a18 Move Handling Slot Access Errors' inside Accessing Slots'
* doc/ref/goops.texi (Accessing Slots): Move `Handling Slot Access
  Errors' here; update relevant references.
2011-01-14 21:19:51 +00:00
Neil Jerram
2cb8cf04b9 Merge small sections into `GOOPS Object Miscellany'
* doc/ref/goops.texi (GOOPS Object Miscellany): New section, combining
  previous `Object Comparison', `Cloning Objects' and `Write and
  Display'.  Replace `Object Comparison' text with something that
  makes sense.  Add a snippet to the end of the write/display section.
2011-01-14 20:34:41 +00:00
Neil Jerram
5f9b75a355 Remove content-free `Generic Functions and Accessors'
* doc/ref/goops.texi (GOOPS): Remove `Generic Functions and
  Accessors'.  There was nothing here that wasn't better covered
  elsewhere.
2011-01-14 20:10:33 +00:00
Neil Jerram
3617da95ab Move Accessing Slots' inside Introspection'.
* doc/ref/goops.texi (Introspection): Move `Accessing Slots' into
  here, and flatten it, except for `Handling Slot Access Errors'.
  (GOOPS Error Handling): Move `Handling Slot Access Errors' here.
2011-01-14 20:06:34 +00:00
Neil Jerram
c7b154588b Reorder `Introspection'
* doc/ref/goops.texi (Instances): Move `Instances' before `Slots', as
  it feels more important.
2011-01-14 20:03:34 +00:00
Neil Jerram
dc08a490e3 Edit `Introspection'
* doc/ref/goops.texi (Introspection): Make a bit snappier.
  (Classes): Add intro.  Remove "the" and "metaobject" everywhere.
  Remove `class-environment', since I don't know what it's useful for.
  (Instances): Remove implementation notes.
  (Built-in classes): Merge with `Instances'.  Reorder text points.
  (Generic Functions): Add intro.  Remove "the" and "metaobject"
  everywhere.
  (Generic Function Methods): Merge with `Generic Functions'.
2011-01-14 19:45:38 +00:00
Neil Jerram
62d7cba3d5 Move `Introspection' earlier
* doc/ref/goops.texi (Introspection): Move to after `Generic Functions
  and Methods'.  The idea is to have all of that sections that make
  sense without needing to understand the MOP, before sections that
  really depend on the MOP.
2011-01-14 19:08:46 +00:00
Neil Jerram
68f4fee187 Improve doc on generic functions and inheritance
* doc/ref/goops.texi (Methods and Generic Functions): More explanation
  of generic function invocation.  Created (or moved) subsections here
  to cover material on the following that was previously spread elsewhere:
  accessors; extending primitives; merging generics; generic function
  examples; handling invocation errors.  Edited for clarity throughout.
  (Generic functions and methods, Example): Nodes deleted, with their
  material incorporated above.
  (Class Precedence List): Edited to improve clarity.
  (Sorting Methods): New subsection.
2011-01-12 23:42:40 +00:00
Andy Wingo
2e6f5ea4cd web.texi defun -> deffn
* doc/ref/web.texi (URIs): Change instances of @defun to @deffn with
  {Scheme Procedure}.
2011-01-10 22:44:41 -08:00
Andy Wingo
f4ec6877bb more web.texi foo
* doc/ref/web.texi (Web Server, Web Examples): Update.
2011-01-10 22:44:41 -08:00
Andy Wingo
de54fb6d5e update web.text documentation for requests and responses
* doc/ref/web.texi (Requests, Responses): Update, and add a note on
  character encodings.
2011-01-10 22:44:41 -08:00
Andy Wingo
f944ee8f23 request and response cleanups
* module/web/request.scm (build-request): Make URI a positional
  argument.

* module/web/response.scm: Remove extend-response.
  (read-response): Fix a docstring.
* module/web/server.scm (extend-response): Include extend-response here,
  but not exported.
2011-01-10 22:44:41 -08:00
Andy Wingo
3475fbb572 (web response) and (web request): bodies are bytevectors
* module/web/request.scm (read-request-body, write-request-body): Rename
  from read-request-body/bytevector and
  write-request-body/bytevector.  Remove the /latin-1 variants, as they
  were unused and a bad idea.
* module/web/response.scm (read-response-body, write-response-body):
  Likewise.

* module/web/server/http.scm (http-read, http-write): Adapt to
  request/response change.

* test-suite/tests/web-request.test:
* test-suite/tests/web-response.test: Update tests.
2011-01-10 22:44:36 -08:00
Andy Wingo
ff8339db69 update web.texi for (web http) changes
* doc/ref/web.texi (HTTP Headers): Update to reflect current code, and
  to reformat. Not sure if it's an improvement...
2011-01-10 09:32:26 -08:00
Andy Wingo
ecfb7167cb parse credentials and challenges
* module/web/http.scm (parse-credentials, validate-credentials)
  (write-credentials, parse-challenge, parse-challenges)
  (validate-challenges, write-challenge, write-challenges)
  (declare-credentials-header!, declare-challenge-list-header!): New
  helpers.
  ("Authorization", "Proxy-Authorization"): Parse out credentials.
  ("Proxy-Authenticate", "WWW-Authenticate"): Parse out challenges.
2011-01-10 09:31:29 -08:00
Andy Wingo
94f16a5b8f more symbols in (web http)
* module/web/http.scm (declare-symbol-list-header!): New helper.
  ("Connection"): Redefine as a header list.
  ("Allow", "Content-Encoding", "Accept-Ranges"): Redefine as symbol
  lists.

* test-suite/tests/web-http.test:
* test-suite/tests/web-response.test: Adapt tests.
2011-01-08 21:32:14 -08:00
Andy Wingo
0acc595b94 (web http): keys are always symbols
* module/web/http.scm (parse-media-type): Parse media types as symbols.
  (parse-key-value-list, parse-param-component, parse-param-list):
  Change kons to val-parser. Always parse keys as symbols, and always
  either cons, if there is a val, or just have the key, if there is no
  val.  Easier to explain and just as correct.
  (declare-param-list-header!, declare-key-value-list-header!): Adapt to
  key-list and param-list kons change.
  ("Cache-Control", "Pragma", "Transfer-Encoding", "Accept", "Expect")
  ("TE"): Likewise, adapt.
  ("Content-Type"): Param keys are symbols.
2011-01-08 20:50:46 -08:00
Andy Wingo
32de1aa783 update (web http) docs
* doc/ref/web.texi (HTTP): Update docs to correspond with current code.
2011-01-08 15:20:28 -08:00
Andy Wingo
7118eccd72 (web http): don't expose header-decl objects
* module/web/http.scm: Change to not expose the header-decl objects,
  instead exposing header-parse, header-validator, header-writer et al.
  Explaining header decls in the manual was too complicated.
  (string->header, header->string): New helpers.
  (<header-decl>): Remove the `sym' field.
  (declare-header!): Adapt to header-decl change, and use
  string->header.
  (known-header?, header-parser, header-validator, header-writer): New
  procedures.

  Adapt to use the new procedures internally.
2011-01-08 11:40:20 -08:00
Andy Wingo
be1be3e597 (web http): header names always represented as symbols
* module/web/http.scm (declare-header!): No need to specify `sym', as it
  can be derived from `name'. Change to take parser, validator, and
  writer as positional arguments, and multiple? as a keyword.
  (parse-header): Change to take the header as a symbol already, and
  just return the parsed value.  All headers are symbols now, including
  unknown headers.  I feel OK doing this given that the symbol GC works
  now.
  (lookup-header-decl): Only look up headers by symbol.
  (read-header): Adapt to parse-header change.

  (valid-header?, write-header): Adapt to all headers being symbols.
  (split-header-names, list-of-header-names?, write-header-list):
  Represent all header names as symbols.

  (declare-opaque-header!, declare-date-header!)
  (declare-string-list-header!, declare-header-list-header!)
  (declare-integer-header!, declare-uri-header!)
  (declare-quality-list-header!, declare-param-list-header!)
  (declare-key-value-list-header!, declare-entity-tag-list-header!):
  Change to be functions instead of syntax, and no need to specify the
  symbolic name. Update all header declarations accordingly.

* module/web/request.scm (validate-headers):
* module/web/response.scm (validate-headers): Adapt to all headers being
  symbols.

* test-suite/tests/web-http.test (pass-if-parse, pass-if-any-error)
  (pass-if-parse-error): Update for parse-header change.
  ("general headers"): Update header list examples to be all symbols.
2011-01-08 10:54:07 -08:00
Andy Wingo
a574564c24 fix scm_from_stringn empty string case
* libguile/strings.c (scm_from_stringn): Fix empty string case
  (oops...).
2011-01-07 22:16:10 -08:00
Andy Wingo
2dd7d8ce7a fix tab completion in repl (doh)
* libguile/hashtab.c: Fix remaining vector hash table support.
* module/ice-9/session.scm (apropos-fold): Use a hash table instead of a
  vector for the completions.
2011-01-07 22:01:27 -08:00