[parenscript-devel] An experimental implementation of source mappings

Daniel Gackle danielgackle at gmail.com
Fri Mar 15 00:20:37 UTC 2013


I have committed an experimental branch called "srcmap" that contains
an implementation of source mappings for Parenscript.

By "source mappings" I mean a way of associating the text extent
(start and end position in PS source code) of PS forms with the
corresponding positions in generated JS code. There's a more detailed
description in the commit message (053e9d4).

Note that this Lispy form-based approach is not the same as the
line-based approach of the Google/Mozilla source map spec. I believe
it ought to be fairly easy to transform this format into that one, but
have not done that work yet.

Since this implementation had to modify the compiler every place that
forms are transformed along the path from PS input to JS output, it
has a fairly large footprint in the codebase (though not as large as
you might expect: less than 200 lines of code were added, and only
about 100 in the core compiler).

Doing this work I ran into a bunch of places in the code where minor
refactoring would help, as well as a handful of bugs. I kept all of
that carefully separate from the source map commit itself, and have
pushed it in the form of about a half-dozen commits onto master. That
way the work of maintaining the srcmap branch until the day (if ever)
that it is merged into master will at least be limited to relevant
parts of the code. One of those commits was to move BIND out of
deprecation hell and into lib/ps-loop.lisp. Since LOOP isn't
deprecated and it relies on BIND, this seems the best place for BIND
to live for now; especially since LOOP itself deviates from CL about
as much as BIND does.

Daniel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/parenscript-devel/attachments/20130314/f28a8125/attachment.html>


More information about the parenscript-devel mailing list