[cap-talk] Evlan presentation slides

Kenton Varda temporal at gmail.com
Thu Oct 5 22:42:42 CDT 2006


On 10/5/06, Jed at Webstart <donnelley1 at webstart.com> wrote:
>
> I (and I expect others) would be interested to hear how you got involved
> with Evlan and where you anticipate that work leading you and it.
>

It's a long story, but here's a summary...

At one point I was writing a game engine in C++.  Soon I found that a lot of
the stuff I was writing made sense as a general-purpose object-oriented
framework library, so I split it off into a separate project.  While working
on that, I began to develop a very specific programming style in which,
among other things, I would only expose abstract interfaces in header files
with factory functions to construct implementations.  This style was rather
cumbersome to maintain in C++ since I had to edit three different places to
modify a method signature, so I started thinking about developing my own
programming language to manage these things for me.  I had also
independently learned to structure my designs in a capability-based way
(though I didn't know it was called that at the time) and wanted to enforce
that in my language.

Eventually my language ideas evolved into something much different from the
minor extensions to C++ I had originally envisioned.  I assimilated
functional programming when I realized how much more freedom it gave to the
language implementation and all the ways this could be used.  Other features
just sort of grew on top of that as I continued to play with ideas.

I hope to eventually produce a practical platform that integrates all these
ideas.  I don't yet know exactly how this will come about, who I will be
working with, where I might get funding, etc.  At the moment I'm trying to
get some more real-word experience before I actually attempt this.  (I'm
currently working at Google, though I developed Evlan before coming to
Google.)


Regarding persistence:

So far Evlan's implementation of persistence is pretty straightforward.
Since it's a functional language and uses a generational garbage collector,
most of the work of actually obtaining incremental snapshots of the VM state
becomes very easy.  My server takes a snapshot every six hours, though it
could easy do so more often if needed.  Each snapshot only records the data
which has changed since the last one, making it pretty efficient.  New data
is appended to the end of the snapshot, so it's possible to load any
snapshot in the server's history at any time.  Though, in practice I
manually back up and clear the whole file periodically when it gets too big.

As far as I/O goes, when Evlan restores from a snapshot, it simply treats
all open network connections as if they had been reset.  Currently the only
large application written in Evlan is a web server, and for a web server
this strategy works fine, since it expects connections to be flakey and
mostly stateless.  But, clearly the problem will be more complicated for
other kinds of software.  I haven't thought much about this yet.  Thanks for
sharing your thoughts on the subject.

On the topic of "No filesystem" - I wonder why that?
>

Clearly everyone needs a way to organize their stuff.  But, in an entirely
Evlan world, filesystems would be implemented as user applications, not a
core component of the OS.  It would be really easy to write an application
which acts as some kind of container for arbitrary objects/capabilities.

The cool part about this is that you could imagine people writing several
different kinds of container apps specialized to different purposes.  For
storing source code, a heirarchical approach is great.  But, for storing
music, I prefer something more like a database table that lets me sort by
title, artist, etc. and quickly search for the stuff I want.  By decoupling
the organization style from the physical devices, it becomes possible to
develop many kinds of outlandish filesystems and even use them at the same
time.

Under "Real World Use" you refer to the Io Community Manager and
> some Web sites.  Can you describe how Evlan is used for these
> applications?
>

Io Community Manager

  Is that "Real World Use" chart the last?  I admit I
> had some trouble viewing this set of charts.  Perhaps the exchange
> in this area could tie into my initial general question about your
> involvement with Evlan Kenton.
>
> --Jed http://www.webstart.com/jed/
>
> _______________________________________________
> cap-talk mailing list
> cap-talk at mail.eros-os.org
> http://www.eros-os.org/mailman/listinfo/cap-talk
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.eros-os.org/pipermail/cap-talk/attachments/20061005/723aa367/attachment.html 


More information about the cap-talk mailing list