BT

Ruby FFI traz acesso às bibliotecas nativas para JRuby, MRI

por Werner Schuster , traduzido por Felipe Rodrigues em 16 Dez 2008 |

O MRI e o Rubinius tem suportado extensões nativas do Ruby, que permitem código nativo interagir com código Ruby e com o interpretador Ruby ou VM. O Ruby 1.8.0 introduziu a Ruby/DL que permite carregar bibliotecas compartilhadas e chamar as funções fornecidas a partir de código Ruby. A documentação da Ruby/DL mostra como importar funções, como trabalhar e mapear tipos Ruby para tipos C, etc. A Ruby/DL também fornece duas formas de comunicação com callbacks, ex: é possível criar um bloco Ruby para uma função C que espera um ponteiro de função.

Rubinius introduziu sua própria interface com a Foreign Function Interface (FFI) que lembra um pouco a Ruby/DL, embora a API da FFI pareça um pouco diferente, ex: ela usa simbolos Ruby e literais de array para assinatura de tipos ao invés de Strings de código C ou um formato de especificador de tipo customizadocomo a Ruby/DL faz.

Mais cedo nesse ano jruby-ffi, contruído sobre JNA, foi introduzido (JRuby não tem suporte ao Ruby/DL).

Enquanto o suporte no Rubinius e no JRuby estavam disponíveis, isso significava uma grande parte do mundo Ruby que utiliza MRI estava usando Ruby/DL ou criando outras maneiras de usar bibliotecas compartilhadas. Para corrigir isso, o projeto ruby-ffi foi criado pelo Wayne Meissner (que já criara o jruby-ffi) e agora provê a mesma interface FFI como o Rubiniuspara JRuby, Ruby 1.8.x e Ruby 1.9.x. Com isso, é possível usar o mesmo código Ruby através de todas essas implementações Ruby para acessar bibliotecas compartilhadas.

O Ruby FFI 0.2.0 está disponível, a instalação é possível com gem install ffi. A Documentação está disponível no wiki do projeto, um bom lugar para começar é a página de exemplos. Charles Nutter fornece algumas explicações adicionais e exemplos utilizando FFI.

Avalie esse artigo

Relevância
Estilo/Redação

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Dê sua opinião
Feedback geral
Bugs
Publicidade
Editorial
Marketing
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2016 C4Media Inc.
Política de privacidade
BT

We notice you’re using an ad blocker

We understand why you use ad blockers. However to keep InfoQ free we need your support. InfoQ will not provide your data to third parties without individual opt-in consent. We only work with advertisers relevant to our readers. Please consider whitelisting us.