SlideShare une entreprise Scribd logo
1  sur  34
Télécharger pour lire hors ligne
Will Green
will@hotgazpacho.org
@hotgazpacho
   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
   IronRuby
   IronPython
   IronScheme
   ClojureCLR
   IronJS (JavaScript)
   Nua (Lua)

                          JS
What is it good for?
   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
DEMO
   <script type=“text/ruby”></script>
   Requires Silverlight, but you get to do this:
DEMO
Source: http://777denny.wordpress.com/2009/07/04/what-does-the-bible-say-about-money-take-this-quick-quiz-to-
find-out/
YES!
   YES!
   IronRuby.Rack
     Rack adapter for IIS (HttpHandler)
     Included in IronRuby source on GitHub
     Needs some tweaks*
   ActiveRecord Adapters
     sqlite3-ironruby
     Ironruby-sqlserver
DEMO
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
   “IronRuby Unleashed” by Shay Friedman
    (Sams)
   “IronRuby In Action” by Ivan Porto Carrero
    (Manning)
   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

Contenu connexe

Tendances

Jfokus 2016 - A JVMs Journey into Polyglot Runtimes
Jfokus 2016 - A JVMs Journey into Polyglot RuntimesJfokus 2016 - A JVMs Journey into Polyglot Runtimes
Jfokus 2016 - A JVMs Journey into Polyglot RuntimesCharlie Gracie
 
Using Aspects for Language Portability (SCAM 2010)
Using Aspects for Language Portability (SCAM 2010)Using Aspects for Language Portability (SCAM 2010)
Using Aspects for Language Portability (SCAM 2010)lennartkats
 
Ruby Presentation
Ruby Presentation Ruby Presentation
Ruby Presentation platico_dev
 
The Hitchhiker's Guide to Faster Builds. Viktor Kirilov. CoreHard Spring 2019
The Hitchhiker's Guide to Faster Builds. Viktor Kirilov. CoreHard Spring 2019The Hitchhiker's Guide to Faster Builds. Viktor Kirilov. CoreHard Spring 2019
The Hitchhiker's Guide to Faster Builds. Viktor Kirilov. CoreHard Spring 2019corehard_by
 
Introduction to llvm
Introduction to llvmIntroduction to llvm
Introduction to llvmTao He
 
Eclipse OMR: a modern toolkit for building language runtimes
Eclipse OMR: a modern toolkit for building language runtimesEclipse OMR: a modern toolkit for building language runtimes
Eclipse OMR: a modern toolkit for building language runtimesMark Stoodley
 
Pharo Arm Status
Pharo Arm StatusPharo Arm Status
Pharo Arm StatusESUG
 
llvm-py: Writing Compilers In Python
llvm-py: Writing Compilers In Pythonllvm-py: Writing Compilers In Python
llvm-py: Writing Compilers In Pythonmdevan
 
Go Programming Language by Google
Go Programming Language by GoogleGo Programming Language by Google
Go Programming Language by GoogleUttam Gandhi
 
Extending Ruby using C++
Extending Ruby using C++Extending Ruby using C++
Extending Ruby using C++Tristan Penman
 
LLVM Compiler - Link Time Optimization
LLVM Compiler - Link Time OptimizationLLVM Compiler - Link Time Optimization
LLVM Compiler - Link Time OptimizationVivek Pansara
 
C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...
C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...
C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...corehard_by
 
Overview of .Net Framework 4.5
Overview of .Net Framework 4.5Overview of .Net Framework 4.5
Overview of .Net Framework 4.5Bhushan Mulmule
 
[LibreOffice Korea-Japan online Seminar] Introduce to LibreOffice & Korean Is...
[LibreOffice Korea-Japan online Seminar] Introduce to LibreOffice & Korean Is...[LibreOffice Korea-Japan online Seminar] Introduce to LibreOffice & Korean Is...
[LibreOffice Korea-Japan online Seminar] Introduce to LibreOffice & Korean Is...DaeHyun Sung
 

Tendances (20)

Jfokus 2016 - A JVMs Journey into Polyglot Runtimes
Jfokus 2016 - A JVMs Journey into Polyglot RuntimesJfokus 2016 - A JVMs Journey into Polyglot Runtimes
Jfokus 2016 - A JVMs Journey into Polyglot Runtimes
 
ruby-cocoa
ruby-cocoaruby-cocoa
ruby-cocoa
 
Intro for RoR
Intro for RoRIntro for RoR
Intro for RoR
 
Using Aspects for Language Portability (SCAM 2010)
Using Aspects for Language Portability (SCAM 2010)Using Aspects for Language Portability (SCAM 2010)
Using Aspects for Language Portability (SCAM 2010)
 
Ruby Introduction
Ruby IntroductionRuby Introduction
Ruby Introduction
 
Ruby Presentation
Ruby Presentation Ruby Presentation
Ruby Presentation
 
Por que Rails?
Por que Rails? Por que Rails?
Por que Rails?
 
The Hitchhiker's Guide to Faster Builds. Viktor Kirilov. CoreHard Spring 2019
The Hitchhiker's Guide to Faster Builds. Viktor Kirilov. CoreHard Spring 2019The Hitchhiker's Guide to Faster Builds. Viktor Kirilov. CoreHard Spring 2019
The Hitchhiker's Guide to Faster Builds. Viktor Kirilov. CoreHard Spring 2019
 
Introduction to llvm
Introduction to llvmIntroduction to llvm
Introduction to llvm
 
Eclipse OMR: a modern toolkit for building language runtimes
Eclipse OMR: a modern toolkit for building language runtimesEclipse OMR: a modern toolkit for building language runtimes
Eclipse OMR: a modern toolkit for building language runtimes
 
Pharo Arm Status
Pharo Arm StatusPharo Arm Status
Pharo Arm Status
 
llvm-py: Writing Compilers In Python
llvm-py: Writing Compilers In Pythonllvm-py: Writing Compilers In Python
llvm-py: Writing Compilers In Python
 
Go Programming Language by Google
Go Programming Language by GoogleGo Programming Language by Google
Go Programming Language by Google
 
Extending Ruby using C++
Extending Ruby using C++Extending Ruby using C++
Extending Ruby using C++
 
LLVM Compiler - Link Time Optimization
LLVM Compiler - Link Time OptimizationLLVM Compiler - Link Time Optimization
LLVM Compiler - Link Time Optimization
 
C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...
C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...
C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...
 
Overview of .Net Framework 4.5
Overview of .Net Framework 4.5Overview of .Net Framework 4.5
Overview of .Net Framework 4.5
 
Kotlin from-scratch
Kotlin from-scratchKotlin from-scratch
Kotlin from-scratch
 
Jython
JythonJython
Jython
 
[LibreOffice Korea-Japan online Seminar] Introduce to LibreOffice & Korean Is...
[LibreOffice Korea-Japan online Seminar] Introduce to LibreOffice & Korean Is...[LibreOffice Korea-Japan online Seminar] Introduce to LibreOffice & Korean Is...
[LibreOffice Korea-Japan online Seminar] Introduce to LibreOffice & Korean Is...
 

Similaire à IronRuby for the Rubyist

IronRuby: Ruby on the .NET Platform
IronRuby: Ruby on the .NET PlatformIronRuby: Ruby on the .NET Platform
IronRuby: Ruby on the .NET PlatformAndre John Cruz
 
The story of language development
The story of language developmentThe story of language development
The story of language developmentHiroshi SHIBATA
 
Introduction To Rails
Introduction To RailsIntroduction To Rails
Introduction To RailsEric Gruber
 
Fast, concurrent ruby web applications with EventMachine and EM::Synchrony
Fast, concurrent ruby web applications with EventMachine and EM::SynchronyFast, concurrent ruby web applications with EventMachine and EM::Synchrony
Fast, concurrent ruby web applications with EventMachine and EM::SynchronyKyle Drake
 
Dynamic Languages on the JVM
Dynamic Languages on the JVMDynamic Languages on the JVM
Dynamic Languages on the JVMelliando dias
 
Bitter Java, Sweeten with JRuby
Bitter Java, Sweeten with JRubyBitter Java, Sweeten with JRuby
Bitter Java, Sweeten with JRubyBrian Sam-Bodden
 
Ruby on Rails - An overview
Ruby on Rails -  An overviewRuby on Rails -  An overview
Ruby on Rails - An overviewThomas Asikis
 
Ruby Meets Cocoa
Ruby Meets CocoaRuby Meets Cocoa
Ruby Meets CocoaRobbert
 
XSS Without Browser
XSS Without BrowserXSS Without Browser
XSS Without Browserkosborn
 
MacRuby For Ruby Developers
MacRuby For Ruby DevelopersMacRuby For Ruby Developers
MacRuby For Ruby DevelopersRenzo Borgatti
 
차세대컴파일러, VM의미래: 애플 오픈소스 LLVM
차세대컴파일러, VM의미래: 애플 오픈소스 LLVM차세대컴파일러, VM의미래: 애플 오픈소스 LLVM
차세대컴파일러, VM의미래: 애플 오픈소스 LLVMJung Kim
 
Ruby, Rails, and the Open Source Community
Ruby, Rails, and the Open Source CommunityRuby, Rails, and the Open Source Community
Ruby, Rails, and the Open Source CommunityJim Myhrberg
 
Ruby on Rails : First Mile
Ruby on Rails : First MileRuby on Rails : First Mile
Ruby on Rails : First MileGourab Mitra
 
Web Development Environments: Choose the best or go with the rest
Web Development Environments:  Choose the best or go with the restWeb Development Environments:  Choose the best or go with the rest
Web Development Environments: Choose the best or go with the restgeorge.james
 

Similaire à IronRuby for the Rubyist (20)

Athens Ruby Meetup #3: IronRuby
Athens Ruby Meetup #3: IronRubyAthens Ruby Meetup #3: IronRuby
Athens Ruby Meetup #3: IronRuby
 
IronRuby: Ruby on the .NET Platform
IronRuby: Ruby on the .NET PlatformIronRuby: Ruby on the .NET Platform
IronRuby: Ruby on the .NET Platform
 
The story of language development
The story of language developmentThe story of language development
The story of language development
 
Introduction To Rails
Introduction To RailsIntroduction To Rails
Introduction To Rails
 
ruby pentest
ruby pentestruby pentest
ruby pentest
 
Fast, concurrent ruby web applications with EventMachine and EM::Synchrony
Fast, concurrent ruby web applications with EventMachine and EM::SynchronyFast, concurrent ruby web applications with EventMachine and EM::Synchrony
Fast, concurrent ruby web applications with EventMachine and EM::Synchrony
 
Dynamic Languages on the JVM
Dynamic Languages on the JVMDynamic Languages on the JVM
Dynamic Languages on the JVM
 
ruby-cocoa
ruby-cocoaruby-cocoa
ruby-cocoa
 
World of Node.JS
World of Node.JSWorld of Node.JS
World of Node.JS
 
Concurrency in ruby
Concurrency in rubyConcurrency in ruby
Concurrency in ruby
 
Bitter Java, Sweeten with JRuby
Bitter Java, Sweeten with JRubyBitter Java, Sweeten with JRuby
Bitter Java, Sweeten with JRuby
 
Ruby on Rails - An overview
Ruby on Rails -  An overviewRuby on Rails -  An overview
Ruby on Rails - An overview
 
Ruby Meets Cocoa
Ruby Meets CocoaRuby Meets Cocoa
Ruby Meets Cocoa
 
Why Ruby?
Why Ruby? Why Ruby?
Why Ruby?
 
XSS Without Browser
XSS Without BrowserXSS Without Browser
XSS Without Browser
 
MacRuby For Ruby Developers
MacRuby For Ruby DevelopersMacRuby For Ruby Developers
MacRuby For Ruby Developers
 
차세대컴파일러, VM의미래: 애플 오픈소스 LLVM
차세대컴파일러, VM의미래: 애플 오픈소스 LLVM차세대컴파일러, VM의미래: 애플 오픈소스 LLVM
차세대컴파일러, VM의미래: 애플 오픈소스 LLVM
 
Ruby, Rails, and the Open Source Community
Ruby, Rails, and the Open Source CommunityRuby, Rails, and the Open Source Community
Ruby, Rails, and the Open Source Community
 
Ruby on Rails : First Mile
Ruby on Rails : First MileRuby on Rails : First Mile
Ruby on Rails : First Mile
 
Web Development Environments: Choose the best or go with the rest
Web Development Environments:  Choose the best or go with the restWeb Development Environments:  Choose the best or go with the rest
Web Development Environments: Choose the best or go with the rest
 

Dernier

Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 

Dernier (20)

Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 

IronRuby for the Rubyist

  • 2. History  The DLR  Why IronRuby?  The Million Dollar Question  Rusty Washers  Getting IronRuby  Additional Resources
  • 3. 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
  • 4. 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
  • 5. “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
  • 6. “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
  • 7. You got your dynamic in my static! You got your static in my dynamic! Source: http://www.flickr.com/photos/25517107@N00/2950954830/
  • 8.  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
  • 9. IronRuby  IronPython  IronScheme  ClojureCLR  IronJS (JavaScript)  Nua (Lua) JS
  • 10. What is it good for?
  • 11. 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
  • 12. 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
  • 13. 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
  • 14. 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
  • 15. DEMO
  • 16. <script type=“text/ruby”></script>  Requires Silverlight, but you get to do this:
  • 17. DEMO
  • 19. YES!
  • 20. YES!  IronRuby.Rack  Rack adapter for IIS (HttpHandler)  Included in IronRuby source on GitHub  Needs some tweaks*  ActiveRecord Adapters  sqlite3-ironruby  Ironruby-sqlserver
  • 21. DEMO
  • 22. Where does IronRuby fall short? Source: http://www.flickr.com/photos/92709190@N00/230032831
  • 23. 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/
  • 24. 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
  • 25. 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
  • 26. 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
  • 27. 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?
  • 28. 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
  • 29. Give it to me! Source: http://new.music.yahoo.com/timbaland/albums/give-it-to-me-4-track-single--193920848
  • 30. 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
  • 31. Get Involved in the Dynamic Revolution! Source: http://www.macwallpapers.eu/wallpaper/1280x960-Freedom-Ernesto-Che-Guevara/
  • 32. 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
  • 33. “IronRuby Unleashed” by Shay Friedman (Sams)  “IronRuby In Action” by Ivan Porto Carrero (Manning)
  • 34. 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