Download - IronRuby for the Rubyist
History The DLR Why IronRuby? The Million Dollar Question Rusty Washers Getting IronRuby Additional Resources
Or, how Microsoft learned to stop worrying and love dynamic languages
+ =
Sources: http://commons.wikimedia.org/wiki/File:Ruby_logo.png http://dlr.codeplex.com/ http://www.myfreewallpapers.net/cartoons/pages/phineas-and-ferb.shtml
Compiler that translates Ruby source code into .NET IL (Intermediate Langauage)
Ran Ruby code on the .NET CLR (Common Language Runtime)
Started by Dr. Wayne Kelly and Prof. John Gough of the Queensland University of Technology
Lost relevance around the beginning of 2008
“A high-performance Ruby to .NET bridge that allows seamless integration of CLR and Ruby objects in the same Win32 process.”
Developed by John Lam and Ceasar Larry Runs Ruby code on the .NET Common
Language Runtime Abandoned when John Lam was hired by
Microsoft
“IronRuby is a Open Source implementation of the Ruby programming language for .NET, heavily relying on Microsoft's Dynamic Language Runtime”
Microsoft’s implementation of Ruby John Lam hired as Program Manager Current Program Manager (also for IronPython) is
Jimmy Schementi First previewed at MIX 2007 Version 1.0 released at MIX 2010
Targets Ruby 1.8.6
You got your dynamic in my static! You got your static in my dynamic!
Source: http://www.flickr.com/photos/25517107@N00/2950954830/
A common runtime for dynamic languages on the .NET platform
Provides interop among various dynamic languages Use libraries from multiple languages simultaneously
Allows hosting dynamic languages in static .NET assemblies New .NET static type: dynamic
Sometimes, you just ‘gotta interop with “Enterprise” systems written in .NET
SOAP and COM
WCF (Windows Communication Foundation) services
Access to the BCL == Base Class Library
Very extensive, rich set of standard libraries
IronRuby eases the pain
Standardized Packaging System Central Repository for hosting packages Allows installation and management of
multiple versions of a package Allows distribution of binary packages
targeting a specific platform
Ruby Gems 1.3.7 includes my patch to recognize universal-dotnet, universal-dotnet-2.0, and universal-dotnet-4.0 as platforms
Acceptance Testing Cucumber
Unit Testing, BDD style RSpec / Shoulda
Factories instead of Fixtures Factory Girl Machinist
Mocking RSpec Mocks Caricature
▪ Mock .NET types (death to sealed and internal!) ▪ http://github.com/casualjim/caricature
Believe in Magic! http://github.com/thbar/magic
DSL for creating UIs Windows Presentation Foundation ▪ Current hotness for client UI development on Windows
Silverlight ▪ WPF for the Web
Windows Forms ▪ Traditional battleship-grey Windows apps
Think Builder for Windows UIs
Source: http://777denny.wordpress.com/2009/07/04/what-does-the-bible-say-about-money-take-this-quick-quiz-to-find-out/
YES! IronRuby.Rack
Rack adapter for IIS (HttpHandler)
Included in IronRuby source on GitHub
Needs some tweaks*
ActiveRecord Adapters
sqlite3-ironruby
Ironruby-sqlserver
Where does IronRuby fall short?
Source: http://www.flickr.com/photos/92709190@N00/230032831
85.94% pass rate
vs 97.53% for MRI
Latest statistics at http://ironruby.info/ Need RubySpec contributions!
RubySepc helps ALL Ruby implementations!
http://rubyspec.org/
OpenSSL
Needs .NET implementation
Should not be an issue with .NET crypto APIs
Putting my money where my mouth is
If someone will write the RubySpec specs for OpenSSL, I will implement it for IronRuby
IronRuby doesn’t implement the C API However, equivalent libraries with .NET code
can be created (and packaged as Gems!)
eg. iron-term-ansicolor
▪ My lib for color console output on Windows
Cucumber’s parser, Gherkin, is now Ragel based
Ragel does not target C# or .NET Work-around:
Ragel does target Java
IKVM is Java (the langauge) for .NET
Use IKVM to create a .NET assembly
Still has some issues
IronRuby does not support FFI
FFI = Foreign Function Interface
▪ http://wiki.github.com/ffi/ffi/why-use-ffi
Perhaps could be implemented via p/Invoke?
Crazy thought, or craziest thought?
Mono == An open source, cross-platform, implementation of C# and the CLR that is binary compatible with Microsoft.NET
Most active contributors to IronRuby are ‘Softies, so running on Mono is not a priority
However, running on Mono is something the team would like
Give it to me!
Source: http://new.music.yahoo.com/timbaland/albums/give-it-to-me-4-track-single--193920848
Binary Releases on CodePlex
http://ironruby.codeplex.com/
Source is synched from MS internal TFS to Github
http://github.com/ironruby/ironruby
Community contributions accepted, in some areas of the code, via pulls from forks
Get Involved in the Dynamic Revolution!
Source: http://www.macwallpapers.eu/wallpaper/1280x960-Freedom-Ernesto-Che-Guevara/
Mailing List: http://rubyforge.org/mailman/listinfo/ironruby-core
How to Contribute: http://wiki.github.com/ironruby/ironruby/
IronRuby web site: http://ironruby.net/
Jimmy Schementi’s blog http://blog.jimmy.schementi.com/
IronRuby in the Browser: http://www.rubyinside.com/ironruby-silverlight-ruby-in-browser-3192.html
Jimmy Schementi (MS) - @jschementi James Deville (MS) - @jredville Ivan Porto Carrero (MVP) - @casualjim Shay Friedman (MVP) - @ironshay Michael Letterle (MVP) - @mletterle Ben Hall (MVP) - @Ben_Hall Thibaut Barrère - @thibaut_barrere Mike Moore - @blowmage
http://twitter.com/casualjim/ironruby-community