写点什么

Ruby.NET 0.8 发布:提升与其它.NET 语言的互操作性

  • 2007-06-20
  • 本文字数:1203 字

    阅读完需:约 4 分钟

如今 Ruby 运行时的实现已经满大街俯拾皆是了。目前在 Java 虚拟机平台上已有两个 Ruby 的实现了,它们分别是 JRuby 和 XRuby,而.NET 平台也在迎头赶上。IronRuby项目就在上个月引来了众多开发者的关注,但是不到 2007 年 7 月末它最终被发布出来,外界谁都不知道它到底有多完善。

在另一方面, Gardens Point Ruby.NET 编译器是由昆士兰理工大学的 Wayne Kelly 博士和 John Gough 教授所领导的研究小组负责开发的,于2006 年6 月面世,通过将Ruby 代码编译成微软中间语言( Microsoft Intermediate Language/MSIL,.NET CLR的指令集),使得代码在 CLR 之上得以运行。

同样是提供了 Ruby 在.NET 环境下的运行机制,IronRuby 项目与 Ruby.NET 项目间的关系非常微妙。 IronRuby 项目的开发者 John Lam 曾提到,IronRuby 项目借用了 Ruby.NET 项目中的部分代码

我们在今年初得到了 Ruby.NET 项目代码使用的授权许可,并且我们在 IronRuby 之中使用了 Ruby.NET 的扫描机制和解析机制。这帮助我们减轻许多编码方面的工作,同时使我们项目获得了与 MRI(译注:Matz’s Ruby Interpreter,即 Matz 的 Ruby 解释器,Ruby 的 C 语言版本,也是标准实现)高度集成的扫描器和解析器。

在项目代码实现中,符合标准的语法解析器是非常重要的组成部分,使用 Ruby.NET 的解析器可以减轻 IronRuby 项目组大量的工作。

Ruby.NET 新的 0.8 版本中添加了重要的功能改进

自从在 Ruby.NET 上一个版本中我们添加了与其它.NET 语言的互操作机制以来,基于.NET 语言开发的组件能够方便的使用 Ruby.NET 实现跨语言的函数调用,反之也是如此。

下面是一个在 C#代码中调用 Ruby 代码的例子,Ruby 编写的类如下:

class Person<br></br> def init(name, age)<br></br> @name = name<br></br> @age = age<br></br> end<p> def print()</p><br></br> puts "#{@name} is #{@age}"<br></br> end<br></br>end在 C#中调用 Ruby 代码:

Person bruce = new Person();<br></br>bruce.init("Bruce", 42);<br></br>bruce.print();在 Ruby 中调用基于.NET 编写的函数也是遵循同样的方式,在 0.8 版本发布中,关于项目有一段有趣的注释:

项目将会很快转移到一个更为普遍的开放源代码社区之中,同时需要吸引更多的开发者参与到项目之中。如果你在维护开源社区运转方面有丰富的经验,我们将会非常欢迎你加入到社区之中。

至于近来关于 IronRuby 的一些疑虑, 事实上一直以来,许多 Ruby 基础运行时库的开发者已被吸收到 JRuby、XRuby、Rubinius 和 IronRuby 这些项目的开发之中,熟悉 Ruby 的.NET 开源项目参与者将会感兴趣语言互操作方面的内容。 由于对IronRuby 存在着一些疑虑,而且从去年以来,有许多Ruby 运行时实现的开发人员都被商业公司雇用,为各自的Ruby 实现(包括JRuby、XRuby、Rubinius 和IronRuby)添砖加瓦,对Ruby 有强烈兴趣的.NET 开源开发人员可以好好探索一下这个项目。

查看英文原文: Ruby.NET 0.8 release

2007-06-20 07:30754
用户头像

发布了 74 篇内容, 共 11.6 次阅读, 收获喜欢 3 次。

关注

评论

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

Linux中ARP学习和老化机制

天翼云开发者社区

Linux ARP

浅说TCP状态机制

天翼云开发者社区

TCP 数据传输

单线程 Redis 如此快的 4 个原因

越长大越悲伤

redis redis为什么如此快

Unity 发布《2023 移动游戏增长与变现报告》,聚焦游戏行业高效增长策略

Geek_2d6073

AITO问界,先经沧海而后造船

脑极体

智能汽车

什么是供应链(Supply chain)?

优秀

#供应链 供应链管理

叮!你有一份夏日福利待签收

KaiwuDB

时序数据库 大促 KaiwuDB

新兴技术对中药学的革命|社区征文

爱技术的药学生

AI AIGC 年中技术盘点

Nautilus Chain 主网上线,创世 ZBC 质押即将开启

EOSdreamer111

Spring高手之路1——深入理解与实现IOC依赖查找与依赖注入

砖业洋__

ioc 依赖注入 spring框架 依赖查找 IOC面试题

Spring高手之路2——深入理解注解驱动配置与XML配置的融合与区别

砖业洋__

XML配置 spring框架 注解驱动配置 组件注册 组件扫描

软件测试 / 测试开发丨 Linux 三剑客与管道使用

测试人

Python 程序员 软件测试 装饰器

高性能存储 SIG 月度动态:DSMS 完成 Anolis 23 预览版发布,欢迎体验和反馈

OpenAnolis小助手

高性能存储 龙蜥社区 sig Anolis 23 DSMS

PaddleSlim +​OpenVINO助力开发者实现Al模型量化与部署

飞桨PaddlePaddle

人工智能 百度 paddle 百度飞桨

HTTP接口性能压力测试

javalover123

性能测试 压测 API 压力测试 HTTP API

[Huggingface]系列文章(1)-认识Transformers

alexgaoyh

文本分类 文本生成 huggingface sentiment-analysis text-generation

Docker 镜像的导出与导入

陈皮

Docker save load

工具产业推广级!腾讯云 CODING 度量平台获得业内权威机构高度认可

CODING DevOps

掌控MySQL并发:深度解析锁机制与并发控制

砖业洋__

表锁 MySQL并发控制 隐式锁 插入意向锁 行锁

C语言 typedef的用法示例讲解

攻城狮Wayne

2023-07-20:假设一共有M个车库,编号1~M,时间点从早到晚是从1~T, 一共有N个记录,每一条记录如下{a, b, c}, 表示一辆车在b时间点进入a车库,在c时间点从a车库出去, 一共有K

福大大架构师每日一题

福大大架构师每日一题

AI 改变我们的工作方式 | 社区征文

宇宙之一粟

年中技术盘点

6位字节跳动资深技术人,给校招生的10个成长建议

字节跳动技术范儿

字节跳动 校园招聘

【7.14-7.21】写作社区优秀技术博文一览

InfoQ写作社区官方

热门活动 优质创作周报

敏捷产品经理企业培训内容要点

顿顿顿

Scrum 敏捷 Scrum Master 敏捷开发管理工具

喜报| 无限极入选信通院 2023 XOps“领新杯”业技融合攻坚先锋案例

CODING DevOps

AI与HPC融合,未来会朝什么方向发展 | 社区征文

瓜瓜猪

年中技术盘点

Nautilus Chain 主网上线,创世 ZBC 质押即将开启

股市老人

数字先锋|少跑多办!天翼云助力安徽政务跑出便民利企“加速度”

天翼云开发者社区

云计算 云平台

顺丰基于 Flink CDC + Hudi 推进实时业务落地

Apache Flink

大数据 flink 实时计算

Nautilus Chain 主网上线,创世 ZBC 质押即将开启

大瞿科技

Ruby.NET 0.8发布:提升与其它.NET语言的互操作性_.NET_Werner Schuster_InfoQ精选文章