* request review: syncase-in-boot-9
@ 2009-05-22 21:41 Andy Wingo
0 siblings, 0 replies; only message in thread
From: Andy Wingo @ 2009-05-22 21:41 UTC (permalink / raw)
To: guile-devel
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
review.
Cheers,
Andy
commit 757937c290ae64a7a75232793c659d0cca3dea10
Author: Andy Wingo <wingo@pobox.com>
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 <wingo@pobox.com>
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 <wingo@pobox.com>
Date: Fri Apr 24 13:54:38 2009 +0200
syncase early in boot-9, defmacros in terms of syntax-case -- halfway working
* 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
expand-support.
(%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
syncase.
(primitive-macro?): Remove, no meaning...
(use-syntax): Deprecate.
(define-private, define-public, defmacro-public): Rework in terms of
syntax-rules.
* module/ice-9/syncase.scm: Gut, as syncase is provided by core now.
commit 64e5d08d3e7076b554f724efede860883f846b5f
Author: Andy Wingo <wingo@pobox.com>
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 <wingo@pobox.com>
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
boot-9.scm.
* module/ice-9/compile-psyntax.scm: Update to work with
syncase-in-boot-9.
* module/ice-9/psyntax-pp.scm: Recompiled with syncase-in-boot-9.
commit c5ad45c7b34346f0f7084477479e7367c30a67f6
Author: Andy Wingo <wingo@pobox.com>
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 <wingo@pobox.com>
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 <wingo@pobox.com>
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 <wingo@pobox.com>
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
useful.
* 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 <wingo@pobox.com>
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
regenerated.
commit d6ebfd72268878d64c583998ea9d57c0eb22996e
Author: Andy Wingo <wingo@pobox.com>
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
support.
* 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
support.
* module/ice-9/psyntax-pp.scm: Regenerated.
commit 6e26b23c5d0df8a69a12aca7be4494a19cdf0600
Merge: d6ebfd72268878d64c583998ea9d57c0eb22996e 58df2e43937bb86fbf751f48db7bf13934d7c87e
Author: Andy Wingo <wingo@pobox.com>
Date: Fri Apr 24 19:45:43 2009 +0200
Merge branch 'master' into syncase-in-boot-9
commit 34ad4f83ca4310e84226d6bd06feb03006c736cc
Author: Andy Wingo <wingo@pobox.com>
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 <wingo@pobox.com>
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/Makefile.am: 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 <wingo@pobox.com>
Date: Fri Apr 24 23:56:40 2009 +0200
allow docstrings with internal definitions
* module/Makefile.am (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 <wingo@pobox.com>
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 <wingo@pobox.com>
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 <wingo@pobox.com>
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
object".
(global-extend): Pass type and val separately.
commit 39f30ea29df55eda3f92d0cf68f1f89282a1418e
Author: Andy Wingo <wingo@pobox.com>
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
compiler.
* 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 <wingo@pobox.com>
Date: Sun Apr 26 11:35:23 2009 +0200
fix module-bound?, start compiling srfi-18.scm
* module/Makefile.am (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 <wingo@pobox.com>
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 <wingo@pobox.com>
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 <wingo@pobox.com>
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
syntax-error.
* 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 <wingo@pobox.com>
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 <wingo@pobox.com>
Date: Sun Apr 26 20:57:51 2009 +0200
build ecmascript stuff last
* module/Makefile.am: Wait to build ecmascript until the compiler has
bootstrapped.
commit 5f1a2fb10f5eb97e302c50f5b62d6df28f73d97a
Author: Andy Wingo <wingo@pobox.com>
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 <wingo@pobox.com>
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 <wingo@pobox.com>
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
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 <wingo@pobox.com>
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 <wingo@pobox.com>
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 <wingo@pobox.com>
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 <wingo@pobox.com>
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 <wingo@pobox.com>
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 <wingo@pobox.com>
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 <wingo@pobox.com>
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 <wingo@pobox.com>
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
module.
(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 <wingo@pobox.com>
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 <wingo@pobox.com>
Date: Thu May 7 13:45:03 2009 +0200
new language: tree-il. psyntax generates it when run in compile mode.
* module/Makefile.am: 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 <wingo@pobox.com>
Date: Thu May 7 17:38:40 2009 +0200
remove (ice-9 expand-support)
* module/ice-9/Makefile.am:
* module/ice-9/expand-support.scm: Remove module, no longer used.
* module/ice-9/psyntax.scm: Fix a comment.
commit 06656e06d454f16694d0b550fb339efb0c36123a
Author: Andy Wingo <wingo@pobox.com>
Date: Thu May 7 17:44:51 2009 +0200
go ahead and regenerate psyntax-pp.scm
commit b81d329e449420b6abaa2b689d7107b862111cbf
Author: Andy Wingo <wingo@pobox.com>
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/Makefile.am: Adjust for additions and removals.
* module/language/scheme/compile-ghil.scm: Remove an vestigial debugging
statement.
* module/language/scheme/spec.scm:
* module/language/scheme/compile-tree-il.scm:
* module/language/scheme/decompile-tree-il.scm: Add tree-il compiler and
decompiler.
* 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 <wingo@pobox.com>
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
refs.
* module/Makefile.am: 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 <wingo@pobox.com>
Date: Tue May 12 22:29:34 2009 +0200
add primitive expander for tree-il
* module/Makefile.am: 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
pastures.
commit 073bb617eb7e5f76269ca6dba0fe498baff6f058
Author: Andy Wingo <wingo@pobox.com>
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 <wingo@pobox.com>
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
file.
* 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
optimizations.
* 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/Makefile.am (TREE_IL_LANG_SOURCES): Reorder, and add
analyze.scm.
commit 547a602d1ef4d3622cf2d476ff311957b447eaba
Author: Andy Wingo <wingo@pobox.com>
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 <wingo@pobox.com>
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
constructors.
* 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 <wingo@pobox.com>
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 <wingo@pobox.com>
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
make-promise.
* 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 <wingo@pobox.com>
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
primitives.
commit dce042f1f74f8ef5ca5089beb50fd7496feae5da
Author: Andy Wingo <wingo@pobox.com>
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 <wingo@pobox.com>
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/Makefile.am (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
problem.
* 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
compilation.
commit a1a482e0e9518b5711bc2734aa014254f9207919
Author: Andy Wingo <wingo@pobox.com>
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
expanded.
* 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
(current-module).
* 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 <wingo@pobox.com>
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
constructors.
* module/ice-9/psyntax-pp.scm: Regenerated.
* module/language/scheme/spec.scm (scheme): Clean up the #:compilers
list.
* module/language/tree-il/compile-glil.scm (flatten): Fix call to
`length' in call/cc compiler.
commit 5af166bda2f1d89525add147a9e3d2d6867d03a5
Author: Andy Wingo <wingo@pobox.com>
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 <wingo@pobox.com>
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
arguments.
* 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 <wingo@pobox.com>
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 <wingo@pobox.com>
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
light.
commit 68623e8e7883077dbb26521fe6d9c185df3138ce
Author: Andy Wingo <wingo@pobox.com>
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 <wingo@pobox.com>
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 <wingo@pobox.com>
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 <wingo@pobox.com>
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 <wingo@pobox.com>
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 <wingo@pobox.com>
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 <wingo@pobox.com>
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
truncate-values.
* 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
better.)
("apply", "call/cc"): Add some more tests.
commit 2032f3d1db09aa63de4ec060081a5bf9053f0d3c
Author: Andy Wingo <wingo@pobox.com>
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 <wingo@pobox.com>
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 <wingo@pobox.com>
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
successful.
* module/ice-9/psyntax-pp.scm (syntax-rules): Regenerate.
* test-suite/tests/syntax.test (exception:unexpected-syntax): Change
capitalization.
("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
alpha-renamed.
commit dc1eed52f71004bca74028d03ae35bbf569be709
Author: Andy Wingo <wingo@pobox.com>
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
me.
commit 9ecac781bf3b33abca137c242ceaa7c49f604958
Author: Andy Wingo <wingo@pobox.com>
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 <wingo@pobox.com>
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 <wingo@pobox.com>
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 <wingo@pobox.com>
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
emission.
* 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 <wingo@pobox.com>
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/Makefile.am: Update for inventory changes.
commit 39a2eca2ce7461108ddc595cb74a6bf47c456bd8
Author: Andy Wingo <wingo@pobox.com>
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 <wingo@pobox.com>
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 <wingo@pobox.com>
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
Guile.
* module/ice-9/psyntax-pp.scm: Regenerate.
commit a755136ba8469fdccbcac956b4f5d8c6f4ec2a4e
Author: Andy Wingo <wingo@pobox.com>
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.
--
http://wingolog.org/
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2009-05-22 21:41 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-05-22 21:41 request review: syncase-in-boot-9 Andy Wingo
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).