The new macro expander is ready for you to try: http://www.cs.utah.edu/~mflatt/tmp/scope-snapshot/
What you should expect: * If your library has no macros, or if it uses only pattern-matching macros that don't expand to submodules or units, then it should work with the new expander without changes. * If your library includes a macro that expands to a submodule, then there's a good chance that the macro will need to change. The old expander allowed even pattern-based macros to generate submodules that bind parts of the macro's input. More generally, the new expander doesn't throw away as much pre-expanded context on a submodule form as the old expander. * If your library includes a macro that expands to a unit, and if a signature or definition are not both introduced by the macro or from the macro use site, then you might run into an unbound-identifier or missing-definition error. It's difficult to pin down what the old macro did, and in the few cases where I've seen a difference between the old and new version, I've been inclined to say that the old behavior was wrong. This change could be enough of a problem that we have to do something different, through, so please let me know if you run into it. * A macro that uses `syntax-local-get-shadower` like will have to be revised, and it should be revised to avoid that function. A macro that uses `syntax-local-make-delta-introducer` definitely will have to be revised, because that function is no longer supported. Most macros don't use such obscure functions. Most packages build ok using the above snapshot: http://next-pkg-build.racket-lang.org.s3-website-us-west-2.amazonaws.com/ Several failures are "ambiguous binding" errors. That error usually indicates an unavoidable incompatibility between the old and new macro systems. I'm interested to hear whether the package authors can understand the errors and fix them and whether the incompatibilities seem manageable. (Thanks to Greg for fixing a problem in the "rackjure" package before the build. That problem was due to a failure of the old macro expander to report an import--definition conflict.) If you're prefer to work from the "scope" branch of https://github.com/mflatt/racket then it's simplest to add the catalog http://www.cs.utah.edu/~mflatt/tmp/scope-snapshot/catalog/ before "http://pkgs.racket-lang.org/" so that you get compatible versions of the handful of packages that I modified. I've also updated the write-up at http://www.cs.utah.edu/~mflatt/scope-sets-4/ The changes are relatively small and mostly in section 9. -- You received this message because you are subscribed to the Google Groups "Racket Developers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/racket-dev/20150413124050.89B946501BF%40mail-svr1.cs.utah.edu. For more options, visit https://groups.google.com/d/optout.
