I wanted to post a progress report on what I've been working on for the next release of ThinLisp.
Since the release of ThinLisp 1.0 I've been working on pthreads support and lexical closure support. Most of the runtime data structures for pthreads are complete, but to provide the interfaces for pthreads that I want (namely progn-parallel and progn-parallel-race) I need to have lexical closures.
Lexical closures are a glaring lack in ThinLisp today, though I've some reservations about including them. Inadvertent consing of lexical closures is a common performance coding slip-up. Many of the locations where lexical closures are used are where they are passed to mapping functions. In order to ameliorate the lack of lexical closures, most built in mapping functions are implemented as macros. Then, if the function to be mapped is a lambda expresssion, the funcall of that lambda expression will be optimized out into a LET form.
However, there are places, such the implementation of my beloved progn-parallel, where true lexical closures are a necessity. Since most lexical closures are objects which can be implemented with dynamic extent, I'm implementing stack-consing of closures as well as the typical heap consing, and all usual compile time warnings about consing in ThinLisp will be generated for lexical closures.
While I do not have an expected release date to publish for version 1.1, I'm vaguely shooting for before the winter solstice.
Log in to post a comment.