Skip to content

Latest commit

 

History

History
220 lines (157 loc) · 4.69 KB

README-zh.md

File metadata and controls

220 lines (157 loc) · 4.69 KB

凹语言

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

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

说明: 除非特别声明,凹语言代码均以 AGPL-v3 开源协议授权, 具体可以参考 LICENSE 文件。

如何参与开发

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

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

Playground 在线预览

https://wa-lang.org/playground

贪吃蛇游戏

WASM4游戏

NES小霸王游戏机模拟器

WebGPU 模拟土星和小行星

P5 儿童编程

Arduino Nano 33 开发板

例子: 凹语言

打印字符和调用函数:

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 -target=wasi examples/prime
2
3
5
7
11
13
17
19
23
29

例子:用中文语法打印素数

引于 "书"

【启】:
  // 打印30以内的素数
  从n=2,到n>30,有n++:
    设素=1
    从i=2,到i*i>n,有i++:
      设x=n%i
      若x==0则:
        素=0
      。
    。
    若素!=0则:
      书·曰:n
    。
  。
。

运行的结果和英文语法的示例相同。

例子:Chrome本地AI

Chrome builtin Gemini Nano Demo:

import "ai"

func main {
	ai.RequestSession(func(session: ai.Session){
		session.PromptAsync("Who are you?", func(res: string) {
			println(res)
		})
	})
}

更多例子 waroot/examples

贡献者名单

贡献者 贡献点
柴树杉 86000
丁尔男 90500
史斌 29000
扈梦明 49000
赵普明 18000
宋汝阳 2000
刘云峰 1000
王湘南 1000
王泽龙 1000
吴烜 3000
刘斌 2500
尹贻浩 2000
安博超 3000
yuqiaoyu 600
qstesiro 200
small_broken_gong 100
tk103331 100
蔡兴 3000
王仁义 1000
imalasong 1000
杨刚 4000
崔爽 2000

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

收藏点击 ⭐

如果你喜欢凹语言项目的话,可以点击 ⭐ 收藏。