Files
wa/README-zh.md
2025-12-04 21:55:37 +08:00

5.7 KiB
Raw Permalink Blame History

凹语言

主页 | Playground | 路线 | 社区 | 日志

凹语言凹读音“Wā”是针对 WebAssembly 设计的编程语言目标是为高性能网页应用提供一门简洁、可靠、易用、强类型的编译型通用语言。凹语言的代码生成器及运行时为全自主研发不依赖于LLVM等外部项目实现了全链路自主可控。目前凹语言处于工程试用阶段。

说明: 凹语言编译器代码以 AGPL-v3 开源协议授权, 标准库以 MIT 协议授权,这意味着您使用凹语言开发的程序可以安全商用无需开源。若您希望在自己的项目中整合凹语言编译器的代码,而又不希望受 AGPL-v3 的传染性限制,您可以联系我们单独为您定制授权协议。

如何参与开发

项目尚处于原型开源阶段如果有共建和PR需求请参考 如何贡献代码。我们不再接受针对第三方依赖库修改的 PR。

向本仓库提交PR视同您认可并接受凹语言贡献者协议但在实际签署之前您的PR不会被评审或接受。

特别注意:与 Issue 相比,发起 PR 更容易获得贡献点(贡献点可用于参加回馈活动,如:首次凹语言贡献者回馈活动)。当您在项目中找到问题发起 Issue后不妨与我们联系我们会帮助您将 Issue 转为 PR。

Playground 在线预览

https://wa-lang.org/playground

贪吃蛇游戏

WASM4游戏

NES小霸王游戏机模拟器

WebGPU 模拟土星和小行星

P5 儿童编程

Arduino Nano 33 开发板

例子: 凹语言(中文版)

打印字符串:

注: 你好,世界!

引入 "书"

函数·主控:
	书·说("你好,凹语言中文版!")
完毕

运行并输出结果:

$ wa run hello.wz 
你好,凹语言中文版!

例子: 凹语言(英文版)

打印字符和调用函数:

import "fmt"

global year: i32 = 2023

func main {
	println("hello, Wa!")
	println(add(40, 2), year)

	fmt.Println(1+1)
}

func add(a: i32, b: i32) => i32 {
	return a+b
}

运行并输出结果:

$ wa run hello.wa 
你好,凹语言!
42 2023
2

例子: 打印素数

打印 30 以内的素数:

// 版权 @2021 凹语言™ 作者。保留所有权利。

func main {
	for n := 2; n <= 30; n = n + 1 {
		isPrime: int = 1
		for i := 2; i*i <= n; i = i + 1 {
			if x := n % i; x == 0 {
				isPrime = 0
			}
		}
		if isPrime != 0 {
			println(n)
		}
	}
}

运行并输出结果:

$ cd waroot && wa run examples/prime
2
3
5
7
11
13
17
19
23
29

更多例子 waroot/examples

贡献者名单

贡献者 贡献点
柴树杉 99650
丁尔男 104150
史斌 10000
扈梦明 60000
赵普明 10000
宋汝阳 2000
刘云峰 1000
王潇南 1000
王泽龙 1000
吴烜 3000
刘斌 2500
尹贻浩 2000
安博超 3000
yuqiaoyu 600
qstesiro 200
small_broken_gong 100
tk103331 100
蔡兴 3000
王任义 1000
imalasong 2000
杨刚 4000
崔爽 2000
李瑾 20000
王委委 100
雪碧 100

贡献点变更记录见 waroot/cplog 目录。

联系我们

电子邮箱:dev@wa-lang.org

微信号walang_dev