Язык Zig (канал)
174 subscribers
26 photos
3 videos
6 files
238 links
Download Telegram
[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.

Правда, весомых технических причин он не указал, так что люди не поняли...
https://codeberg.org/breadtom/expozig

Альтернативный компилятор для Zig на Си. Автор хочет другой способ бутстрапинга сделать, без WASM файлов, от Си сразу к Zig
👍4
https://github.com/ziglang/zig/pull/24699

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

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

#upstream
😢4
Старый 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 здесь хорошо видно.
😁2
Язык Zig (канал)
0.1.0 (октябрь 2017): const io = @import("std").io; pub fn main() -> %void { %return io.stdout.printf("Hello, world!\n"); }
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)
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