While it's annoying whenever code breaks, this seems like a good change to me. Special-casing symbols with dots seems like an unnecessary leakage of JS into PS. It's hard to build macros on top of forms like that and so on.<br>
<br>Daniel<br><br>p.s. I have several proposed changes to PS that I've been too busy to post about, but will soon. They are things we've added to our own app as a layer on top of PS that have been working out very well, but require a couple of changes to the PS compiler.<br>
<br><div class="gmail_quote">On Mon, Feb 9, 2009 at 4:06 PM, Vladimir Sedach <span dir="ltr"><<a href="mailto:vsedach@gmail.com">vsedach@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hi Lesie,<br>
<br>
The change in question (details below) is particularly nasty, and I<br>
initially wanted to post about it, but then decided to see how many<br>
people would complain. Sorry you had to be the first!<br>
<br>
Details about the breakage:<br>
<br>
(.method object args) is no longer treated differently by Parenscript.<br>
Now you need to write ((@ object method) args) or alternatively<br>
((slot-value object 'method) args). There are three main reasons for<br>
this:<br>
<br>
1. ".method" and "method" are two different symbols in CL. This breaks<br>
the package prefix and obfuscation features of PS (among other<br>
things).<br>
<br>
2. Special-casing forms that begin with a symbol that begins with a<br>
dot means that you need to special-case code walkers, and special-case<br>
your CL code if you intend to run the same code on the browser and<br>
server.<br>
<br>
3. The special-casing was handled by a special<br>
intermediary-representation form that introduced duplication, that<br>
turned out to have bugs in it (that was the last straw for me).<br>
<br>
Vladimir<br>
<br>
PS - One thing that I just realized is that forms like ((slot-value<br>
object 'method) args) will cause an error when you try to eval them in<br>
CL because the car of a form can only be a symbol denoting a function<br>
or macro, or a literal lambda form (I think that's all but I'm too<br>
lazy to search the Hyperspec for where it states that). The solution<br>
for PS-CL code sharing is to introduce a PS funcall macro that doesn't<br>
do anything (that's now in the repository).<br>
<br>
<br>
On Mon, Feb 9, 2009 at 8:15 AM, Leslie P. Polzer<br>
<<a href="mailto:sky@viridian-project.de">sky@viridian-project.de</a>> wrote:<br>
><br>
> Vladimir,<br>
><br>
> I have a small request: could you post a short note to the list<br>
> when you commit an incompatible change? 79630.. gave me a bit of<br>
> an headache until I took a look at the revlog.<br>
><br>
> Thanks,<br>
><br>
> Leslie<br>
><br>
> --<br>
> LinkedIn Profile: <a href="http://www.linkedin.com/in/polzer" target="_blank">http://www.linkedin.com/in/polzer</a><br>
> Xing Profile: <a href="https://www.xing.com/profile/LeslieP_Polzer" target="_blank">https://www.xing.com/profile/LeslieP_Polzer</a><br>
> Blog: <a href="http://blog.viridian-project.de/" target="_blank">http://blog.viridian-project.de/</a><br>
><br>
><br>
> _______________________________________________<br>
> parenscript-devel mailing list<br>
> <a href="mailto:parenscript-devel@common-lisp.net">parenscript-devel@common-lisp.net</a><br>
> <a href="http://common-lisp.net/cgi-bin/mailman/listinfo/parenscript-devel" target="_blank">http://common-lisp.net/cgi-bin/mailman/listinfo/parenscript-devel</a><br>
><br>
<br>
_______________________________________________<br>
parenscript-devel mailing list<br>
<a href="mailto:parenscript-devel@common-lisp.net">parenscript-devel@common-lisp.net</a><br>
<a href="http://common-lisp.net/cgi-bin/mailman/listinfo/parenscript-devel" target="_blank">http://common-lisp.net/cgi-bin/mailman/listinfo/parenscript-devel</a><br>
</blockquote></div><br>