Комментарии 4
Интересно. Только не в начале 2010-x, а в начале 2000-х: класс Deferred из Twisted (Python) - это первый вариант future, который мне встретился.
Сумбурно, без примеров, камень как я догадался в Golang к концу наконец развязка с непонятным результатом. Переписываем одинаковый код из года в год и тянем среду выполнения С. Надо будет еще раз перечитать позже. Я так и не понял в чем мораль? И там и там есть свои проблемы. Какое решение?
Какое решение?
Перечитайте раздел с "maybe(async)"
Я так и не понял в чем мораль?
На мой взгляд, лучше разделять библиотеку на 3 части: общая, async и blocking. Изначально немного больше работы, но потом гораздо проще поддерживать.
Я исхожу из своего опыта работы со Stackless Python3, где те же проблемы. Особенно вот эта:
Но, с добавлением этих функций в язык связана одна проблема: они идентичны СИНИМ функциям, поэтому при вызове их невозможно отличить! При работе нужно опираться на документацию и держать в голове все ЗЕЛЁНЫЕ функции, чтобы ненароком не вызвать их из КРАСНОЙ.
Переписываем одинаковый код из года в год и тянем среду выполнения С.
Что же вы предлагаете? Отказ от FFI будет стоить языку жизни, т.к. придется переписать все популярные библиотеки.
Это стон по отсутствию (и принципиальной невозможности в текущей реализации runtime Rust) call/cc?
Rust и асинхронные функции: как улучшить структуру кода и повысить производительность с помощью абстракций