I'm happy to mentor a student for either a ESUG or SoC project.
The potential projects off the top of my head are: * Profiling and primitive writing * Floating point support * Fast 32 bit integers * A CPU port * A Mac port (John's done some work here, not sure what's remaining)
Profiling and primitive writing would involve taking some macro benchmark, say a few crypto kernels, profiling them, figuring out what primitives need to be written to make them perform well, then writing the primitives. Fast 32 bit integers would be useful for crypto.
Floating point support and fast 32 bit integers would involve refactoring the handling of arithmetic messages (+, -, /, and *) then writing basic Exupery primitives for them. Then adding a simple optimizer to remove the boxing and deboxing inside statements.
The goal would be to allow:
a := b + c + d + e.
When run on floats or 32 bit integers to only create one object that is stored in a.
Then to allow:
a at: x put: (b at: x) + (c at: x)
To not generate any objects where a, b, and c are float arrays or integer arrays and x is just a SmallInteger index. This should be possible just using type feedback, primitive inlining, and simple tree traversal optimization all of which exist in Exupery now but are not developed enough for this case.
A CPU port or a Mac port would require someone with a great background, it should be possible for someone to do in that time frame however I don't see incremental delivery working here so it would require a student who we were confident could deliver the entire thing in the time frame.
Bryce
soc@lists.squeakfoundation.org