[Top][All Lists]

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

request review: syncase-in-boot-9

From: Andy Wingo
Subject: request review: syncase-in-boot-9
Date: Fri, 22 May 2009 23:41:45 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.0.92 (gnu/linux)

Hey folks!

The syncase-in-boot-9 branch puts syntax-case expansion at the heart of
Guile -- as the default expander, all Guile Scheme code would run
through it; and as the first pass of the compiler, it analyzes all
Scheme code, producing typed output. It makes syntax-rules and
syntax-case available by default to all Guile Scheme code.

Along with this branch comes a new intermediate language, to replace
GHIL: Tree IL. It's much like GHIL, but with alpha-renamed lexicals
instead of the intertwingliness of <ghil-env>. Its compiler to GLIL is
much the same as the GHIL->GLIL compiler, though it adds some new
tricks, and in the future will be augmented by a consistent inliner.

It's time to merge it to master! :)

Such a time is good for a few more eyeballs to see things, though, and
point out regressions that need fixing, or ugliness. (I am not aware of
any regressions. There is scattered ugliness, but I tried to keep that
down, too.)

What follows are the commit logs, from first to last, for replies to



commit 757937c290ae64a7a75232793c659d0cca3dea10
Author: Andy Wingo <address@hidden>
Date:   Wed Apr 22 23:10:35 2009 +0200

    more steps on the way to boot-time syncase
    * module/ice-9/boot-9.scm: Define a version of module-add! for psyntax,
      before modules are booted.
    * module/ice-9/psyntax.scm: Remove a warning, and rename a variable.
      Initialize a new variable to 'sc-macro, though it will have no effect.
    * module/ice-9/psyntax-pp.scm: Regenerated.

commit a26934a850fba4ee1caf5d44cdbbe95115c91be0
Author: Andy Wingo <address@hidden>
Date:   Fri Apr 24 13:50:14 2009 +0200

    module-name returns '(guile) during boot; psyntax tweak
    * module/ice-9/boot-9.scm (module-name): Return '(guile) before the
      module system is booted, for syncase's benefit. Defer redefinition
      until the module system is booted.
    * module/ice-9/psyntax.scm (put-global-definition-hook): Only set a
      variable if it's unbound.
    * module/ice-9/psyntax.scm: Regenerated.

commit 131826039c62bdfd5932272b5d19d4b08cbe4e63
Author: Andy Wingo <address@hidden>
Date:   Fri Apr 24 13:54:38 2009 +0200

    syncase early in boot-9, defmacros in terms of syntax-case -- halfway 
    * module/ice-9/boot-9.scm
      (eval-when): Remove, as syncase is going to handle this one for us.
      (sc-expand, sc-expand3, sc-chi, install-global-transformer)
      (syntax-dispatch, syntax-error, annotation?, bound-identifier=?)
      (datum->syntax-object, free-identifier=?, generate-temporaries)
      (identifier?, syntax-object->datum, void, andmap): Oh, ugly of uglies:
      add these exciting definitions to the main environment. Hopefully we
      can pull them back out soon.
      (make-module-ref, resolve-module): Stub these out, as a replacement for
      (%pre-modules-transformer): Define to sc-expand, so that we are using
      syncase from the very start.
      (defmacro, define-macro): Define in terms of syntax-case.
      (macroexpand, macroexpand-1): Remove, there should be a different way
      to get at this -- though perhaps with the same name.
      (make-module): Make sc-expand the default module-transformer.
      (process-define-module): Issue a deprecation warning when using ice-9
      (primitive-macro?): Remove, no meaning...
      (use-syntax): Deprecate.
      (define-private, define-public, defmacro-public): Rework in terms of
    * module/ice-9/syncase.scm: Gut, as syncase is provided by core now.

commit 64e5d08d3e7076b554f724efede860883f846b5f
Author: Andy Wingo <address@hidden>
Date:   Fri Apr 24 14:01:26 2009 +0200

    leap of faith: (ice-9 syncase) in psyntax-pp.scm -> (guile)
    * module/ice-9/psyntax-pp.scm: Manually switch psyntax-pp over to (guile)
      from (ice-9 syncase). Heh heh.

commit 85e95b47108a84f0829cf17c5dde40f53814186e
Author: Andy Wingo <address@hidden>
Date:   Fri Apr 24 14:08:32 2009 +0200

    fix load for syncase-in-boot-9; compile-psyntax works again
    * module/ice-9/r4rs.scm:
    * module/ice-9/boot-9.scm (%load-verbosely, assert-load-verbosity)
      (%load-announce, %load-hook, load): Move these from r4rs.scm to
    * module/ice-9/compile-psyntax.scm: Update to work with
    * module/ice-9/psyntax-pp.scm: Recompiled with syncase-in-boot-9.

commit c5ad45c7b34346f0f7084477479e7367c30a67f6
Author: Andy Wingo <address@hidden>
Date:   Thu Apr 23 12:41:03 2009 +0200

    allow redefinition of global macros to variables
    * module/ice-9/psyntax.scm: Allow the redefinition of keywords to
      variables. Otherwise we can't do (define let #f), which is totally
      useful and stuff.
    * module/ice-9/psyntax-pp.scm: Regenerated.

commit 01c161ca11b19d56ce994cba477a8fc4aeb8ac43
Author: Andy Wingo <address@hidden>
Date:   Thu Apr 23 13:30:23 2009 +0200

    it is alive!!!!! + concision + fix to compile-ghil
    * module/ice-9/boot-9.scm: Remove lots of debugging prints. Remove some
      already-deprecated attempts to load modules from shared libraries.
    * module/ice-9/psyntax.scm: If we have to create a variable for a
      syntactic binding, initialize its contents to a gensym. I'd like
      something more meaningful, but at least this way we can tell different
      macros apart. Only warn about missing modules if modules are booted.
      Chi the value part of a (set! (@ ...) ) expression -- whoops!
    * module/ice-9/psyntax-pp.scm: Regenerated.
    * module/language/glil.scm (parse-glil): Fix an unquoting error.
    * module/language/scheme/compile-ghil.scm: No need to import syncase, we
      gots it. Rework compiler to expand only once, with syncase, instead of
      incrementally. Fix define-scheme-transformer to work with syncase, by
      not referencing bare keywords. It works!

commit 7c72fe0bb5a6ef00c90f6988ce3178a45ed95f26
Author: Andy Wingo <address@hidden>
Date:   Thu Apr 23 13:34:23 2009 +0200

    ice-9 syncase now deprecated, woo
    Remove #:use-module (ice-9 syncase) from lots of places, as it's no
    longer needed.

commit 384e92b3ae491e2f8495b0d188b384f138a8cc61
Author: Andy Wingo <address@hidden>
Date:   Fri Apr 24 12:12:24 2009 +0200

    fix @ and syncase
    * module/ice-9/boot-9.scm
      (make-module-ref): equal?, not eq?, when matching on module name.
      (Module names don't have to come from an invocation of module-name in
      this process.)
    * module/ice-9/psyntax.scm (build-global-reference)
      (build-global-assignment, @): Rework the format of the module in syntax
      objects so that a car of #f indicates a public reference. Loading (foo
      %module-public-interface) didn't guarantee that (foo) was loaded and
    * module/ice-9/psyntax-pp.scm: Regenerated.
    * module/language/scheme/compile-ghil.scm (lookup-transformer):
      primitive-macro? does not exist any more.

commit a2716cbe1e9d2b43d1fb1a017cb8b1e97617da3c
Author: Andy Wingo <address@hidden>
Date:   Fri Apr 24 13:13:29 2009 +0200

    only bend hygiene in macro-introduced output, not for explicit @/@@
    * module/ice-9/psyntax.scm
    * module/ice-9/psyntax-pp.scm
    * module/ice-9/boot-9.scm (make-module-ref): We were so almost there
      with what we had, sniff. The deal is that
        (begin (load "foo.scm") ((@@ (foo) bar)))
      would expand to
        (begin (load "foo.scm") (bar))
      because bar was unbound at expansion time, and make-module-ref assumed
      it was like the else in a cond. But it shouldn't have, because we
      /explicitly/ asked for the @@ var -- so now if we see a @ or @@, we
      never drop it. @@ introduced by hygiene can be dropped if it doesn't
      reference a var, though.
      Practically speaking, this means tagging all modules in psyntax with
      their intent: public or private (corresponding to @ or @@), hygiene
      (introduced by a macro), or bare (when we don't have a module). I'm
      not sure when we'd see a bare.
      The implementation is complicated by the need to support the old
      format and the new format at the same time, so that psyntax-pp can be

commit d6ebfd72268878d64c583998ea9d57c0eb22996e
Author: Andy Wingo <address@hidden>
Date:   Fri Apr 24 13:30:57 2009 +0200

    finish transition to bare/hygiene/public/private
    * module/ice-9/boot-9.scm (make-module-ref): Remove the transition
    * module/ice-9/psyntax.scm (get-global-definition-hook): Remove
      transition support. Also remove support for guile-macro.
      (build-global-reference, build-global-assignment): Remove transition
    * module/ice-9/psyntax-pp.scm: Regenerated.

commit 6e26b23c5d0df8a69a12aca7be4494a19cdf0600
Merge: d6ebfd72268878d64c583998ea9d57c0eb22996e 
Author: Andy Wingo <address@hidden>
Date:   Fri Apr 24 19:45:43 2009 +0200

    Merge branch 'master' into syncase-in-boot-9

commit 34ad4f83ca4310e84226d6bd06feb03006c736cc
Author: Andy Wingo <address@hidden>
Date:   Fri Apr 24 19:59:42 2009 +0200

    handle pre-module macro procedures correctly
    * module/ice-9/psyntax.scm (chi-macro): It's possible for a macro
      procedure to have no module, if the procedure was made before modules
      were booted.
    * module/ice-9/psyntax-pp.scm: Regenerated.

commit 9c35c5796cbffda57d76499048e8b8f82db943eb
Author: Andy Wingo <address@hidden>
Date:   Fri Apr 24 23:10:31 2009 +0200

    make sure we compile boot code in (guile), not (guile-user)
    * libguile/eval.h:
    * libguile/eval.c (scm_m_eval_when): Define a cheap eval-when, used
      before syncase has booted.
    * module/ Reorder to put (system vm) and (system repl)
      modules after the compiler, as they are not needed at runtime.
    * module/ice-9/boot-9.scm: Move the eval-when earlier, to be the first
      thing -- so when we recompile Guile we do so all in the '(guile)
      module, not '(guile-user).
    * module/ice-9/compile-psyntax.scm: Rewrite to assume that psyntax.scm
      will eval-when to set its module, etc. Have everything in a let --
      otherwise the `format' call is in (guile), but `target' was defined
      in (guile-user). Also, write in an eval-when to the expanded file.
    * module/ice-9/psyntax-pp.scm: Regenerate.
    * module/ice-9/networking.scm:
    * module/ice-9/psyntax.scm:
    * module/ice-9/r4rs.scm: Sprinkles of eval-when, for flavor.

commit 0ee32d0131b49ee0661669b7a0b595d0a6565de4
Author: Andy Wingo <address@hidden>
Date:   Fri Apr 24 23:56:40 2009 +0200

    allow docstrings with internal definitions
    * module/ (SCHEME_LANG_SOURCES):
    * module/language/scheme/expand.scm: Remove expand.scm, we don't need it
      any more.
    * module/ice-9/psyntax.scm (build-lambda, chi-lambda-clause): Support
      docstrings with internal definitions. What are Scheme people thinking
      these days?
    * module/ice-9/psyntax-pp.scm: Regenerated.

commit 2ce560b944c8af2047415612835fcd23fa3de473
Author: Andy Wingo <address@hidden>
Date:   Sat Apr 25 12:50:53 2009 +0200

    fix bad syntax in define-macro, (ice-9 match), and (oop goops)
    * module/ice-9/boot-9.scm (define-macro): Use syntax-case to destructure
      macro arguments, so we get good errors.
    * module/ice-9/match.scm (defstruct, define-const-structure): Don't
      unquote in the `defstruct' macro as a value in expansions.
    * module/oop/goops.scm (standard-define-class): Can't define a macro with
      `define', use `define-syntax' instead.
      (define-accessor): Use syntax-rules. Doesn't give us much in this case.
      (toplevel-define!): New helper, to let us keep GOOPS' behavior with the
      new expander. Some solution that works lexically and at the toplevel
      would be nice, though.
      (define-method): Reimplement with syntax-rules -- soooo much nicer.
    * module/oop/goops/dispatch.scm (lookup-create-cmethod): Don't define
      within an expression.

commit b3501b8043d36a3215ec51e321a2aa3733ea54cc
Author: Andy Wingo <address@hidden>
Date:   Sat Apr 25 14:10:08 2009 +0200

    all of guile compiles now, expanded with syncase
    * libguile/eval.c (scm_m_eval_when): Whoops, eval-when has an implicit
      begin. Fix.
    * module/oop/goops.scm: Syncase doesn't like definitions in expression
      context, and grudgingly I have decided to go along with that. But that
      doesn't mean we can't keep the old semantics, via accessing the module
      system directly. So do so. I took the opportunity to rewrite some
      macros with syntax-rules and syntax-case -- the former is nicer than
      the latter, of course.
    * module/oop/goops/save.scm: Don't define within an expression.
    * module/oop/goops/simple.scm (define-class): Use define-syntax.
    * module/oop/goops/stklos.scm (define-class): Use define-syntax.

commit 97ce9dbf2158a08980189bcb3c3016ba30246829
Author: Andy Wingo <address@hidden>
Date:   Sat Apr 25 16:31:52 2009 +0200

    allow defmacros to have docstrings
    * module/ice-9/boot-9.scm (define-macro, defmacro): Add the ability to
      have a docstring.
    * module/ice-9/documentation.scm (object-documentation): Remove
      references to defmacro? and macro?. Since we store the transformation
      procedure as the binding, we can get docs from the procedure directly.
    * module/ice-9/psyntax-pp.scm: Regenerate.
    * module/ice-9/psyntax.scm (put-global-definition-hook):
      Take the type and the value separately, so we can set the variable to
      the procedure, while keeping the *sc-expander* to be the "binding
      (global-extend): Pass type and val separately.

commit 39f30ea29df55eda3f92d0cf68f1f89282a1418e
Author: Andy Wingo <address@hidden>
Date:   Sat Apr 25 19:09:19 2009 +0200

    Fix the elisp memoizer code for syncase-in-boot-9
    * lang/elisp/interface.scm:
    * lang/elisp/internals/lambda.scm:
    * lang/elisp/primitives/syntax.scm:
    * lang/elisp/transform.scm: Use (lang elisp expand) as the transformer,
      because we really are intending this code for the memoizer and not the
    * lang/elisp/expand.scm: A null expander.
    * lang/elisp/interface.scm (use-elisp-file, use-elisp-library):
    * lang/elisp/transform.scm (scheme): Turn these defmacros into
      procedure->memoizing-macro calls, given that without syncase we have no
      defmacro either.
    * lang/elisp/primitives/fns.scm (macroexpand): Comment out, as Scheme's
      macro expander (temporarily on hiatus) won't work with elisp.

commit f176c584d0513f4dea82329011f81f114f3a8ec9
Author: Andy Wingo <address@hidden>
Date:   Sun Apr 26 11:35:23 2009 +0200

    fix module-bound?, start compiling srfi-18.scm
    * module/ (SRFI_SOURCES): Let's finally start compiling
      srfi-18.scm, what the hell.
    * module/ice-9/boot-9.scm (module-bound?): module-bound? was returning
      true if (not (variable-bound? (module-local-variable m v))), but
      (variable-bound? (module-variable m v)). Fix to cut out on the first
      variable it finds. This bug has been there for a while now.

commit 00bbb89e9694faac612ecf2e234291df086ebd11
Author: Andy Wingo <address@hidden>
Date:   Sun Apr 26 11:48:29 2009 +0200

    remove sc-macro definition
    * module/ice-9/boot-9.scm (sc-macro): Remove sc-macro definition, yay.

commit 165a7596ee62a2871de8569e3d41ef7f7c925594
Author: Andy Wingo <address@hidden>
Date:   Sun Apr 26 13:10:30 2009 +0200

    add module-{define-keyword!,undefine-keyword!,lookup-keyword}
    * libguile/modules.c (scm_module_local_variable): Allow this to be called
      before modules are booted with #f as the module.
    * module/ice-9/boot-9.scm (module-define-keyword!)
      (module-lookup-keyword, module-undefine-keyword!): Well, if syncase
      forces us to allow the keyword bindings to be partitioned from value
      bindings, let's go ahead and do that in boot-9 instead of in
      psyntax. A step on the way to removing `install-global-transformer'.
      (sc-chi): Remove.
    * module/ice-9/psyntax.scm (put-global-definition-hook):
      (remove-global-definition-hook, get-global-definition-hook): Use our
      new module-* functions.
      (sc-chi): Remove, no longer needed.
    * module/ice-9/psyntax-pp.scm: Regenerated.

commit e4721dde312fb2e00963e826441edcc71ee840be
Author: Andy Wingo <address@hidden>
Date:   Sun Apr 26 20:36:58 2009 +0200

    replace psyntax's syntax-error with r6rs' syntax-violation
    * module/ice-9/boot-9.scm (syntax-violation): Well, as long as we have to
      have a function for indicating syntax errors, let's let it be a
      well-thought-out one -- syntax-violation from r6rs. No more
    * module/ice-9/psyntax-pp.scm: Regenerated.
    * module/ice-9/psyntax.scm: Replace instances of syntax-error with
      syntax-violation. Implement as a scm-error to 'syntax-error, with some
      nice arguments.

commit 22225fc113e716ec20712825e71191fedf3eecd8
Author: Andy Wingo <address@hidden>
Date:   Sun Apr 26 20:56:24 2009 +0200

    syntax-object->datum => syntax->datum, likewise datum->syntax
    * module/ice-9/boot-9.scm (datum->syntax, syntax->datum): Rename from
      datum->syntax-object and syntax-object->datum, following r6rs. Change
      all callers. Reorder some of the other exports from psyntax.
    * module/ice-9/psyntax.scm: Change datum->syntax and syntax->datum
      definitions and callers.
    * module/ice-9/psyntax-pp.scm: Regenerated.
    * module/oop/goops.scm (define-class-pre-definition): Update for changes.

commit bac0272216e89fa93bc935952befe0e7973625f7
Author: Andy Wingo <address@hidden>
Date:   Sun Apr 26 20:57:51 2009 +0200

    build ecmascript stuff last
    * module/ Wait to build ecmascript until the compiler has

commit 5f1a2fb10f5eb97e302c50f5b62d6df28f73d97a
Author: Andy Wingo <address@hidden>
Date:   Sun Apr 26 21:10:24 2009 +0200

    syntax-dispatch -> $sc-dispatch
    * module/ice-9/boot-9.scm:
    * module/ice-9/psyntax-pp.scm:
    * module/ice-9/psyntax.scm: Change syntax-dispatch to $sc-dispatch, as it
      is in current psyntax. The idea is that this isn't really a public
      variable, though it has to be, currently, so just obscure that fact
      with an obscure name.

commit 5a0132b3375b35c69c6afb735acbaa8619237fb5
Author: Andy Wingo <address@hidden>
Date:   Wed Apr 29 00:38:12 2009 +0200

    a different tack for syncase macro representation
    * libguile/macros.c (macro_print): Show syntax-case bindings, if present.
      (macro_mark): Mark the extra two words if they're there.
      (scm_make_syncase_macro, scm_make_extended_syncase_macro): OK! A new
      take at the "how do we represent syncase macros in Guile" problem.
      Whereas we need a disjoint type, but would like it to be compatible
      with old predicates (e.g. `macro?'), and need to be able to extend
      existing syntax definitions (e.g. `cond'), let's add a bit to macros to
      indicate whether they have syncase macro bindings or not, and a fourth
      macro type for native syncase macros.
      (scm_macro_type): Return 'syntax-case for native syntax-case macros.
      Note that other macro types may have syntax-case bindings.
      (scm_macro_name): Return #f if the transformer is not a procedure.
      (scm_syncase_macro_type, scm_syncase_macro_binding): New accessors for
      the syncase macro bindings.
    * libguile/macros.h: Add API for syncase macros.
    * module/ice-9/boot-9.scm (module-define-keyword!): Adapt to use syncase
      macros, though they are not yet used. Reorder other syncase API.
    * module/ice-9/psyntax.scm (chi-expr): Fix syntax-violation invocation.

commit 3d5f3091e100550052abc698e980b3e86cc01b65
Author: Andy Wingo <address@hidden>
Date:   Wed Apr 29 21:19:23 2009 +0200

    first-class macro representation (no bits on variables)
    * libguile/macros.c (scm_macro_p): Update docs.
    * module/ice-9/boot-9.scm (module-define!, module-ref): Define pre-boot
      forms of these functions as well. I suspect module-add! can go soon.
      (module-lookup-keyword, module-define-keyword!)
      (module-undefine-keyword!) Remove these.
    * module/ice-9/psyntax-pp.scm: Regenerate. Notice the difference?
    * module/ice-9/psyntax.scm (put-global-definition-hook)
      (get-global-definition-hook): Rework to expect first-class macros. Heh
      (remove-global-definition-hook): Pleasantly, this hook can go away.
      (chi-install-global): Terrorism to generate the right kind of output --
      will clean up.
      (chi-top): Unify definition handling for all kinds of values.

commit 12eae603c76edc8affc0e8331df7f22a4d8a8b2c
Author: Andy Wingo <address@hidden>
Date:   Wed Apr 29 22:50:45 2009 +0200

    cleanups to boot-9
    * module/ice-9/boot-9.scm: Shuffle around some definitions.
      (module-add!): Removed stub definition, no longer used.
      (install-global-transformer): Removed, no longer used (yay!).
    * module/ice-9/psyntax-pp.scm: Regenerated.
    * module/ice-9/psyntax.scm: Remove install-global-transformer.

commit 4d24854111110b44a28a4d46242bac1285de387a
Author: Andy Wingo <address@hidden>
Date:   Wed Apr 29 23:12:12 2009 +0200

    remove andmap from public API (we still have and-map)
    * module/ice-9/boot-9.scm (and-map, or-map): Move these definitions up so
      psyntax can use them.
      (andmap): Remove, yay.
    * module/ice-9/psyntax.scm: Remove notes about andmap, and just use
      Guile's and-map -- except in cases that need the multiple list support,
      in which case we have a private and-map*.
    * module/ice-9/psyntax-pp.scm: Regenerated.

commit 6a952e0ee9093424cdc8f300406d09ce195ebf5c
Author: Andy Wingo <address@hidden>
Date:   Wed Apr 29 23:39:09 2009 +0200

    more cleanups to boot-9/psyntax
    * module/ice-9/boot-9.scm: Comment some more things.
    * module/ice-9/psyntax.scm: Remove error-hook -- callers should just use
      syntax-violation. Change all callers.
    * module/ice-9/psyntax-pp.scm: Regenerated.

commit 41af238146428f5841880f26d84b5dc9ddfad2c4
Author: Andy Wingo <address@hidden>
Date:   Wed Apr 29 23:57:31 2009 +0200

    remove (void) from boot-9 and psyntax
    * module/ice-9/psyntax.scm: Tweak comments. Remove references to `void';
      just produce (if #f #f) instead of (void).
    * module/ice-9/psyntax-pp.scm: Regenerated, twice.
    * module/ice-9/boot-9.scm (void): Remove this binding.

commit 123f8abb2da5ed7b2d8ccd67b3bd3532aa9d257e
Author: Andy Wingo <address@hidden>
Date:   Mon May 4 10:47:31 2009 +0200

    replace sc-expand with sc-expand3, removing binding for sc-expand3
    * module/ice-9/boot-9.scm (sc-expand3):
    * module/ice-9/psyntax.scm (sc-expand3): Replace sc-expand with
      sc-expand3, as expand3 with one argument is the same as sc-expand.
    * module/ice-9/psyntax-pp.scm: Regenerated.
    * module/ice-9/compile-psyntax.scm:
    * module/language/scheme/compile-ghil.scm: Change callers to sc-expand3
      to use sc-expand.

commit 71f46dbd5ecf62809c2aa475b6f5742993ada0b9
Author: Andy Wingo <address@hidden>
Date:   Mon May 4 11:57:36 2009 +0200

    sc-expand in compile mode produces (ice-9 expand-support) structures
    * module/ice-9/psyntax.scm (*mode*): New moving part, a fluid.
      (sc-expand): Dynamically bind *mode* to the expansion mode.
      (build-global-reference): Change to be a procedure instead of local
      syntax. Import the logic about when to make a @ or @@ form to here,
      from boot-9.scm. If we are compiling, build output using (ice-9
      expand-support)'s make-module-ref, otherwise just making the familiar
      s-expressions. (This will allow us to correctly expand in modules in
      which @ or @@ are not bound, at least when we are compiling.)
      (build-global-assignment): Use the result of build-global-reference. A
      bit hacky, but hey.
      (top-level-eval-hook, local-eval-hook): Strip expansion structures
      before evalling.
    * module/ice-9/boot-9.scm (make-module-ref): Remove, this logic is now
      back in psyntax.scm.
    * module/ice-9/compile-psyntax.scm (source): Since we expand in compile
      mode, we need to strip expansion structures.
    * module/ice-9/expand-support.scm (strip-expansion-structures): Remove
      the logic about whether and how to strip @/@@ from here, as it's part
      of psyntax now.
    * module/ice-9/psyntax-pp.scm: Regenerated.
    * module/language/scheme/compile-ghil.scm (compile-ghil): Strip expansion
      structures -- for now. In the future, we might translate directly from
      these structures into GHIL.

commit f4a644ee886903df43810f1a0e65ce2ef891999f
Author: Andy Wingo <address@hidden>
Date:   Mon May 4 12:18:14 2009 +0200

    when compiling, use make-lexical to residualize original var names
    * module/ice-9/psyntax.scm (build-lexical-reference): Change to be a
      function. Take an extra arg, the original name of the variable. If we
      are compiling, make a #<lexical>, annotated with the original var name.
      All callers changed.
      (build-lexical-assignment): Also a function, taking also the original
      var name, using build-lexical-reference to build its output.
    * module/ice-9/psyntax-pp.scm: Regenerated.

commit f27e9e11cd01eefa9eab3cfd277120ce73e3355a
Author: Andy Wingo <address@hidden>
Date:   Thu May 7 10:27:53 2009 +0200

    fix install-global construction of `define' forms
    * module/ice-9/psyntax.scm (build-global-definition): Remove mod
      argument, as it does not seem we could ever define something in another
      (chi-install-global): Build the define as a definition, not an
      application. Doesn't matter now, but it will later.
      (chi-top): Fix build-global-definition call.
    * module/ice-9/psyntax.scm: Regenerated.

commit 1aeb082b8281eb12640d7a42c88a566418c64782
Author: Andy Wingo <address@hidden>
Date:   Thu May 7 11:02:10 2009 +0200

    make expand-support structure constructors take a source argument
    * module/ice-9/expand-support.scm (make-module-ref, make-lexical): Add
      source arguments to these constructors.
    * module/ice-9/psyntax.scm:
    * module/ice-9/psyntax-pp.scm: Adapt to match, though we don't wire
      everything up yet.

commit 811d10f5a2297e2fe6a881d02c67c45bf4311a27
Author: Andy Wingo <address@hidden>
Date:   Thu May 7 13:45:03 2009 +0200

    new language: tree-il. psyntax generates it when run in compile mode.
    * module/ Add tree-il sources.
    * module/ice-9/compile-psyntax.scm: Adjust for sc-expand producing
      tree-il in compile mode.
    * module/ice-9/psyntax.scm: Switch from expand-support to tree-il for
      generating output in compile mode. Completely generate tree-il -- the
      output wasn't Scheme before, but now it's completely not Scheme.
    * module/ice-9/psyntax-pp.scm: Regenerated.
    * module/language/scheme/compile-ghil.scm: Strip structures using
      tree-il, not expand-support.
    * module/language/tree-il.scm:
    * module/language/tree-il/spec.scm
    * module/language/tree-il/compile-glil.scm: New language. It will compile
      to GLIL, though it doesn't yet.

commit 982a1c205d2ff1dc61a2ff56ba2e6491974f9303
Author: Andy Wingo <address@hidden>
Date:   Thu May 7 17:38:40 2009 +0200

    remove (ice-9 expand-support)
    * module/ice-9/
    * module/ice-9/expand-support.scm: Remove module, no longer used.
    * module/ice-9/psyntax.scm: Fix a comment.

commit 06656e06d454f16694d0b550fb339efb0c36123a
Author: Andy Wingo <address@hidden>
Date:   Thu May 7 17:44:51 2009 +0200

    go ahead and regenerate psyntax-pp.scm

commit b81d329e449420b6abaa2b689d7107b862111cbf
Author: Andy Wingo <address@hidden>
Date:   Fri May 8 12:56:18 2009 +0200

    more work on tree-il compilation
    * module/language/scheme/amatch.scm: Remove, this approach won't be used.
    * module/ Adjust for additions and removals.
    * module/language/scheme/compile-ghil.scm: Remove an vestigial debugging
    * module/language/scheme/spec.scm:
    * module/language/scheme/compile-tree-il.scm:
    * module/language/scheme/decompile-tree-il.scm: Add tree-il compiler and
    * module/language/tree-il/compile-glil.scm: Add some notes.
    * module/language/tree-il/spec.scm: No need to wrap expressions in
      lambdas -- GHIL needs somewhere to put its variables, we don't.

commit 9efc833d65adef11e76410fee7ea548143131417
Author: Andy Wingo <address@hidden>
Date:   Mon May 11 23:23:34 2009 +0200

    add tree-il optimizer
    * module/language/tree-il/optimize.scm: New module, for optimizations.
      Currently all we have is resolving some toplevel refs to primitive
    * module/ Add new module.
    * module/language/tree-il.scm: Fix exports for accessors for `src'.
    * module/language/tree-il/compile-glil.scm: Tweaks, things still aren't
      working yet.

commit cb28c08537790b49f7bc94f2f6b426497152bbe7
Author: Andy Wingo <address@hidden>
Date:   Tue May 12 22:29:34 2009 +0200

    add primitive expander for tree-il
    * module/ Add inline.scm.
    * module/language/tree-il.scm (pre-order!, post-order!): pre-order! is
      new. post-order! existed but was not public. They do destructive tree
      traversals of tree-il, and need more documentation. Also, add
      predicates to tree-il's export list.
    * module/language/tree-il/inline.scm: New file, which expands primitives
      into more primitive primitives. In the future perhaps it will not be
      necessary, as the general inlining infrastructure will handle these
      cases, but for now it's useful.
    * module/language/tree-il/optimize.scm: Move post-order! out to better

commit 073bb617eb7e5f76269ca6dba0fe498baff6f058
Author: Andy Wingo <address@hidden>
Date:   Thu May 14 00:11:25 2009 +0200

    add lexical analyzer and allocator
    * module/language/tree-il/optimize.scm: Rework to just export the
      optimize! procedure.
    * module/language/tree-il/compile-glil.scm (analyze-lexicals): New
      function, analyzes and allocates lexical variables. Almost ready to
      compile now.
      (codegen): Dedent.

commit cf10678fe7014a67020c45ee02f2aabb44598adc
Author: Andy Wingo <address@hidden>
Date:   Fri May 15 23:44:14 2009 +0200

    tree-il -> glil compiler works now, at least in initial tests
    * module/language/tree-il/analyze.scm: Break analyzer out into its own
    * module/language/tree-il/compile-glil.scm: Port the GHIL->GLIL compiler
      over to work on tree-il. Works, but still misses a number of important
    * module/language/tree-il.scm: Add <void>. Not used quite yet.
    * module/language/glil.scm: Remove <glil-argument>, as it is the same as
      <glil-local> (minus an offset).
    * module/language/glil/compile-assembly.scm:
    * module/language/glil/decompile-assembly.scm:
    * module/language/ghil/compile-glil.scm: Adapt for <glil-argument>
    * removal.
    * module/ (TREE_IL_LANG_SOURCES): Reorder, and add

commit 547a602d1ef4d3622cf2d476ff311957b447eaba
Author: Andy Wingo <address@hidden>
Date:   Sun May 17 16:27:18 2009 +0200

    preserve original var names in lets and lambdas
    * module/ice-9/psyntax.scm (build-letrec, build-let, build-lambda)
      (build-named-let): Take extra args for the original names of the
      gensyms. Not used yet. Callers adapted.
    * module/ice-9/psyntax-pp.scm: Regenerated.

commit 696495f4d21fc8bc479b50588c08ea55e7c6e3a7
Author: Andy Wingo <address@hidden>
Date:   Sun May 17 16:39:55 2009 +0200

    actually pass original ids on to tree-il data types
    * module/ice-9/psyntax.scm (build-lambda, build-let, build-named-let)
      (build-letrec): Actually pass along the original ids to tree-il
    * module/ice-9/psyntax-pp.scm: Regenerated.
    * module/language/tree-il.scm: Add fields in <lambda>, <let>, and
      <letrec> for the original variable names.
    * module/language/tree-il/compile-glil.scm (compile-glil): Adapt for new
      make-lambda arg.

commit 2ce77f2d95271887b54d0c56d1e81d7f472ae1ae
Author: Andy Wingo <address@hidden>
Date:   Sun May 17 16:46:46 2009 +0200

    and now, we residualize the original names into the metadata. yay!
    * module/language/tree-il/compile-glil.scm (vars->bind-list)
      (emit-bindings, flatten-lambda, flatten): Write the original names into
      <glil-bind> structures. Yaaaaay!

commit 1eec95f8def91bcb6f9f22c21c6d27ec2a7175ac
Author: Andy Wingo <address@hidden>
Date:   Sun May 17 18:04:36 2009 +0200

    define `delay' in terms of make-promise
    * module/ice-9/boot-9.scm (delay): Define `delay' in terms of
    * module/ice-9/psyntax-pp.scm (compile): Regenerated with a fully
      compiled Guile, so that the gensym numbers are the same.
    * module/language/tree-il/compile-glil.scm: Add some notes about what
      needs doing to catch up to the old compiler.

commit 112edbaea3e48e002261c72064d6602d661c3df4
Author: Andy Wingo <address@hidden>
Date:   Sun May 17 23:24:26 2009 +0200

    inline calls to some primitives
    * module/system/base/pmatch.scm: Wrap consequents in (let () ) instead of
      (begin ) so that they can have local definitions.
    * module/language/tree-il/compile-glil.scm: Inline some calls to

commit dce042f1f74f8ef5ca5089beb50fd7496feae5da
Author: Andy Wingo <address@hidden>
Date:   Mon May 18 01:08:34 2009 +0200

    special cases for more types of known applications
    * module/language/tree-il/compile-glil.scm (flatten): Handle a number of
      interesting applications, and fix a bug for calls in `drop' contexts.
    * module/language/tree-il/inline.scm: Define expanders for apply,
      call-with-values, call-with-current-continuation, and values.

commit ce09ee19892d391f3b2ca13e0616d343929c2c14
Author: Andy Wingo <address@hidden>
Date:   Mon May 18 23:45:35 2009 +0200

    add tree-il->glil compilation test suite
    * module/language/tree-il.scm (parse-tree-il): Fix a number of bugs.
      (unparse-tree-il): Apply takes rest args now.
    * module/language/tree-il/analyze.scm (analyze-lexicals)
      (analyze-lexicals): Heap vars shouldn't increment the number of locals.
    * module/language/tree-il/optimize.scm (resolve-primitives!): Don't
      resolve public refs to primitives, not at the moment anyway.
    * test-suite/ (SCM_TESTS): Add tree-il test.
    * test-suite/lib.scm (pass-if, expect-fail, pass-if-exception)
      (expect-fail-exception): Rewrite as syntax-rules macros. In a very
      amusing turn of events, it turns out that bindings introduced by
      hygienic macros are not visible inside expansions produced by
      defmacros. This seems to be expected, so go ahead and work around the
    * test-suite/tests/srfi-31.test ("rec special form"): Expand in eval.
    * test-suite/tests/syntax.test ("begin"): Do some more expanding in eval,
      though all is not yet well.
    * test-suite/tests/tree-il.test: New test suite, for tree-il->glil

commit a1a482e0e9518b5711bc2734aa014254f9207919
Author: Andy Wingo <address@hidden>
Date:   Wed May 20 11:15:22 2009 +0200

    and, or, cond etc use syntax-rules, compile scheme through tree-il
    * libguile/vm-i-system.c:
    * libguile/vm-engine.h (ASSERT_BOUND): New assertion, that a value is
      bound. Used by local-ref and external-ref in paranoid mode.
    * module/ice-9/boot-9.scm (and, or, cond, case, do): Since we are
      switching to use psyntax as the first pass of the compiler, and perhaps
      soon of the interpreter too, we need to make sure it expands out all
      forms to primitive expressions. So define expanders for these derived
      syntax forms, as in the R5RS report.
    * module/ice-9/psyntax-pp.scm: Regenerate, with core forms fully
    * module/ice-9/psyntax.scm (build-void): New constructor, for making
      undefined values.
      (build-primref): Add in a hack so that primitive refs in the boot
      module expand out to toplevel refs, not module refs.
      (chi-void): Use build-void.
      (if): Define an expander for if that calls build-conditional.
    * module/language/scheme/compile-tree-il.scm (compile-tree-il): Use let*
      so as not to depend on binding order for the result of
    * module/language/scheme/spec.scm (scheme): Switch over to tree-il as the
      primary intermediate language. Not yet fully tested, but at least it
      can compile psyntax-pp.scm.
    * module/language/tree-il/analyze.scm (analyze-lexicals): Arguments don't
      count towards a function's nlocs.
    * module/language/tree-il/compile-glil.scm (*comp-module*, compile-glil):
      Define a "compilation module" fluid.
      (flatten-lambda): Fix a call to make-glil-argument. Fix bug in
      heapifying arguments.
      (flatten): Fix number of arguments passed to apply instruction. Add a
      special case for `(values ...)'. If inlining primitive-refs fails,
      try expanding into toplevel-refs if the comp-module's variable is the
      same as the root variable.
    * module/language/tree-il/optimize.scm (resolve-primitives!): Add missing
      src variable for <module-ref>.
    * test-suite/tests/tree-il.test ("lambda"): Fix nlocs counts. Add a
      closure test case.

commit e32a1792de84c20eaaae6ea7f33048b6eef2c9d8
Author: Andy Wingo <address@hidden>
Date:   Wed May 20 11:59:41 2009 +0200

    a few fixups
    * module/ice-9/psyntax.scm (chi-install-global, syntax-case): Fix a
      couple of cases in which bare datums were passed to output
    * module/ice-9/psyntax-pp.scm: Regenerated.
    * module/language/scheme/spec.scm (scheme): Clean up the #:compilers
    * module/language/tree-il/compile-glil.scm (flatten): Fix call to
      `length' in call/cc compiler.

commit 5af166bda2f1d89525add147a9e3d2d6867d03a5
Author: Andy Wingo <address@hidden>
Date:   Wed May 20 12:46:23 2009 +0200

    don't allocate too many locals for expansions of `or'
    * module/language/tree-il/analyze.scm (analyze-lexicals): Add in a hack
      to avoid allocating more locals than necessary for expansions of `or'.
      Documented in the source.
    * test-suite/tests/tree-il.test: Add a test case.

commit c11f46afe113f50e34af33ad3055b3da66e4b71f
Author: Andy Wingo <address@hidden>
Date:   Wed May 20 13:33:44 2009 +0200

    compile `list' and `vector' to their associated opcodes
    * module/language/glil/compile-assembly.scm (glil->assembly): Check the
      length when emitting calls to variable-argument stack instructions.
      Allow two-byte lengths -- allows e.g. calls to `list' with more than
      256 arguments.
    * module/language/tree-il/compile-glil.scm: Add primcall associations for
      `list' and `vector', with any number of arguments. Necessary because
      syncase's quasiquote expansions will produce calls to `list' with many
    * module/language/tree-il/optimize.scm (*interesting-primitive-names*):
      Add `list' and `vector' to the set of primitives to resolve.

commit ad9b8c451b82f74cf88c5a6207ed3ea72c86f93e
Author: Andy Wingo <address@hidden>
Date:   Wed May 20 13:59:42 2009 +0200

    fix @slot-ref / @slot-set! compilation
    * module/language/tree-il/compile-glil.scm: Add primcall compilers for
      @slot-ref and @slot-set.
    * module/language/tree-il/optimize.scm (add-interesting-primitive!): New
      export. Creates an association between a variable in the current module
      and a primitive name.
    * module/oop/goops.scm: Rework compiler hooks to work with tree-il and
      not ghil.

commit 9806a548fe1a9cca0f82ef4f2f08fbcba5eccfaa
Author: Andy Wingo <address@hidden>
Date:   Wed May 20 17:28:59 2009 +0200

    Fix a bug in the (ice-9 match) test
    * testsuite/t-match.scm (matches?): Fix match invocation. As far as I can
      tell, although (ice-9 match) does advertise a => form of clauses, it
      requires that the end of the => be a symbol. For some reason this
      works in the interpreter:
        ((lambda () (begin => #t)))
      It's part of the expansion of matches?. It also worked in the old
      compiler. Thinking that maybe toplevel references could cause side
      effects, I made the new compiler actually ref =>, which brought this to

commit 68623e8e7883077dbb26521fe6d9c185df3138ce
Author: Andy Wingo <address@hidden>
Date:   Wed May 20 17:41:21 2009 +0200

    remove compile-time-environment
    * module/ice-9/boot-9.scm (guile-user): Move the `compile' autoload to
      the guile-user module. Remove reference to compile-time-environment.
    * module/language/scheme/compile-ghil.scm:
    * module/language/tree-il/compile-glil.scm:
    * module/language/tree-il/optimize.scm:
    * module/system/base/compile.scm:
    * test-suite/tests/compiler.test: Remove definition of and references to
      compile-time-environment. While I do think that recompilation based on
      a lexical environment can be useful, I think it needs to be implemented
      differently. So for now we've lost nothing if we take it away, as it
      doesn't work with syncase anyway.

commit 8bb0b3cc9d582c48ed6cb5d123168ffd27ac7cf8
Author: Andy Wingo <address@hidden>
Date:   Wed May 20 18:11:23 2009 +0200

    fix failing macro-as-parameter tests in eval.test
    * module/ice-9/psyntax.scm (chi-lambda-clause): Strip the docstring
      before passing it on to the continuation.
    * module/ice-9/psyntax-pp.scm: Regenerated.
    * test-suite/tests/eval.test (exception:failed-match): New exception, for
      syntax-case failed matches.
      ("evaluator"): Fix macro-as-parameter tests. They pass now :)

commit 47c8983f08157865a3937722c06acbbb3cbd7621
Author: Andy Wingo <address@hidden>
Date:   Thu May 21 13:49:00 2009 +0200

    rewrite `method' as a hygienic macro to re-allow lexical specializers
    * module/oop/goops.scm (method): Reimplement as a hygienic macro. This
      seriously took me like 6 hours to figure out. Allows for lexical
      specializers: (let ((<x> ...)) (define-method (foo (arg <x>)) ...)).
    * module/oop/goops/compile.scm (next-method?, compile-make-procedure):
      Remove these, as `method' does it all now, hygienically.

commit d63927150aa22bb7e57125ed50e5ecbe11765fba
Author: Andy Wingo <address@hidden>
Date:   Thu May 21 15:34:29 2009 +0200

    just parse method arguments once.
    * module/oop/goops.scm (method): Tweak to just run through the arguments
      once. Thanks to Eli Barzilay for the tip.

commit a48358b38fed9486cebf7f8338dc05adc770fc0f
Author: Andy Wingo <address@hidden>
Date:   Thu May 21 16:04:14 2009 +0200

    fix srfi-17.test
    * test-suite/tests/srfi-17.test (exception:bad-quote): Change the
      expected exception for (set! (quote foo) ...) errors.

commit 30a5e062d022aafdb72cea648f3a4de0e72feb6d
Author: Andy Wingo <address@hidden>
Date:   Thu May 21 17:22:58 2009 +0200

    procedures in "drop" contexts can return unspecified values
    * module/language/tree-il/compile-glil.scm (flatten): For applications in
      "drop" context, allow the procedure to return unspecified values
      (including 0 values).
    * test-suite/tests/tree-il.test ("application"): Adapt test.
    * module/srfi/srfi-18.scm (wrap): Clarify.
    * test-suite/tests/srfi-18.test: Fix so that the expression importing
      srfi-18 is expanded before the tests. However the tests are still
      failing, something about 0-valued returns...

commit 0f423f20aae6228431d3695e60ade937858110b8
Author: Andy Wingo <address@hidden>
Date:   Thu May 21 21:13:24 2009 +0200

    fix apply and call/cc in drop contexts
    * module/language/tree-il/compile-glil.scm (flatten): Actually apply only
      needs one arg after the proc. And shit, call/cc and apply in drop
      contexts also need to be able to return arbitrary numbers of values;
      work it by trampolining through their applicative (non-@) definitions.
      Also, simplify the single-valued drop case to avoid the
    * module/language/tree-il/inline.scm (call/cc):
    * module/language/tree-il/optimize.scm (*interesting-primitive-names*):
      Define call/cc as "interesting". Perhaps we should be hashing on value
      and not on variable.
    * test-suite/tests/tree-il.test ("application"): Fix up test for new,
      sleeker output. (Actually the GLIL is more verbose, but the assembly is
      ("apply", "call/cc"): Add some more tests.

commit 2032f3d1db09aa63de4ec060081a5bf9053f0d3c
Author: Andy Wingo <address@hidden>
Date:   Thu May 21 21:39:37 2009 +0200

    fix multiple values returning from srfi-18's `with-exception-handler'
    * module/srfi/srfi-18.scm (with-exception-handler): Hah! Fixed a
      scurrilous bug in which we assumed that the thunk returned one or more
      values. Hah.

commit 40b36cfbbe4676f52bd4d6b45ae1642756642907
Author: Andy Wingo <address@hidden>
Date:   Thu May 21 22:11:48 2009 +0200

    catch syntax errors in unquote and unquote-splicing
    * module/ice-9/psyntax.scm (quasiquote): Catch syntax errors in unquote
      and unquote-splicing.
    * module/ice-9/psytax-pp.scm: Regenerated.

commit 0260421208267eb202f9c9628cdaf39b531a5129
Author: Andy Wingo <address@hidden>
Date:   Thu May 21 22:43:07 2009 +0200

    some work on syntax.test
    * module/language/tree-il.scm (tree-il->scheme):
    * module/ice-9/psyntax.scm (build-conditional): Attempt to not generate
      (if #f #f) as the second arm of an if, but it doesn't seem to be
    * module/ice-9/psyntax-pp.scm (syntax-rules): Regenerate.
    * test-suite/tests/syntax.test (exception:unexpected-syntax): Change
      ("unquote-splicing"): Update test.
      ("begin"): Add in second arms on these ifs, to avoid the strange though
      harmless expansion of `if'.
      (matches?): New helper macro.
      ("lambda"): Match on lexically bound symbols, as they will be

commit dc1eed52f71004bca74028d03ae35bbf569be709
Author: Andy Wingo <address@hidden>
Date:   Fri May 22 12:08:50 2009 +0200

    residualize names into procedures. re-implement srfi-61. module naming foo.
    * module/ice-9/boot-9.scm (cond): Implement srfi-61; most of the code is
      from the SRFI itself. Yuk.
      (%print-module, make-modules-in, %app, (%app modules))
      (module-name): Syncase needs to get at the names of modules, even at
      anonymous modules. So lazily assign gensyms as module names. Name %app
      as (%app), but since (%app modules) is at the top of the module
      hierarchy, name it ().
    * module/ice-9/psyntax.scm: When building tree-il, try to name lambdas in
      definitions and in lets.
      (let, letrec): Give more specific errors in a couple of cases.
    * module/ice-9/psyntax-pp.scm: Regenerated.
    * test-suite/tests/syntax.test: More work. Many exceptions have different
      messages than they used to, many more generic; we can roll this back to
      be faithful to the original strings, but it doesn't seem necessary to

commit 9ecac781bf3b33abca137c242ceaa7c49f604958
Author: Andy Wingo <address@hidden>
Date:   Fri May 22 12:22:39 2009 +0200

    syntax.test is passing, yay
    * test-suite/tests/syntax.test ("top-level define"): Remove the test for
      currying, as we don't do that any more by default. It should be easy
      for the user to add in if she wants it, though.
      ("do"): Remove unmemoization tests, as sc-expand fully expands `do'.
      ("while"): Remove while tests in empty environments. They have been
      throwing 'unresolved, and the problem they seek to test is fully
      handled by hygiene anyway.
      And otherwise tweak expected exception strings, and everything passes!

commit 7902c547130235438fa170d94c43e0c271adb71d
Author: Andy Wingo <address@hidden>
Date:   Fri May 22 12:45:49 2009 +0200

    fix expansion of (ice-9 threads)
    * module/ice-9/threads.scm: Move syntax definitions before the procedures
      that use them, and rewrite as hygienic macros since they are so much
      nicer that way. Fixes the thread tests.

commit e6b94431794ad5cffedfbdbe949789d04ef97761
Author: Andy Wingo <address@hidden>
Date:   Fri May 22 12:48:45 2009 +0200

    fix bad call to make-glil-src
    * module/language/tree-il/compile-glil.scm (flatten-lambda): Fix bad call
      to make-glil-src, unfortunately not hit during production because
      psyntax doesn't yet understand source locations.

commit e0c90f9084914956d90db73b21ef2ab32d1a477a
Author: Andy Wingo <address@hidden>
Date:   Fri May 22 13:00:23 2009 +0200

    fix tree-il test to work if source info happens to be present
    * module/language/tree-il/compile-glil.scm (flatten-lambda): Fix source
    * test-suite/tests/tree-il.test (strip-source): Strip source info on
      tree-il before compiling, so we don't get extraneous source info in the
      glil. Make check passes!

commit 55ae815b62c5d4bf324351d64919bdb8d4070148
Author: Andy Wingo <address@hidden>
Date:   Fri May 22 16:07:41 2009 +0200

    move things to (language tree-il primitives)
    * module/language/tree-il/optimize.scm:
    * module/language/tree-il/primitives.scm: Move primitive-related things
      to primitive.scm from inline.scm and optimize.scm.
    * module/ Update for inventory changes.

commit 39a2eca2ce7461108ddc595cb74a6bf47c456bd8
Author: Andy Wingo <address@hidden>
Date:   Fri May 22 19:26:58 2009 +0200

    fix problem naming internal definitions
    * module/ice-9/psyntax.scm (chi-body): Fix a problem introduced in
      dc1eed52f71, that internal syntax definitions were included in the id
      lis along with value definitions. Only showed up on a second bootstrap.
      Psyntax, how I love thee.
    * module/ice-9/psyntax-pp.scm

commit b40d023067b54f1085f194c521c2d046fceb9444
Author: Andy Wingo <address@hidden>
Date:   Fri May 22 19:48:14 2009 +0200

    remove annotations in psyntax in favor of guile's source properties
    * module/ice-9/psyntax.scm: Remove references to annotation objects,
      we're just going to try and use Guile's source properties now. It works
      until `syntax' reconstructs output, at which point it seems we lose it.
    * module/ice-9/psyntax-pp.scm: Regenerated.

commit 0e7b72a8fefc27d67623b11659372b7ac37b7a58
Author: Andy Wingo <address@hidden>
Date:   Fri May 22 21:12:42 2009 +0200

    source location tracking in psyntax, booya!
    * module/ice-9/psyntax.scm (source-annotation): Return #f if
      source-properties returns null.
      (source-wrap): Rework a bit.
      (syntax-type): Don't throw away source info for wrapped expressions.
      Can has source location info, fools!
      (chi-body): Correctly propagate source info for body subforms.
      (syntax): Remove special case for map, it doesn't apply (ahem) for
    * module/ice-9/psyntax-pp.scm: Regenerate.

commit a755136ba8469fdccbcac956b4f5d8c6f4ec2a4e
Author: Andy Wingo <address@hidden>
Date:   Fri May 22 21:14:48 2009 +0200

    fix (oop goops) compilation for (language tree-il primitives)
    * module/oop/goops.scm (compile): Whoop-dee, fix up (oop goops) for
      (language tree-il primitives) change.


reply via email to

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