| ▲ | K0nserv 3 hours ago | |||||||
There is work happening on keyword generics[0], which would let a function be generic over keywords like `async` and `const`. For now the best option to write code that wants to live in both worlds is sans-io. Thomas Eizinger at Fireguard has written a good article about this[1] pattern. Not only does it nicely solve the sync/async issue, but it also makes testing easier and opens the door to techniques like DST[2] I have my own writing on the topic[3], which highlights that the problem is wider than just async vs sync due to different executors. 0: https://github.com/rust-lang/effects-initiative 1: https://www.firezone.dev/blog/sans-io 2: https://notes.eatonphil.com/2024-08-20-deterministic-simulat... | ||||||||
| ▲ | treyd 25 minutes ago | parent | next [-] | |||||||
Keyword generics are probably not happening because it's kinda a hack. Algebraic effects are the way forward, but that's a long way off. | ||||||||
| ▲ | ignoreusernames 2 hours ago | parent | prev | next [-] | |||||||
I may have missed something, but how does “sans-io” deal with CPU heavy code? For example, if there’s some heavy decoding/encoding required on the data? Does the event loop only drive the network side and the heavy part is done after the loop is finished? | ||||||||
| ||||||||
| ▲ | paavohtl 2 hours ago | parent | prev [-] | |||||||
Considering the latest commits and issues in effects-initiative are about 2 years old, the keyword generics initiative seems effectively dead. | ||||||||