Ayende Rahien describes how to build internal DSLs on the CLR. He compares different .NET languages as suitable host languages for DSLs and presents Boo as an ideal candidate due to its meta programming facilities, flexibility, and performance.
While JRuby's performance keeps increasing, there are still algorithms that are faster if implemented in Java. We look at different approaches to solve this: RubyInline for JRuby, generating bytecode with a JRuby DSL and a new subset of Ruby called Duby.
Whether it's LISP macros or LINQ's expression trees - access to the AST of code is a powerful tool. We look at how ParseTree allows this in Ruby - and how it's being used in libraries like Ambition, Sequel and the web framework Merb.
Ruby 1.9 is out - but it's not yet intended to be used in production systems. The release tag had one effect: more developers are actually giving it a spin and try to run their applications and libraries and update them for the new version. We looked at how well Ruby 1.9 fares in this aspect.
InfoQ presents a video of Dave Thomas' QCon London presentation "MetaProgramming Ruby". Dave presents the basic Ruby language features for implementing Ruby on Rails features such as has_many. Class methods, open classes, Mixins, and more tools for metaprogramming are demonstrated and explained.
We have another feature article to publish by InfoQ's own Werner Schuster where he elegantly explains a way to annotate object graph with metadata to solve complex problems.
Ruby GUI toolkits are a dime dozen - but Why The Lucky Stiff managed to create one with a novel approach. Ruby Shoes facilitates animation, 2D graphics, and simple interaction. We take a look at its distinguishing features.
Ruby already has a host of bindings for various GUI toolkits. JRuby now allows the use of Java's Swing and there are already a few libraries trying to make Swing less tedious to work with. We look at the approaches taken in Profligacy, Cheri, and the JavaFX Script clone Swiby.
Monitoring JVMs just became easier with jmx4r, a library that allows to easily access JMX MBeans with JRuby. If used from jirb, the interactive Ruby shell, this even allows to automate bulk changes or queries.
In an interview with InfoQ, Aaron Erickson introduces his new LINQ extension Indexes for Objects (i4o). Indexes for Objects allows for fast lookup against in-memory collections while retaining the LINQ syntax and semantics. He also discusses how expression trees interact with LINQ and how they can be leveraged in other scenarios.
"Domain Specific Language" (DSL) is a popular buzzword in the Ruby community. Recently, however, doubts about the use of the term arose, particularly because it tends to be used even for ordinary APIs, simply because Ruby allows to omit parentheses. We look at some of the style debates.
In the current implementation of .NET 3.5, expression trees are immutable. Developers wishing to edit one have to manually build new expressions by copying existing ones. Aaron Erickson's MetaLinq allows developers to side-step this by providing a way to convert expression trees into mutable representations and back again.
Werner Schuster walks us through a simple example of adding Java-style properties support (declarative getters, setters and change listeners) to Ruby classes via a Mixin by using elements of Ruby meta-programming. Introduces ideas for enhancement using principles of design-by-contract and pluggable type systems.
Ola Bini looks at several common metaprogramming techniques in Ruby.
Ruby is often criticized for lacking the features required for developing large applications and maintaining them over long periods of time with large teams. Are we missing something fundamental for widescale adoption of Ruby in the enterprise?