Чем Zig лучше C? Нашел святой грааль системного программирования!

Поділитися
Вставка
  • Опубліковано 10 гру 2024

КОМЕНТАРІ • 14

  • @solenopsys-ru
    @solenopsys-ru  8 днів тому

    согласно документации версии 0.13, асинхронные функции (async functions) фактически отключены. Хотя синтаксис и ключевые слова для асинхронного программирования (async, await, suspend, resume и т.д.) всё ещё присутствуют в языке, их использование не рекомендуется, поскольку эта функциональность была регрессирована начиная с версии 0.11.0.
    Основные проблемы, которые привели к регрессии:
    LLVM не может эффективно оптимизировать асинхронный код
    Отладчики сторонних производителей не могут отлаживать такой код
    Проблема отмены асинхронных операций остаётся нерешённой
    Указатели на асинхронные функции мешают определению размера стека
    При написании кода на Zig 0.13 следует избегать использования асинхронных функций и искать альтернативные подходы, например:
    Использовать многопоточность через std.Thread
    Применять событийно-ориентированное программирование
    Использовать callback-функции
    Применять неблокирующий ввод-вывод
    Команда Zig планирует вернуться к решению этих проблем в будущем, но сейчас сфокусирована на других приоритетах развития языка.

  • @trypophobia7497
    @trypophobia7497 8 днів тому +1

    Спасибо за видео. вроде-бы, в zig 0.11.0 убрали асунг/аваийт из стандартной либы, на данный момент последняя версия: zig 0.13.x
    Я что-то пропустил?

    • @solenopsys-ru
      @solenopsys-ru  8 днів тому

      Вот с офф сайта вытащил из 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

    • @solenopsys-ru
      @solenopsys-ru  8 днів тому

      Да вы правы, согласно документации версии 0.13, асинхронные функции (async functions) фактически отключены. Хотя синтаксис и ключевые слова для асинхронного программирования (async, await, suspend, resume и т.д.) всё ещё присутствуют в языке, их использование не рекомендуется, поскольку эта функциональность была регрессирована начиная с версии 0.11.0.
      Основные проблемы, которые привели к регрессии:
      LLVM не может эффективно оптимизировать асинхронный код
      Отладчики сторонних производителей не могут отлаживать такой код
      Проблема отмены асинхронных операций остаётся нерешённой
      Указатели на асинхронные функции мешают определению размера стека
      При написании кода на Zig 0.13 следует избегать использования асинхронных функций и искать альтернативные подходы, например:
      Использовать многопоточность через std.Thread
      Применять событийно-ориентированное программирование
      Использовать callback-функции
      Применять неблокирующий ввод-вывод
      Команда Zig планирует вернуться к решению этих проблем в будущем, но сейчас сфокусирована на других приоритетах развития языка.

    • @solenopsys-ru
      @solenopsys-ru  8 днів тому

      Я вроде читал что в этом году они собирались делать свой компилятор в место LLVM, может быть как раз в этом была мотивация.

    • @trypophobia7497
      @trypophobia7497 7 днів тому

      @@solenopsys-ru спаибо за ответ, я смотрел подксат, там гость говорил, что этот новый компилятор, больше для dev сборки, чтобы zig быстрее собирался и лучше работал с lsp.
      Он сказал, что полный уход от llvm вряд ли будет.

    • @solenopsys-ru
      @solenopsys-ru  6 днів тому

      Скорость компиляции для DEV это важная задача, если они это ускорят то это будет очень хорошо! В zig не хватает pipes таких как в go. В go гоурутины и пайпы творят чудеса. То что им пришлось убрать async await это не очень хорошо, но сам язык конечно более навороченный чем C даже без этого функционала.