Hi Lesie,
The change in question (details below) is particularly nasty, and I initially wanted to post about it, but then decided to see how many people would complain. Sorry you had to be the first!
Details about the breakage:
(.method object args) is no longer treated differently by Parenscript. Now you need to write ((@ object method) args) or alternatively ((slot-value object 'method) args). There are three main reasons for this:
1. ".method" and "method" are two different symbols in CL. This breaks the package prefix and obfuscation features of PS (among other things).
2. Special-casing forms that begin with a symbol that begins with a dot means that you need to special-case code walkers, and special-case your CL code if you intend to run the same code on the browser and server.
3. The special-casing was handled by a special intermediary-representation form that introduced duplication, that turned out to have bugs in it (that was the last straw for me).
Vladimir
PS - One thing that I just realized is that forms like ((slot-value object 'method) args) will cause an error when you try to eval them in CL because the car of a form can only be a symbol denoting a function or macro, or a literal lambda form (I think that's all but I'm too lazy to search the Hyperspec for where it states that). The solution for PS-CL code sharing is to introduce a PS funcall macro that doesn't do anything (that's now in the repository).
On Mon, Feb 9, 2009 at 8:15 AM, Leslie P. Polzer sky@viridian-project.de wrote:
Vladimir,
I have a small request: could you post a short note to the list when you commit an incompatible change? 79630.. gave me a bit of an headache until I took a look at the revlog.
Thanks,
Leslie
-- LinkedIn Profile: http://www.linkedin.com/in/polzer Xing Profile: https://www.xing.com/profile/LeslieP_Polzer Blog: http://blog.viridian-project.de/
parenscript-devel mailing list parenscript-devel@common-lisp.net http://common-lisp.net/cgi-bin/mailman/listinfo/parenscript-devel