guile-devel
[Top][All Lists]
Advanced

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

guile-vm status


From: Andy Wingo
Subject: guile-vm status
Date: Thu, 15 May 2008 23:59:32 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.0.60 (gnu/linux)

Hi all,

This guile-vm update pretty much lets guile-vm compile itself. There are
a couple of caveats: namely macros that unquote in scheme values don't
work, and compiling modules that depend on compiled modules that export
syncase macros won't work.

The first is a common idiom for avoiding hygiene problems in Guile, but
is uncompilable. The second is a byproduct of how psyntax.ss chooses to
expand macros:

    $ guile
    guile> (use-modules (ice-9 syncase))
    guile> (syncase '(define-syntax ppat
    ...   (syntax-rules (_ quote unquote)
    ...     ((_ v _ kt kf) kt)
    ...     ((_ v () kt kf) (if (null? v) kt kf))
    ...     ((_ v (quote lit) kt kf)
    ...      (if (equal? v (quote lit)) kt kf))
    ...     ((_ v (unquote var) kt kf) (let ((var v)) kt))
    ...     ((_ v (x . y) kt kf)
    ...      (if (pair? v)
    ...          (let ((vx (car v)) (vy (cdr v)))
    ...            (ppat vx x (ppat vy y kt kf) kf))
    ...          kf))
    ...     ((_ v lit kt kf) (if (equal? v (quote lit)) kt kf))))
    ... )
    $1 = (void)

So really, we are left with no information to write into the file,
although the side effects do persist during compilation. Perhaps there
is a better way to do this, but I suspect it involves compilation
phases, which would have to be linked to whole-module compiles, I think.
In the meantime, modules which export syncase macros probably shouldn't
be compiled. Defmacros do not have this problem.

Ludovic commented recently (can't reply, because my mail setup is a bit
borked atm, moving servers) about macro expansion. My perspective is
this: existing Guile code is much like Common Lisp in its compilation
model. We should support compilation of existing code using this model:
eval-when and such things.

Phased compilation a la r6rs is also interesting, but should be
implemented once phase 1 works.

Use-syntax is not well-suited to repurposing, as it already has a
meaning, although its semantics are not very good. We would do better to
implement r6 library syntax, which has much better defined semantics
than anything we could do. It also allows us to keep our existing
dynamic repl semantics.

Ludovic also mentioned the unusability of glil-pprint or whatever that
was. I normally just use the guile-vm repl's compile and disassemble
meta-commands, which is why I haven't seen it. I haven't fixed that
pprint yet.

Comments appreciated, regarding macro expansion, or the changes to the
semantics of `link', or whatever! More than anything, check it out and
give it a try:

  $ ./env guile
  guile> (use-modules (system repl repl)) (start-repl 'scheme)
  ... do your reply thing

Andy

The following changes since commit 0a5db6e11d0bc8b5f7f822d8b45015b9ac0fc367:
  Andy Wingo (1):
        add env script

are available in the git repository at:

  http://wingolog.org/git/guile-vm.git master

Andy Wingo (15):
      Update Makefile.am's; remove slib import
      fix env script
      remove x.foo.bar -> (slot x 'foo 'bar) compile-time translation
      (void) -> (begin)
      fix macro compilation via hooking into eval-case
      fix use-syntax / use-modules confusion -- fixes testsuites
      rework eval-case handling to be like cl's eval-when
      allow interpretation of load-toplevel as compile-toplevel
      fix dumping of #:keywords
      push the module resolution info for variables down into glil
      remove some debugging info
      `link' instruction links to symbols by module
      fix else in cond, letrec env corruption, syntax.scm compile, 
define-module side effects
      avoid zealous unquotation
      rudimentary syncase support; some dash symbol syncase removal

 Makefile.am                          |    1 +
 env                                  |    5 +-
 module/Makefile.am                   |   16 +-
 module/guile/slib.scm                |   40 -
 module/language/scheme/Makefile.am   |    7 +-
 module/language/scheme/translate.scm |  501 +-
 module/slib/.cvsignore               |    1 -
 module/slib/ANNOUNCE                 |  171 -
 module/slib/Bev2slib.scm             |   94 -
 module/slib/ChangeLog                | 2604 --------
 module/slib/DrScheme.init            |    6 -
 module/slib/FAQ                      |  217 -
 module/slib/Makefile                 |  333 -
 module/slib/README                   |  297 -
 module/slib/RScheme.init             |  290 -
 module/slib/STk.init                 |  256 -
 module/slib/Template.scm             |  282 -
 module/slib/alist.scm                |   66 -
 module/slib/alistab.scm              |  352 -
 module/slib/array.scm                |  279 -
 module/slib/arraymap.scm             |   78 -
 module/slib/batch.scm                |  454 --
 module/slib/bigloo.init              |  263 -
 module/slib/break.scm                |  149 -
 module/slib/byte.scm                 |   15 -
 module/slib/chap.scm                 |  150 -
 module/slib/charplot.scm             |  171 -
 module/slib/chez.init                |  396 --
 module/slib/cltime.scm               |   67 -
 module/slib/coerce.scm               |  107 -
 module/slib/coerce.txi               |   12 -
 module/slib/collect.scm              |  236 -
 module/slib/comlist.scm              |  328 -
 module/slib/comparse.scm             |   99 -
 module/slib/cring.scm                |  470 --
 module/slib/db2html.scm              |  463 --
 module/slib/db2html.txi              |  185 -
 module/slib/dbrowse.scm              |   92 -
 module/slib/dbutil.scm               |  313 -
 module/slib/debug.scm                |   98 -
 module/slib/defmacex.scm             |  100 -
 module/slib/determ.scm               |   14 -
 module/slib/dwindtst.scm             |   80 -
 module/slib/dynamic.scm              |   75 -
 module/slib/dynwind.scm              |   74 -
 module/slib/elk.init                 |  303 -
 module/slib/eval.scm                 |  146 -
 module/slib/factor.scm               |  245 -
 module/slib/factor.txi               |   56 -
 module/slib/fft.scm                  |   70 -
 module/slib/fluidlet.scm             |   40 -
 module/slib/fmtdoc.txi               |  434 --
 module/slib/format.scm               | 1675 -----
 module/slib/formatst.scm             |  647 --
 module/slib/gambit.init              |  301 -
 module/slib/genwrite.scm             |  266 -
 module/slib/getopt.scm               |   80 -
 module/slib/getparam.scm             |  213 -
 module/slib/glob.scm                 |  227 -
 module/slib/guile.init               |  232 -
 module/slib/hash.scm                 |  153 -
 module/slib/hashtab.scm              |   79 -
 module/slib/htmlform.scm             |  448 --
 module/slib/htmlform.txi             |  204 -
 module/slib/http-cgi.scm             |  438 --
 module/slib/http-cgi.txi             |  110 -
 module/slib/lineio.scm               |   82 -
 module/slib/lineio.txi               |   45 -
 module/slib/logical.scm              |  168 -
 module/slib/macrotst.scm             |   54 -
 module/slib/macscheme.init           |  276 -
 module/slib/macwork.scm              |  126 -
 module/slib/makcrc.scm               |   96 -
 module/slib/mbe.scm                  |  443 --
 module/slib/minimize.scm             |  114 -
 module/slib/minimize.txi             |   48 -
 module/slib/mitcomp.pat              | 1466 ----
 module/slib/mitscheme.init           |  283 -
 module/slib/mklibcat.scm             |  198 -
 module/slib/modular.scm              |  158 -
 module/slib/mulapply.scm             |   28 -
 module/slib/mularg.scm               |   12 -
 module/slib/mwdenote.scm             |  289 -
 module/slib/mwexpand.scm             |  565 --
 module/slib/mwsynrul.scm             |  343 -
 module/slib/nclients.scm             |  385 --
 module/slib/nclients.txi             |  103 -
 module/slib/obj2str.scm              |   63 -
 module/slib/obj2str.txi              |    9 -
 module/slib/objdoc.txi               |  238 -
 module/slib/object.scm               |   97 -
 module/slib/paramlst.scm             |  141 -
 module/slib/plottest.scm             |   47 -
 module/slib/pnm.scm                  |  213 -
 module/slib/pp.scm                   |   15 -
 module/slib/ppfile.scm               |   70 -
 module/slib/prec.scm                 |  448 --
 module/slib/printf.scm               |  584 --
 module/slib/priorque.scm             |  136 -
 module/slib/process.scm              |   68 -
 module/slib/promise.scm              |   29 -
 module/slib/pscheme.init             |  206 -
 module/slib/psxtime.scm              |  155 -
 module/slib/qp.scm                   |  149 -
 module/slib/queue.scm                |   72 -
 module/slib/r4rsyn.scm               |  542 --
 module/slib/randinex.scm             |  127 -
 module/slib/randinex.txi             |   56 -
 module/slib/random.scm               |  139 -
 module/slib/random.txi               |   55 -
 module/slib/ratize.scm               |   17 -
 module/slib/rdms.scm                 |  629 --
 module/slib/recobj.scm               |   55 -
 module/slib/record.scm               |  228 -
 module/slib/repl.scm                 |   92 -
 module/slib/report.scm               |  116 -
 module/slib/require.scm              |  274 -
 module/slib/root.scm                 |  217 -
 module/slib/sc2.scm                  |   66 -
 module/slib/sc4opt.scm               |   53 -
 module/slib/sc4sc3.scm               |   35 -
 module/slib/scaexpp.scm              | 2956 ---------
 module/slib/scaglob.scm              |   32 -
 module/slib/scainit.scm              |  104 -
 module/slib/scamacr.scm              |  181 -
 module/slib/scanf.scm                |  350 -
 module/slib/scaoutp.scm              |   93 -
 module/slib/scheme2c.init            |  304 -
 module/slib/scheme48.init            |  282 -
 module/slib/schmooz.scm              |  628 --
 module/slib/schmooz.texi             |  104 -
 module/slib/scm.init                 |    6 -
 module/slib/scmacro.scm              |  119 -
 module/slib/scmactst.scm             |  160 -
 module/slib/scsh.init                |  284 -
 module/slib/selfset.scm              |   28 -
 module/slib/sierpinski.scm           |   71 -
 module/slib/simetrix.scm             |  246 -
 module/slib/slib.info                |12187 ----------------------------------
 module/slib/slib.spec                |   85 -
 module/slib/slib.texi                |11142 -------------------------------
 module/slib/sort.scm                 |  154 -
 module/slib/soundex.scm              |   82 -
 module/slib/stdio.scm                |    8 -
 module/slib/strcase.scm              |   66 -
 module/slib/strport.scm              |   51 -
 module/slib/strsrch.scm              |  146 -
 module/slib/struct.scm               |  165 -
 module/slib/structst.scm             |   37 -
 module/slib/structure.scm            |   80 -
 module/slib/syncase.sh               |  146 -
 module/slib/synchk.scm               |  104 -
 module/slib/synclo.scm               |  748 ---
 module/slib/synrul.scm               |  327 -
 module/slib/t3.init                  |  437 --
 module/slib/tek40.scm                |   92 -
 module/slib/tek41.scm                |  147 -
 module/slib/timezone.scm             |  264 -
 module/slib/trace.scm                |  254 -
 module/slib/tree.scm                 |   62 -
 module/slib/trnscrpt.scm             |   76 -
 module/slib/tsort.scm                |   46 -
 module/slib/tzfile.scm               |  138 -
 module/slib/umbscheme.init           |  273 -
 module/slib/uri.scm                  |  318 -
 module/slib/uri.txi                  |   94 -
 module/slib/values.scm               |   27 -
 module/slib/version.txi              |    2 -
 module/slib/vscm.init                |  389 --
 module/slib/withfile.scm             |   82 -
 module/slib/wttest.scm               |  134 -
 module/slib/wttree.scm               |  790 ---
 module/slib/yasyn.scm                |  201 -
 module/system/Makefile.am            |    2 +-
 module/system/base/Makefile.am       |    8 +-
 module/system/base/compile.scm       |   12 +-
 module/system/base/syntax.scm        |   20 +-
 module/system/il/Makefile.am         |    3 +-
 module/system/il/compile.scm         |    8 +-
 module/system/il/ghil.scm            |   42 +-
 module/system/repl/Makefile.am       |    4 +-
 module/system/vm/Makefile.am         |    1 -
 module/system/vm/assemble.scm        |   10 +-
 src/vm_loader.c                      |   29 +-
 testsuite/t-match.scm                |    5 +-
 testsuite/t-records.scm              |   12 +-
 186 files changed, 308 insertions(+), 62547 deletions(-)
 delete mode 100644 module/guile/slib.scm
 delete mode 100644 module/slib/.cvsignore
 delete mode 100644 module/slib/ANNOUNCE
 delete mode 100644 module/slib/Bev2slib.scm
 delete mode 100644 module/slib/ChangeLog
 delete mode 100644 module/slib/DrScheme.init
 delete mode 100644 module/slib/FAQ
 delete mode 100644 module/slib/Makefile
 delete mode 100644 module/slib/README
 delete mode 100644 module/slib/RScheme.init
 delete mode 100644 module/slib/STk.init
 delete mode 100644 module/slib/Template.scm
 delete mode 100644 module/slib/alist.scm
 delete mode 100644 module/slib/alistab.scm
 delete mode 100644 module/slib/array.scm
 delete mode 100644 module/slib/arraymap.scm
 delete mode 100644 module/slib/batch.scm
 delete mode 100644 module/slib/bigloo.init
 delete mode 100644 module/slib/break.scm
 delete mode 100644 module/slib/byte.scm
 delete mode 100644 module/slib/chap.scm
 delete mode 100644 module/slib/charplot.scm
 delete mode 100644 module/slib/chez.init
 delete mode 100644 module/slib/cltime.scm
 delete mode 100644 module/slib/coerce.scm
 delete mode 100644 module/slib/coerce.txi
 delete mode 100644 module/slib/collect.scm
 delete mode 100644 module/slib/comlist.scm
 delete mode 100644 module/slib/comparse.scm
 delete mode 100644 module/slib/cring.scm
 delete mode 100644 module/slib/db2html.scm
 delete mode 100644 module/slib/db2html.txi
 delete mode 100644 module/slib/dbrowse.scm
 delete mode 100644 module/slib/dbutil.scm
 delete mode 100644 module/slib/debug.scm
 delete mode 100644 module/slib/defmacex.scm
 delete mode 100644 module/slib/determ.scm
 delete mode 100644 module/slib/dwindtst.scm
 delete mode 100644 module/slib/dynamic.scm
 delete mode 100644 module/slib/dynwind.scm
 delete mode 100644 module/slib/elk.init
 delete mode 100644 module/slib/eval.scm
 delete mode 100644 module/slib/factor.scm
 delete mode 100644 module/slib/factor.txi
 delete mode 100644 module/slib/fft.scm
 delete mode 100644 module/slib/fluidlet.scm
 delete mode 100644 module/slib/fmtdoc.txi
 delete mode 100644 module/slib/format.scm
 delete mode 100644 module/slib/formatst.scm
 delete mode 100644 module/slib/gambit.init
 delete mode 100644 module/slib/genwrite.scm
 delete mode 100644 module/slib/getopt.scm
 delete mode 100644 module/slib/getparam.scm
 delete mode 100644 module/slib/glob.scm
 delete mode 100644 module/slib/guile.init
 delete mode 100644 module/slib/hash.scm
 delete mode 100644 module/slib/hashtab.scm
 delete mode 100644 module/slib/htmlform.scm
 delete mode 100644 module/slib/htmlform.txi
 delete mode 100644 module/slib/http-cgi.scm
 delete mode 100644 module/slib/http-cgi.txi
 delete mode 100644 module/slib/lineio.scm
 delete mode 100644 module/slib/lineio.txi
 delete mode 100644 module/slib/logical.scm
 delete mode 100644 module/slib/macrotst.scm
 delete mode 100644 module/slib/macscheme.init
 delete mode 100644 module/slib/macwork.scm
 delete mode 100644 module/slib/makcrc.scm
 delete mode 100644 module/slib/mbe.scm
 delete mode 100644 module/slib/minimize.scm
 delete mode 100644 module/slib/minimize.txi
 delete mode 100644 module/slib/mitcomp.pat
 delete mode 100644 module/slib/mitscheme.init
 delete mode 100644 module/slib/mklibcat.scm
 delete mode 100644 module/slib/modular.scm
 delete mode 100644 module/slib/mulapply.scm
 delete mode 100644 module/slib/mularg.scm
 delete mode 100644 module/slib/mwdenote.scm
 delete mode 100644 module/slib/mwexpand.scm
 delete mode 100644 module/slib/mwsynrul.scm
 delete mode 100644 module/slib/nclients.scm
 delete mode 100644 module/slib/nclients.txi
 delete mode 100644 module/slib/obj2str.scm
 delete mode 100644 module/slib/obj2str.txi
 delete mode 100644 module/slib/objdoc.txi
 delete mode 100644 module/slib/object.scm
 delete mode 100644 module/slib/paramlst.scm
 delete mode 100644 module/slib/plottest.scm
 delete mode 100644 module/slib/pnm.scm
 delete mode 100644 module/slib/pp.scm
 delete mode 100644 module/slib/ppfile.scm
 delete mode 100644 module/slib/prec.scm
 delete mode 100644 module/slib/printf.scm
 delete mode 100644 module/slib/priorque.scm
 delete mode 100644 module/slib/process.scm
 delete mode 100644 module/slib/promise.scm
 delete mode 100644 module/slib/pscheme.init
 delete mode 100644 module/slib/psxtime.scm
 delete mode 100644 module/slib/qp.scm
 delete mode 100644 module/slib/queue.scm
 delete mode 100644 module/slib/r4rsyn.scm
 delete mode 100644 module/slib/randinex.scm
 delete mode 100644 module/slib/randinex.txi
 delete mode 100644 module/slib/random.scm
 delete mode 100644 module/slib/random.txi
 delete mode 100644 module/slib/ratize.scm
 delete mode 100644 module/slib/rdms.scm
 delete mode 100644 module/slib/recobj.scm
 delete mode 100644 module/slib/record.scm
 delete mode 100644 module/slib/repl.scm
 delete mode 100644 module/slib/report.scm
 delete mode 100644 module/slib/require.scm
 delete mode 100644 module/slib/root.scm
 delete mode 100644 module/slib/sc2.scm
 delete mode 100644 module/slib/sc4opt.scm
 delete mode 100644 module/slib/sc4sc3.scm
 delete mode 100644 module/slib/scaexpp.scm
 delete mode 100644 module/slib/scaglob.scm
 delete mode 100644 module/slib/scainit.scm
 delete mode 100644 module/slib/scamacr.scm
 delete mode 100644 module/slib/scanf.scm
 delete mode 100644 module/slib/scaoutp.scm
 delete mode 100644 module/slib/scheme2c.init
 delete mode 100644 module/slib/scheme48.init
 delete mode 100644 module/slib/schmooz.scm
 delete mode 100644 module/slib/schmooz.texi
 delete mode 100644 module/slib/scm.init
 delete mode 100644 module/slib/scmacro.scm
 delete mode 100644 module/slib/scmactst.scm
 delete mode 100644 module/slib/scsh.init
 delete mode 100644 module/slib/selfset.scm
 delete mode 100644 module/slib/sierpinski.scm
 delete mode 100644 module/slib/simetrix.scm
 delete mode 100644 module/slib/slib.info
 delete mode 100644 module/slib/slib.spec
 delete mode 100644 module/slib/slib.texi
 delete mode 100644 module/slib/sort.scm
 delete mode 100644 module/slib/soundex.scm
 delete mode 100644 module/slib/stdio.scm
 delete mode 100644 module/slib/strcase.scm
 delete mode 100644 module/slib/strport.scm
 delete mode 100644 module/slib/strsrch.scm
 delete mode 100644 module/slib/struct.scm
 delete mode 100644 module/slib/structst.scm
 delete mode 100644 module/slib/structure.scm
 delete mode 100644 module/slib/syncase.sh
 delete mode 100644 module/slib/synchk.scm
 delete mode 100644 module/slib/synclo.scm
 delete mode 100644 module/slib/synrul.scm
 delete mode 100644 module/slib/t3.init
 delete mode 100644 module/slib/tek40.scm
 delete mode 100644 module/slib/tek41.scm
 delete mode 100644 module/slib/timezone.scm
 delete mode 100644 module/slib/trace.scm
 delete mode 100644 module/slib/tree.scm
 delete mode 100644 module/slib/trnscrpt.scm
 delete mode 100644 module/slib/tsort.scm
 delete mode 100644 module/slib/tzfile.scm
 delete mode 100644 module/slib/umbscheme.init
 delete mode 100644 module/slib/uri.scm
 delete mode 100644 module/slib/uri.txi
 delete mode 100644 module/slib/values.scm
 delete mode 100644 module/slib/version.txi
 delete mode 100644 module/slib/vscm.init
 delete mode 100644 module/slib/withfile.scm
 delete mode 100644 module/slib/wttest.scm
 delete mode 100644 module/slib/wttree.scm
 delete mode 100644 module/slib/yasyn.scm
-- 
http://wingolog.org/




reply via email to

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