Язык Zig (канал)
174 subscribers
26 photos
3 videos
6 files
238 links
Download Telegram
Deus Lex Machina - Validark's Blog

Другая версия токенайзера для Zig, с упором на производительность

https://validark.dev/posts/deus-lex-machina/

#блоги
4🔥1🤔1
Язык Zig (канал)
https://github.com/Validark/Accelerated-Zig-Parser
это вторая версия того же токенайзера
👍1
Forwarded from TheCodePunk
Опубликовал новую главу о работе с файлами и директориями — рассказываю, как их создавать, читать, удалять и обходить. Как всегда, буду рад, если материал окажется полезным. Приятного чтения! - https://thecodepunk.com/posts/zigbook23/
👍13
наконец то официальный материал про билд систему
🔥32
Comptime аллокатор от mlugg:

https://zigbin.io/9a46a9

pub const comptime_allocator: Allocator = .{
.ptr = undefined,
.vtable = &.{ .alloc = &comptimeAlloc, .resize = &comptimeResize, .remap = &comptimeRemap, .free = &Allocator.noFree },
};

fn comptimeAlloc(_: *anyopaque, len: usize, alignment: Alignment, ra: usize) ?[*]u8 {
_ = ra;
if (!@inComptime()) @panic("comptimeAlloc called at runtime");
var buf: [len]u8 align(alignment.toByteUnits()) = undefined;
return &buf;
}

fn comptimeResize(_: *anyopaque, mem: []u8, alignment: Alignment, new_len: usize, ra: usize) bool {
_ = alignment;
_ = ra;
if (!@inComptime()) @panic("comptimeResize called at runtime");
return new_len <= mem.len; // allow shrinking in-place
}

fn comptimeRemap(_: *anyopaque, mem: []u8, alignment: Alignment, new_len: usize, ra: usize) ?[*]u8 {
_ = alignment;
_ = ra;
if (!@inComptime()) @panic("comptimeRemap called at runtime");
return if (new_len <= mem.len) mem.ptr else null; // allow shrinking in-place
}

comptime {
var al: std.ArrayListUnmanaged(u32) = .empty;
defer al.deinit(comptime_allocator);

al.appendSlice(comptime_allocator, &.{ 1, 2, 3 }) catch unreachable;
al.appendNTimes(comptime_allocator, 42, 256) catch unreachable;

std.debug.assert(al.items.len == 256 + 3);
std.debug.assert(al.items[0] == 1);
std.debug.assert(al.items[1] == 2);
std.debug.assert(al.items[2] == 3);
for (al.items[3..]) |x| {
std.debug.assert(x == 42);
}
}

const std = @import("std");
const Allocator = std.mem.Allocator;
const Alignment = std.mem.Alignment;
🤔84🤩2🤯1
Please open Telegram to view this post
VIEW IN TELEGRAM
Тут официальный список зеркал для Zig добавили:

https://ziglang.org/download/community-mirrors/

Пока что используется только в https://github.com/marketplace/actions/setup-zig-compiler, но mlugg предлагает авторам програм по типу zigup и zvm тоже его использовать

#upstream
👍32
Zig Roadmap 2026

Через два дня, 2 июля в 16:00 по UTC:
* Производительность компилятора
* Опять про async/await
* Fuzzing with coverage
* Деньжата и сообщество

#блоги #upstream
👍6
Forwarded from kili loje
Вмёржили.
👍51🤔1🤮1
спасибо китайцам за новую аву
👎6
Язык Zig (канал)
спасибо китайцам за новую аву
вернул старую, чет не зашло никому
12🔥2🥰2