Slashdot Mirror


IronPython 1.0 is Born

dougblank writes "IronPython version 1.0 was just released after 3 years of development. Jim Hugunin, the creator of Jython and the lead developer of the Shared Source IronPython, made the birth announcement earlier this week. From the announcement: 'I wanted to understand how Microsoft could have screwed up so badly that the CLR was a worse platform for dynamic languages than the JVM... I found that Python could run extremely well on the CLR — in many cases noticeably faster than the C-based implementation. [...] Shipping IronPython 1.0 isn't the end of the road, but rather the beginning. Not only will we continue to drive IronPython forward but we're also looking at the bigger picture to make all dynamic languages deeply integrated with the .NET platform and with technologies and products built on top of it. I'm excited about how far we've come, but even more excited by what the future holds!'"

18 of 285 comments (clear)

  1. Yes, but.... by gnud · · Score: 5, Interesting

    ...does it run on Mono?

    1. Re:Yes, but.... by JimDaGeek · · Score: 5, Interesting
      I actually find the multi-language of of the CLR to be a negative. I work at a fortune 500 and most of us use C# and/or Java. There are a few groups of "programmers" that have always been VB-only/ASP-Only "programmers". They have really no understanding of programming maintainable code. The majority of the junk they churn out is MS-Only/IE-Only crud. The bad part is if one of us programmers ever have to maintain the crappy VB.Net code. C# is a pretty nice language that flows well with .Net and is not overly verbose. VB.Net is the exact opposite, one might as well code in COBOL.Net. It really stinks to have the majority of a code-base in C# and then have some VB.Net assemblies thrown at you that you that you later have to maintain. IMO, it really kills productivity to have to switch to VB.Net from C# for a few bits of a project. To me it seems as if no real design went into VB.Net in contrast to C# which seems like a lot of thought went into how to do things and how not to do things.

      I really wish MS just let VB die with VB 6, it would have been for the best. The VB 6 fans could have continued with VB 6 until they learned a real programming language and real programming techniques.

      I don't see IronPython being adopted by the non-programmers though.
      I agree. I think Python is a good language and most importantly it is cross-platform. Why would someone want to kill Python by making it MS-Only? As far as getting this IronPython on Mono, I don't see it happening. I use Mono and it is pretty nice. Mono has .Net 1.1 complete and .Net 2.0 is pretty much there now too. I just don't see IronPython ever getting enough development behind it to get a port to Mono, especially with a "shared" source license.

      Even though the MS-PR-machine says .Net is cross-platform, it really is not. MS only released a C# compiler for FreeBSD. The compiler is not a big deal. The thing that makes .Net, just like Java, is the extensive framework. MS made an MS-Only framework. It is only because of the hard work of the Mono team that we can enjoy C#/.Net/ASP.Net/ADO.Net/etc on Linux, Mac OS X, Solaris, OpenBSD, FreeBSD, NetBSD and even MS Windows. Mono is cross-platform, Microsoft .Net is not. When Sun did Java, they put the effort in to make the most important part, the framework, cross-platform. I wish MS did the same.
      --
      General, you are listening to a machine! Do the world a favor and don't act like one.
    2. Re:Yes, but.... by Anonymous Coward · · Score: 2, Interesting

      Why would someone want to kill Python by making it MS-Only?

      IronPython-development is sponsered by Microsoft. Draw your conclusions. It's just as with Adobe being in the W3C-group to kill the SVG-standard by making it virtually unimplementable.

    3. Re:Yes, but.... by RAMMS+EIN · · Score: 2, Interesting

      ``The Visual Basic language has certain irregularities and peculiarities, but MOSTLY the issue with it is that it is very primitive.''

      I don't know what "primitive" is really supposed to mean here. If it means simple, I would say that a language can both be simple and flexible (e.g. Scheme and Smalltalk are). But I do find that irregularities in a language are generally a Bad Thing: they may seem acceptable or even convenient while the language is being used for simple tasks in a small domain, but once the scope of the language and the tasks it is put to is expanded, they will really start to hurt. You can see this happening when you look at the history of Perl, PHP, Python and Ruby.

      ``As such, you can certainly learn elementary programming concepts with it without suffering permanent brain damage;''

      I disagree. If the language design is bad, you will suffer brain damage by working with it, for two reasons. First of all, you will accept the peculiarities of the language as "the way it is done", or even "the right way". I don't know about you, but I've certainly encountered my share of people who thought that all languages besides the only one they knew were terrible, because they didn't have some feature that their language had...and they lacked the open-mindedness to see that some people might actually consider that feature a Bad Thing. Secondly, the more peculiarities you have to deal with in a language, the more it distracts from the actual process of designing and implementing programs: eventually, you will miss the forest for the trees. This is especially bad for people who would have difficulty with the programming process to begin with.

      ``you just don't get the benefits of learning to think "in the large" the way you do with a more expressive language.''

      And that just adds insult to injury. Even when you manage to master programming by fighting and beating your badly designed language, you will never become a great programmer with it, simply because the language doesn't let you. So, (ignoring what useful things the language library might let you do, after all we're discussing design here) you've wasted your time and energy.

      ``However the language is only 1/3 of the three distinct items that make up the whole package: the language, the runtime system and the IDE. A lot of stuff you "do" in VB is actually done by libraries written in C++.''

      I don't know what point you're trying to make by saying the libraries are written in C++. Also, I disagree with your three items. The IDE doesn't belong in there: you can develop an IDE for any language. My division would be: the language (syntax and semantics), the libraries (what functionality is provided), and the implementation (compiler, interpreter). The syntax and semantics are fixed; you don't have any control over them as a programmer. The library is definitely part of the personality of the language, but it can be expanded and perhaps even replaced (e.g. imagine C, but with a library that included only garbage-collected data types and safe functions (e.g. no gets)). The implementation is mostly a contingent property (e.g. there are dog slow and lightning fast Scheme implementations), except for two things: incompatibilities among implementations and the fact that there will typically be a de-facto standard implementation.

      ``When most people thinking about "learning" a system like VB have in mind is learning how to accomplish specific tasks. For those tasks that are well supported by the runtime system and the IDE, VB is highly productive. We're talking common business tasks that can be supported by bolting together VB controls and some ActiveXs with a few event handlers. The useful scope of such applications is very wide indeed.''

      True enough, but that doesn't make the use of an inferior language a Good Thing. People would be much better of if the language they were taught and that they used to write their glue code was also a good vehicle for real programming. The number one reason for that is that small, o

      --
      Please correct me if I got my facts wrong.
    4. Re:Yes, but.... by oohshiny · · Score: 2, Interesting

      The current version does a pretty good job with providing a very windows like look and feel in Swing. Not only that but swing is actually pretty fast.

      Yes, indeed, it provides a "very Windows-like look and feel"; unfortunately, it does so on every platform, including Linux and Macintosh.

      What Java doesn't do is support/follow well conventions about menus, shortcuts, keyboard layout, preference files, drag-and-drop, window management, device access, scripting language access, desktop search integration, and a host of others.

      There are a number of well-written, useful Java GUI applications, but, except for some trivial ones, none come even close to behaving like a native app.

      (I'm using Java 1.4 and 1.5 on Linux, Macintosh, and Windows.)

  2. Hmmm by Anonymous Coward · · Score: 2, Interesting

    "in many cases noticeably faster than the C-based implementation"

    Funny enough, I haven't yet found one of these cases...

  3. Dealing with UI by Carcass666 · · Score: 3, Interesting

    So, if I'm using Iron Python under .NET, would I use be compelled to use WinForms at that point or would libraries like wxPython still be available?

  4. Re:About speed. by grammar+fascist · · Score: 4, Interesting

    My favorite so far is Pyrex, which lets you write C extension modules in a Python-like language. (It adds things like C data types and support for importing header files. I wish it would do generators, though.) A lot of times you can move a hefty inner loop into a Pyrex module and see tremendous gains.

    --
    I got my Linux laptop at System76.
  5. Hrm by IamTheRealMike · · Score: 4, Interesting

    Well, the links to the FAQ don't seem to work thanks to some kind of site move (I am asked to download the HTML instead of view it and ... well ... am too lazy tonight). But a few thoughts based on what is already there:

    • It says they are maybe 1.7 times faster than CPython, which is not that great, because CPython is incredibly slow and things like Psyco can give pretty big speedups (say 10 to 100 according to their website).
    • It seems fundamentally impossible to make a language like Python or Ruby fast. By their very nature everything has to be done at the last minute, based on string comparisons, and you can't do global optimizations really because at any moment the program might change itself and invalidate them. Consider the way every object can implement a fallback method that is called if somebody invokes "foo.bar" and bar does not exist in foo. It implies that every single method invocation must be identified by string not a number, and matched by string comparison.
    • If IronPython can't make Python fast .... seems like its only purpose is to give people who like Python and .NET some half way point between the two. But it's not quite Python, because you can't use its standard library, and it's not quite .NET so in a way you seem to get the worst of both worlds

    I guess I just don't get it.

    1. Re:Hrm by killjoe · · Score: 2, Interesting

      I think the point is to discourage the use of cross platform libraries and languages. MS figures if they can tie python programmers to windows then less programs will be written that can run on linux or the mac.

      The question is does ironpython run on mono.

      --
      evil is as evil does
  6. This is huge.... by SumeyDevil · · Score: 3, Interesting

    This is huge, as now people have access to ALL the .NET libraries. Ironically, maybe Microsoft could be the company to take Python mainstream. First Google, now Microsoft...who's next? Additionally, anyone ever think how powerful Visual Studio could be if they implemented something like Parrot runtime into .Net?

  7. Parrot by Watson+Ladd · · Score: 2, Interesting

    Yeah, they did screw up. Parrot will beat CLI for speed in dynamic languages by huge magnitudes of speed because it is designed for them. CLI is optimized for static languages. It's a very different idea. Calling conventions, instruction sets, internal types, even stack vs. register. They are very diffent animals.

    --
    Inventions have long since reached their limit, and I see no hope for further development.-- Frontinus, 1st cent. AD
    1. Re:Parrot by Anonymous Coward · · Score: 1, Interesting

      I predict that we will never see a widely used mainstream language running on the Parrot VM.

      I predicted this after I saw Sam Ruby's talk at OSCON 2005 on his work on getting a Parrot version of Python to pass the piethon test. What he described was not a technical barrier, but rather a people problem. And the person who was the biggest problem is Leo, who wound up being promoted on the project. Given the people problems, and given that they can't even get Python to run properly, I don't see the situation improving any time soon.

      My opinion was only strengthened when Ponie, the attempt to run Perl 5 on Parrot, was recently abandoned. Now they are talking about trying to achieve Perl 5/6 compatibility by loading Parrot and the Perl 5 byte engines in parallel. Well that may be the official plan, but I bet that what actually happens is that people will wind up using pugs and ignoring Parrot.

      I could be wrong. I'd love to be wrong. Parrot has a lot of very cool technical ideas in it. But I think I'm right.

  8. Visual Studio? by nurb432 · · Score: 2, Interesting

    Does this work within visual studio, like a 'regular' microsoft language?

    --
    ---- Booth was a patriot ----
  9. Re:Sometimes I feel like a Luddite... by abigor · · Score: 2, Interesting

    "However, if your task is implementing a large, distributed client/server app involving tens of thousands of classes coded by dozens of people, reliable object transfer/messaging, reliable easy access to various forms of communications (Sockets, etc), the ability to run on Unix, coordination of multiple groups in many locations, etc.. and you want to be able to maintin it for a few years, your only rational choice is Java."

    Oddly enough, I just finished a 3.5 year project very much like what you described, and we rejected Java in favour of Python. It worked out great. Java feels so clunky now - no list comprehensions!

    By the way, what's a scripting language? Python compiles to an intermediate object code, runs on a virtual machine, and is very portable. I guess that makes Java a scripting language, too?

  10. Re:Finally! by drakaan · · Score: 2, Interesting
    Speaking of the patent licensing portion, can someone explain what exactly this part means:

    6. That the patent rights, if any, granted in this license only apply to the Software, not to any derivative works you make.

    So, being that there's nothing mentioned in the license that specifically grants any patent rights, aside from:

    You may use the Software for any commercial or noncommercial purpose, including distributing derivative works.

    ...so, basically, if you use the software to make a derivative work (which is an unspecified term in the license), the generous granting of rights to use the software for any commercial or noncommercial purpose do not apply (if there's a patent involved)?

    That pretty much makes me not want to have anything to do with IronPython development at all. After SCO and a few other "IP" related sagas, I've become a bit less trusting, so I now read the licenses that tools like this come with. I was all set to download it and start playing, but now I'm worried about even trying.

    Is there anyone out there who has a more generous reading of the license or who can address the apparent gaping hole in the license concerning what your rights are once you use the software to create something?

    --
    "Murphy was an optimist" - O'Toole's commentary on Murphy's Law
  11. Boo language is a much better alternative! by neonux · · Score: 2, Interesting

    IronPython has big shortcomings such as it is unable to blend well with .NET assemblies built with another language.
    Also it doesn't use much of the niceties available through the .NET Framework...

    If you like Python syntax and want to try .NET (on win32 or on linux with Mono), check out the Boo language, the wrist-friendly language for the CLI.
    It is amazing!! => "while using a Python-inspired syntax and a special focus on language and compiler extensibility. Some features of note include type inference, generators, multimethods, optional duck typing, macros, true closures, currying, and first class functions."

    And last but not least, Boo's licence is BSD, not a crappy Shared Source something!!

    Full description: http://en.wikipedia.org/wiki/Boo_programming_langu age

    Official website: http://boo.codehaus.org/

    --
    @neonux
  12. Re:Fast is not impossible by IamTheRealMike · · Score: 2, Interesting

    Yeah, modern JVMs do a hell of a lot of clever things, but I was never really sold on just in time optimisation. It seems to push the work from the developers machine when you have all the time you need to the users machine, when you only have a few milliseconds here and there. Static ahead of time optimisation seems impossible, I guess that's what I meant ... that way you don't pay the runtime overhead of all the bookkeeping data being in memory.