现在,Apple已经发布了swift,我一直在考虑使用gobject作为现有语言(如生锈甚至是swift)的运行时的可能性。
我主要担心的是,虽然vala执行此操作,但它之前编译为c并且需要语言绑定,即使您尝试使用的库已经使用gobject,甚至以某种方式vala也无法使用c不具备的功能支持诸如函数重载,而objective-c不支持它,但swift确实并且仍然可以使用它。
从好的方面来看,两个运行时系统都有许多相似之处,例如使用引用计数,具有信号并且比平均值更具动态性
答案 0 :(得分:3)
您可以将GObject(以及扩展GLib和基于GLib的库的生态系统)视为多种语言的公共语言运行库:
实际上它确实是C运行时(大多数操作系统的 核心公共语言运行库)的扩展,它增加了OOP支持。
还有其他类似的技术,如Java JVM和.NET CLR,正如您所描述的,Apple现在也在使用Objective C运行时用于多种语言。
原则上(原则上)没有任何东西阻止某人编写类似于Vala的Rust或Swift编译器(发出C代码并使用GObject作为它的对象系统)。
关于您的关注:
Vala也可以直接发出目标代码(没有中间"编译到C"步骤)。
目前,valac的概念有一些优点:
Vala使用C作为更高级别"组装"语言。