Язык Zig (канал)
174 subscribers
26 photos
3 videos
6 files
238 links
Download Telegram
Seems good for now but note this is going to disrupt my ultimate plan of creating a viable binary including when there are compilation errors. Including when there are syntax errors.

Пока всё выглядит хорошо, но учти, что это нарушит мой главный план — создавать работоспособный бинарник даже при наличии ошибок компиляции. В том числе при наличии синтаксических ошибок.


На моей памяти это первый раз, когда он упоминает этот план публично, я его ни в каких issues, PR и т.д. не видел раньше

https://github.com/ziglang/zig/pull/24857#issuecomment-3192324792

#upstream
🐳2
Я спросил mlugg что это такое.

Если вкратце то уже сейчас ошибки по типу unused variable не предотвращают генерацию бинарника (его просто не отдают).
Так что идея расширить это для других видов ошибок. Бинарник будет выдаваться, но некоректные функции будут паниковать в рантайме. Это будет работать примено как ранее отвергнутый sloppy mode. Компилятор это и так уже делает для инкрементальной компиляции так что имеет смысл дать пользователю этим попользоваться
👍3
Zig 0.15.1 выпущен сегодня:
https://ziglang.org/download/0.15.1/release-notes.html

В 0.15.0 критический баг, поэтому решили его пропустить и сразу залить с фиксом.

#upstream
🔥71
const addr: u32 = 0x10;
const mask: u32 = 0xF;
if (addr & mask == 0) {}

В Си парсится как:
if (addr & (mask == 0)) {}
// @as(u32, 0)

В Zig парсится как:
if ((addr & mask) == 0) {}
// @as(bool, true)
6👍2
Язык Zig (канал)
const addr: u32 = 0x10; const mask: u32 = 0xF; if (addr & mask == 0) {} В Си парсится как: if (addr & (mask == 0)) {} // @as(u32, 0) В Zig парсится как: if ((addr & mask) == 0) {} // @as(bool, true)
Если вдруг будете портировать код с Си на Zig или наоборот, обычно люди скобки пишут (и Clang предупреждение даёт), но иногда вот так оставляют.
Язык Zig (канал)
const addr: u32 = 0x10; const mask: u32 = 0xF; if (addr & mask == 0) {} В Си парсится как: if (addr & (mask == 0)) {} // @as(u32, 0) В Zig парсится как: if ((addr & mask) == 0) {} // @as(bool, true)
В Си изначально не было and оператора (&&), был только bitwise and (&), который использовался для обоих случаев:

if (a == b & c == d)
// имелось в виду:
if (a == b && c == d)

Уже потом они добавили операторы && и ||, и поставили им те же приоритеты, что у bitwise (== идет раньше, чем & и &&), для упрощения портирования
В Zig (и куче других языков) эти операторы были с самого начала, поэтому правила приоритетов можно было сразу поставить более интуитивные, с четким разделением "обязанностей":

addr & mask == 0

// В Си парсится как:
addr & (mask == 0)
// Потому что в старых Си (до появления &&)
// могло иметься ввиду:
addr && (mask == 0)

// В Zig сразу ясно, что это
// побитовая операция с логичным приоритетом:
(addr & mask) == 0
Forwarded from Zig reporter
Ziglang News 📰:
2025 Financial Report and Fundraiser
read
Sure. In general, we're finally nearing the end of language stabilization phase of the roadmap (although there are still a few breaking language changes planned). The next phase will be standard library stabilization. The first step of that will be minimization of the standard library, aggressively deleting what is deemed unnecessary. Then it will be auditing, then it will completeness additions, in collaboration with Zig communities and ecosystem.

Before, when the language was younger, any additions to the std lib were welcomed as they helped test pilot the language. Now, the std lib is big enough and the ecosystem is big enough that there are other better ways to test pilot the language.


https://github.com/ziglang/zig/issues/20491#issuecomment-3315245540

#upstream
🤔1
Язык Zig (канал)
Sure. In general, we're finally nearing the end of language stabilization phase of the roadmap (although there are still a few breaking language changes planned). The next phase will be standard library stabilization. The first step of that will be minimization…
DeepL:

Конечно. В целом, мы наконец-то приближаемся к завершению этапа стабилизации языка в рамках дорожной карты (хотя еще запланировано несколько серьезных изменений в языке). Следующим этапом будет стабилизация стандартной библиотеки. Первым шагом будет минимизация стандартной библиотеки, агрессивное удаление всего, что считается ненужным. Затем будет проведена аудит, а затем добавлены дополнения в сотрудничестве с сообществом Zig и экосистемой.

Раньше, когда язык был моложе, любые дополнения к стандартной библиотеке приветствовались, поскольку они помогали тестировать язык. Сейчас стандартная библиотека достаточно велика, а экосистема достаточно большая, чтобы использовать другие, более эффективные способы тестирования языка.
🕊1👀1