How I turned Zig into my favorite language to write network programs in
7 months ago
- #Network Programming
- #Zig
- #Asynchronous I/O
- 作者最初忽略了Zig语言,但在看到创始人Andrew Kelley关于用Zig重写Chromaprint算法的帖子后产生了兴趣
- 用Zig重写AcoustID倒排索引获得成功,相比原C++版本实现了更快速、可扩展性更强的效果
- 作者在Zig的异步I/O实现中遇到挑战,由此开发出受Go语言启发的异步I/O并发库Zio
- Zio通过固定大小的栈式协程简化异步编程,使状态管理更简单,代码呈现同步风格
- Zio支持异步网络/文件I/O、同步原语、Go风格通道,可运行在单线程或多线程模式
- 性能测试显示Zio在单线程模式下快于Go和Rust的Tokio,多线程场景也具竞争力
- Zio兼容标准读写接口,可与不了解Zio运行时的外部库无缝集成
- 作者计划用Zio增强NATS客户端,并开发基于Zio的HTTP客户端/服务端库,拓展Zig在非小众场景的应用