Zig Roadmap 2026
Через два дня, 2 июля в 16:00 по UTC:
* Производительность компилятора
* Опять про async/await
* Fuzzing with coverage
* Деньжата и сообщество
#блоги #upstream
Через два дня, 2 июля в 16:00 по UTC:
* Производительность компилятора
* Опять про async/await
* Fuzzing with coverage
* Деньжата и сообщество
#блоги #upstream
👍6
Forwarded from Serg Gini
YouTube
Zig and Rust in Production (ft. Matklad)
Twitch https://twitch.tv/ThePrimeagen
Discord https://discord.gg/ThePrimeagen
00:00:00 - How matklad got his name
00:01:25 - What is Tiger Beetle?
00:03:01 - NO DYNAMIC ALLOCATIONS?
00:05:17 - Consensus Algorithms
00:09:02 - Scaling
00:16:00 - NASA 10 Rules…
Discord https://discord.gg/ThePrimeagen
00:00:00 - How matklad got his name
00:01:25 - What is Tiger Beetle?
00:03:01 - NO DYNAMIC ALLOCATIONS?
00:05:17 - Consensus Algorithms
00:09:02 - Scaling
00:16:00 - NASA 10 Rules…
🔥13👍2🤯1
remove async and await keywords; remove usingnamespace
Из хорошего: удалили async и await, так что теперь функции из нового плана можно писать без @"..."
Из плохого: убили usingnamespace окончательно...
#upstream
Из хорошего: удалили async и await, так что теперь функции из нового плана можно писать без @"..."
Из плохого: убили usingnamespace окончательно...
#upstream
GitHub
remove `async` and `await` keywords; remove `usingnamespace` by andrewrk · Pull Request #24362 · ziglang/zig
async and await keyword removal
Also remove @frameSize, closing #3654.
While the other machinery might remain depending on #23446, it is settled that there will not be async/ await keywords in the ...
Also remove @frameSize, closing #3654.
While the other machinery might remain depending on #23446, it is settled that there will not be async/ await keywords in the ...
🎉12👍1
Forwarded from 👨💻
Ищу коллегу, пишущего на зиге для реализации одного из проектов. Подробности расскажу в созвоне, как и условия работы
🤔10
Forwarded from Андрей Краевский
через 15 минут будут рассказывать ещё про async https://www.twitch.tv/kristoff_it
❤1
LLVM Discussion Forums
[RFC] Upstream target support for CHERI-enabled architectures
Authors: Owen Anderson, Jessica Clarke, Alex Richardson, David Chisnall This RFC is a proposal to gain consensus on upstreaming target support for the CHERI-enabled architectures to the LLVM project. This is an “entire project” RFC, as CHERI support touches…
[RFC] Upstream target support for CHERI-enabled architectures - LLVM Project
Если Zig хочет поддерживать эту архитектуру и быть настолько же кросс-платформенным, как Си, придётся парочку вещей подправить:
Если Zig хочет поддерживать эту архитектуру и быть настолько же кросс-платформенным, как Си, придётся парочку вещей подправить:
CHERI заменяет указатели на capability-объекты, которые не являются целыми числами и не могут быть подделаны. Это нарушает исторически сложившиеся предположения в Clang и LLVM о том, что указатели могут быть без потерь преобразованы в целые числа и обратно. Это также касается обхода системы типов через память.
🤯6👍1
Язык Zig (канал)
[RFC] Upstream target support for CHERI-enabled architectures - LLVM Project Если Zig хочет поддерживать эту архитектуру и быть настолько же кросс-платформенным, как Си, придётся парочку вещей подправить: CHERI заменяет указатели на capability-объекты, которые…
Если простыми словами,
@intFromPtr и @ptrFromInt на этих архитектурах не будет работать, и usize с isize надо переделывать на них🤯4
Язык Zig (канал)
[RFC] Upstream target support for CHERI-enabled architectures - LLVM Project Если Zig хочет поддерживать эту архитектуру и быть настолько же кросс-платформенным, как Си, придётся парочку вещей подправить: CHERI заменяет указатели на capability-объекты, которые…
Во общем, что это такое. Для начала, CHERI расшифровывается как Capability Hardware Enhanced RISC Instructions, поэтому чтобы понять суть, нужно начать с Capability:
Capability a.k.a возможности это особые маркеры, которые определяют, к каким ресурсам можно получить доступ и какие действия с ними разрешены.
CHERI использует эти capability, чтобы контролировать доступ к памяти на компьютере. Они реализованы в железе (поэтому hardware enchanced), в виде расширения для архитектур процессоров (ARM, RISC-V, x86 и т.д.), которое заменяет обычные указатели такими capability (поэтому RISC instructions)
Capability a.k.a возможности это особые маркеры, которые определяют, к каким ресурсам можно получить доступ и какие действия с ними разрешены.
CHERI использует эти capability, чтобы контролировать доступ к памяти на компьютере. Они реализованы в железе (поэтому hardware enchanced), в виде расширения для архитектур процессоров (ARM, RISC-V, x86 и т.д.), которое заменяет обычные указатели такими capability (поэтому RISC instructions)
❤2👍1
Язык Zig (канал)
Во общем, что это такое. Для начала, CHERI расшифровывается как Capability Hardware Enhanced RISC Instructions, поэтому чтобы понять суть, нужно начать с Capability: Capability a.k.a возможности это особые маркеры, которые определяют, к каким ресурсам можно…
В обычных указателях на обычных процессорах указатель содержит в себе только адрес.
В CHERI, capabilities содержат в себе не только адрес, но и права, границы и специальная метка, которая проверяет целостность. Это всё занимает память, поэтому на 64-битных архитектурах указатель занимает не 64 бит, а 128 бит (здесь лоомается usize)
В CHERI, capabilities содержат в себе не только адрес, но и права, границы и специальная метка, которая проверяет целостность. Это всё занимает память, поэтому на 64-битных архитектурах указатель занимает не 64 бит, а 128 бит (здесь лоомается usize)
🤯3❤1
Можно заметить, что он похож на супер-слайс/срез как в Zig, который тоже содержит в себе границы (длину в случае Zig). В коде это можно представить так:
const Slice = struct(u128) {
address: u64,
len: u64,
}
const Capability = struct(u128) {
address: u64,
metadata: struct(u64) {
permissions: ... // bitfield,
type: ... // enum или boolean
bounds: ... // специальной свой мини-float
}
}👍3