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

14224 commits

Author SHA1 Message Date
Andy Wingo
ec7f624d65 re-enable the after-gc-hook
* libguile/gc.c (scm_gc): No need to take a mutex here.  Don't run the
  hook, the hook will run itself.
  (scm_c_register_gc_callback): New private helper, registers a callback
  the next time GC happens.
  (system_gc_callback): Guile's internal callback that runs
  scm_after_gc_c_hook, which itself queues a call to the after-gc-hook.
  (scm_storage_prehistory): Queue up a call to system_gc_callback.
2011-02-24 16:30:08 +01:00
Andy Wingo
574b7be0ba pointerless backing buffers for string ports
* libguile/strports.c (scm_mkstrport): String port string buffer
  allocated atomically.
2011-02-24 13:12:58 +01:00
Andy Wingo
b2548e2344 errno saving in display_string
* libguile/print.c (display_string): Fix a case in which perhaps `errno'
  could have been stompled.
2011-02-24 13:10:16 +01:00
Andy Wingo
a964aa62c2 web server more assiduous about closing ports
* module/web/uri.scm:
* module/web/server.scm (call-with-output-string*):
  (call-with-output-bytevector*): Local procs to output to strings or
  bytevectors, *and then close the port*.  We can't make this change in
  call-with-output-string because it would be incompatible.

* module/web/uri.scm (call-with-encoded-output-string, decode-string)
  (uri-decode)
* module/web/server.scm (call-with-encoded-output-string): Use the new
  helpers.
2011-02-24 11:10:49 +01:00
Andy Wingo
4a2ac0623c open-pipe* pumps pipes guardian
* module/ice-9/popen.scm (open-pipe*): Hack around the lack of an
  after-gc hook, and pump the pipes guardian here in the procedure that
  adds to the guardian.
2011-02-23 21:04:26 +01:00
Andy Wingo
40d2a0076a GC dead links in weak hash tables before a possible rehash
* libguile/hashtab.c (vacuum_weak_hash_table): New helper, goes through
  the entirety of a weak hash table, vacuuming dead entries.
  (scm_hash_fn_create_handle_x): If when adding to a weak hash table, we
  would trigger a rehash, vacuum the table first.  The weak_bucket_assoc
  would have only caught dead entries within one bucket.

  Without this patch, the following code leaks:

  (let lp ()
    (call-with-output-string
      (lambda (port)
        (display "foo" port)))
    (lp))
2011-02-23 11:59:38 +01:00
Mark H Weaver
85bdb6ac9c Portability fix for new log and log10
* libguile/numbers.c: Define M_LN2 if it's not already defined.
  Fix error in comment.
2011-02-22 21:04:08 -05:00
Ludovic Courtès
da0c22b5d3 Fix a bug in `vhash-delete'.
* module/ice-9/vlist.scm (vhash-delete): Honor HASH.
* test-suite/tests/vlist.test ("vhash")["vhash-delete honors HASH"]: New test.
2011-02-22 00:37:26 +01:00
Ludovic Courtès
1e1808c920 Use vhash-delq' in (language tree-il analyze)'.
* module/language/tree-il/analyze.scm (unbound-variable-analysis): Use
  `vhash-delq' instead of `vhash-delete'.
2011-02-22 00:32:42 +01:00
Ludovic Courtès
2a39def1a8 Optimize `vhash-delete'.
* module/ice-9/vlist.scm (vhash-delete): Check whether KEY is in VHASH
  and return VHASH if it's not.
2011-02-22 00:32:42 +01:00
Ludovic Courtès
8bc5b79df7 Add omitted exports from `(ice-9 vlist)'.
* module/ice-9/vlist.scm: Export `vhash-delq' and `vhash-delv'.
2011-02-22 00:32:42 +01:00
Ludovic Courtès
9d798af739 Compile `(rnrs)' after all other RNRS modules, potentially.
* module/Makefile.am (RNRS_SOURCES): Move `rnrs.scm' last.
2011-02-22 00:32:42 +01:00
Ludovic Courtès
630b6588b7 Make `(rnrs base)' independent of other rnrs modules.
* module/rnrs/base.scm (define-proxy): New macro.
  (raise, condition, make-error, make-assertion-violation,
  make-who-condition, make-message-condition, make-irritants-condition):
  Use it.
2011-02-22 00:32:39 +01:00
Andy Wingo
0e8a11c49a update examples in manual to use PKG_CHECK_MODULES
* doc/ref/autoconf.texi (Using Autoconf Macros): Switch example to use
  PKG_CHECK_MODULES.
* doc/ref/libguile-linking.texi (A Sample Guile Main Program): Likewise,
  and change from configure.in to configure.ac, and recommend
  autoreconf.
2011-02-20 22:08:27 +01:00
Andy Wingo
097a793b22 pkg-config instead of guile-config in manuals
* doc/ref/api-options.texi (Build Config):
* doc/ref/libguile-linking.texi (Linking Programs With Guile):
  (A Sample Guile Main Program):
* doc/ref/libguile-smobs.texi (The Complete Example): Use pkg-config in
  the examples instead of guile-config.
2011-02-20 21:43:19 +01:00
Andy Wingo
f244cc5154 tour.texi compilation fix
* doc/ref/tour.texi (Writing Guile Extensions): Fix compilation
  example.
2011-02-20 15:01:37 +01:00
Andy Wingo
4b93693dff @value{EFFECTIVE-VERSION} instead of 2.0 in some places in the manual
* doc/ref/history.texi (A Timeline of Selected Guile Releases): Update
  the 2.0 release blurb.

* doc/ref/api-foreign.texi (Modules and Extensions):
* doc/ref/libguile-extensions.texi (A Sample Guile Extension):
* doc/ref/tour.texi (Linking Guile into Programs): Use
  @value{EFFECTIVE-VERSION} instead of 2.0.  Also fix sample extension
  compilation line to include the Guile CFLAGS.
2011-02-20 13:16:37 +01:00
Bruno Haible
1867d3e019 guile.m4: Add support for linking against guile with rpath.
* guile.m4 (GUILE_FLAGS): Also set GUILE_LIBS and GUILE_LTLIBS. Fix
  documentation.
2011-02-20 11:50:10 +01:00
Neil Jerram
5ec48b7045 Fix typos in (web ...) doc
* doc/ref/web.texi (Types and the Web): "help" -> "helpful".
  (HTTP): Add closing paren.  Remove code that looks like a leftover.
2011-02-18 23:11:49 +00:00
Neil Jerram
e888334c27 Last (for a little while) GOOPs doc fix
* doc/ref/goops.texi (GOOPS Object Miscellany): Clarify that it would
  be instances being printed, not classes.
2011-02-18 23:10:54 +00:00
Neil Jerram
27643d7097 Remove unneeded fixme
* doc/ref/goops.texi (Class Definition Protocol): Removed `*fixme
  Need to insert something here about checking that the value is not
  unbound'.  It's a fine detail, and also I imagine there could be a
  valid application that would choose to allow SCM_GOOPS_UNBOUND
  values to escape through here.
2011-02-18 22:53:57 +00:00
Neil Jerram
bba1a2c73d Tidy up remaining bits of the MOP section
* doc/ref/goops.texi (Method Definition): Unindent text about
  define-method invoking add-method!.
  (Method Definition Internals): Add @noindent's.
  (Generic Function Invocation): Add intro text, and tidy up the tree.
2011-02-18 22:46:02 +00:00
Neil Jerram
ed478161f3 Clean up doc on class redefinition and instance class changing
* doc/ref/goops.texi (Class Redefinition): Deleted, with its material
  all merged into later `Redefining a Class' and `Changing the Class of
  an Instance' sections.
2011-02-18 22:15:11 +00:00
Neil Jerram
b0fc1b9f37 Merge orphan Class Options section into Class Definition
* doc/ref/goops.texi (Class Definition): Move material from later
  `Class Options' section to here.
2011-02-18 20:50:55 +00:00
Neil Jerram
d9ff8506b3 Doc of MOP for instance and class creation
* doc/ref/goops.texi (Instance Creation Protocol): Rename from
  `Customizing Instance Creation', and move before the more
  complicated class definition stuff.  Couple of very minor edits.

  (Class Definition Protocol): Remove ensure-metaclass-with-supers
  (too internal) and repeated material.  Move class-redefinition
  stuff to (existing) later section on that.  Merge reference-like
  material from `Customizing Class Definition' to here.
2011-02-18 20:10:39 +00:00
Neil Jerram
476a51eb38 Summarize class definition protocol
* doc/ref/goops.texi (Class Definition Protocol): Add tree summary
  diagram.
2011-02-18 20:10:39 +00:00
Neil Jerram
a46f77f95c Work on GOOPS MOP documentation
* doc/ref/goops.texi (The Metaobject Protocol): Simplify intro text.
  Minor edits and simplifications throughout this section.
  (Metaobjects and the Metaobject Protocol): Insert "default".
  (Metaclasses): Renamed from `Terminology', and deleted the material
  on CPL and accessors, which just duplicated what has already been
  covered earlier in the chapter.  Remove statements that confuse
  whether "metaclass of" means "class of class of" or "class of
  (something that is itself a class)".  (I think it's actually the
  latter.)
  (Class Definition Protocol): Renamed from `Class Definition
  Internals'.
2011-02-18 20:10:38 +00:00
Neil Jerram
8fa6525e82 Rewording for "make an intervention".
* doc/ref/compiler.texi (Extending the Compiler): Rephrase first sentence.
2011-02-18 20:08:59 +00:00
Neil Jerram
6bc746d865 No sublimated desires
* doc/ref/compiler.texi: Delete "subliminated".
2011-02-18 20:08:54 +00:00
Andy Wingo
3e05fc0466 fix a couple leaks in ports.c. thanks valgrind!
* libguile/ports.c (scm_i_remove_port): Fix a case in which ports
  explictly closed via close-port would leak their iconv_t data.
  (scm_set_port_encoding_x): scm_i_set_port_encoding_x strdups its
  argument, so we need to free the locale encoding of the incoming str.
2011-02-18 19:28:37 +01:00
Andy Wingo
6854c32480 core modules use (ice-9 binary-ports) instead of (rnrs io ports)
* module/language/assembly/compile-bytecode.scm:
* module/language/elisp/lexer.scm:
* module/web/request.scm:
* module/web/response.scm:
* module/web/server.scm:
* module/web/uri.scm: Use ice-9 binary-ports.
2011-02-18 16:01:25 +01:00
Andy Wingo
dd0d987fbd add (ice-9 binary-ports)
* module/ice-9/binary-ports.scm: New module.
* module/Makefile.am: Add to makefile.

* module/rnrs/io/ports.scm: Re-export bindings from (ice-9 binary
  ports).  This will allow the compiler to not pull (rnrs) into its
  included module set.
2011-02-18 16:01:21 +01:00
Andy Wingo
7e23d9d0f1 update extension example in manual
* doc/ref/libguile-extensions.texi (A Sample Guile Extension): Fix use
  of deprecated functions.
2011-02-18 09:38:34 +01:00
Ludovic Courtès
958a28e9fe Change tag naming convention to `vX.Y.Z'.
* configure.ac: Tell `git-version-gen' that we're switching to a
  `vX.Y.Z' scheme for release tags.
2011-02-16 10:25:23 +01:00
Mark H Weaver
a5f6b751be Improvements to log' and log10'
* libguile/numbers.c (log_of_shifted_double, log_of_exact_integer,
  log_of_exact_integer_with_size, log_of_fraction): New internal static
  functions used by scm_log and scm_log10.

  (scm_log, scm_log10): Robustly handle large integers, large and small
  fractions, and fractions close to 1.  Previously, computing logarithms
  of fractions close to 1 yielded grossly inaccurate results, and the
  other cases yielded infinities even though the answer could easily fit
  in a double.  (log -0.0) now returns -inf.0+<PI>i, where previously it
  returned -inf.0.  (log 0) now throws a numerical overflow exception,
  where previously it returned -inf.0.  (log 0.0) still returns -inf.0.
  Analogous changes made to `log10'.

* test-suite/tests/numbers.test (log, log10): Add tests.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2011-02-16 00:40:35 +01:00
Mark H Weaver
c05696aa94 Fix comment above number-theoretic division tests
* test-suite/tests/numbers.test: Fix comment.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2011-02-16 00:40:11 +01:00
Ludovic Courtès
7bfedb8707 Switch to 2.0.0.
* GUILE-VERSION (GUILE_MAJOR_VERSION, GUILE_MINOR_VERSION,
  GUILE_MINOR_VERSION): 2.0.0!
2011-02-15 16:45:20 +01:00
Ludovic Courtès
1d82efbceb Increment `LIBGUILE_INTERFACE_CURRENT'.
* GUILE-VERSION (LIBGUILE_INTERFACE_CURRENT): Set to 22, i.e.,
  Guile 1.8.8 + 1.
2011-02-15 16:44:00 +01:00
Ludovic Courtès
28b9264d5b Update `doc/example-smob'.
* doc/example-smob/Makefile (CFLAGS, LIBS): Use `pkg-config' instead of
  `guile-config'.

* doc/example-smob/image-type.c (mark_image, free_image): Remove.
  (init_image_type): Don't call `scm_set_smob_mark' and
  `scm_set_smob_free'.
2011-02-15 16:40:27 +01:00
Mark H Weaver
c15fe4999a Use trunc in scm_i_inexact_truncate_divide
* libguile/numbers.c (scm_i_inexact_truncate_divide): Use trunc instead
  of floor and ceil.  Important for consistency with
  scm_truncate_quotient and scm_truncate_remainder.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2011-02-15 14:31:40 +01:00
Ludovic Courtès
14d2ee3116 Document `%auto-compilation-options'.
* doc/ref/api-evaluation.texi (Compilation): Emphasize
  auto-compilation.  Document `%auto-compilation-options'.
2011-02-15 12:31:02 +01:00
Ludovic Courtès
bb5b36d069 Fix compilation of `c-tokenize.c' in a cross-compile setup.
* libguile/Makefile.am (c-tokenize.$(OBJEXT)): When cross-compiling,
  don't include any CPPFLAGS since we could end up seeing Gnulib's
  replacements, e.g., `rpl_malloc', which we can't use.
2011-02-15 12:15:02 +01:00
Ludovic Courtès
cae0945c83 Use all the LDFLAGS from Gnulib.
* libguile/Makefile.am (version_info): New variable.
  (libguile_@GUILE_EFFECTIVE_VERSION@_la_LIBADD): Remove
  `$(LTLIBUNISTRING) $(LTLIBICONV) $(LTLIBINTL)'.
  (libguile_@GUILE_EFFECTIVE_VERSION@_la_LDFLAGS): Add all the flags
  from Gnulib, one per line as in the `gnulib-tool' output, including
  those above.
2011-02-15 12:07:49 +01:00
Ludovic Courtès
3baebe115e Remove Gnulib's `sockets' module from the import list.
* m4/gnulib-cache.m4: Remove `sockets', which we don't directly depend
  on.
2011-02-15 11:52:43 +01:00
Ludovic Courtès
b81eb64633 Import Gnulib's log1p' and round' modules.
From Gnulib v0.0-4889-ge375fe3.

* m4/gnulib-cache.m4: Add `log1p' and `round', requested by
  Mark H Weaver <mhw@netris.org>.
  Use `malloc-gnu' instead of `malloc', the latter being obsolete.
2011-02-15 11:29:37 +01:00
Andy Wingo
d9f464726d remove 1.9 changes from NEWS (leaving only 2.0)
* NEWS: Compress year range (as allowed by standards and note in
  README).  Remove 1.9.15->2.0 changes, leaving only 2.0 changes.
2011-02-15 09:29:54 +01:00
Mark H Weaver
c251ab631e Use trunc instead of scm_c_truncate
* libguile/numbers.c (scm_c_truncate, scm_truncate_number,
  scm_i_inexact_truncate_quotient, scm_i_inexact_truncate_remainder):
  Use trunc directly, now that we have its gnulib module.
2011-02-15 09:20:35 +01:00
Mark H Weaver
a6b087be1b Fix minor errors in docs of division operators
* doc/ref/api-data.texi (Arithmetic): The R5RS `quotient', `remainder',
  and `modulo' operators are exact-integer-only operators.  `modulo' is
  equivalent to `floor-remainder', not `floor-quotient'.
2011-02-15 09:20:17 +01:00
Andy Wingo
79b3863d8c news tweak
* NEWS: Tweak
2011-02-14 23:27:50 +01:00
Andy Wingo
b47fea090f add more NEWS
* NEWS: Add new NEWS and fold into main text.
2011-02-14 23:26:18 +01:00