I have posted my first beta version of Strands on my site at www.xucia.com#Strands. Strands is the enhanced branch version of Narrative JavaScript that I have developed to further the technologies that Neil created. I would love to get any feedback on what you think of it. The main enhancements/additions to Narrative JavaScript are:
a.. No special syntax is needed for functions that might suspend execution. All functions calls are compiled such that calls will work properly whether or not they have been compiled with Strands, and whether or not it suspends. The -> operator is not necessary anymore. When uncompiled functions are called they won't suspend of course, but no additional arguments are passed in for yielding/blocking calls, so there can be complete interoperability.
b.. With scoping - With scoping of frames provides a number of advantages:
a.. Variable name preservation
b.. Smaller compiled code
c.. Allows "with" blocks to be compiled
d.. evals that don't try to suspend will work
c.. Added an option to include the original source code for improved debuggability/readability
d.. Also there is servlet that can automatically do compilation on the fly for JS requests.
e.. Simplified (I think it is simpler anyway) API based on futures, that is completely compatible with my upcoming Rhino Strands which adds native coroutine support to Rhino (in both interpreted and compiled mode).
f.. Some extras like synchronization to protect multiple entry into critical sections, and I hoping to re-invokability as well (for execution rewinding).
Thanks,
Kris
www.xucia.com