Vala和Genie之间的关系

7
据我所知,核心Gnome开发始于C语言,并在2006年引入了Vala语言和2008年引入了Genie语言。Vala语法似乎针对Java/C#语法/开发人员,而Genie似乎针对Python(以及其他一些语言)。

还有一些开发人员试图破坏这两个伟大的开发工具——通过推动转向像JavaScript和Rust这样的非本机技术,需要额外的虚拟机或运行时二进制文件。

然而,Vala似乎正在复苏,主要是由应用程序开发人员推动的。这清楚地表现在Vala编译器的活动增加以及2018 Outreach Program提出的活动中,Vala是一个核心特性。

因此,这就带我们来到与Genie的技术关系。据我所读,Genie仅依赖于GLib,而Vala依赖于Gnome桌面环境。这种关系是否正确?其次,Genie是否内置于Vala编译器valac中,还是单独存在?从编译的角度来看,它们是否是集成的技术?

1个回答

10

Genie是Vala编译器的替代语法。它作为另一种词法分析器和解析器被实现,并内置于libvala中。valaclibvala的命令行前端。因此,它们是集成技术。如果您想了解有关Genie如何实现的更多信息,请阅读Developing Genie。该页面上有指向Genie源文件的链接。

Genie具有与Vala相同的依赖项,而Vala仅依赖于GLib。还有一些尝试甚至删除对GLib的依赖项。例如posixvalaavr-vala

Vala与GTK+具有非常好的绑定,这些绑定与GTK+的开发保持同步。也许这就是你认为Vala依赖于完整GNOME堆栈的原因。 Vala提供了更高级的代码生成例程,例如转换为GVariant;[GtkTemplate][GtkChild][GtkCallback]属性用于处理GtkBuilder UI模板;使用[DBus]属性生成D-Bus接口以及使用asyncyield关键字处理GIO异步回调和一般回调。在这里'Vala'指的是Vala编译器,而不是语法。因此,这些功能对于Vala和Genie语法都可用。在某些方面,Genie稍微不够成熟,但这可以由贡献者修复。它是一个开源/自由软件项目。


感谢您提供这个宝贵的信息。维基百科关于Genie的页面_暗示_ Vala依赖于Gnome堆栈-我认为这很奇怪,因为这两种语言似乎具有相同的起源。来自Wikipedia:虽然Vala和Genie都是由GNOME开发和推广的,但使用Genie开发的程序不依赖于GNOME桌面环境,通常只需要GLib。我认为那个说法是不正确的,正如您所证实的那样。 - AsymLabs
3
我已经对维基百科文章进行了微小修改,以使其更清晰易懂。谢谢。 - AlThomas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接