问题标签 [zig]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
zig - 从另一个 zig 包导入 zig 包
我可以在我的可执行文件中导入一个包exe.addPackagePath("name", "path")
并使用const name = @import("name");
. 现在我想将包包含在另一个包中,但我不明白如何。我可以为包创建一个对象来设置 addPackagePath() 吗?
zig - zig 结构、指针、字段访问
我试图用通用算法实现向量代数,最后玩了迭代器。我发现了两个不明显和意外行为的例子:
- 如果我有指向
p
带有 field 的结构(实例)的指针,我可以像(而不是)fi
一样简单地访问该字段p.fi
p.*.fi
- 如果我有一个“成员”函数
fun(this: *Self)
(whereSelf = @This()
)和一个结构实例s
,我可以像调用函数一样简单s.fun()
(而不是(&s).fun()
)
我的问题是:
- 它是否在某处记录(或以任何方式提及)?我查看了来自ziglearn.org的语言参考和指南,但没有找到任何东西
- 我们在这些例子中观察到了什么?两种特殊情况的语法糖,还是有更一般的规则可以推断出这种行为?
- 还有更多奇怪指针行为的例子吗?
zig - 整数和浮点类型的 zig maxValue
zig 曾经有@maxValue来查询整数类型的最大值,但我认为它在几个版本前被删除了。有替代品吗?我找不到它。
simd - meta.Vectors 背后的黑魔法是什么?
在实现了一些基于通用算法和迭代器的向量代数之后,我决定运行一些基准测试。这个想法是将自定义向量的性能与meta.Vector
s 的性能(进行加法和缩放)进行比较。
当向量的大小设置为 10 时,自定义向量的性能略优于meta.Vector
s。当向量的大小设置为 100 时,meta.Vector
s 稍微优于自定义向量。当向量的大小设置为 1000 时,自定义向量执行加法和缩放的速度是 s 的两倍meta.Vector
- 比meta.Vector
s 稍慢(使用@splat
)。
最有趣的是编译时间——那些随着向量大小的增长而增长(没有测量,无法判断编译时间是否与向量大小成线性关系)。当向量的大小设置为 10_000 时,我最终(经过长时间的等待)收到shell returned 137
错误消息(在编译期间);在我注释掉任何提及之后meta.Vector
,代码编译得很好。
所以我的问题是什么样的(编译器?)黑魔法让 1000 大小meta.Vector
的 s 工作得如此之快,我可以用它来让我的代码更快吗?
PS:基准测试是用 -O ReleaseFast 运行的,所有变量都被标记了var
meta.Vector
PPS:在调试模式下,最终编译了 10_000 大小的代码
javascript - 将 Zig 编译为 wasm32-freestanding 时出错
我正在尝试使用wasm32-freestanding
目标将 Zig 函数编译为独立的 WebAssembly 模块。官方文档中有一个部分解释了如何执行此操作,但在最新版本的 Zig (0.8.0) 中,尝试使用 JavaScript 实例化生成的模块时出现错误。
检查生成的 wasm 模块表明它尝试导入__linear_memory
从范围调用的值env
。这自然会失败,因为我没有提供这样的导入。但是,示例项目zig-wasm-test包含一个 WASM 模块(使用旧版本的 Zig 编译),它不包含这些导入。
我在这里做错了什么?__linear_memory
即使不使用它,我是否应该只向模块提供导出?
zig - zig 打印浮点精度
在 zig 中,可以使用“{d}”以十进制表示法打印浮点值。这将自动以全精度打印该值。有没有办法指定位数?对于每个值,还是作为某种全局设置?
mutability - Zig 中的全局“comptime var”
在 Zig 中,我可以毫无问题地做到这一点:
但是当我尝试在函数之外声明变量时,会出现编译错误:
Zig 版本:0.9.0-dev.453+7ef854682
compilation - 使用 zig 编译器作为库
有没有办法将 zig 编译器用作 zig 中的库?在查看 zig 文档、问题和互联网后,我找不到这个问题的答案。
在其中一个问题中,据说目前可以做到这一点,但我找不到任何关于如何做到这一点的例子。
zig - 在 zig 中使用 C 库需要帮助
我正在尝试将 microUI 库从 C 移植到 zig。
我曾尝试使用此端口尝试https://gitdab.com/luna/zig-microui作为指南,但它似乎不起作用。
到目前为止,这是我尝试的细分:
MicroUI 是一个非常简单的程序,由一个 .h 文件和一个 .c 文件组成。这两个文件都位于我的项目根目录下的文件夹“./microui”下。
我的 build.zig:
c.zig:
main.zig 的相关部分:
'zig build test' 的输出:
如果有人可以提供帮助,我觉得这一定是我想念的小东西。
struct - Zig 中的等效结构声明
您将如何在 Zig 中等效地声明以下结构?
查看LWS_PLUGIN_PROTOCOL_MINIMAL
,它在标题中定义为:
和