Define capacity semantics and backend limits for portable event loops

オープン
#1,014 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
5/5
見積もり時間
1週間以上
初心者へのやさしさ
32/100
issue の種類
リファクタリング
明瞭さ
おおむね明確
活発さ
活発
技術スタック
rust

調査の方向性

Start with std/sys/windows/event.wave at the readiness capacity handling, then compare creation, registration, and wait boundaries in the epoll, kqueue, Windows readiness, and IOCP providers. Use compiler probes at capacities 0, 1, 64, and 65, plus registrations beyond capacity, to establish current behavior. Done means the contract separates the three capacities, defines target-specific or common outcomes and clear errors, and preserves existing event behavior after the design is agreed with @LunaStev.

索引モデルが issue の本文から書いたものです。

説明

discussion enhancement help wanted

Motivation

The Windows readiness set enforces a fixed maximum and registration capacity, while epoll/kqueue creation uses a positive hint. The public loop capacity argument does not explain whether it is a hint or a portable registration limit.

Starting point: std/sys/windows/event.wave:45.

Validation

Audited canonical Wave 540728c2eb6cc12f5c69c3fb3fdb96e07ba059a4 (0.0.1-alpha-dev), whose tree matches the local checkout. Validation: Compared creation/add/wait boundaries in all readiness providers. Executed compiler probes use the matching checkout-built compiler and std on Linux amd64 (Rust 1.89.0 / LLVM 21.1.8). Source/header or mocked checks are not native execution on another OS.

Scope

Define creation capacity, registration capacity and per-wait output capacity separately. Preserve the bounded Windows readiness fallback and keep IOCP distinct.

Design discussion required

This issue records a proposal or an unresolved contract; it is not approval to choose new semantics. Please mention @LunaStev to discuss the design before starting implementation.

Completion criteria

  • Creation at 0/1/64/65 and registration beyond capacity have documented target-specific or common results.
  • Output capacity does not silently redefine registration capacity.
  • Unsupported limits produce clear errors and existing event behavior remains valid.
主要言語
Rust
スター
56
フォーク
21
平均マージ
23時間 20分
マージ済み PR(30日)
45

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

wavefnd/Wave のほかの issue

wavefnd/Wave の issue をすべて見る

似ている issue

Rust の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。