![](https://secure.gravatar.com/avatar/8ad3c66c4ffdbf4199928e543582a374.jpg?s=120&d=mm&r=g)
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.