Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
wa-lang
wa
提交
37830f7a
wa
项目概览
wa-lang
/
wa
10 个月 前同步成功
通知
68
Star
655
Fork
45
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
wa
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
37830f7a
编写于
3月 18, 2023
作者:
chai2010
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
增加 os.Environ 函数
上级
11ec6901
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
85 addition
and
0 deletion
+85
-0
internal/app/apputil/wabt_wat2wasm.go
internal/app/apputil/wabt_wat2wasm.go
+11
-0
internal/waroot/_waroot/src/os/os.wa
internal/waroot/_waroot/src/os/os.wa
+10
-0
internal/waroot/_waroot/src/runtime/env.wa
internal/waroot/_waroot/src/runtime/env.wa
+35
-0
internal/waroot/_waroot/src/runtime/runtime_arduino.wa
internal/waroot/_waroot/src/runtime/runtime_arduino.wa
+11
-0
internal/waroot/_waroot/src/runtime/runtime_chrome.wa
internal/waroot/_waroot/src/runtime/runtime_chrome.wa
+10
-0
internal/waroot/_waroot/src/runtime/runtime_wasi.wa
internal/waroot/_waroot/src/runtime/runtime_wasi.wa
+8
-0
未找到文件。
internal/app/apputil/wabt_wat2wasm.go
浏览文件 @
37830f7a
...
...
@@ -53,6 +53,17 @@ func RunWasm(cfg *config.Config, filename string, wasmArgs ...string) (stdoutStd
WithSysWalltime
()
.
WithArgs
(
append
([]
string
{
wasmExe
},
wasmArgs
...
)
...
)
for
_
,
s
:=
range
os
.
Environ
()
{
var
key
,
value
string
if
kv
:=
strings
.
Split
(
s
,
"="
);
len
(
kv
)
>=
2
{
key
=
kv
[
0
]
value
=
kv
[
1
]
}
else
if
len
(
kv
)
>=
1
{
key
=
kv
[
0
]
}
conf
=
conf
.
WithEnv
(
key
,
value
)
}
ctx
:=
context
.
Background
()
r
:=
wazero
.
NewRuntime
(
ctx
)
defer
r
.
Close
(
ctx
)
...
...
internal/waroot/_waroot/src/os/os.wa
浏览文件 @
37830f7a
...
...
@@ -2,12 +2,22 @@
var Args []string
var environs []string
#wa:linkname runtime.os_get_args
func os_get_args() => []string
#wa:linkname runtime.os_get_environs
func os_get_environs() => []string
#wa:linkname $runtime.procExit
func Exit(code: i32)
func init {
Args = os_get_args()
environs = os_get_environs()
}
func Environ() []string {
return environs
}
internal/waroot/_waroot/src/runtime/env.wa
0 → 100644
浏览文件 @
37830f7a
// 版权 @2023 凹语言 作者。保留所有权利。
func os_get_environs() => []string {
var environc: i32
var environv_buf_size: i32
environSizesGet(refToPtr_i32(&environc), refToPtr_i32(&environv_buf_size))
if environc == 0 {
return nil
}
var environvBytes = make([]byte, environc*4)
var environvU32 = make([]u32, environc)
var environv_buf = make([]byte, environv_buf_size)
var environv_buf_ptr: i32 = refToPtr_byteSlice(environv_buf)
environGet(refToPtr_byteSlice(environvBytes), environv_buf_ptr)
for i := 0; i < len(environvBytes); i += 4 {
a0 := u32(environvBytes[i+0]);
a1 := u32(environvBytes[i+1]);
a2 := u32(environvBytes[i+2]);
a3 := u32(environvBytes[i+3]);
environvU32[i/4] = a0 + a1*256 + a2*256*256 + a3*256*256*256
}
var environs = make([]string, environc)
for i := 0; i < int(environc); i++ {
var off = i32(environvU32[i]) - environv_buf_ptr
environs[i] = getCStr(environv_buf, off)
}
return environs
}
internal/waroot/_waroot/src/runtime/runtime_arduino.wa
浏览文件 @
37830f7a
...
...
@@ -14,6 +14,17 @@ func argsGet(result_argv: i32, result_argv_buf: i32) => (errno: i32) {
return
}
#wa:linkname $runtime.environSizesGet
func environSizesGet(result_environc: i32, result_environv_len: i32) => (errno: i32) {
return
}
#wa:linkname $runtime.environGet
func environGet(result_environv: i32, result_environv_buf: i32) => (errno: i32) {
return
}
#wa:linkname $runtime.fdWrite
func fdWrite(fd: i32, io: i32, iovs_len: i32, nwritten: i32) => (written: i32) {
return
...
...
internal/waroot/_waroot/src/runtime/runtime_chrome.wa
浏览文件 @
37830f7a
...
...
@@ -12,6 +12,16 @@ func argsGet(result_argv: i32, result_argv_buf: i32) => (errno: i32) {
return
}
#wa:linkname $runtime.environSizesGet
func environSizesGet(result_environc: i32, result_environv_len: i32) => (errno: i32) {
return
}
#wa:linkname $runtime.environGet
func environGet(result_environv: i32, result_environv_buf: i32) => (errno: i32) {
return
}
#wa:linkname $runtime.fdWrite
func fdWrite(fd: i32, io: i32, iovs_len: i32, nwritten: i32) => (written: i32) {
return
...
...
internal/waroot/_waroot/src/runtime/runtime_wasi.wa
浏览文件 @
37830f7a
...
...
@@ -10,6 +10,14 @@ func argsSizesGet(result_argc: i32, result_argv_len: i32) => (errno: i32)
#wa:linkname $runtime.argsGet
func argsGet(result_argv: i32, result_argv_buf: i32) => (errno: i32)
#wa:import wasi_snapshot_preview1 environ_sizes_get
#wa:linkname $runtime.environSizesGet
func environSizesGet(result_environc: i32, result_environv_len: i32) => (errno: i32)
#wa:import wasi_snapshot_preview1 environ_get
#wa:linkname $runtime.environGet
func environGet(result_environv: i32, result_environv_buf: i32) => (errno: i32)
#wa:import wasi_snapshot_preview1 fd_write
#wa:linkname $runtime.fdWrite
func fdWrite(fd: i32, io: i32, iovs_len: i32, nwritten: i32) => (errno: i32)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录