<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Vala</id>
	<title>Vala - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Vala"/>
	<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Vala&amp;action=history"/>
	<updated>2026-07-16T21:02:53Z</updated>
	<subtitle>在这个wiki上该页的修订历史</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://arolstar52-zhtest.hf.space/index.php?title=Vala&amp;diff=565273&amp;oldid=prev</id>
		<title>imported&gt;ExultantEditor 来自 2025年12月26日 (五) 16:36</title>
		<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Vala&amp;diff=565273&amp;oldid=prev"/>
		<updated>2025-12-26T16:36:04Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{NoteTA|G1=IT|G2=FL}}&lt;br /&gt;
{{Infobox programming language&lt;br /&gt;
| name = Vala&lt;br /&gt;
| logo = Vala_Logo_New.svg&lt;br /&gt;
| logo size = 120px&lt;br /&gt;
| paradigm = [[面向对象程序设计|面向对象]]、[[结构化编程|结构化]]、[[指令式編程|指令式]]&lt;br /&gt;
| year = {{start date and age|2006}}&lt;br /&gt;
| developer = Jürg Billeter, Raffaele Sandrini&lt;br /&gt;
| latest release version = 0.56.3&lt;br /&gt;
| latest release date = {{release date and age|2022|09|03|df=yes}}&lt;br /&gt;
| latest preview version =&lt;br /&gt;
| latest preview date =&lt;br /&gt;
| typing = [[静态类型]], [[强类型]]&lt;br /&gt;
| influenced by = [[C语言|C]], [[C++]], [[C♯|C#]], [[D語言|D]], [[Java]], [[BOO]]&lt;br /&gt;
| operating_system = 所有支持[[GLib]]的平台&lt;br /&gt;
| license = [[LGPL|GNU宽通用公共许可证2.1+]]&lt;br /&gt;
| website = {{URL|https://vala.dev}}&lt;br /&gt;
| file ext = .vala, .vapi&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Vala&amp;#039;&amp;#039;&amp;#039;是一門[[面向对象程序设计|面向对象]]的[[编程语言]]，由[[自舉 (編譯器)|自舉]][[編譯器]]產生[[C语言]]代碼和使用[[GObject]]系統，允许在[[GNOME]]运行时库的基础上使用大量现代的编程技巧。通过使用[[GLib]]和[[GObject]]，Vala提供了[[动态类型]]系统和基于[[引用计数]]（reference counting）系统的[[記憶體管理]]的功能。&lt;br /&gt;
&lt;br /&gt;
==描述==&lt;br /&gt;
Vala是一门编程语言，结合了脚本语言的[[高级语言|高级]]编程语言建造时间性能，与[[低级语言|低级]]的编程语言运行时间性能。相较于用C写成的应用和库，它致力于将现代编程语言特征带给[[GNOME]]开发者，而不用强加任何额外的运行时间要求，并且不用使用不同的[[应用二进制接口|ABI]]。Vala的语法类似于[[C♯|C#]]，并为了更好的适应GObject类型系统而做了修改&amp;lt;ref&amp;gt;{{cite web|url=https://gitlab.gnome.org/GNOME/vala/|title=Vala· GitLab|publisher=[[GNOME]]|access-date=16 March 2021|archive-date=2022-05-08|archive-url=https://web.archive.org/web/20220508170108/https://gitlab.gnome.org/GNOME/vala}}&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
Vala由Jürg Billeter构想，并由他和Raffaele Sandrini实现，他希望开发[[GNOME]]应用能有对C语言的更高级替代者。他们的确喜欢C#的语法和语义，但不想使用[[Mono]]，故而他们在2006年5月完成了一个编译器。最初它使用C来{{le|引导 (编译器)|Bootstrapping (compilers)|引导}}，一年后（在2007年7月的版本0.1.0发行中），Vala编译器实现了[[自舉 (編譯器)|自舉]]。&lt;br /&gt;
&lt;br /&gt;
==版本历史==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&lt;br /&gt;
|-&lt;br /&gt;
! 版本&lt;br /&gt;
! 发行日期&amp;lt;ref&amp;gt;{{cite web |url=https://gitlab.gnome.org/GNOME/vala/-/tags |title=Vala Releases |publisher=Vala Project |access-date=2021-03-18 |archive-date=2022-03-08 |archive-url=https://web.archive.org/web/20220308145107/https://gitlab.gnome.org/GNOME/vala/-/tags |dead-url=no }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
! 注释&lt;br /&gt;
|- style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
| {{Version | o | 0.0.1}}&lt;br /&gt;
| 2006-07-15&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
| {{Version | o | 0.1.0}}&lt;br /&gt;
| 2007-07-09&lt;br /&gt;
|&lt;br /&gt;
|-  style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
| {{Version | o | 0.10.0}}&lt;br /&gt;
| 2010-09-18&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
| {{Version | o | 0.20.0}}&lt;br /&gt;
| 2013-05-27&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
| {{Version | o | 0.30.0}}&lt;br /&gt;
| 2015-09-18&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
| {{Version | o | 0.40.0}}&lt;br /&gt;
| 2018-05-12&lt;br /&gt;
| 稳定长期支持&lt;br /&gt;
|- style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
| {{Version | o | 0.42.0}}&lt;br /&gt;
| 2018-09-01&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
| {{Version | o | 0.44.0}}&lt;br /&gt;
| 2019-05-09&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
| {{Version | o | 0.46.0}}&lt;br /&gt;
| 2019-09-05&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
| {{Version | o | 0.48.0}}&lt;br /&gt;
| 2020-03-03&lt;br /&gt;
| 稳定长期支持&lt;br /&gt;
|- style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
| {{Version | o | 0.50.0}}&lt;br /&gt;
| 2020-09-10&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
| {{Version | c | 0.40.25}}&lt;br /&gt;
| 2021-01-11&lt;br /&gt;
| 稳定长期支持&lt;br /&gt;
|- style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
| {{Version | o | 0.52.0}}&lt;br /&gt;
| 2021-05-17&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
| {{Version | o | 0.54.0}}&lt;br /&gt;
| 2021-09-16&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
| {{Version | o | 0.56.0}}&lt;br /&gt;
| 2022-03-17&lt;br /&gt;
| 稳定长期支持&lt;br /&gt;
|- style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
| {{Version | c | 0.48.25}}&lt;br /&gt;
| 2022-09-16&lt;br /&gt;
| 稳定长期支持&lt;br /&gt;
|- style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
| {{Version | c | 0.56.17}}&lt;br /&gt;
| 2024-04-19&lt;br /&gt;
| 稳定长期支持&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;100%&amp;quot; | {{Version | l | show=110100}}&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;40%&amp;quot; | 旧版本只列入最初发行时间&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==语言设计==&lt;br /&gt;
===特征===&lt;br /&gt;
Vala使用GLib和它的子模块（GObject、GModule、GThread、GIO）作为核心库，它们支持多数[[操作系统]]，并提供：平台无关[[线程]]、[[标准串流|输入/输出]]、[[文件管理器|文件管理]]、[[网络套接字]]、[[动态装载|插件]]、[[正则表达式]]等。Vala的语法目前支持如下现代语言特征：&lt;br /&gt;
*[[协议 (面向对象编程)|接口]]&lt;br /&gt;
*[[属性 (编程)|属性]]&lt;br /&gt;
*{{le|信号编程|Signal programming|信号}}&lt;br /&gt;
*[[Foreach循环|Foreach]]&lt;br /&gt;
*[[λ演算|lambda表达式]]&lt;br /&gt;
*[[局部变量]]的[[类型推论]]&lt;br /&gt;
*[[泛型编程|泛型]]&lt;br /&gt;
*{{le|空指针安全|Void safety|非空类型}}&lt;br /&gt;
*[[垃圾回收 (计算机科学)|辅助内存管理]]&lt;br /&gt;
*[[例外处理 (编程)|异常处理]]&lt;br /&gt;
&lt;br /&gt;
[[图形用户界面]]可以使用[[GTK]][[部件工具箱]]和[[Glade]] {{le|图形用户界面建造器|Graphical user interface builder|GUI建造器}}来开发。&lt;br /&gt;
&lt;br /&gt;
===内存管理===&lt;br /&gt;
对于内存管理，GType或GObject系统提供[[引用计数]]。在C语言中，编程者必须手工管理增加和移除引用，而在Vala中，管理这种引用计数是自动化的，如果编程者使用语言内建引用类型而非普通指针的话。唯一需要当心的是避免生成[[引用计数|引用环]]，因为在这种情况下内存管理系统不能正确工作，此时需要使用Vala自带的&amp;lt;code&amp;gt;week&amp;lt;/code&amp;gt;关键字标注弱引用解决。&amp;lt;ref name=&amp;quot;valamem&amp;quot;&amp;gt;{{cite web|url=https://wiki.gnome.org/Projects/Vala/ReferenceHandling|title=Vala&amp;#039;s Memory Management Explained|access-date=2022-03-08|archive-date=2022-05-05|archive-url=https://web.archive.org/web/20220505200732/https://wiki.gnome.org/Projects/Vala/ReferenceHandling}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
对于不支持引用计数的类型，Vala也支持按照生命周期自动释放内存的非引用计数内存管理；Vala还可以通过[[指针]]手工内存管理。&amp;lt;ref&amp;gt;{{Cite web|title=Projects/Vala/ReferenceHandling - GNOME Wiki!|url=https://wiki.gnome.org/Projects/Vala/ReferenceHandling|access-date=2023-01-18|website=wiki.gnome.org|archive-date=2022-05-05|archive-url=https://web.archive.org/web/20220505200732/https://wiki.gnome.org/Projects/Vala/ReferenceHandling|dead-url=no}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===绑定===&lt;br /&gt;
Vala意图提供但现存C库的运行时间访问，特别是基于GObject的库，而不需要运行时绑定。要通过Vala使用一个由C语言编写的库，全部所需就是一个API文件（.vapi），包含采用Vala语法的类和方法声明。但是不支持C++库。目前在Vala的每次发行中，都包括了[[GTK]]以及大部份的[[GNU]]项目和GNOME平台的vapi文件。还有用Vala写的一个库叫做Gee，为常用[[数据结构]]提供基于GObject的接口和类&amp;lt;ref name=&amp;quot;gee&amp;quot;&amp;gt;{{cite web|url=https://gitlab.gnome.org/GNOME/libgee/|title=Libgee on Gitlab|access-date=2022-03-08|archive-date=2022-03-24|archive-url=https://web.archive.org/web/20220324233313/https://gitlab.gnome.org/GNOME/libgee}}&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
为从用其他语言比如C#写的应用访问Vala库，写绑定生成器也应当是容易的，因为Vala解析器被写为一个库，所以所有运行时信息在生成一个绑定的时候都是可获得到的。&lt;br /&gt;
&lt;br /&gt;
==工具==&lt;br /&gt;
===编辑器===&lt;br /&gt;
Vala的开发工具近些年来有了显著改进。下面是具有支持Vala编程的插件的一些流行[[集成开发环境|IDE]]和[[文本编辑器]]：&lt;br /&gt;
* [[GNOME Builder]]&lt;br /&gt;
* [[Visual Studio Code]]，具有Vala插件&amp;lt;ref name=&amp;quot;vala-vscode&amp;quot;&amp;gt;{{cite web |url=https://wiki.gnome.org/Projects/Vala/Tools/VisualStudioCode |title=Coding in Vala with Visual Studio Code |access-date=2021-03-17 |archive-date=2022-03-08 |archive-url=https://web.archive.org/web/20220308150101/https://wiki.gnome.org/Projects/Vala/Tools/VisualStudioCode }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [[Vim]]，具有arrufat/vala.vim插件&amp;lt;ref&amp;gt;{{cite web |url=https://wiki.gnome.org/Projects/Vala/Tools/Vim |title=Coding in Vala with the Vim Text Editor |access-date=2021-03-17 |archive-date=2022-03-08 |archive-url=https://web.archive.org/web/20220308220020/https://wiki.gnome.org/Projects/Vala/Tools/Vim }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [[Emacs]]，具有vala-mode&amp;lt;ref&amp;gt;{{cite web |url=https://wiki.gnome.org/Projects/Vala/Emacs |title=Enable Vala syntax highlighting and code browser support in GNU Emacs |access-date=2021-03-17 |archive-date=2021-05-12 |archive-url=https://web.archive.org/web/20210512165633/https://wiki.gnome.org/Projects/Vala/Emacs }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [[Atom (文字編輯器)|Atom]] &lt;br /&gt;
* [[Geany]]&lt;br /&gt;
* [[Kate]]&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;{{Citation|title=Vala Language Server|url=https://github.com/vala-lang/vala-language-server|publisher=Vala|date=2023-01-13|accessdate=2023-01-18|archive-date=2022-09-25|archive-url=https://web.archive.org/web/20220925151311/https://github.com/vala-lang/vala-language-server|dead-url=no}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===代码智能===&lt;br /&gt;
目前，有两个活跃开发的[[语言服务器协议|语言服务器]]为Vala提供了[[智能代码补全|代码智能]]：&lt;br /&gt;
* {{Not a typo|vala-lang/vala-language-server}}，设计用于支持[[语言服务器协议|LSP]]的任何编辑器，包括VSCode、vim和GNOME Builder&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;。&lt;br /&gt;
* {{Not a typo|esodan/gvls}}，目前是Vala在GNOME Builder中的缺省语言服务器，它对支持[[语言服务器协议|LSP]]的任何编辑器提供支持&amp;lt;ref&amp;gt;{{cite web |url=https://gitlab.gnome.org/esodan/gvls |title=esodan/gvls on GitLab |access-date=2021-03-17 |archive-date=2022-03-08 |archive-url=https://web.archive.org/web/20220308145226/https://gitlab.gnome.org/esodan/gvls }}&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
===建造系统===&lt;br /&gt;
目前，有一些[[組建自動化|建造系统]]支持Vala，包括[[Automake]]、[[CMake]]、[[Meson]]等&amp;lt;ref name=&amp;quot;vala-tools&amp;quot;&amp;gt;{{cite web |url=https://wiki.gnome.org/Projects/Vala/Tools |title=Vala Tools |access-date=2021-03-29 |archive-date=2022-01-06 |archive-url=https://web.archive.org/web/20220106074750/https://wiki.gnome.org/Projects/Vala/Tools }}&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
===调试===&lt;br /&gt;
对Vala程序的调试可以使用[[GNU调试器|GDB]]或{{le|LLDB (调试器)|LLDB (debugger)|LLDB}}。对于[[集成开发环境|IDE]]：&lt;br /&gt;
* [[GNOME Builder]]拥有通过[[GNU调试器|GDB]]的对Vala的内建调试支持。&lt;br /&gt;
* [[Visual Studio Code]]拥有对[[GNU调试器|GDB]]和{{le|LLDB (调试器)|LLDB (debugger)|LLDB}}的扩展，比如cpptools和CodeLLDB&amp;lt;ref name=&amp;quot;vala-vscode&amp;quot;&amp;gt;&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
== 示范代码 ==&lt;br /&gt;
一个简单的“[[Hello world]]”程序：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;vala&amp;quot;&amp;gt;&lt;br /&gt;
void main () {&lt;br /&gt;
    print (&amp;quot;Hello World\n&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===面向对象===&lt;br /&gt;
下面是更复杂的一个版本，表现了Vala的一些[[面向对象程序设计|面向对象]]的特征：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;vala&amp;quot;&amp;gt;&lt;br /&gt;
class HelloWorld: Object {&lt;br /&gt;
	private uint year = 0;&lt;br /&gt;
	&lt;br /&gt;
	public HelloWorld () {&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	public HelloWorld.with_year (int year) {&lt;br /&gt;
		if (year &amp;gt; 0)&lt;br /&gt;
			this.year = year;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	public void greeting () {&lt;br /&gt;
		if (year == 0)&lt;br /&gt;
			print (&amp;quot;Hello World\n&amp;quot;);&lt;br /&gt;
		else&lt;br /&gt;
			/* Strings prefixed with &amp;#039;@&amp;#039; are string templates. */&lt;br /&gt;
			print (@&amp;quot;Hello World, $(this.year)\n&amp;quot;); &lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void main (string[] args) {&lt;br /&gt;
	var helloworld = new HelloWorld.with_year (2021);&lt;br /&gt;
	helloworld.greeting ();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
因为在[[GObject#與其他物件系統比較|GObject库]]的情况下，Vala不支持[[多重继承]]，但是Vala中的类可以实现任何数量的[[协议 (面向对象编程)|接口]]，它可以包含它们的方法的缺省实现。下面一段代码展示具有缺省实现的Vala接口（有时称为[[mixin]]）：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;vala&amp;quot;&amp;gt;&lt;br /&gt;
using GLib;&lt;br /&gt;
&lt;br /&gt;
interface Printable {&lt;br /&gt;
	public abstract string print ();&lt;br /&gt;
&lt;br /&gt;
	public virtual string pretty_print () {&lt;br /&gt;
		return &amp;quot;Please &amp;quot; + print ();&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
class NormalPrint: Object, Printable {&lt;br /&gt;
	string print () {&lt;br /&gt;
		return &amp;quot;don&amp;#039;t forget about me&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
class OverridePrint: Object, Printable {&lt;br /&gt;
	string print () {&lt;br /&gt;
		return &amp;quot;Mind the gap&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	public override string pretty_print () {&lt;br /&gt;
		return &amp;quot;Override&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void main (string[] args) {&lt;br /&gt;
	var normal = new NormalPrint ();&lt;br /&gt;
	var overridden = new OverridePrint ();&lt;br /&gt;
&lt;br /&gt;
	print (normal.pretty_print ());&lt;br /&gt;
	print (overridden.pretty_print ());&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===信号和回调===&lt;br /&gt;
下面是基本例子，展示如何定义一个信号于非紧凑（compact）的一个类中，它拥有用Vala通过GLib建造的一个信号系统。接着注册[[回调函数]]到这个类的一个实例的这个信号。这个实例可以发送这个信号，而连接到这个实例的每个回调函数（也叫做处理器），将安它们连接上的次序来调用：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;vala&amp;quot;&amp;gt;&lt;br /&gt;
class Foo {&lt;br /&gt;
    public signal void some_event ();   // 定义一个信号&lt;br /&gt;
&lt;br /&gt;
    public void method () {&lt;br /&gt;
        some_event ();                  // 发送这个信号（回调得以调用）&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void callback_a () {&lt;br /&gt;
    print (&amp;quot;Callback A\n&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void callback_b () {&lt;br /&gt;
    print (&amp;quot;Callback B\n&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void main () {&lt;br /&gt;
    var foo = new Foo ();&lt;br /&gt;
    foo.some_event.connect (callback_a);      // 连接回调函数&lt;br /&gt;
    foo.some_event.connect (callback_b);&lt;br /&gt;
    foo.method ();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===线程===&lt;br /&gt;
在Vala中新[[线程]]是代码的一部份，比如要求在运行时间并发执行的一个函数。新线程的创建和同步是用时GLib中的&amp;lt;code&amp;gt;Thread&amp;lt;/code&amp;gt;类完成的，它在创建新线程时接受一个函数作为参数，如下面（非常简化的）例子所示：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;vala&amp;quot;&amp;gt;&lt;br /&gt;
int question(){&lt;br /&gt;
    // 一些print操作 &lt;br /&gt;
    for (var i = 0; i &amp;lt; 3; i++){&lt;br /&gt;
        print (&amp;quot;.&amp;quot;);&lt;br /&gt;
        Thread.usleep (800000);&lt;br /&gt;
        stdout.flush ();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return 42;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void main () {&lt;br /&gt;
    if (!Thread.supported ()) {&lt;br /&gt;
        printerr (&amp;quot;Cannot run without thread support.\n&amp;quot;);&lt;br /&gt;
        return;&lt;br /&gt;
    }&lt;br /&gt;
    print (&amp;quot;The Ultimate Question of Life, the Universe, and Everything&amp;quot;);&lt;br /&gt;
    // 泛型参数是返回值的类型&lt;br /&gt;
    var thread = new Thread&amp;lt;int&amp;gt; (&amp;quot;question&amp;quot;, question);&lt;br /&gt;
&lt;br /&gt;
    print(@&amp;quot; $(thread.join ())\n&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===图形用户界面===&lt;br /&gt;
使用[[GTK]]来创建一个图形用户界面的&amp;quot;Hello, World!&amp;quot;程序：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;vala&amp;quot;&amp;gt;&lt;br /&gt;
int main (string[] args) {&lt;br /&gt;
    var app = new Gtk.Application (&lt;br /&gt;
        &amp;quot;com.example.App&amp;quot;,&lt;br /&gt;
        ApplicationFlags.DEFAULT_FLAGS&lt;br /&gt;
    );&lt;br /&gt;
    &lt;br /&gt;
    app.activate.connect (() =&amp;gt; {&lt;br /&gt;
        var win = new Gtk.ApplicationWindow (app) {&lt;br /&gt;
            title = &amp;quot;Hello, World!&amp;quot;,&lt;br /&gt;
            default_width = 350,&lt;br /&gt;
            default_height = 70&lt;br /&gt;
        };&lt;br /&gt;
  &lt;br /&gt;
        var label = new Gtk.Label (&amp;quot;Hello, World!&amp;quot;);&lt;br /&gt;
        win.child = label;&lt;br /&gt;
        win.present ();&lt;br /&gt;
    });&lt;br /&gt;
    return app.run (args);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
在GTK 4平台上，需要以下命令来编译这一示例:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
valac --pkg gtk4 hellogtk.vala&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==参见==&lt;br /&gt;
* [[Genie (程式語言)|Genie]]，基于Vala编译器的具有近似[[Python]]语法的一种语言。&lt;br /&gt;
* [[Shotwell]]，用Vala写的图片组织器。&lt;br /&gt;
* {{le|Geary (软件)|Geary (e-mail client)|Geary}}，用Vala写的邮件客户端。&lt;br /&gt;
* [[elementary OS]]，具有大多用Vala编程的桌面环境的Linux发行版。&lt;br /&gt;
* [[Budgie (桌面环境)|Budgie]]，大多用Vala编程的Linux桌面环境。&lt;br /&gt;
&lt;br /&gt;
==引用==&lt;br /&gt;
{{reflist|2}}&lt;br /&gt;
&lt;br /&gt;
== 外部链接 ==&lt;br /&gt;
* [http://live.gnome.org/Vala The Vala Programming Language]{{Wayback|url=http://live.gnome.org/Vala |date=20120327191823 }}, on GNOME Live!&lt;br /&gt;
*Vala 语言书籍《Introducing Vala Programming》 （[https://www.apress.com/gp/book/9781484253793 Apress] {{Wayback|url=https://www.apress.com/gp/book/9781484253793 |date=20191220092306 }} / [https://www.amazon.com/Introduction-Vala-Programming-Boost-Productivity/dp/1983202347 Amazon] {{Wayback|url=https://www.amazon.com/Introduction-Vala-Programming-Boost-Productivity/dp/1983202347 |date=20220417125846 }}）&lt;br /&gt;
*[https://wiki.gnome.org/Projects/Vala/ValaForJavaProgrammers 面向 Java 开发者的Vala 特性介绍] {{Wayback|url=https://wiki.gnome.org/Projects/Vala/ValaForJavaProgrammers |date=20220417130028 }}&lt;br /&gt;
*[https://wiki.gnome.org/Projects/Vala/ValaForCSharpProgrammers 面向 C# 开发者的 Vala 特性介绍] {{Wayback|url=https://wiki.gnome.org/Projects/Vala/ValaForCSharpProgrammers |date=20220417130131 }}&lt;br /&gt;
* [http://code.google.com/p/vala-benchmarks/ Benchmark of Vala versus C# and C]{{Wayback|url=http://code.google.com/p/vala-benchmarks/ |date=20120210040318 }}&lt;br /&gt;
*[https://wiki.gnome.org/Apps/Geary/CodingConventions Vala 语言编程规范（Geary版）] {{Wayback|url=https://wiki.gnome.org/Apps/Geary/CodingConventions |date=20220417125856 }}&lt;br /&gt;
*Vala 的语言服务器（Language Server Protocol）项目： [https://github.com/benwaffle/vala-language-server VLS] {{Wayback|url=https://github.com/benwaffle/vala-language-server |date=20210107234958 }}， [https://gitlab.gnome.org/esodan/gvls GVLS] {{Wayback|url=https://gitlab.gnome.org/esodan/gvls |date=20220308145226 }}&lt;br /&gt;
*Vala 语言社区： [https://github.com/vala-lang The Vala community on GitHub] {{Wayback|url=https://github.com/vala-lang |date=20220417125846 }} &lt;br /&gt;
*[https://wiki.gnome.org/Projects/Vala/Documentation#Projects_Developed_in_Vala Vala 语言案例列表] {{Wayback|url=https://wiki.gnome.org/Projects/Vala/Documentation#Projects_Developed_in_Vala |date=20220417125849 }}&lt;br /&gt;
*[https://www.datatable.online/zh/ Vala 语言开发的数据库管理工具： DBKangaroo] {{Wayback|url=https://www.datatable.online/zh/ |date=20201109060339 }}&lt;br /&gt;
*[https://github.com/GNOME/vala/tree/mainline/vapi Vala 语言库：官方库]&lt;br /&gt;
*[https://github.com/GNOME/vala-extra-vapis/ Vala 语言库：第三方库] {{Wayback|url=https://github.com/GNOME/vala-extra-vapis/ |date=20220417130238 }}&lt;br /&gt;
&lt;br /&gt;
{{GNOME|state=collapsed}}&lt;br /&gt;
{{CProLang|state=collapsed}}&lt;br /&gt;
{{程序设计语言}}&lt;br /&gt;
&lt;br /&gt;
[[Category:面向对象的编程语言]]&lt;br /&gt;
[[Category:C語言家族]]&lt;br /&gt;
[[Category:2006年建立的程式語言]]&lt;/div&gt;</summary>
		<author><name>imported&gt;ExultantEditor</name></author>
	</entry>
</feed>