Any fool can make things bigger, more complex, and more violent. It takes a touch of genius and a lot of courage to move in the opposite direction. Albert Einstein

o Ruby

Biblioteka FFI - łączymy Ruby z C

18 komentarzy | Kategorie: C, JRuby, Ruby, Techblog | trackback
Tagi:

Przez ostatnie dni miałem okazję zapoznać się z biblioteką FFI. (Swoją drogą, kenai.com, czyli strona na której jest hostowany projekt, to próba stworzenia przez firmę Sun systemu, podobnego do sourceforge, githuba itp. Całość zupełnie za darmo, o pełnych możliwościach można poczytać na stronie projektu. Aplikacja jest oparta o framework Ruby on Rails i uruchamiana przy pomocy JRubiego.) Biblioteka FFI służy do łatwego łączenia kodu Rubiego z bibliotekami C.

Rozszerzenia w C - różne podejścia

Zanim opiszę zalety i sposób wykorzystania FFI, chciałbym napisać kilka zdań na temat samych rozszerzeń C dla Rubiego. Otóż istnieje kilka możliwości w tej kwestii. Jedną z podstawowych jest wykorzystanie wewnętrznego API interpretera Rubiego napisanego w C (popularnie zwanego MRI lub cRuby). Jeśli zaglądałeś kiedykolwiek w kod źródłowy MRI i widziałeś źródła np. pliku array.c, to kod takiego rozszerzenia pisze się praktycznie tak samo. Z tego też powodu jesteśmy zmuszeni do poznania, choćby w minimalnym stopniu, wewnętrznego API C Rubiego (zobacz http://www.eqqon.com/index.php/Ruby_C_Extension).

Aby ułatwić choć trochę tworzenie takich rozszerzeń powstał projekt RubyInline. Jego dwoma największymi zaletami jest możliwość osadzania kodu bezpośrednio w kodzie Rubiego, a także automatyczna kompilacja takiego kodu dopiero w momencie odpalenia (skompilowane rozszerzenie jest zapisywane w katalogu ~/.ruby_inline/ by nie kompilować go za każdym uruchomieniem). Pozostałe zasady zostają takie same (ciągle operujemy na tym samym API).

~ ext_ruby_inline01.rb
require "rubygems"
require "inline"

class MyMath
  inline do |builder|
    builder.c "
      long add(int a, int b) {
        return a + b;
      }"
  end
end
math = MyMath.new
puts math.add(100, 300)
Wyjście:
400

Czytaj dalej...

Java i Ruby w jednym stali domku...

10 komentarzy | Kategorie: JRuby, Ruby, Techblog | trackback
Tagi:

Ruby został zauważony

java Duke with Ruby in hand Programiści Rubiego zapewne śledzą losy tego języka na arenie międzynarodowej. Prawdopodobnie słyszeli o zainteresowaniu Rubym ze strony firmy Sun (tak, tak, to ta od Javy :-)), ostatnio także nawet Microsoft. Ci pierwsi zainwestowali w czołowych programistów projektu JRuby - implementacji Rubiego w Javie. Ci drudzy ogłosili pracę nad IronRuby, który będzie wchodził w skład DLR (Dynamic Language Runtime), a to z kolei pozwoli na używanie go w Silverlight, nowym wynalazku tej firmy.

Czytaj dalej...