代码之家  ›  专栏  ›  技术社区  ›  AsymLabs

瓦拉和精灵的关系

  •  7
  • AsymLabs  · 技术社区  · 8 年前

    据我所知,Gnome的核心开发始于C,Vala(2006)和Genie(2008)对此进行了扩展。Vala语法似乎是针对Java/C#语法/开发人员的,而Genie似乎是针对Python(以及其他一些)。

    还有一些开发人员似乎正试图破坏这两个伟大的开发工具,因为没有更好的术语,他们推动转向Javascript和Rust等非本机技术,需要额外的虚拟机或运行时二进制文件。

    然而,Vala的复苏似乎主要是由应用程序开发人员推动的。Vala编译器的活动增加和 2018 Outreach Program 其中Vala是一个核心功能。

    这就引出了与精灵的技术关系。根据我的阅读,精灵只依赖GLib,而Vala依赖于Gnome桌面环境。这种关系正确吗?其次,Genie是否内置在Vala编译器中 valac 或者是分开的?从编译的角度来看,它们是集成的技术吗?

    1 回复  |  直到 8 年前
        1
  •  10
  •   AlThomas    8 年前

    Genie是Vala编译器的另一种语法。它是作为一个可选的lexer和parser实现的,内置于 libvala . valac 命令行前端是否 利巴拉 . 是的,它们是集成技术。如果您想了解更多有关精灵如何实现的信息,请阅读 Developing Genie . 该页面上有指向精灵源文件的链接。

    精灵与Vala具有相同的依赖性,Vala只依赖GLib。也有人试图消除对油嘴滑舌的依赖。例如 posixvala avr-vala .

    Vala与GTK+有很好的绑定,这些绑定与GTK+开发保持同步。也许这就是为什么你认为Vala依赖于完整的GNOME堆栈。Vala确实提供了更高级别的代码生成例程,例如转换到GVariant;这个 [GtkTemplate] , [GtkChild] [GtkCallback] 用于使用GtkBuilder UI模板的属性;使用 [DBus] 用于生成D-Bus接口的属性和 async yield 用于处理GIO异步回调和一般回调的关键字。“Vala”指的是Vala编译器,而不是语法。因此,Vala和Genie语法都可以使用这些特性。精灵在某些部分的开发程度略低,但这可以由贡献者来解决。这是一个开源/自由软件项目。

    推荐文章