Design an opt-in atomic whole-file replacement API

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

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

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

評価

難易度
5/5
見積もり時間
1週間以上
初心者へのやさしさ
30/100
issue の種類
機能追加
明瞭さ
おおむね明確
活発さ
活発
技術スタック
rust

調査の方向性

Start with std/fs/file.wave:247 and inspect fs_write_all, io_write_all, and the existing rename provider boundaries before designing the opt-in API. The agreed contract must define candidate creation, permissions, symlinks, flush and rename behavior, cleanup, and the distinction between atomic visibility and crash durability. Done means failures preserve the old destination, provider-specific ownership and link behavior are explicit, and atomic visibility plus durability guarantees are tested and documented.

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

説明

discussion enhancement help wanted

Motivation

fs_write_all intentionally opens/truncates the destination before writing. That existing behavior is useful, but cannot preserve the old file if a later write fails; applications saving configuration need a separate opt-in replacement operation.

Starting point: std/fs/file.wave:247.

Validation

Audited canonical Wave 540728c2eb6cc12f5c69c3fb3fdb96e07ba059a4 (0.0.1-alpha-dev), whose tree matches the local checkout. Validation: Inspected fs_write_all/io_write_all and existing rename provider boundaries. 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

Design same-directory candidate creation, permission/symlink handling, flush/rename and cleanup rules. Distinguish atomic visibility from crash durability and do not change existing fs_write_all semantics.

Related: #738, #382. These links do not claim those broader or completed scopes are unfinished.

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

  • The agreed API preserves the old destination on controlled write/close/activation failures.
  • Ownership, permissions and link behavior are explicit across providers.
  • Atomic visibility and durability guarantees are tested and accurately documented.
主要言語
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 を短くまとめたダイジェスト。