Welcome to the next generation of the Slate programming language
Brian T. Rice
briantrice at gmail.com
Sun Dec 7 17:48:03 PST 2008
You've been doing excellent work, Timmy! Thanks for keeping at it, and
I'm definitely a fan of a direction that makes things more
understandable and approachable.
There will definitely be a relaunch of the site over time and
hopefully breath new life into the project and make it more useful.
On Dec 7, 4:57 pm, goo... at timmy.tmbx.com wrote:
> Over the last year, I've been rewriting the slate virtual machine in
> order to make it faster and portable to my 64-bit machine. I've gotten
> to the point where I can now bootstrap slate on my machine and run
> slate faster than I ever could in the past. I would like to invite
> everyone to participate because I don't have enough gas to keep this
> running myself.
>
> There are a lot of changes I made in the last year and I'm sure I've
> left out some:
>
> * I got rid of pidgin and now the VM is in pure C. It is a lot cleaner
> now. It is also easy to maintain and you don't have to worry about
> generating the whole thing through pidgin again.
>
> * I rewrote the garbage collector to a simple generational collector.
> Young objects are allocated in another region and compacted until they
> have to move into the old region (where objects don't move). When
> moving young to old, we scan the whole old area so freed old holes are
> used before growing the old size.
>
> * I changed the compiler to produce SSA register based bytecode
> instead of stack based bytecode. It seems to run faster and I think
> this bytecode is easier to read and will be easier to inline if we
> decide to do that for performance in the future.
>
> * I changed the binary format of the image file to waste more space
> and do less bitmasking of object fields. I removed the payload type
> object and now I just have another field for the object size. This
> made the VM/gc/etc simpler.
>
> * I've rewritten the GUI (graphics.slate/SceneElement) code so that
> now the SDL/Cairo library is about up to par with what we left off
> with. We have listboxes, textboxes, buttons, and I'm working on a
> LineEditorMorph which is like a multiline text editor.
>
> * I grew the global function cache and now I've added callee caches to
> each method. This is pretty much like a polymorphic inline cache. I
> thought I fixed a bug where it flushes the cache when callee get
> redefined but I'll have to check and make sure that code works.
>
> * I removed delegate slots because they were complicated and hard to
> follow. Now you just have "delegates" which is an array in the map of
> an object. Easy to modify and understand.
>
> * I added primitives to get the time in microseconds since the epoch,
> fork the process, and create sockets. I started implementing a socket
> interface to postgres but lost interest. You can log in to a database
> and execute simple queries.
>
> * I gave the VM much better debugging capabilities, you can now print
> a stacktrace from within the VM with print_backtrace and you can look
> at objects with print_detail and print_stack_types. These make
> debugging the VM a LOT easier. There are also a lot of build flags
> that you can find in the Makefile.
>
> * I migrated the source to a git repository which seems a little more
> stable than darcs was for me. They probably fixed those problems with
> patches taking forever to merge a few years ago but git is more
> widespread now.
>
> * The VM is now in one C file less than 7000 LOC. Some people might
> not like this style but it's a lot easier to understand and find
> things I think.
>
> * There have been lots of various bugfixes to slate files and we
> probably need a unit test framework if we're going to find them all.
>
> There might be more things but that is the gist of it. I only have an
> amd 64 box to test on, so please try your luck by downloading a kernel
> image from the google code page and compiling the vm sources.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "slate-language" group.
To post to this group, send email to slate-language at googlegroups.com
To unsubscribe from this group, send email to slate-language+unsubscribe at googlegroups.com
For more options, visit this group at http://groups.google.com/group/slate-language?hl=en
-~----------~----~----~----~------~----~------~--~---
More information about the Slate
mailing list