Show HN: AsyncFutures – 一個用於非同步/併發程式碼執行的Ruby gem
AsyncFutures 是一個 Ruby gem,它提供了統一的 API 來在 Ractors、Threads 和 Fibers 上執行併發程式碼,使得測試不同原語的效能更加容易。該 gem 圍繞一個靈活的 Future 類構建,所有併發原語返回的 Future 物件具有相同的 API 和行為。作者強調這是透過手動實踐學習併發程式設計的結果,並非由 AI 生成。gem 在 CRuby 4.0 上達到 100% 的行和分支覆蓋率,並以 0BSD 許可釋出。
AsyncFutures 是一個新發布的 Ruby gem,旨在簡化併發程式設計。Ruby 提供了多種併發原語,如 Ractors、Threads 和 Fibers,但它們擁有不同的 API 和行為,即使看起來類似的方法(例如 join)在 Ractor 和 Thread 上表現也不同。AsyncFutures 透過 Executor 類解決了這個問題,這些 Executor 在所有原語上提供幾乎一致的行為,並返回一個具有統一 API 的 Future 物件。
該 gem 的核心是 Future 類,它提供了類似 Promise 的介面,支援鏈式操作和錯誤處理。開發者可以使用相同的程式碼模式在不同的併發模型之間切換,從而更容易評估效能並選擇最佳方案。
作者在業餘時間花費數月完成了這個 gem,並強調整個過程沒有使用 AI 輔助(“vibe coding”),而是透過實際編碼來學習併發程式設計的正確做法。gem 的程式碼在 CRuby 4.0 上實現了 100% 的行和分支覆蓋率,並以 0BSD 許可釋出,這意味著幾乎沒有任何使用限制。
作者歡迎社群審查程式碼、測試 gem 並反饋意見。