Язык Zig (канал) – Telegram
Язык Zig (канал)
180 subscribers
28 photos
3 videos
6 files
246 links
Download Telegram
Язык Zig (канал)
Плюс ещё один древний пропозал делают: Decl Literals https://github.com/ziglang/zig/issues/9938 PR https://github.com/ziglang/zig/pull/21264 #upstream
Пример с PR:
const S = struct {
x: u32,
y: u32,
fn init(val: u32) S {
return .{ .x = val + 1, .y = val + 2 };
}
};
test "call decl literal" {
const a: S = .init(100);
try std.testing.expectEqual(101, a.val.x);
try std.testing.expectEqual(102, a.val.y);
}
const std = @import("std");


``zig
const S = struct {
x: u32,
const default: S = .{ .x = 123 };
};
test "decl literal" {
const val: S = .default;
try std.testing.expectEqual(123, val.x);
}
const std = @import("std");
``


Можно считать это генерализацией enum literals (.blabla), теперь они и на объявления внутри контейнеров распространяются (константы и функции)
👍2🔥1
I really like this syntax for initialization, and I think it's a consistent extension of the var x: T = .{} syntax. With the current pattern,
const value = package.SomeType.init(4);

The reader does not necessarily know that the type of value is package.SomeType. This is usually true by convention, but careful readers and editor tools cannot know for sure. In contrast, with the new syntax:
const value: package.SomeType = .init(4);

The reader and tools now know for sure that value must be of type package.SomeType. This syntax conveys extra information, and is consistent with a preference for x: T = .{} over x = T{}.
👍2
Forwarded from kristoff
The recordings from Software You Can Love Milan 2024 are out: https://www.youtube.com/watch?v=ug-KuDlMTYw&list=PL5AY2Vv6EsfSgmueLbzGVJpWIw8cIFl8J&index=1
2
https://github.com/adia-dev/chroma-logger-zig

Разноцветный логгер для Zig проектов.

std.debug.print(chroma.format("{blue}Eventually, the {red}formatting{reset} looks like {130;43;122}{s} !\n"), .{"this"});

#библиотеки
👍4😁2
https://ziglang.org/devlog/#2024-09-16
У разрабов теперь ещё и devlog свой есть:

2024-09-16
Author: Andrew Kelley
I've been porting stb_truetype.h to Zig on the side. Check out this snippet:
{
float sum = 0;
for (i=0; i < result->w; ++i) {
float k;
int m;
sum += scanline2[i];
k = scanline[i] + sum;
k = (float) STBTT_fabs(k)*255 + 0.5f;
m = (int) k;
if (m > 255) m = 255;
result->pixels[j*result->stride + i] = (unsigned char) m;
}
}

⬇️
{
var sum: f32 = 0;
for (scanline, scanline2, result.pixels[j*result.stride..][0..result.w]) |s, s2, *p| {
sum += s2;
p.* = @min(@abs(s + sum)*255 + 0.5, 255);
}
}

Ahh, much better.

#upstream
🔥7🎉1🐳1👀1🗿1
Forwarded from Ilya Kuzmichev
Всем привет! Сделали игру на джем js13k (суть: архив с игрой не должен занимать более 13kb), но в отличии от других конкурсантов поставили себе вызов сделать исключительно wasm версию на zig. Если кому-нибудь интересно что получилось - вот ссылка: https://js13kgames.com/2024/games/fri3
Заранее спасибо, если напишите отзыв или поставите оценки (голосование идет еще 4 дня)
🔥7👍4
Напрямую с Zig не связано, просто общая информация про потоки и concurrency, и чем потоки отличаются от асинхронных функций:

https://pthorpe92.dev/programming/systems/threads-async-runtimes-part0/

#блоги
👍81🔥1
Шейдеры на Zig с бэкендом SPIR-V (правда пока не совсем понял как запускать):

const gpu = @import("std").gpu;
const zm = @import("zmath");
extern var in_position: Vec3 addrspace(.input);
extern var out_position: Vec4 addrspace(.output);

extern const pc: extern struct {
transform: [4]Vec4,
light_space: [4]Vec4,
} addrspace(.push_constant);

export fn vertexMain() callconv(.Vertex) void {
gpu.location(&in_position, 0);
gpu.position(&out_position);
out_position = zm.mul(zm.transpose(pc.light_space), zm.mul(zm.transpose(pc.transform), .{ in_position[0], in_position[1], in_position[2], 1 }));
}

export fn fragmentMain() callconv(.Fragment) void {
gpu.fragmentOrigin(fragmentMain, .upper_left);
}

взял с дискорда
2🔥1
https://github.com/ziglang/translate-c

zig translate-c в отдельной программе на основе Aro компилятора. Правда, я нигде анонс не нашёл, но репозиторий тоже новый и официальный
3🔥3👍1
Я тут кстати довольно поздно заметил, но после переноса https://github.com/ziglang/www.ziglang.org с Hugo на Ziggy перевод на русский закинули в папку со старыми не-мигрировавшими переводами, и там уже 2 пулл реквеста который перевод с нуля делают. Я не уверен, что они вообще знают о старом переводе, поэтому подсказал в комментариях

#upstream
👀3
Forwarded from Alexander Podvodnii
Парни всем привет!
Несу вам горячую новость: на платформе highload.fun, где ранее решать задачки можно было только с c++, rust, go, c# не без моего участия, появилась поддержка zig.

Жду ваших рекордов.
🔥15❤‍🔥2👍2