FinOps有望降低企业50%+的云成本! 了解详情
写点什么

Ruby FFI 可以用本地库访问 JRuby,MRI 了

  • 2008-12-11
  • 本文字数:642 字

    阅读完需:约 2 分钟

MRI 和 Rubinius 支持 Ruby 的本地扩展,这使得本地代码可以与 Ruby 代码及 Ruby 解释器或 VM 进行交互。 Ruby 1.8.0 引入了 Ruby/DL ,它可以加载共享库并调用 Ruby 代码中提供的函数。 Ruby/DL 文档说明了如何导入函数、如何与 C 类型协同工作及如何将 Ruby 映射为 C 类型等等。Ruby/DL 还提供了两种回调方式,也就是说对于一个接收函数指针的 C 函数来说,我们可以将一个 Ruby 代码块传进去。

Rubinius 引入了自己的 Foreign Function Interface(FFI),它与 Ruby/DL 非常像,尽管 FFI 的 API 看起来有些不同,对于类型签名来说,它使用了 Ruby 符号和排列方式而并没有采取 C 代码的方式,也没有使用 Ruby/DL 中所用的客户化类型格式。

早在今年初,构建于 JNA 之上的 jruby-ffi 就已经发布了(JRuby 不支持 Ruby/DL)。

虽然对 Rubinius 和 JRuby 提供了支持,但在使用 MRI 的 Ruby 世界中还是有很多地方依然在使用 Ruby/DL 或其它方式来使用共享库。为了解决这个问题, Wayne Meissner (已经创建了 jruby-ffi)创建了 ruby-ffi 项目,它现在提供了相同的 FFI 接口,就像 Rubinius 之于 JRuby、Ruby 1.8.x 及 Ruby 1.9.x. 一样。通过 ruby-ffi,我们可以跨越所有这些 Ruby 实现以相同的 Ruby 代码来访问共享库了。

Ruby FFI 0.2.0 已经发布了,可以通过 gem install ffi 进行安装。你可以在其项目的wiki 上查看相关的文档,这些示例是很好的入门材料。 Charles Nutter 对 FFI 的使用进行了更详尽的说明并给出了一些例子。

查看英文原文: Ruby FFI Brings Native Library Access to JRuby, MRI

2008-12-11 23:43485
用户头像

发布了 88 篇内容, 共 254.2 次阅读, 收获喜欢 6 次。

关注

评论

发布
暂无评论
发现更多内容

CorelDRAW2023最新版本平面矢量绘图排版软件

茶色酒

CorelDraw2023

EasyRcovery16免费电脑照片数据恢复软件

茶色酒

EasyRcovery16

dapp/lp代币合约流动性质押挖矿分红系统开发详细及案例(源码部署)

系统开发咨询1357O98O718

PyTorch深度学习实战 | PyTorch环境搭建

TiAmo

PyTorch

Kotlin 学习笔记(一)

修之竹

android kotlin

学会用规则引擎Drools,让你早点下班

小小怪下士

Java 程序员 后端 drools

从设计角度,深入分析 Spring 循环依赖的解决思路

做梦都在改BUG

Java spring源码 循环依赖

Guitar Pro8吉他学习辅助软件

茶色酒

Guitar Pro8

面试官:如何防止 Java 源码被反编译?我:有点懵

做梦都在改BUG

Java Java源码

深度解析首个Layer3 链 Nautilus Chain,有何优势?

EOSdreamer111

三天吃透RabbitMQ面试八股文

程序员大彬

Java RabbitMQ 消息队列

分享主流的10个流程管理软件

PingCode

流程管理 流程管理软件

深度解析首个Layer3 链 Nautilus Chain,有何优势?

威廉META

号外号外!简单几步就能把Pinterest视频下载到手机里啦!

frank

Pinterest

DAPP马蹄链智能合约系统开发(开发方案及详细)

系统开发咨询1357O98O718

深度解析首个Layer3 链 Nautilus Chain,有何优势?

股市老人

死磕Spark事件总线——聊聊Spark中事件监听是如何实现的

做梦都在改BUG

Java 大数据 spark 事件监听

fcpx专业多媒体剪辑软件:Final Cut Pro X中文激活版

真大的脸盆

Mac 视频剪辑 视频处理 视频剪辑处理

量化合约系统开发(规则开发)丨量化合约开发(源码说明)

系统开发咨询1357O98O718

DAPP智能合约链游开发源码案例丨DAPP智能合约链游系统开发(逻辑及方案)

系统开发咨询1357O98O718

解决mac电脑打开应用“意外退出”的问题 (点按“重新打开”以再次打开应用程序)

Rose

意外退出 Mac软件

BetterSnapTool for Mac 帮你整理窗口,提升效率

Rose

BetterSnapTool 窗口管理软件 mac软件下载

Spring Boot:如何配置Undertow容器?不会我教你 | 超级详细

Java你猿哥

spring Spring Boot 后端 ssm java

DAPP/LP单双币(子母币)流动性质押挖矿分红系统开发(开发说明及源码)

系统开发咨询1357O98O718

厉害了!刷完这份 532 算法秘笈后,我成功斩获字节、快手offer

做梦都在改BUG

Java 数据结构 面试 算法

深度解析首个Layer3 链 Nautilus Chain,有何优势?

鳄鱼视界

苹果办公必备远程工具:Royal TSX使用教程

Rose

SSH Royal TSX 教程 Royal TSX 破解 Royal TSX mac下载

云边端协同时序数据库的挑战与解决方案

CnosDB

时序数据库 开源社区 CnosDB 云边端协同

这份Java面试八股文让329人成功进入大厂,堪称2023最强

Java你猿哥

Java 面经 春招 八股文 Java八股文

阿里内网开源:多位大佬联合撰写的Java多线程手册被我拿到了

做梦都在改BUG

Java 多线程

为什么 Go 语言 struct 要使用 tags

AlwaysBeta

Go

  • 需要帮助,请添加网站小助手,进入 InfoQ 技术交流群
Ruby FFI可以用本地库访问JRuby,MRI了_Ruby_Werner Schuster_InfoQ精选文章