Zig's new plan for asynchronous programs
5 months ago
- #Zig
- #Io-interface
- #asynchronous-programming
- Zig通过名为Io的通用接口引入了一种新的异步I/O方法,解决了函数着色问题。
- Io接口允许函数执行I/O操作时无需在语法上区分同步和异步执行。
- 系统提供了两种内置的Io接口实现:用于同步操作的Io.Threaded和基于事件循环的异步操作Io.Evented。
- 库作者可以编写同时适用于同步和异步I/O的函数,而无需改变函数签名或与代码库的交互方式。
- Zig的方法将异步代码转化为性能优化手段,允许初始实现使用直线型代码,后续再按需优化为异步操作。
- Io接口包含async()等函数用于可并行操作,concurrent()函数用于必须同时运行以保证正确性的操作。
- Zig的设计保持了语言的极简哲学,没有为异步代码引入新语法,并允许使用try和defer等现有控制流原语。
- Zig的异步I/O仍在开发中,Io.Evented处于实验阶段,尚未在所有支持的操作系统上可用。
- 这一新方法是Zig迈向1.0版本的重要进展,解决了本地代码生成之外的另一项主要优先事项。