Repository navigation
日本語の書き直しと、言語間で食い違っていた挙動の修正 - #1
Merged
Merged
Conversation
全ファイルのコメントと Markdown を yomiyasu の方針で書き直した。 和欧文の間の半角空白を取り、句点を消した名残で途中で折れていた文を つなぎ、データに使う「壊れる」「黙って」のような言い回しを直した。 意味と、仕様の規範の強さは変えていない。 コードのコメントから、仕様書の章番号と参照先を外した。 章立てを変えるたびにコメントが古くなるため。check_comments.py に この検査を足し、これまで漏れていた /** */ の中の句点も見るようにした。 書き直しの途中で見つかった、コメント・ドキュメントと実装の食い違いを 実装に合わせて直した。主なものは次のとおり。 - 書き戻しを止めるのは DataVersion 4786 未満のときだけ - LZ4 は自前で展開しており、任意依存ではない - 「4言語」の書き残しを、TypeScript を含めた記述にする - porting-guide に書かれていた存在しない関数・モードを実在の手順にする - check_docs_sync.py の照合キーを features.md の今の行名に合わせる docs/api/ の生成部分は check_docs_sync.py --write で作り直した。
書き直しの途中で見つかった、言語ごとに挙動が違う箇所を直した。
どれも 5 言語それぞれにテストを足して確かめている。
- Rust: ワールド経由でチャンクを読むと、WorldOpenOptions に渡した
警告の通知先が呼ばれなかった
- Python: binary32 の範囲を超える NbtFloat が OverflowError になって
いた。他の言語と同じく符号付きの無限大にする
- Python: 途中で切れた GZip や壊れた圧縮データで、標準の例外が
そのまま出ていた。MALFORMED_DATA に包む
- Python / TypeScript: Float のシグナリング NaN を読み書きすると
ビットが変わっていた。読んだビットを持っておき、そのまま書き戻す
- SNBT の \U でサロゲートの範囲を書いたときの扱いを \u とそろえた。
C# では想定外の例外が漏れていた
- 孤立サロゲートを含む Compound のキーを受け付けていた。書き出すと
読み戻せないため、SNBT では MALFORMED_DATA、API では
INVALID_ARGUMENT にする
- Python: 対になったサロゲートと補助文字が別の文字列になっていた
- リストの範囲外の位置で、TypeScript は配列が伸び、Rust はパニック
していた。失敗したときに空のリストの要素型が確定するのも直した
- 読み書きモードで存在しないフォルダへ書けなかった。書き出す直前に
ディレクトリを作る
- level.dat の一時ファイルを fsync してから置き換える
- TypeScript / Rust: \N{…} のエラーメッセージに波括弧が抜けていた
あわせて、ドキュメントの事実誤りを直した。仕様 11 と ADR 0006 の
異種リストの扱いが Minecraft の挙動と逆だったほか、ADR 0001 / 0002、
README の TypeScript の要件と Rust の行、テストベクタ all_tags の
説明を実態に合わせた。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
概要
2つのコミットからなる。
1つ目は文章だけの変更で、コードの挙動は変えていない。2つ目は挙動を変える修正で、5言語それぞれにテストを足している。
1. 日本語の書き直し
全ファイルのコメント・docstring・Markdownを、yomiyasuの方針で書き直した。
触っていないもの:
name:(必須チェック名になっているため)spec/testdata/(生成物。all_tagsの説明だけ直して作り直した)docs/features.mdの行名のうち、check_docs_sync.pyが照合している9つあわせて次も行った。
check_comments.pyにこの検査を足し、これまで漏れていた/** */の中の句点も検査するようにしたcheck_docs_sync.pyの照合キーのずれなど2. 挙動の修正
WorldOpenOptionsに渡した警告の通知先が呼ばれなかったNbtFloatがOverflowErrorになっていた。符号付きの無限大にするMALFORMED_DATAに包む\Uでサロゲートの範囲を書いたときの扱いを\uとそろえた(C#は想定外の例外が漏れていた)MALFORMED_DATA、APIではINVALID_ARGUMENTlevel.datの一時ファイルをfsyncしてから置き換える\N{…}のエラーメッセージに波括弧が抜けていたCHANGELOGに「未リリース」の節を作って記録した。仕様10・11・40と、features.mdの「言語ごとの差異」にも反映している。
ドキュメントの事実誤りも直した。
{"": 値}に包む)と逆だった確認したこと
spec/run-conformance.sh: 834件すべて一致build_testdata.pyの出力とspec/testdataに差分なしcheck_comments.py/check_docs_sync.py/check_links.py: すべて問題なしレビューで見てほしい点
#見出しでリンクしている場合は切れる``x``や:class:の前後の空白を取ったので、Sphinxで描画するとマークアップとして認識されない(いまはSphinxを使っていない)未確認
RustのMSRV(1.75)は、手元にツールチェーンがないため確かめていない。使ったのは1.75で使える機能だけで、確認はCIの
msrvジョブに任せる。