[parenscript-devel] Some notes on backward compatibility

Vladimir Sedach vsedach at gmail.com
Thu Oct 28 22:41:22 UTC 2010

So there was a little bit of teh drama about Parenscript on Zach's
blog today: http://xach.livejournal.com/274830.html?view=645006

I set the record straight, but as my reply makes a spiffy official
Parenscript development policy that I hope everyone can agree with,
I'm reposting it below:

A general note about Parenscript: it's totally reasonable for new
versions of Parenscript to implement ANSI CL functions and operators
not implemented in previous versions.

Another problem is that Parenscript started out with some non-ANSI
features. By and large almost all of them turned out to be huge
mistakes in practice, and are continually getting removed.

Some of these can simply be put into the deprecated interface as
macros - these will signal a warning at compile time advising how the
deprecated functions/macros can be replaced with CL versions, but will
still work.

Some of these cannot be removed and will remain (for example, there is
not really any way to express property access in ANSI Common Lisp, so
that gets its own special form specific to Parenscript).

However, one of these (symbol dot notation) turned out to be
completely incompatible. Providing backwards compatibility for it
would have meant replacing the entire CL reader for *any* code that
generated Parenscript (even inline). As this feature made it
impossible to implement things like proper scoping and was a continual
source of bugs for PS code, I think removing it was the right choice.

In conclusion, if you implement an ANSI CL function or special form
that's not currently in Parenscript, be prepared that future versions
of PS may re-implement it for you. You can preempt this surprise by
contributing your code to Parenscript.

Also, everyone is more than welcome to report bugs to the Parenscript
mailing list: http://common-lisp.net/cgi-bin/mailman/listinfo/parenscript-devel


More information about the parenscript-devel mailing list