From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Thien-Thi Nguyen Newsgroups: gmane.lisp.guile.user,gmane.lisp.guile.sources Subject: Guile 1.4.1.108 available Date: Wed, 12 Sep 2007 16:00:17 +0200 Message-ID: NNTP-Posting-Host: lo.gmane.org X-Trace: sea.gmane.org 1189605851 18888 80.91.229.12 (12 Sep 2007 14:04:11 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Wed, 12 Sep 2007 14:04:11 +0000 (UTC) Cc: guile-user@gnu.org To: guile-sources@gnu.org Original-X-From: guile-user-bounces+guile-user=m.gmane.org@gnu.org Wed Sep 12 16:04:02 2007 Return-path: Envelope-to: guile-user@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1IVSmu-0004aw-PQ for guile-user@m.gmane.org; Wed, 12 Sep 2007 16:01:53 +0200 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1IVSmu-0003ri-Ik for guile-user@m.gmane.org; Wed, 12 Sep 2007 10:01:52 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1IVSmn-0003pp-VZ for guile-user@gnu.org; Wed, 12 Sep 2007 10:01:46 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1IVSmn-0003p6-A8 for guile-user@gnu.org; Wed, 12 Sep 2007 10:01:45 -0400 Original-Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1IVSmj-0003m5-VW; Wed, 12 Sep 2007 10:01:42 -0400 Original-Received: from ppp-93-39.21-151.libero.it ([151.21.39.93] helo=ambire) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1IVSmi-0006ES-Qp; Wed, 12 Sep 2007 10:01:41 -0400 Original-Received: from ttn by ambire with local (Exim 4.63) (envelope-from ) id 1IVSlN-0000W9-NX; Wed, 12 Sep 2007 16:00:17 +0200 X-Detected-Kernel: Genre and OS details not recognized. X-BeenThere: guile-user@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: General Guile related discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: guile-user-bounces+guile-user=m.gmane.org@gnu.org Errors-To: guile-user-bounces+guile-user=m.gmane.org@gnu.org Xref: news.gmane.org gmane.lisp.guile.user:6144 gmane.lisp.guile.sources:286 Archived-At: release notes: usual assortment of bugfixes plus new stuff. on the meta level, although i haven't given up hope of regaining cvs write privs to the GNU Guile repo, the license and copyright notice changes in .108 reflect a realization that such privs maybe aren't so desirable after all. the GPL is flesh holding coded uneroded bones; let the stubborn will supply spark to bring motion to old stones. meth(odology)heads will note shellscript am/sofix. probably we can turn that into a guile-tools scheme script rather easily. slowly creeping up on full $src/module.scm -> $inst/module.so flow; a little C parsing to go, that's all... next step, get emacs' vc-git up to snuff and let 1.4.x spread all over! (note: this may take a few months/years, in parallel w/ all the other "next steps" in the works.) thi NEWS excerpt: - 1.4.1.108 | 2007-09-12 - license now straight GPL NB: This differs from other versions of Guile which provide libguile under the GNU Lesser General Public License (LGPL). Guile 1.4.1.108 and derivatives are not to be lessened so. - new dependency: libgdbm This is to support new module (database gnudbm), a transplant of Guile-GDBM . Note that this is a hard-dependency; there is presently no option to disable it. - bugfix: SRFI-19 `date->julian-day' accounts for timezone offset - boot-9.scm procs now autoloaded + new module: (ice-9 cmdline-opts) These procs used to be available on boot, from module (guile): get-option for-next-option display-usage-report transform-usage-lambda They are now autoloaded into module (guile-user) from new module (ice-9 cmdline-opts). NB: Autoloading of (ice-9 cmdline-opts) into (guile-user) is a transition-easing feature and will be removed after 2008-04-20. Callers should arrange to import the module explicitly. - false-if-exception can take a sequence of expressions Before, somewhat strangely, you might see: (false-if-exception (write-line 1) 2) =| ERROR: Wrong number of arguments to # Now, you see: (false-if-exception (write-line 1) 2) =| 1 => 2 - new interpreter command-line option: -L DIR This prefixes DIR to `%load-path'. If specified multiple times, the directories accumulate in the order given. DIRs specified thusly take precedence over those in env var `GUILE_LOAD_PATH', but only after ~/.guile processing. - new (ice-9 rw) proc: read-string!/partial/never-fewer - new (ice-9 rw) proc: write-string!/partial/never-fewer Note that for reading, the interface is different than that of `read-string!/partial'. These procs are basically loops around their more-concisely-named sibling procs. - changes to (ice-9 gap-buffer) - make-gap-buffer now also takes integer or port INIT An integer specifies how much memory (in bytes) to allocate. (The user-visible buffer contents remains empty, however.) A port is read until drained. See "editing-buffer" below. - new procs: gb-char-after, gb-char-before These are also reflected in (ice-9 editing-buffer) bodies. See Emacs funcs `char-after' and `char-before' for details. - new (ice-9 editing-buffer) object property: filename: - new (ice-9 editing-buffer) proc: find-file-read-only - new (ice-9 editing-buffer) proc: find-file These are convenience procedures that make use of the new port INIT feature of the underlying gap-buffer. - changes to executable modules (scripts) - twerp2texi - better error if given -d but no -o The case where auto*-tools compatible dependency tracking is enabled but no output file is specified used to signal a mysterious wrong-type-arg error (because it is impossible to write a Makefile fragment without knowing a filename). Now, the situation is detected earlier and the error message is more to the point: "missing -o OUTFILE". - no more initial "generated file" comment This comment used to be output as the first line. Unfortunately, that interfered with `\input texinfo'. - new command-line option: --scheme-implied Procedure and variable entries used to unconditionally say "Scheme Procedure" or "Scheme Macro". Now, if the documentation is for a Scheme-only package (no C API), the "Scheme " part can be omitted by specifying `--scheme-implied' to the twerp2texi program, yielding simply "Procedure" or "Macro", respectively. - setsearchpath elements may be symbols You can now say `@twerpsetsearchpath (top_srcdir)', for example, to specify the environment variable `top_srcdir' in the search path. Null values, where (getenv VAR) => #f, are omitted. - nontrivial REQ/OPT/VAR output after "C Function" signature For "trivial" -- defined as either (zero? (+ req opt var)) or (zero? (+ opt var)) -- the output is as before. Otherwise, the output looks something like: -- C Function: scm_getpwuid (user) |0 |1 |0 -- C Function: scm_append (args) |0 |0 |1 - mkpimmc temporary catalog names based on output filename Previously, the temporary catalog names were hardcoded as .module-catalog, which interferes when the output filename is also .module-catalog. Now, the temporary catalog names are constructed by appending "TEM" to the output filename. - new command-line option for generate-autoload: --sexp This option inhibits display of the `define-module' form. Instead, the program displays (RESULT ...), with each RESULT being the form produced by applying `module-name/exports' to the respective arg. - default catalog for module-doc-coverage now ".module-catalog" It used to be "pre-inst.merged-module-catalog". - punify handles `(quote foo)' Such forms are now output as " 'foo" (note preceding space). - read-scheme-source includes line number for comments and whitespace - gxsed bugfixes Although it still fails many tests from the GNU Sed 4.1.5 test-suite (see Commentary for partial list), gxsed can be used for many "non-guru" stream editing tasks. NB: YMMV. - lint - bugfix: handle `(do (A B C) ...)' w/ non-pair C correctly Previously, C was assumed to be a parenthesized form, e.g., `(1+ i)', and lint died otherwise. Now a non-pair form in that position is handled as well. - new test: roaming A "roaming guest" is an imported binding that is unused and not re-exported (i.e., "not seated at the table"). If roaming guests are found, lint lists all guests, w/ status "-" (roaming) or "+" (situated somewhere). - c2doc changes - bugfix: no longer trip on SCM_REGISTER_PROC This C macro expands, like SCM_DEFINE, into a declaration that includes a count of the required, optional and variable arguments. Unlike SCM_DEFINE, however, the expansion does not include variable names. Previously, c2doc would signal a "sig not clean" error due to the mismatch between total argument count and the parsed arglist (which is always empty when via SCM_REGISTER_PROC). Now, this error is suppressed, and dummy args (arg1, arg2, ...) generated. - new support for "Emacs-style doc: comments" Less quoting, less pain. See database/gdbm.c for example (the extra asterisks help convince Emacs's CC Mode `c-indent-sexp' on the column-0 opening paren to take a break and leave things alone). See (info "(guile) guile-tools c2doc") for details. - formatted arglist includes "#(REQ OPT VAR)" suffix Before: (getpw [user]) (append [args ...]) Now: (getpw [user]#(0 1 0)) (append [args ...]#(0 0 1)) - changes to read-text-outline - uses pretty-print for display The parsed TREE used to be displayed with `write'. Now this is done with `(pretty-print TREE #:escape-strings? #t)'. - new spec: more-lines? BOOL Normally, only header lines are considered. Use `more-lines?' with a non-#f value to specify that non-header lines be included as well. The structure of the output will be the same, however a header that is not immediately followed by another will result in a string with embedded (and possibly trailing) newline chars. - pretty-print can return the string instead of sending it to PORT If PORT is #f, `pretty-print' from module (ice-9 pretty-print) returns the formatted-object string. - module (ice-9 testing-lib) outputs `misc-error' args prettily The reporter used to say: ... - arguments: ((misc-error "foo" "bad ~A: ~S" ("bar" "baz") #f)) Now it says: ... - in procedure foo: bad bar: "baz" - new (ice-9 gumm) proc: module-catalog-manager This proc accepts a keyword command with which you can interact with (query, config, rehash) Guile's module catalog subsystem. - GH_MODULE_LINK_FUNC and GH_NEEDY_MODULE_LINK_FUNC make forward decls These macros, installed in , now generate a forward declaration for the function immediately prior to its definition. This silences "gcc -Wmissing-prototypes" warnings. - more efficient support for compiled-module exports extraction Previously, scripts c2x and generate-autoload conspired (along w/ the help of guile-snarf.in for modules distributed w/ Guile) to embed into, and subsequently read out of, a compiled module the list of "exported procedures". This was implemented w/ a long C string and the external program strings(1), which was functional but not very pretty, especially since C strings over 509 bytes provoke a gcc warning. Now, embedding is subsumed by walking `scm_make_gsubr' over a table (actually a pair of tables, see libguile/modsup.h) and extraction from the name-table is done using only the external program `objdump' (plus some grotty text crawling). Thus we undo the bloatage introduced w/ Guile 1.4.1.103, although the approach still loses once the compiled module is stripped (so don't do that, or do it only after scanning). We hope someone will write module (database bfd) RSN, so as to be able to drop external program dependency altogether, thus transforming the grotty text crawling into grotty bfd_section crawling... - new boot-9.scm proc: unspecified This returns the "unspecified value". - new module: (ice-9 accumulate) - new config.status command: module-catalog-clean-local This is defined when you use macro GUILE_MODULE_CATALOG_PREP from guile.m4. See node "Autoconf Macros" in the manual. - new EXPERIMENTAL support for spec-based compiled-module loading A compiled module is a dynamically shared object library that follows certain conventions. Previously (and still to be supported for the forseeable future), the "version 0" of these conventions specifies a single opaque C thunk to be called to init the module. With this Guile release, we introduce a completely declarative mechanism comprising lots of C structs gathered into a single `struct scm_module_initspec', and appropriate module system (and guile-tools) support for mining this out of the module both at catalog-making (installation) and at run- (load/link-) time. The following can now be initialized by including in the initspec entries that specify their name and storage info: gsubrs (normal SCM* -> SCM as by GH_DEFPROC, for example), strings, symbols, keywords, "imported" objects. The latter covers both interpreter-provided objects (such as the proc `seek' or the number `SEEK_SET') as well as those that require upstream modules to be loaded prior to use (such as the procs from `(ice-9 q) q?' or `(database tmpfile) tmpfile'). Note that `(database tmpfile)' is itself a compiled module. Additionally, non-gsubr objects can also be declared for export. NB: This feature is considered VERY EXPERIMENTAL. Most likely after some real-world thrashing things will change incompatibly to better handle some currently unforseen situation or other. To underscore this status, there is (as yet) no documentation; see libguile/modules.[hc] and ice-9/boot-9/module-system.scm for the gory details. Use w/ caution! Remember to exhale! - maintenance uses GNU Autoconf 2.61 and GNU Libtool 1.5.24 tarball, online docs, etc, in dir: http://www.gnuvola.org/software/guile/ _______________________________________________ Guile-user mailing list Guile-user@gnu.org http://lists.gnu.org/mailman/listinfo/guile-user