问题标签 [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.

0 投票
1 回答
131 浏览

zig - 从另一个 zig 包导入 zig 包

我可以在我的可执行文件中导入一个包exe.addPackagePath("name", "path")并使用const name = @import("name");. 现在我想将包包含在另一个包中,但我不明白如何。我可以为包创建一个对象来设置 addPackagePath() 吗?

0 投票
2 回答
433 浏览

zig - zig 结构、指针、字段访问

我试图用通用算法实现向量代数,最后玩了迭代器。我发现了两个不明显和意外行为的例子:

  1. 如果我有指向p带有 field 的结构(实例)的指针,我可以像(而不是)fi一样简单地访问该字段p.fip.*.fi
  2. 如果我有一个“成员”函数fun(this: *Self)(where Self = @This())和一个结构实例s,我可以像调用函数一样简单s.fun()(而不是(&s).fun()

我的问题是:

  1. 它是否在某处记录(或以任何方式提及)?我查看了来自ziglearn.org的语言参考和指南,但没有找到任何东西
  2. 我们在这些例子中观察到了什么?两种特殊情况的语法糖,还是有更一般的规则可以推断出这种行为?
  3. 还有更多奇怪指针行为的例子吗?
0 投票
1 回答
106 浏览

zig - 整数和浮点类型的 zig maxValue

zig 曾经有@maxValue来查询整数类型的最大值,但我认为它在几个版本前被删除了。有替代品吗?我找不到它。

0 投票
1 回答
129 浏览

simd - meta.Vectors 背后的黑魔法是什么?

在实现了一些基于通用算法和迭代器的向量代数之后,我决定运行一些基准测试。这个想法是将自定义向量的性能与meta.Vectors 的性能(进行加法和缩放)进行比较。

当向量的大小设置为 10 时,自定义向量的性能略优于meta.Vectors。当向量的大小设置为 100 时,meta.Vectors 稍微优于自定义向量。当向量的大小设置为 1000 时,自定义向量执行加法和缩放的速度是 s 的两倍meta.Vector- 比meta.Vectors 稍慢(使用@splat)。

最有趣的是编译时间——那些随着向量大小的增长而增长(没有测量,无法判断编译时间是否与向量大小成线性关系)。当向量的大小设置为 10_000 时,我最终(经过长时间的等待)收到shell returned 137错误消息(在编译期间);在我注释掉任何提及之后meta.Vector,代码编译得很好。

所以我的问题是什么样的(编译器?)黑魔法让 1000 大小meta.Vector的 s 工作得如此之快,我可以用它来让我的代码更快吗?

PS:基准测试是用 -O ReleaseFast 运行的,所有变量都被标记了var

meta.VectorPPS:在调试模式下,最终编译了 10_000 大小的代码

0 投票
1 回答
241 浏览

javascript - 将 Zig 编译为 wasm32-freestanding 时出错

我正在尝试使用wasm32-freestanding目标将 Zig 函数编译为独立的 WebAssembly 模块。官方文档中有一个部分解释了如何执行此操作,但在最新版本的 Zig (0.8.0) 中,尝试使用 JavaScript 实例化生成的模块时出现错误。

检查生成的 wasm 模块表明它尝试导入__linear_memory从范围调用的值env。这自然会失败,因为我没有提供这样的导入。但是,示例项目zig-wasm-test包含一个 WASM 模块(使用旧版本的 Zig 编译),它不包含这些导入。

我在这里做错了什么?__linear_memory即使不使用它,我是否应该只向模块提供导出?

0 投票
1 回答
217 浏览

zig - zig 打印浮点精度

在 zig 中,可以使用“{d}”以十进制表示法打印浮点值。这将自动以全精度打印该值。有没有办法指定位数?对于每个值,还是作为某种全局设置?

0 投票
1 回答
111 浏览

mutability - Zig 中的全局“comptime var”

在 Zig 中,我可以毫无问题地做到这一点:

但是当我尝试在函数之外声明变量时,会出现编译错误:

Zig 版本:0.9.0-dev.453+7ef854682

0 投票
1 回答
145 浏览

compilation - 使用 zig 编译器作为库

有没有办法将 zig 编译器用作 zig 中的库?在查看 zig 文档、问题和互联网后,我找不到这个问题的答案。

在其中一个问题中,据说目前可以做到这一点,但我找不到任何关于如何做到这一点的例子。

0 投票
1 回答
212 浏览

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' 的输出:

如果有人可以提供帮助,我觉得这一定是我想念的小东西。

0 投票
1 回答
137 浏览

struct - Zig 中的等效结构声明

您将如何在 Zig 中等效地声明以下结构?

查看LWS_PLUGIN_PROTOCOL_MINIMAL,它在标题中定义为: