ziglang | Unsorted

Telegram-канал ziglang - Язык Zig (канал)

156

Чат @ziglang_ru

Subscribe to a channel

Язык Zig (канал)

https://github.com/ziglang/zig/pull/25351
парочка новых функций и переименований в std.mem

Читать полностью…

Язык Zig (канал)

Старый вариант от jedisct1 мне больше нравился, потому что в новом от Эндрю проверку легко обойти:

fn returnStackPointer() *i32 {
var stack_allocation: i32 = 1234;
const ptr = &stack_allocation;
return ptr;
}

Читать полностью…

Язык Zig (канал)

DeepL:

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

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

Читать полностью…

Язык Zig (канал)

add basic compile-time detection for stack escape violations
закрыт правда...

#upstream

Читать полностью…

Язык Zig (канал)

Ziglang News 📰:
2025 Financial Report and Fundraiser
read

Читать полностью…

Язык Zig (канал)

В Си изначально не было and оператора (&&), был только bitwise and (&), который использовался для обоих случаев:

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

Уже потом они добавили операторы && и ||, и поставили им те же приоритеты, что у bitwise (== идет раньше, чем & и &&), для упрощения портирования

Читать полностью…

Язык 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 (канал)

Zig 0.15.1 выпущен сегодня:
https://ziglang.org/download/0.15.1/release-notes.html

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

#upstream

Читать полностью…

Язык Zig (канал)

Я спросил mlugg что это такое.

Если вкратце то уже сейчас ошибки по типу unused variable не предотвращают генерацию бинарника (его просто не отдают).
Так что идея расширить это для других видов ошибок. Бинарник будет выдаваться, но некоректные функции будут паниковать в рантайме. Это будет работать примено как ранее отвергнутый sloppy mode. Компилятор это и так уже делает для инкрементальной компиляции так что имеет смысл дать пользователю этим попользоваться

Читать полностью…

Язык Zig (канал)

Про I/O и Writergate:

Don't Forget To Flush by Andrew Kelley

Осторожно, в начале громкий звук

Читать полностью…

Язык Zig (канал)

0.2.0 (март 2018):

const std = @import("std");

pub fn main() !void {
// If this program is run without stdout attached, exit with an error.
var stdout_file = try std.io.getStdOut();
// If this program encounters pipe failure when printing to stdout, exit
// with an error.
try stdout_file.write("Hello, world!\n");
}

По сути этот синтаксис до сих пор остался. (и наверно работал бы на 0.14, если бы не ошибки-варнинги по типу variable is not mutable)

Читать полностью…

Язык Zig (канал)

Старый Hello World 2015 года:

export executable "hello";

#link("c")
extern {
fn printf(__format: *const u8, ...) -> i32;
fn exit(__status: i32) -> unreachable;
}

export fn _start() -> unreachable {
printf("Hello, world!\n");
exit(0);
}

Влияние Rust здесь хорошо видно.

Читать полностью…

Язык Zig (канал)

https://github.com/ziglang/zig/pull/24699

Эндр подчищает ring buffers в стандартной библиотеке (их в сумме 4, один он убирает в другом ПР и один тут).

BoundedArray он так и не полюбил :( опять хочет его удалить.

#upstream

Читать полностью…

Язык Zig (канал)

https://codeberg.org/breadtom/expozig

Альтернативный компилятор для Zig на Си. Автор хочет другой способ бутстрапинга сделать, без WASM файлов, от Си сразу к Zig

Читать полностью…

Язык Zig (канал)

в обоих случаях проверки будут работать, потому что старый код с указателями в рантайме просто прячет за собой capability, и те же проверки на границы и т.д., просто их не модифицируют вручную (не сжимают границы функциями по типу cheri_bounds_set т.д., потому что их нет в старом коде)

Читать полностью…

Язык Zig (канал)

Возможно он потом больше проверок добавит...

Читать полностью…

Язык Zig (канал)

forbid trivial local address returned from functions

Проверка проще, но ошибка теперь раньше появляется

#upstream

Читать полностью…

Язык 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 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

Читать полностью…

Язык Zig (канал)

Для сравнения, отчет в прошлом году за 2023:

Читать полностью…

Язык Zig (канал)

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

addr & mask == 0

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

// В Zig сразу ясно, что это
// побитовая операция с логичным приоритетом:
(addr & mask) == 0

Читать полностью…

Язык Zig (канал)

Если вдруг будете портировать код с Си на Zig или наоборот, обычно люди скобки пишут (и Clang предупреждение даёт), но иногда вот так оставляют.

Читать полностью…

Язык Zig (канал)

Все новые картинки к выпуску:

Читать полностью…

Язык Zig (канал)

кстати интересные комментарии по поводу high-frequency trading в Zig:

https://www.reddit.com/r/Zig/comments/wqxrle/comment/il1tm7g/

Читать полностью…

Язык Zig (канал)

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

Читать полностью…

Язык Zig (канал)

https://youtu.be/Q9wWk5y-e7A?si=VAcUc7NtMUd-PweK

Читать полностью…

Язык Zig (канал)

0.1.0 (октябрь 2017):

const io = @import("std").io;

pub fn main() -> %void {
%return io.stdout.printf("Hello, world!\n");
}

Читать полностью…

Язык Zig (канал)

10 лет с момента создания Zig:

https://github.com/ziglang/zig/commit/8e08cf4bec80b87a7a22a18086a3db5c2c0f1772

Читать полностью…

Язык Zig (канал)

https://github.com/akhildevelops/cudaz

Библиоткеа для работы с CUDA

#библиотеки

Читать полностью…

Язык Zig (канал)

[RFC] Libc++ taking a dependency on Boost.Math for the C++17 Math Special Functions

У libc++ (стандартной библиотеки C++ от LLVM) может появиться новая зависимость Boost.Math, которая позволит докончить поддержку C++17 в коде.

Почти все соглашаются и поддержиают это решению, но Эндрю говорит это помешает сильно для zig и zig c++:

This is apocalyptic for us. We, and our users would strongly prefer missing C++17 features than a Boost.Math dependency.

If LLVM moves forward with this, we will very likely patch it out.

Правда, весомых технических причин он не указал, так что люди не поняли...

Читать полностью…

Язык Zig (канал)

потому что в гибрид моде у обычных указателей будет addrspace 0 (как обычно на x86-64), а у capabilities 200, чтобы старый код мог работать дальше на CHERI системах (например, закрытые программы или библиотеки, которые нельзя пересобрать), и рантайм мог отличать его от нового

Читать полностью…
Subscribe to a channel