Язык Zig (канал)
0.11.0 тудум тудум 🥳🥳⚡ #upstream
Выпуск Zig 0.12.0 🎉🎉🎉
И снова жирнющий релиз получился
https://ziglang.org/download/0.12.0/release-notes.html
#upstream
p.s. странно, что стрима не было
И снова жирнющий релиз получился
https://ziglang.org/download/0.12.0/release-notes.html
#upstream
p.s. странно, что стрима не было
🔥13👎1
Язык Zig (канал)
https://github.com/ziglang/zig/pull/19459 Черновой запрос на слияние, добавляющий поддержку синтаксиса "labeled continue inside a switch", т.е. computed goto (таблицы переходов). Пример кода (немного упрощено, с новых тестов): const std = @import("std");…
GitHub
compiler: implement labeled switch/continue by mlugg · Pull Request #19812 · ziglang/zig
TODO: PR message.
@Luukdegram, any chance you'd be able to un-regress the WASM backend here? I broke loop and probably fixed it (although I won't claim to have tested it), but I broke switc...
@Luukdegram, any chance you'd be able to un-regress the WASM backend here? I broke loop and probably fixed it (although I won't claim to have tested it), but I broke switc...
🔥2
Итераторы, всякие filter+reduce, и регексы
Пример с репо:
https://github.com/andrewCodeDev/Fluent/blob/511f02345c4eac28a6a80e8cfc8598f98f9863d5/README.md#regex---pcre-standard
#библиотеки
Пример с репо:
var itr = Fluent.match("[abc]\\d+", "_ab112_c987b123_d16_");
while (itr.next()) |substr| { // ...https://github.com/andrewCodeDev/Fluent/blob/511f02345c4eac28a6a80e8cfc8598f98f9863d5/README.md#regex---pcre-standard
#библиотеки
GitHub
Fluent/README.md at 511f02345c4eac28a6a80e8cfc8598f98f9863d5 · andrewCodeDev/Fluent
Fluent interface for REGEX, iteration, and algorithm chaining. - andrewCodeDev/Fluent
🔥6🤯3👍1
Написание планировщика задач на Zig (на англ.)
(который в многопоточных приложениях, а не TODO-лист)
#блоги
(который в многопоточных приложениях, а не TODO-лист)
#блоги
www.openmymind.net
Writing a task scheduler in Zig
How a mutex, a condition variable and a priority queue can be used to build a simple task scheduler in Zig.
👍8
Язык Zig (канал)
https://github.com/Validark/Accelerated-Zig-Parser
Запись вчерашнего стрима про этот парсер:
https://www.youtube.com/watch?v=FDiUKafPs0U
https://www.youtube.com/watch?v=FDiUKafPs0U
YouTube
Hyper-optimizing the Zig Parser: Part 2 w/ Niles @Validark
Powered by Restream https://restream.io
Discord: https://discord.gg/zig
Join Online:
https://twitch.tv/utahzig
https://www.youtube.com/@utahzig/streams
https://meet.jit.si/utah-zig (ping in the discord if this isn't up)
Discord: https://discord.gg/zig
Join Online:
https://twitch.tv/utahzig
https://www.youtube.com/@utahzig/streams
https://meet.jit.si/utah-zig (ping in the discord if this isn't up)
🔥5
Эндрю планирует выпустить 0.13.0 и 0.12.1 в понедельник... так что отправляйте свои пулл-реквесты, пока не поздно.
Говорит, такой быстрый выпуск чтобы дистрибутивы могли LLVM 18 спокойно использовать:
#upstream
I'm planning to release 0.13.0 and 0.12.1 on Monday, primarily featuring the LLVM 18 upgrade and musl 1.2.5 upgrade. If there are any other impactful changes you want to land, you have 5 days to get them in. 0.12.1 will be the last release in the 0.12.x series.
Говорит, такой быстрый выпуск чтобы дистрибутивы могли LLVM 18 спокойно использовать:
the release is primarily aimed at helping distributions package zig since it updates to LLVM 18. distros which have llvm 17 can package zig 0.12.1; distros that have llvm 18 can package 0.13.0
#upstream
🔥5🤯2
Как новый std.Progress будет выглядеть в режиме дерева (как у zig build --summary all):
https://asciinema.org/a/gDna9RnicwYjDRIDn4e07NFSc
#upstream
https://asciinema.org/a/gDna9RnicwYjDRIDn4e07NFSc
#upstream
Язык Zig (канал)
Как новый std.Progress будет выглядеть в режиме дерева (как у zig build --summary all): https://asciinema.org/a/gDna9RnicwYjDRIDn4e07NFSc #upstream
This media is not supported in your browser
VIEW IN TELEGRAM
agg https://asciinema.org/a/gDna9RnicwYjDRIDn4e07NFSc demo.gif --fps-cap 60 --rows 15 --cols 50
🔥6❤2
Язык Zig (канал)
Как новый std.Progress будет выглядеть в режиме дерева (как у zig build --summary all): https://asciinema.org/a/gDna9RnicwYjDRIDn4e07NFSc #upstream
GitHub
rework std.Progress by andrewrk · Pull Request #20059 · ziglang/zig
Demo
simple asciinema demo source
demo: building a music player with zig build source
Motivation
The previous implementation of std.Progress had the design limitation that it could not assume owner...
simple asciinema demo source
demo: building a music player with zig build source
Motivation
The previous implementation of std.Progress had the design limitation that it could not assume owner...
Неофициальная неполная таблица от matu3ba с функциями из compiler_rt для разных архитектур, плюс галочка реализовано или нет в Zig.
Если у вас во время компиляции появилась ошибка по типу:
То скорее всего эту функцию ещё не портировали на Zig, можете свериться с таблицей.
https://github.com/matu3ba/zig_unofficial_compiler_rt_docs
Если у вас во время компиляции появилась ошибка по типу:
ld.lld: error: undefined symbol: _bla_bla
То скорее всего эту функцию ещё не портировали на Zig, можете свериться с таблицей.
https://github.com/matu3ba/zig_unofficial_compiler_rt_docs
Язык Zig (канал)
Неофициальная неполная таблица от matu3ba с функциями из compiler_rt для разных архитектур, плюс галочка реализовано или нет в Zig. Если у вас во время компиляции появилась ошибка по типу: ld.lld: error: undefined symbol: _bla_bla То скорее всего эту функцию…
ой блин, вообще не ту ссылку вставил, исправил
Ещё одна библиотека для корутин и асинхронного I/O (на этот раз два-в-одном, а не раздельно как с zigcoro + libxev):
https://cloudef.github.io/zig-aio
https://github.com/Cloudef/zig-aio
#библиотеки
https://cloudef.github.io/zig-aio
https://github.com/Cloudef/zig-aio
#библиотеки
GitHub
GitHub - Cloudef/zig-aio: io_uring like asynchronous API and coroutine powered IO tasks for zig
io_uring like asynchronous API and coroutine powered IO tasks for zig - Cloudef/zig-aio
https://ziggy-lang.io/
https://github.com/kristoff-it/ziggy
Ещё одна (если считать ZON) зигоподобная альтернатива JSON/YAML/TOML/т.д. . В отличии от ZON, синтаксис вдохновлен Зиг, но не копирует его (поэтому есть прикольные новые фичи, которых не в Zig и ZON):
https://github.com/kristoff-it/ziggy
Ещё одна (если считать ZON) зигоподобная альтернатива JSON/YAML/TOML/т.д. . В отличии от ZON, синтаксис вдохновлен Зиг, но не копирует его (поэтому есть прикольные новые фичи, которых не в Zig и ZON):
.id = @uuid("..."),
.time = 1710085168,
.payload = Command {
.do = @action("clear_chat"),
.sender = "kristoff-it",
.roles = ["admin", "mod"],
.extra = {
"agent": "Mozilla/5.0",
"os": "Linux/x64",
},
}ziggy-lang.io
Home - Ziggy
Ziggy: A JSON/YAML/TOML alternative.
👀4🔥2
Экспериментальная поддержка Zig в re2c (генераторе лексера, юзается в ninja, php, т.д.), это вдобавок к C/C++/Rust.
https://github.com/skvadrik/re2c/commit/5cd48a8ffb1bfc82b17bd7f381437efd1678b188
https://github.com/skvadrik/re2c/issues/451#issuecomment-2229461380
https://github.com/skvadrik/re2c/commit/5cd48a8ffb1bfc82b17bd7f381437efd1678b188
https://github.com/skvadrik/re2c/issues/451#issuecomment-2229461380
GitHub
Add basic support for Zig (no documentation). · skvadrik/re2c@5cd48a8
Lexer generator for C, C++, Go and Rust. Contribute to skvadrik/re2c development by creating an account on GitHub.
👍3👀1
Язык Zig (канал)
Экспериментальная поддержка Zig в re2c (генераторе лексера, юзается в ninja, php, т.д.), это вдобавок к C/C++/Rust. https://github.com/skvadrik/re2c/commit/5cd48a8ffb1bfc82b17bd7f381437efd1678b188 https://github.com/skvadrik/re2c/issues/451#issuecomment-2229461380
Пример:
Конвертируется в:
// re2zig $INPUT -o $OUTPUT
const std = @import("std");
fn lex(yyinput: [:0]const u8) bool {
var yycursor: u32 = 0;
/*!re2c
re2c:define:YYCTYPE = u8;
re2c:yyfill:enable = 0;
number = [1-9][0-9]*;
number { return true; }
* { return false; }
*/
}
test {
try std.testing.expect(lex("1234"));
}
Конвертируется в:
// Generated by re2c
// re2zig $INPUT -o $OUTPUT
const std = @import("std");
fn lex(yyinput: [:0]const u8) bool {
var yycursor: u32 = 0;
var yych: u8 = 0;
var yystate: u32 = 0;
while (true) {
switch (yystate) {
0 => {
yych = yyinput[yycursor];
yycursor += 1;
switch (yych) {
0x31...0x39 => {
yystate = 2;
continue;
},
else => {
yystate = 1;
continue;
},
}
},
1 => { return false; },
2 => {
yych = yyinput[yycursor];
switch (yych) {
0x30...0x39 => {
yycursor += 1;
yystate = 2;
continue;
},
else => {
yystate = 3;
continue;
},
}
},
3 => { return true; },
else => { @panic("internal lexer error"); },
}
}
}
test {
try std.testing.expect(lex("1234"));
}
👍1
Язык Zig (канал)
Пример: // re2zig $INPUT -o $OUTPUT const std = @import("std"); fn lex(yyinput: [:0]const u8) bool { var yycursor: u32 = 0; /*!re2c re2c:define:YYCTYPE = u8; re2c:yyfill:enable = 0; number = [1-9][0-9]*; number…
с labeled switch было бы ещё легче, но тот PR пока не смержили, так шо вот... тут та же стратегия что и в Rust версии используется емнип, в C/C++ как раз goto-шный switch (на который похож наш будущий labeled switch), чет тип такого:
state: switch (yystate) {
0 => {
yych = yyinput[yycursor];
yycursor += 1;
switch (yych) {
'1'...'9' => continue :state 2,
else => continue :state 1
}
},
1 => { return false; },
2 => {
yych = yyinput[yycursor];
switch (yych) {
'0'...'9' => {
yycursor += 1;
continue :state 2;
},
else => continue :state 3,
}
},
3 => { return true; },
else => { @panic("internal lexer error"); },
}