Super-Fast Python Implementation for .NET and Mono
Lansdowne writes "Jim Hugunin, the creator of Jython, has released an incredibly fast implementation of Python for Microsoft .NET and Mono called IronPython. Here's his PyCON 2004 presentation, including some benchmarks. He concludes: 'Python is an extremely dynamic language and this offers compelling evidence that other dynamic languages should be able to run well on this platform.'"
I'm glad to see more alternative languages for the .NET/Mono platform... If we're gonna get stuck with it, we may as well make the best of it! :) Seeing Python run nice and fast, being a dynamic language and on a VM, is great stuff too.
Maybe he could have gotten in on the Great Parrot/Python Pie-a-Thon. Perhaps an opportunity to plaster both Guido and Dan with a cream pie...
Get off my lawn.
But Python really hold a candle to PHP or Perl. A language without dollar signs is a day without sunshine.
Sorry to break it to you.
Is there anything the MONO team can do to improve support for dynamic languages?
Though this would probably break their binary compatibility with MS's implementation.
09F91102 no, 455FE104 nope, F190A1E8 uh-uh, 7A5F8A09 that's not it, C87294CE no. Ah! 452F6E403CDF10714E41DFAA257D313F.
I usually take "released" to mean there is an implementation that is publicly available. Unless I am somehow just missing it, it doesn't seem to have been released yet...
I haven't worked with Python yet though I plan to take a look at it soon. I know it is a scripting language but is there a way to compile it into native executable form? If not, what is needed to make a Python app run on a system without the interpreter installed or with an older or newer version? Would I need to ship something JRE-ish that would that make a HelloWorld package megabytes in size?
The real lesson of this "superfast Python" is not that dotnet is a fast platform; it's the more prosaic observation that regular Python still has a great deal of room for improvement. Those Python weenies ought to get on it, and save adding LISPy new features for later.
A Python front end for Gcc could be fun.
Is is "IronPython," the way we'd usually pronounce it, or do we put a little Rocky Balboa in it and call it the "I- ron Py- thon ?"
Those Lispy features are a powerful addition, which make it easier for a programmer to get their job done. If you would rather trade those features for performance, consider Fortran instead. It would be more useful if, rather than focus on the leverage of a single-platform solution, the implementors can approach the performance of various Common Lisp implementations. It is true that dynamic languages don't have to be slow; neither do they have to rely on Microsoft's runtime.
A Python front end for Gcc could be fun. And nearly impossible. I suspect that Python's way too dynamic to be handled by anything but a run-time interpreter.
"The urge to fly from modern systems, instead of moving through them to even greater, fairer things is, I think, an indi
I like Python very much. I may not like .Net, but I'll take my favored languages where I can find 'em :)
I'd suspect, though, that a Parrot implementation, as Parrot continues to develop, will prove to be faster, since it was designed with more dynamic languages in mind.
* Fast - IronPython-0.2 is 1.4x faster than Python-2.3 on the standard pystone benchmark.
I don't know about pystone in particular, but Psyco (a dynamic compiler module that essentially replaces the Python interpreter's inner loop at runtime) tends to make code run much faster than that and can speed up algorithmic code tenfold or more.
When running with Psyco, quicksort written in Python is actually faster than Python's built-in C mergesort!
good luck getting eval to work in gcc
There are places where the networks are not touching,and there are places where they are-Boeing's Lori Gunter
Does this word really mean anything? I keep hearing people talk obout "dynamic languages" and then when pressed they seem to provide rather contradictory definitions of what it actually means. I am convinced that it is merely slang for hip, cool, happening, righteous, etc. The interesting thing is that most of the people who are using it to describe programming languages seem to think that it has some specific technical meaning.
I remember some previous attempt to do Python under .NET that was painfully slow & eventually written off as a failure and blamed on .NET's inability to handle the level of dynamism required to implement Python. What's changed since then?
Are we looking at some sort of fundamental breakthrough in working with the CLR here or was the problem simply tackled by a more experienced/insightful developer?
my sig's at the bottom of the page.
A 50% speed boost isn't *that* much; The Python JIT runtime that was on SlashDot just a few weeks ago cited significantly higher increases in performance. Fast, yes, but I'm not amazed or anything here :)
the problem is that this stuff does not exist (until proven otherwise)
It's better to be the foot on the boot than the face on the pavement. ~~ tkx Kadin2048
CLR is starting to become a prominent candidate for "open source development platform". Things like IronPython just make this sweeter. One-off interpreters are just a waste of time these days. You can get immense value by creating a generic-enough VM (like Parrot or CLR or JVM) and running <your-favorite-language> on it. Then you get all the benefits of consolidating effort on making the platform better. Next up should be PHP and Ruby (if they haven't already).
It's 10 PM. Do you know if you're un-American?
I would not bet that most free software machines do not have a JVM installed. VMs are a great chance for OpenSource to really shine. I used java for an internal program at my company. It is a mission critical app and has worked well for two years now. The best part is that it also runs on Linux. When all of the mission crtical apps are available on Linux then we can move a large section of our office to Linux workstations.
What most people do not understand is that for the vast majority of business apps the choke point is IO and not CPU speed.
See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
Much of python's slowness comes from its meta programming ability: variables and class members basically HAVE to be implemented by hashtables.
If you're willing to give up the dynamic nature and instead settle for scheme-y features, it could run a whole lot faster.
No, you're not paranoid. You're just plain retarded.
Most Free Software platforms have Gcc on them already. Gcc could be part of the runtime, in place of some anonymous JITter.
I don't think a Python front end for gcc would be impossible, but it'd need its own set of libs, and it'd probably have a fair amount of code added in for when interpretation is necesssary. That having been said...
Maybe gcj would be a better place to start. Or, for that matter, maybe you could try to get jython compiled with gcj; sounds like it's been done before.
pb Reply or e-mail; don't vaguely moderate.