[parenscript-devel] Merging some improvements, additions, and cleanup

Travis Cross travis at travislists.com
Mon Mar 31 00:48:58 UTC 2008


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 at tra...>
   * Corrected spelling error.

Tue Feb 26 23:09:02 UTC 2008  Travis Cross <tc at tra...>
   * Whitespace standardization in src/package.lisp.

Sun Mar 30 01:46:18 UTC 2008  Travis Cross <tc at tra...>
   * Added support for breaking and continuing to arbitrary labels.

Sun Mar 30 02:05:25 UTC 2008  Travis Cross <tc at tra...>
   * Greatly simplified implementation of lexical-let*.

Sun Mar 30 02:08:29 UTC 2008  Travis Cross <tc at tra...>
   * Added lexical-let.

Sun Mar 30 02:14:00 UTC 2008  Travis Cross <tc at tra...>
   * Added simple-let* and aliased let* to it.

Sun Mar 30 02:22:18 UTC 2008  Travis Cross <tc at tra...>
   * Added simple-let, which does parallel binding without a lambda.

Sun Mar 30 02:23:16 UTC 2008  Travis Cross <tc at tra...>
   * Aliased let to simple-let.

Sun Mar 30 02:25:53 UTC 2008  Travis Cross <tc at tra...>
   * Added psetf.

Sun Mar 30 02:27:55 UTC 2008  Travis Cross <tc at tra...>
   * Added setq and psetq.

Sun Mar 30 02:33:34 UTC 2008  Travis Cross <tc at tra...>
   * Updated let1-dynamic to clean up its temporary stack variable after 
use.

Sun Mar 30 19:35:12 UTC 2008  Travis Cross <tc at 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 at 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 at tra...>
   * Some minor comment and whitespace cleanup.

Sun Mar 30 22:28:56 UTC 2008  Travis Cross <tc at tra...>
   * Updated the documentation and test cases.

Sun Mar 30 22:35:50 UTC 2008  Travis Cross <tc at tra...>
   * Cleaned up and rearranged the package exports a bit.

Sun Mar 30 22:38:31 UTC 2008  Travis Cross <tc at tra...>
   * Removed deprecated exports that are no longer implemented.

Sun Mar 30 22:51:16 UTC 2008  Travis Cross <tc at tra...>
   * Added a mechanism for expanding parenscript forms in a clean 
environment.

Sun Mar 30 22:53:08 UTC 2008  Travis Cross <tc at tra...>
   * Added myself to the list of contributors.

Sun Mar 30 23:39:49 UTC 2008  Travis Cross <tc at tra...>
   * Cleaned up and standardized indentation of JS code in the reference 
documentation.




More information about the parenscript-devel mailing list