Wednesday, May 03, 2006

Shed Skin 0.0.8, new website, Google SoC/Thesis?

I have just released Shed Skin 0.0.8. for this version, I removed about 1000 lines (mostly memory optimizations - so the compiler is now less than 6000 lines!), cleaned up stuff a bit (it's still a monolithic file though), added/completed more string methods and applied many minor bugfixes and several more error messages, based on Bearophile's list of known bugs. thanks man! :-)

I also created a simple Shed Skin 'homepage' and modified the README, to better introduce Shed Skin to people. please modify any links to my blog or the sourceforge site to this page - see the link on the right. please let me know if you think I should change something.

now that the source code is becoming pretty clean, and there are many largish test programs that run well (see Section 5 of me thesis!), the time seems right to invite other people to join the project, and look into some important aspect I don't have enough time for/interest in. there are three important things that can be investigated relatively separately:

-I removed my simple memory optimizations (turning heap allocation into stack- and static preallocation). this is a fascinating subject, with a lot of existing techniques coming from the Java community. as can be seen from my thesis, it can really help performance as well. I just never had the time to properly investigate it.

-SS currently uses the bloody C++ STL string type, which makes it really slow for string-intensive programs. it would be really nice to have a more efficient (preferrably OO) string type, possibly using Psyco-like techniques. since I never really use strings much, I do not have enough interest in this myself, but I recognize the importance.

-integration of Python code and compiled code remains a hassle. currently, a lot of manual work is needed to provide 'bindings'. it would be great to somehow have a (semi-)automated process, to enable compiled code to at least use the standard library, and to be able to easily call compiled code from Python programs.

if you are interested in any of these three topics, note that the deadline for the Google Summer of Code 2006 is in about a week. since SS got accepted last year, and there will probably be more slots for Python this year, this might be worth a try! let me know, and we can cook up a proposal together.

the first topic (memory optimization) is also a great topic for doing a Master's/PhD Thesis. unfortunately, Robert could not find a mentor for this. please let me know if you are interested, or you know of a compiler-savvy (Master/PhD) student that might be interested!

10 comments:

Oliver said...

Shiny, will have a look at it tomorrow/today if i ever escape my thesis :)

srepmub said...

sure, thanks!

please let me know about any problems you encounter. I am still months away from even a 0.1 release.. :P


mark.

Andreas said...

You mentioned that you need an automatic way to provide bindings between C++ and python (both ways). There is already a stable tool which does this and it is called Babel. You can find it at:
http://www.llnl.gov/casc/components/babel.html

and dowload it at

http://www.llnl.gov/casc/components/software.html

I recommend that you look at this project for solving that particular problem

srepmub said...

hey, cool :-) this looks very interesting. but the problem is a bit more general, in case of Shed Skin: the type analysis also has to understand what is going on inside a library, to correctly infer types..

Janzert said...

Very interesting and looks like it has great potential.

One question; would you consider changing to a different license, maybe an apache or bsd style?

The reason being it would seem currently anything compiled with Shed Skin would obviously link in the Shed Skin implemented builtins and would also have to be released under the GPL if it were distributed.

srepmub said...

hello janzert,

you are right - I was planning to give the ?pp files a different license, but in the end I forgot about it. I will do this before the next release. let me know if you need it sooner.

thanks for remarking this!

Janzert said...

Thanks. No rush, I'm still at the look and play around with it stage. :) It was just something I noticed that could cause problems in the future since the longer a project goes the harder a license change becomes.

srepmub said...

unfortunately, I am still the only real contributer at this stage, so I can (and do) change licenses at will :P

are you thinking about compiling a certain program? please let me know if it doesn't work, so I can fix any problems.

griff said...

Hey, very interesting work. I haven't bothered to take a look at it, but figured I can make a comment.

Usage of Boost.Python[1] would make some things much easier. Boost.Python is very good at what it does. If you haven't checked it out, the link is below.

[1] http://www.boost.org/libs/python/doc/

jdcrunchman said...

Has this been tested on the Mac OS-X? I would be most interested in getting comments from other Mac users on this tool.