Microsoft Common Language Runtime To Be Cross-Platform
axlrosen alerts us to a Microsoft sleeper announcement from Mix07: a version of its Common Language Runtime will be available cross-platform. The Core CLR shows up as part of the Silverlight SDK that Redmond is open sourcing. From the blog posting: "The biggest Mix '07 announcement made on opening day of this week's show was one that Microsoft didn't call out in any of its own press releases: Microsoft is making a version of its Common Language Runtime available cross-platform. The CLR is the heart of Microsoft's .Net Framework programming model. So, by association, the .Net Framework isn't just for Windows any more."
That's great. Now if Microsoft would actually implement a few web standards (rather than spewing out more Microsoft "standards") I might actually trust them. As it happens, though, I don't. Internet Explorer has the absolute worst track record of all the modern web browsers. It's fairly straight forward to tune Javascript/DOM code to run in Mozilla, Opera, and Safari. But Internet Explorer? Meh. Let's just say that it adds another 30-50% to the project time.
Now Microsoft wants to broadcast their wonderful multimedia technology that will enhance the web, be cross-platform, show cool multimedia-type stuff that we can already do with SVG or Canvas. Woohoo. Whoopdedoo. Wow.
Not.
This smacks of yet another Microsoft embrace, extend, and extinguish stratgey. "Yeah, guys. Come on in. Here's the Silverlight plugin which works on Macs. We're going to be real buds with these Mac peoples! We're even porting a teeny bit of the CLR (ed: And you thought Java was browser bloat?) to make our XAML/Avalon/WPF technology work for you guys. Oh, did we mention that Macs are kind of slow? (ed: They are now!)"
Next version: "We haven't seen enough customers demand support for the Mac. So we're dropping the plugin for that platform and adding some amazing new features to the Windows version." *FWHHOOOSH* Extinguished.
If Microsoft really wanted to compete, they'd be the first to implement the OpenGL API for the Canvas tag that the WHATWG has been working on. Oh, but wait! That wouldn't be Window-y enough. It would have to be the DirectX API through Javascript, dontchaknow.
Javascript + Nintendo DSi = DSiCade
From denial, to grudging acceptance, to surprised admiration, is how the process works, and whether you hate Microsoft or not, a few months playing with C# usually results in the comment "Damm, why didnt they do this with Java?"
The Borg isnt dead, they have only been regenerating. Prepare to modulate shield frequencies, because they are coming.......
It's a trap!
Whoa there... just like 'Open' has other meanings that don't imply 'Open Source', cross-platform has many interpretations. The XNA claim to be cross-platform is definitely a valid one, particularly when you consider that the X-Box 360 is a PowerPC architecture and Windows XP and Vista are primarily run on x86 chips. If single development environment that can not only target three versions of an OS, but also target multiple processor architectures isn't cross platform, then I'm not sure what is.
-Chris
Yeah -- nice try -- it's not a strawman -- The call out to unmanaged code and return each take over 1000 cycles. (And such callouts don't work at all in mono.) So something that should take about 500 cycles (3D perlin noise generation) now takes ~2500. Ouch -- just a bit slower than leaving it managed. (For image rendering with procedurally generated textures, the perlin noise generator is frequently a *huge* spike in the
.net advocates often claim it's just as fast as native code, when it is demonstrably not.
.net is not appropriate for performance sensitive computationally intensive programs. It's fine for UI driven stuff where that code never needs to run anywhere other than windows.
Sometimes you need nice fast math functions that can take a small handful of cycles.
My beef is that
My argument is that
Oh, and speaking of strawmen, where did I talk about hand optimized vector assembly? Or Bash? WTF?
Ian Ameline
Probably not, since the Microsoft Permissive License has a GPL-like 'viral' clause, which means that if Mono used the code, Mono would probably have to be licensed under the Ms-PL.
.NET code.
I don't see a "viral" clause in the Ms-PL. All the Ms-PL requires is that you include its copyright notice with your distribution and that the Ms-PL licensed code itself remains under the Ms-PL.
"Is Mono still necessary?" Yes.
Yes, but not because of the license. It's because Mono does a lot more than run CLR and
Well, except Mono is a small project
Mono is a big project as far as such projects go.
that Microsoft would rather see die.
I don't know. Who cares?
It will disappear when they are ready to drop litigation bombs.
The legal situation surrounding Mono has been more carefully analyzed than any other open source project I can think of. Unless you can point to a specific legal problem with Mono, you're just spreading FUD.
What disturbs me more is how the term "open source" has been co-opted and soiled by Microsoft when the license terms which will only be FSF approved when microsoft owns the FSF.
The Microsoft Permissive License looks like a perfectly good open source license to me; it's basically like Apache. In particular, it includes patent grants. The FSF probably doesn't like the Ms-PL because it's BSD/Apache-like.
If you can identify a specific problem with the Ms-PL, please point it out. Otherwise, please stop spreading FUD about it.
MS had already said that they planned to support Apple (and WinCE) for their WPF/E (windows presentations everywhere) technology. They then renamed that to Silverlight, and lo-and-behold, it still supports Apple. Where's the news?
Not to mention that this was predicted all along. MS has been supporting the MacOS for years, and hinting at the cross-platform possibilities of their net platform. MS wants the Mac to replace Linux as the alternative to Windows, so this is a pretty straightforward decision for them. So why are people acting suprised?
And finally, properties aren't cryptic in practice, because they can only be confused with public fields, which no one uses - public fields are deprecated, they don't produce the same metadata, and they're no more efficient when the JIT can inline property accessors. Private fields are typically distinguished by prefix or case, much like class names are distinguished from other identifiers (which is why I know "foo.bar()" probably isn't calling a static method).
Visual IRC: Fast. Powerful. Free.
Dude, code that compiles and runs for two processor architectures is called "lowest common denominator" (unless you use #ifdefs, in which case it's clearly not the _same_ code), assuming even one of the processor architectures have _any_ unique features at all. We aren't yet at the point where processors are homogenous commodities differentiated only by price.
Go somewhere random