[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Guile available

From: Thien-Thi Nguyen
Subject: Guile available
Date: Wed, 12 Sep 2007 16:00:17 +0200

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/ 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.)


NEWS excerpt:

  - | 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 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):
        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 #<procedure (expr)>
        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 address@hidden (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
        (getpw [user])
        (append [args ...])
        (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 <guile/modsup.h>, 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 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, 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:

reply via email to

[Prev in Thread] Current Thread [Next in Thread]