From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Andy Wingo Newsgroups: gmane.lisp.guile.devel Subject: request review: syncase-in-boot-9 Date: Fri, 22 May 2009 23:41:45 +0200 Message-ID: NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: ger.gmane.org 1243028544 13201 80.91.229.12 (22 May 2009 21:42:24 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Fri, 22 May 2009 21:42:24 +0000 (UTC) To: guile-devel Original-X-From: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Fri May 22 23:42:16 2009 Return-path: Envelope-to: guile-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1M7cV5-0008OH-0D for guile-devel@m.gmane.org; Fri, 22 May 2009 23:42:15 +0200 Original-Received: from localhost ([127.0.0.1]:41695 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1M7cV4-0007f7-7G for guile-devel@m.gmane.org; Fri, 22 May 2009 17:41:58 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1M7cUy-0007ew-CK for guile-devel@gnu.org; Fri, 22 May 2009 17:41:52 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1M7cUo-0007db-1a for guile-devel@gnu.org; Fri, 22 May 2009 17:41:51 -0400 Original-Received: from [199.232.76.173] (port=41843 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1M7cUn-0007dY-Nz for guile-devel@gnu.org; Fri, 22 May 2009 17:41:41 -0400 Original-Received: from a-sasl-quonix.sasl.smtp.pobox.com ([208.72.237.25]:62148 helo=sasl.smtp.pobox.com) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1M7cUm-0000iJ-Qs for guile-devel@gnu.org; Fri, 22 May 2009 17:41:41 -0400 Original-Received: from localhost.localdomain (unknown [127.0.0.1]) by a-sasl-quonix.sasl.smtp.pobox.com (Postfix) with ESMTP id B4DB519D01 for ; Fri, 22 May 2009 17:41:39 -0400 (EDT) Original-Received: from unquote (unknown [81.39.162.237]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by a-sasl-quonix.sasl.smtp.pobox.com (Postfix) with ESMTPSA id 789C819CFE for ; Fri, 22 May 2009 17:41:36 -0400 (EDT) User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.0.92 (gnu/linux) X-Pobox-Relay-ID: 5539AC7A-4719-11DE-9E17-B4FDD46C8AFF-02397024!a-sasl-quonix.pobox.com X-detected-operating-system: by monty-python.gnu.org: Solaris 10 (beta) X-BeenThere: guile-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Developers list for Guile, the GNU extensibility library" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Errors-To: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.lisp.guile.devel:8506 Archived-At: 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 . 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 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 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 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 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 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 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 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 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 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 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 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 Date: Fri Apr 24 19:45:43 2009 +0200 Merge branch 'master' into syncase-in-boot-9 commit 34ad4f83ca4310e84226d6bd06feb03006c736cc Author: Andy Wingo 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 #, 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 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 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 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 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 Date: Thu May 7 17:44:51 2009 +0200 go ahead and regenerate psyntax-pp.scm commit b81d329e449420b6abaa2b689d7107b862111cbf Author: Andy Wingo 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 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 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 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 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 . Not used quite yet. * module/language/glil.scm: Remove , as it is the same as (minus an offset). * module/language/glil/compile-assembly.scm: * module/language/glil/decompile-assembly.scm: * module/language/ghil/compile-glil.scm: Adapt for * removal. * module/Makefile.am (TREE_IL_LANG_SOURCES): Reorder, and add analyze.scm. commit 547a602d1ef4d3622cf2d476ff311957b447eaba Author: Andy Wingo 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 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 , , and 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 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 structures. Yaaaaay! commit 1eec95f8def91bcb6f9f22c21c6d27ec2a7175ac Author: Andy Wingo 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 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 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 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 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 . * test-suite/tests/tree-il.test ("lambda"): Fix nlocs counts. Add a closure test case. commit e32a1792de84c20eaaae6ea7f33048b6eef2c9d8 Author: Andy Wingo 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 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 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 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 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 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 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 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 (( ...)) (define-method (foo (arg )) ...)). * module/oop/goops/compile.scm (next-method?, compile-make-procedure): Remove these, as `method' does it all now, hygienically. commit d63927150aa22bb7e57125ed50e5ecbe11765fba Author: Andy Wingo 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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/