согласно документации версии 0.13, асинхронные функции (async functions) фактически отключены. Хотя синтаксис и ключевые слова для асинхронного программирования (async, await, suspend, resume и т.д.) всё ещё присутствуют в языке, их использование не рекомендуется, поскольку эта функциональность была регрессирована начиная с версии 0.11.0. Основные проблемы, которые привели к регрессии: LLVM не может эффективно оптимизировать асинхронный код Отладчики сторонних производителей не могут отлаживать такой код Проблема отмены асинхронных операций остаётся нерешённой Указатели на асинхронные функции мешают определению размера стека При написании кода на Zig 0.13 следует избегать использования асинхронных функций и искать альтернативные подходы, например: Использовать многопоточность через std.Thread Применять событийно-ориентированное программирование Использовать callback-функции Применять неблокирующий ввод-вывод Команда Zig планирует вернуться к решению этих проблем в будущем, но сейчас сфокусирована на других приоритетах развития языка.
Вот с офф сайта вытащил из 0.13 async async can be used before a function call to get a pointer to the function's frame when it suspends. See also Async Functions await await can be used to suspend the current function until the frame provided after the await completes. await copies the value returned from the target function's frame to the caller. See also Async Functions
Да вы правы, согласно документации версии 0.13, асинхронные функции (async functions) фактически отключены. Хотя синтаксис и ключевые слова для асинхронного программирования (async, await, suspend, resume и т.д.) всё ещё присутствуют в языке, их использование не рекомендуется, поскольку эта функциональность была регрессирована начиная с версии 0.11.0. Основные проблемы, которые привели к регрессии: LLVM не может эффективно оптимизировать асинхронный код Отладчики сторонних производителей не могут отлаживать такой код Проблема отмены асинхронных операций остаётся нерешённой Указатели на асинхронные функции мешают определению размера стека При написании кода на Zig 0.13 следует избегать использования асинхронных функций и искать альтернативные подходы, например: Использовать многопоточность через std.Thread Применять событийно-ориентированное программирование Использовать callback-функции Применять неблокирующий ввод-вывод Команда Zig планирует вернуться к решению этих проблем в будущем, но сейчас сфокусирована на других приоритетах развития языка.
@@solenopsys-ru спаибо за ответ, я смотрел подксат, там гость говорил, что этот новый компилятор, больше для dev сборки, чтобы zig быстрее собирался и лучше работал с lsp. Он сказал, что полный уход от llvm вряд ли будет.
Скорость компиляции для DEV это важная задача, если они это ускорят то это будет очень хорошо! В zig не хватает pipes таких как в go. В go гоурутины и пайпы творят чудеса. То что им пришлось убрать async await это не очень хорошо, но сам язык конечно более навороченный чем C даже без этого функционала.
согласно документации версии 0.13, асинхронные функции (async functions) фактически отключены. Хотя синтаксис и ключевые слова для асинхронного программирования (async, await, suspend, resume и т.д.) всё ещё присутствуют в языке, их использование не рекомендуется, поскольку эта функциональность была регрессирована начиная с версии 0.11.0.
Основные проблемы, которые привели к регрессии:
LLVM не может эффективно оптимизировать асинхронный код
Отладчики сторонних производителей не могут отлаживать такой код
Проблема отмены асинхронных операций остаётся нерешённой
Указатели на асинхронные функции мешают определению размера стека
При написании кода на Zig 0.13 следует избегать использования асинхронных функций и искать альтернативные подходы, например:
Использовать многопоточность через std.Thread
Применять событийно-ориентированное программирование
Использовать callback-функции
Применять неблокирующий ввод-вывод
Команда Zig планирует вернуться к решению этих проблем в будущем, но сейчас сфокусирована на других приоритетах развития языка.
Спасибо за видео. вроде-бы, в zig 0.11.0 убрали асунг/аваийт из стандартной либы, на данный момент последняя версия: zig 0.13.x
Я что-то пропустил?
Вот с офф сайта вытащил из 0.13
async
async can be used before a function call to get a pointer to the function's frame when it suspends.
See also Async Functions
await
await can be used to suspend the current function until the frame provided after the await completes. await copies the value returned from the target function's frame to the caller.
See also Async Functions
Да вы правы, согласно документации версии 0.13, асинхронные функции (async functions) фактически отключены. Хотя синтаксис и ключевые слова для асинхронного программирования (async, await, suspend, resume и т.д.) всё ещё присутствуют в языке, их использование не рекомендуется, поскольку эта функциональность была регрессирована начиная с версии 0.11.0.
Основные проблемы, которые привели к регрессии:
LLVM не может эффективно оптимизировать асинхронный код
Отладчики сторонних производителей не могут отлаживать такой код
Проблема отмены асинхронных операций остаётся нерешённой
Указатели на асинхронные функции мешают определению размера стека
При написании кода на Zig 0.13 следует избегать использования асинхронных функций и искать альтернативные подходы, например:
Использовать многопоточность через std.Thread
Применять событийно-ориентированное программирование
Использовать callback-функции
Применять неблокирующий ввод-вывод
Команда Zig планирует вернуться к решению этих проблем в будущем, но сейчас сфокусирована на других приоритетах развития языка.
Я вроде читал что в этом году они собирались делать свой компилятор в место LLVM, может быть как раз в этом была мотивация.
@@solenopsys-ru спаибо за ответ, я смотрел подксат, там гость говорил, что этот новый компилятор, больше для dev сборки, чтобы zig быстрее собирался и лучше работал с lsp.
Он сказал, что полный уход от llvm вряд ли будет.
Скорость компиляции для DEV это важная задача, если они это ускорят то это будет очень хорошо! В zig не хватает pipes таких как в go. В go гоурутины и пайпы творят чудеса. То что им пришлось убрать async await это не очень хорошо, но сам язык конечно более навороченный чем C даже без этого функционала.