[Numpy-discussion] New project : Spyke python-to-C compiler
Travis E. Oliphant
Sun Apr 6 23:19:58 CDT 2008
What will be the licensing of this project? Do you know yet?
I have a couple of comments because I've been thinking along these lines.
> What is Spyke?
> In many performance critical projects, it is often necessary to
> rewrite parts of the application in C. However writing C wrappers can
> be time consuming. Spyke offers an alternative approach. You add
> annotations to your Python code as strings. These strings are
> discarded by the Python
> interpreter but these are interpreted as types by Spyke compiler to
> convert to C.
> Example :
> "int -> int"
> def f(x): return 2*x
> In this case the Spyke compiler will consider the string "int -> int"
> as a decalration that the function accepts int as parameter and
> returns int. Spyke will then generate a C function and a wrapper
What about the use of decorators in this case?
Also, it would be great to be able to create ufuncs (and general numpy
funcs) using this approach. A decorator would work well here as well.
> Where is Spyke?
> Spyke will be available as a binary only release in a couple of weeks.
> I intend to make it open source after a few months.
I'd like to encourage you to make it available as open source as early
as possible. I think you are likely to get help in ways you didn't
expect. People are used to reading code, so even an alpha project can
get help early. In fact given that you are looking for help. I
think this may be the best way to get it.
If you need help getting set up in terms of hosting it somewhere, I can
help you do that.
> Spyke is written in Python and Java and should be platform independant.
> I do intend to make the source open in a few months. Right now its
> undergoing very rapid development and has negligible amounts of
> documentation so the source code right now is pretty useless to anyone
> else anyway.
> c) Strings as type declarations : Do you think I should use decorators
> instead at least for function type declarations?
I think you should use decorators. That way you can work towards
having the compiler "embedded" in the decorator and happen seamlessly
without invoking a separte "program" (it just happens when the module is
loaded -- a.l.a weave).
More information about the Numpy-discussion