[LLVMdev] Is LLVM our answer??
andrew.omeara at soundspectrum.com
Fri Apr 1 11:36:15 PDT 2011
Hey everyone, I'm new to LLVM and am conducting LLVM R&D as CTO for some new technology in our company products. I've done a basic review of all the major components and have walked through the Kaleidoscope tutorial in order to get a feel for LLVM since it seems to address the needs we're looking to fill. Separately, congrats to all the LLVM developers for making LLVM grow to be more and more central in Apple's tool chain roadmap!
Anyway, so I was hoping that one or more LLVM gurus here could point me in the right direction... Our newest products currently use embedded CPython in chorus with callbacks into our C/C++ engine. Unfortunately, CPython's poor performance has become an increasing liability while our Python code is generally basic and could be represented in a more strictly-typed language. Because our software operates in realtime, performance matters so we're accessing the viability of converting our python code to vanilla C++ (or something else) and using LLVM/JIT during runtime to compile and run our code. The compiled code would be linked with callback glue and be invoked by calling the entry point (and execution would pass to the newly compiled code, occasionally returning back to app procs as callbacks occur). In other words, we're considering migrating the language our content is authored from Python to C++ (or some other JIT-compatible language) in order to get a major performance boost.
>From what I understand of LLVM, this would seem to be well supported. That said, our customers are very non-technical, so all the LLVM components we'd have to use would *have* to live inside our app binary and app resource dirs (so installing any extra components into the system is would be off limits). Also, we target both OS X and Windows, but I'm not getting the feeling there's support for MS Visual Studio. I see minGW support not but no MSVS support, is that correct? What are the implications of this for a commercial developer who can't just scrap their MSVS environment for minGW?
So, in short, a list of LLVM subcomponents and tutorials for me to concentrate on would really help us since the LLVM universe seems so massive to this newcomer!
If you're curious about what we make that this all relates to, check out soundspectrum.com and our newest product Aeon. When you run Aeon, you'll see a slideshow of realtime, high-performance and fun graphics content. Our engine is 8 years worth of high-performance C++ that drives Direct3D and OpenGL (depending on the platform) and uses embedded Python to run scripts that make batch-style drawing calls back into the C++ engine for execution. The result is rich content authored relatively easily and succinctly that gets good fps and native quality graphics. But CPython's performance has been a nightmare, and using LLVM in the way we're hoping would be as exciting for the LLVM community (I hope!) as it would be for us! I'd love for SoundSpectrum to show off the awesomeness of LLVM!!
Thanks in advance for your insight and time!
More information about the llvm-dev