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.

Reply via email to