Greetings,
I've made a number of improvements to the ParenScript code base. What's the best way for us to merge these changes into the darcs repo on common-lisp.net?
Most of the updates fall into five basic broad categories:
* Rewriting PS special forms to better match their CL equivalents. For example, DO now does parallel assignment, supports a return value, and can properly initialize variables that don't increment.
* Improving coverage of CL by adding such forms as SETQ and PSETF.
* Improving access to JS capabilities, such as labeled for loops.
* Documentation and test case updates.
* Miscellaneous code cleanups, whitespaceification, and global standardizations.
The changes are fully backward compatible, as long as you weren't relying on the 'broken' sequential assignment that DO and LET were doing. ;) DO* and LET* are now available for that purpose, of course.
Looks like in total I added somewhere around 350 lines and removed 210 lines from the code base, excluding documentation and test cases. To the documentation I added 368 lines and removed 227.
The changes are reasonably tested and have been in use on my production systems for a couple of months. I've included the darcs changelog below my signature.
Since I use ParenScript rather heavily, it's very likely that I'll be making more substantial changes on an ongoing basis. I'd be happy to help maintain the project. Let me know.
Cheers,
-- Travis
P.S. My branch of parenscript can currently be found here:
http://darcs.tcross.org/parenscript/
$ darcs chan --reverse
[snip...]
Tue Feb 26 22:59:53 UTC 2008 Travis Cross <tc@tra...> * Corrected spelling error.
Tue Feb 26 23:09:02 UTC 2008 Travis Cross <tc@tra...> * Whitespace standardization in src/package.lisp.
Sun Mar 30 01:46:18 UTC 2008 Travis Cross <tc@tra...> * Added support for breaking and continuing to arbitrary labels.
Sun Mar 30 02:05:25 UTC 2008 Travis Cross <tc@tra...> * Greatly simplified implementation of lexical-let*.
Sun Mar 30 02:08:29 UTC 2008 Travis Cross <tc@tra...> * Added lexical-let.
Sun Mar 30 02:14:00 UTC 2008 Travis Cross <tc@tra...> * Added simple-let* and aliased let* to it.
Sun Mar 30 02:22:18 UTC 2008 Travis Cross <tc@tra...> * Added simple-let, which does parallel binding without a lambda.
Sun Mar 30 02:23:16 UTC 2008 Travis Cross <tc@tra...> * Aliased let to simple-let.
Sun Mar 30 02:25:53 UTC 2008 Travis Cross <tc@tra...> * Added psetf.
Sun Mar 30 02:27:55 UTC 2008 Travis Cross <tc@tra...> * Added setq and psetq.
Sun Mar 30 02:33:34 UTC 2008 Travis Cross <tc@tra...> * Updated let1-dynamic to clean up its temporary stack variable after use.
Sun Mar 30 19:35:12 UTC 2008 Travis Cross <tc@tra...> * Improved, extended, and refactored iteration special forms.
* Added support for DO*.
* DO now does parallel assignment.
* DO/DO* now correctly support init-forms such as:
(do (a (b) (c 1) (d 1 (1+ d))) ...)
* DO/DO*/DOTIMES/DOLIST/DOEACH now support return values via a lambda transform.
* DOEACH now supports implicit key/value destructuring, e.g.:
(doeach ((key val) arr res) ...)
* Added labeled-for to facilitate creating labeled for loops.
* Restructured low level printer operators to better match the underlying JS.
Sun Mar 30 19:57:12 UTC 2008 Travis Cross <tc@tra...> * Whitespaceification: removed indentation tabs throughout project.
...and replaced each tab with 8 spaces. Tab indentation had previously been used inconsistently and was dominated by space-based indentation.
In the future, disable indent-tabs-mode in emacs!
(setq indent-tabs-mode nil)
Sun Mar 30 20:11:34 UTC 2008 Travis Cross <tc@tra...> * Some minor comment and whitespace cleanup.
Sun Mar 30 22:28:56 UTC 2008 Travis Cross <tc@tra...> * Updated the documentation and test cases.
Sun Mar 30 22:35:50 UTC 2008 Travis Cross <tc@tra...> * Cleaned up and rearranged the package exports a bit.
Sun Mar 30 22:38:31 UTC 2008 Travis Cross <tc@tra...> * Removed deprecated exports that are no longer implemented.
Sun Mar 30 22:51:16 UTC 2008 Travis Cross <tc@tra...> * Added a mechanism for expanding parenscript forms in a clean environment.
Sun Mar 30 22:53:08 UTC 2008 Travis Cross <tc@tra...> * Added myself to the list of contributors.
Sun Mar 30 23:39:49 UTC 2008 Travis Cross <tc@tra...> * Cleaned up and standardized indentation of JS code in the reference documentation.