Язык Zig (канал)
153 subscribers
11 photos
3 videos
4 files
197 links
Download Telegram
Язык Zig (канал)
Релиз 0.14.0, но пока что архивы не сгенерировались
Только-только архивы собрались, теперь release notes ждать (но уже можете с сайта скачать, они в master разделе)
This media is not supported in your browser
VIEW IN TELEGRAM
JetBrains что-то мутят с поддержкой Zig в Fleet...

https://plugins.jetbrains.com/plugin/26070-zig

Плагин новый (с декабря), скаичаанийй пока что мало
https://www.twitch.tv/andrewrok

Стрим, merging pull requests (5 минут и полностью начнется).
Язык Zig (канал)
https://www.twitch.tv/andrewrok Стрим, merging pull requests (5 минут и полностью начнется).
аааа, я с самого начала смотрел, а он уже 30 минут идет, сорри стрим уже наяался оказывается
Forwarded from kortexcmd
This media is not supported in your browser
VIEW IN TELEGRAM
Язык Zig. #1. Первая программа
Deus Lex Machina - Validark's Blog

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

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

#блоги
Язык Zig (канал)
https://github.com/Validark/Accelerated-Zig-Parser
это вторая версия того же токенайзера
Forwarded from TheCodePunk
Опубликовал новую главу о работе с файлами и директориями — рассказываю, как их создавать, читать, удалять и обходить. Как всегда, буду рад, если материал окажется полезным. Приятного чтения! - https://thecodepunk.com/posts/zigbook23/
наконец то официальный материал про билд систему
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;
Please open Telegram to view this post
VIEW IN TELEGRAM