README.md 3.3 KB
Newer Older
chai2010's avatar
chai2010 已提交
1
<div align="center">
chai2010's avatar
chai2010 已提交
2
<h1>The Wa Programming Language</h1>
chai2010's avatar
chai2010 已提交
3

chai2010's avatar
chai2010 已提交
4 5
</div>
<div align="center">
3
3dgen 已提交
6

chai2010's avatar
chai2010 已提交
7 8
[![Build Status](https://github.com/wa-lang/wa/actions/workflows/wa.yml/badge.svg)](https://github.com/wa-lang/wa/actions/workflows/wa.yml)
[![Go Report Card](https://goreportcard.com/badge/github.com/wa-lang/wa)](https://goreportcard.com/report/github.com/wa-lang/wa)
chai2010's avatar
chai2010 已提交
9
[![Coverage Status](https://coveralls.io/repos/github/wa-lang/wa/badge.svg)](https://coveralls.io/github/wa-lang/wa)
chai2010's avatar
chai2010 已提交
10
[![GitHub release](https://img.shields.io/github/v/tag/wa-lang/wa.svg?label=release)](https://github.com/wa-lang/wa/releases)
chai2010's avatar
chai2010 已提交
11
[![Go Reference](https://pkg.go.dev/badge/wa-lang.org/wa.svg)](https://pkg.go.dev/wa-lang.org/wa)
chai2010's avatar
chai2010 已提交
12
[![license](https://img.shields.io/github/license/wa-lang/wa.svg)](https://github.com/wa-lang/wa/blob/master/LICENSE)
chai2010's avatar
chai2010 已提交
13

chai2010's avatar
chai2010 已提交
14 15
</div>

chai2010's avatar
chai2010 已提交
16 17
Wa is a general-purpose programming language designed for developing robustness and maintainability WebAssembly software.
Instead of requiring complex toolchains to set up, you can simply go install it - or run it in a browser.
chai2010's avatar
chai2010 已提交
18

3
3dgen 已提交
19
![](docs/images/logo/logo-animate1.svg)
chai2010's avatar
chai2010 已提交
20

chai2010's avatar
chai2010 已提交
21
- Playground: [https://wa-lang.org/playground](https://wa-lang.org/playground)
X
xxx 已提交
22
- Core Team: [柴树杉(chai2010)](https://github.com/chai2010)[丁尔男(Ending)](https://github.com/3dgen)[史斌(Benshi)](https://github.com/benshi001)[扈梦明(xxx)](https://github.com/ohxxx)[刘云峰(leaftree)](https://github.com/leaftree)[宋汝阳(ShiinaOrez)](https://github.com/ShiinaOrez)
23

chai2010's avatar
chai2010 已提交
24 25
> Note: Our canonical Git repository is located at https://gitee.com/wa-lang/wa. There is a mirror of the repository at https://github.com/wa-lang/wa. Unless otherwise noted, the Wa source files are distributed under the AGPL-v3 license found in the LICENSE file.

chai2010's avatar
chai2010 已提交
26
## Playground
chai2010's avatar
chai2010 已提交
27 28 29 30 31 32

[https://wa-lang.org/playground](https://wa-lang.org/playground)

![[![](https://wa-lang.org/smalltalk/images/st0011-01.png)](https://wa-lang.org/playground)](https://wa-lang.org/static/images/playground.gif)


chai2010's avatar
chai2010 已提交
33
## Install and Run:
chai2010's avatar
chai2010 已提交
34

chai2010's avatar
chai2010 已提交
35
1. `go install wa-lang.org/wa@latest`
36 37
2. `wa init -name=_examples/hi`
3. `wa run _examples/hi`
chai2010's avatar
chai2010 已提交
38

chai2010's avatar
chai2010 已提交
39
> The Wa project is still in very early stage. If you want to submit PR, please read the [Contribution Guide(Chinese)](https://wa-lang.org/community/contribute.html). We do not accept PR only about 3rdparty changes.
chai2010's avatar
chai2010 已提交
40

chai2010's avatar
chai2010 已提交
41
## Example: Print Wa
3
3dgen 已提交
42

chai2010's avatar
chai2010 已提交
43
Print rune and call function:
chai2010's avatar
chai2010 已提交
44

chai2010's avatar
chai2010 已提交
45
```wa
chai2010's avatar
chai2010 已提交
46
# Copyright @2019-2022 The Wa author. All rights reserved.
chai2010's avatar
chai2010 已提交
47

chai2010's avatar
chai2010 已提交
48 49
import "fmt"

50
fn main {
chai2010's avatar
chai2010 已提交
51
	println("hello, Wa!")
chai2010's avatar
chai2010 已提交
52
	println(add(40, 2))
chai2010's avatar
chai2010 已提交
53 54

	fmt.Println(1+1)
chai2010's avatar
chai2010 已提交
55 56 57 58 59 60 61
}

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

chai2010's avatar
chai2010 已提交
62
Execute the program:
chai2010's avatar
chai2010 已提交
63 64 65

```
$ go run main.go hello.wa 
chai2010's avatar
chai2010 已提交
66
hello, Wa!
chai2010's avatar
chai2010 已提交
67
42
chai2010's avatar
chai2010 已提交
68
2
chai2010's avatar
chai2010 已提交
69 70
```

chai2010's avatar
chai2010 已提交
71
## Example: Print Prime
3
zz  
3dgen 已提交
72

chai2010's avatar
chai2010 已提交
73
Print prime numbers up to 30:
3
3dgen 已提交
74 75

```
76
fn main {
3
3dgen 已提交
77
	for n := 2; n <= 30; n = n + 1 {
78
		var isPrime int = 1
3
3dgen 已提交
79 80 81 82 83 84 85 86 87 88 89 90
		for i := 2; i*i <= n; i = i + 1 {
			if x := n % i; x == 0 {
				isPrime = 0
			}
		}
		if isPrime != 0 {
			println(n)
		}
	}
}
```

chai2010's avatar
chai2010 已提交
91
Execute the program:
chai2010's avatar
chai2010 已提交
92 93

```
chai2010's avatar
chai2010 已提交
94
$ go run main.go run _examples/prime
chai2010's avatar
chai2010 已提交
95 96 97 98 99 100 101 102 103 104 105 106
2
3
5
7
11
13
17
19
23
29
```

chai2010's avatar
chai2010 已提交
107
More examples [_examples](_examples)
3
3dgen 已提交
108

chai2010's avatar
chai2010 已提交
109
## Execut as a script
chai2010's avatar
chai2010 已提交
110

chai2010's avatar
chai2010 已提交
111
The Wa language itself can also be executed like the Lua language embedded in the Go host locale:
chai2010's avatar
chai2010 已提交
112

chai2010's avatar
chai2010 已提交
113
```
chai2010's avatar
chai2010 已提交
114 115 116 117
package main

import (
	"fmt"
chai2010's avatar
chai2010 已提交
118
	"wa-lang.org/wa/api"
chai2010's avatar
chai2010 已提交
119 120 121
)

func main() {
chai2010's avatar
chai2010 已提交
122
	output, err := api.RunCode(api.DefaultConfig(), "hello.wa", code)
chai2010's avatar
chai2010 已提交
123 124 125 126
	fmt.Print(string(output), err)
}
```

chai2010's avatar
chai2010 已提交
127
Note: Executing as a script currently only supports native environments.