Quick Cat/CVML update.
I am currently working on the next generation of Cat, which will use
the Cat virtual machine language (CVML). CVML is an optimizing
bytecode compiler developed from scratch in C++ and is hosted at
http://cvml.googlecode.com The current version is not yet ready for
public consumption (undocumented, fragile, and non-portable). It is
going be used as the back-end for the next Cat interpreter version.
I am also working on adding portable continuations to Cat and CVML. I
expect to have the first prototype done by mid-February at the latest.
There are opcodes being introduced into the bytecode to allow
continuations (implemented by cloning the current VM state) to be
created, cloned, and serialized over a stream or network. In addition
I am adding an event passing mechanism to allow VM instances to
communicate safely and asynchronously.
I am also working on a paper for LCTES 09 about using CVML to generate
compact byte-code. From my preliminary results CVML appears to be
significantly smaller (space savings of 50% or more) over other
byte-codes. Anyone interested in reviewing please drop me a line.
- Christopher
Christopher Diggins <cdiggins@...> wrote:
> I am also working on adding portable continuations to Cat and CVML. INice! Parallelism will be important, and it looks like this might
> expect to have the first prototype done by mid-February at the latest.
> There are opcodes being introduced into the bytecode to allow
> continuations (implemented by cloning the current VM state) to be
> created, cloned, and serialized over a stream or network. In addition
> I am adding an event passing mechanism to allow VM instances to
> communicate safely and asynchronously.
possibly help that.
OTOH, I'm curious -- have you looked at partial continuations?
http://en.wikipedia.org/wiki/Delimited_continuation
"Unlike regular continuations, delimited continuations return a value,
and thus may be reused and composed."
> - Christopher-Wm
On Tue, Dec 30, 2008 at 2:39 PM, William Tanksley, Jr
<wtanksleyjr@...> wrote:
> Christopher Diggins <cdiggins@...> wrote:Yeah, I am not a huge fan of delimited continuations. They are quite
>> I am also working on adding portable continuations to Cat and CVML. I
>> expect to have the first prototype done by mid-February at the latest.
>> There are opcodes being introduced into the bytecode to allow
>> continuations (implemented by cloning the current VM state) to be
>> created, cloned, and serialized over a stream or network. In addition
>> I am adding an event passing mechanism to allow VM instances to
>> communicate safely and asynchronously.
>
> Nice! Parallelism will be important, and it looks like this might
> possibly help that.
>
> OTOH, I'm curious -- have you looked at partial continuations?
>
> http://en.wikipedia.org/wiki/Delimited_continuation
messy and unstructured.
> "Unlike regular continuations, delimited continuations return a value,Well this wikipedia entry is not entirely accurate. For example in C++
> and thus may be reused and composed."
all programs return a value, so a continuation in a C++ program would
theoretically return a value (if we were allowed to have continuations
in C++ of course).
I do plan on allowing continuations to return values because all Cat
programs return a stack with a single value on the top. This means
that Cat continuations (in fact any Cat program) can be composed
together.
Another related feature I am working on for CVML is the ability to
chain programs together, and pipe the output from one into the input
of another as you can within Unix shells.
>> - Christopher
>
> -Wm
On Dec 30, 2008, at 4:31 PM, Christopher Diggins wrote:
> Yeah, I am not a huge fan of delimited continuations. They are quiteHave you read Queinnec's "A library of high level control operators"?
> messy and unstructured.
It contains several approaches that I consider nicer than shift/reset:
http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.29.4790
> all Cat programs return a stack with a single value on the top.They do? I'm not sure what you mean by this.
- John