SlideShare ist ein Scribd-Unternehmen logo
1 von 34
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt?

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
 

Was ist angesagt? (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...
 

Ähnlich wie IronRuby: Dynamic Ruby Programming on .NET

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
 

Ähnlich wie IronRuby: Dynamic Ruby Programming on .NET (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
 

Kürzlich hochgeladen

SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 

Kürzlich hochgeladen (20)

SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 

IronRuby: Dynamic Ruby Programming on .NET

  • 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