LLST: Yet another LittleSmalltalk's VM. This time rewritten from scratch in C++

Previous Topic Next Topic
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view

LLST: Yet another LittleSmalltalk's VM. This time rewritten from scratch in C++

Dmitriy Kashitsyn
Hello All! Merry Christmas and Happy New Year!

Please let me proudly present my latest project.
As you may already noticed it's related to the Timothy Budd's Little Smalltalk.

Actually, there are some projects on the net (and in this mailing list) that aim the same goal. 
Still, I think my implementation is slightly different. 

First of all, I tried to make the whole source code fully readable and understandable by any person. 
There are a LOT of comments here and there explaining what is going on. 
This is mainly indended for educational purposes, however hacking around will be much easier too.

Second thing is that I really tried to rewrite the code in the modern C++. 
When I speak about C++ I mean templates, operators and generic code.
Human should think about algorithm, not the code. 
Thus, many routine tasks that done by hand in the original code,
are performed automatically here in llst. 

I tried my best to make the code as good as possible, still not allowing it to be slow as hell. I think I succeeded.
Well, currently it's a bit slower than the original lst5 but there are a lot of ways to optimize the code.

Last but not least, the LLVM. Primary goal of this project is to take advantage of the LLVM's dynamic features such as
runtime code patching and optimizing. Currently I'm making some research to see how far we can go with it. 
Anyway it looks promising.

Oh, I almost forgot! :) You may find the source code on the BitBucket repository. 
Here it is: https://bitbucket.org/0x7CFE/llst/
Feel free to ask and comment. Please let me know if you forked the source or find it useful.
Actually I really want this project to be known, so any ideas are welcome.

And one more thing. I wasn't alone in the project. I have a companion who kindly helped with code porting and made some 
unit tests that really helped in the debugging process. His name is Roman and I really want to thank him for his help. 
He has a good knowledge of LLVM. I hope we'll push this project to the limits together! :)

Thanks for reading!

P.S.: Those who speak Russian may find my latest article explaining the project: http://habrahabr.ru/post/164153/