Skip to content

[v3] 開発ロードマップ・進捗トラッカー #114

Description

@PyYoshi

目的

実データの取り込みに適した、高速・並列・堅牢なnative文字コード検出器としてcChardet v3を開発します。

設計の正本は日本語ロードマップです。本Issueは作業状態・依存関係・PR・成果物への入口として使います。

運用

  • cChardetとuchardetのv3実装PRは、それぞれのdev向けにDraftで作成します。
  • uchardetのv2保守先はcchardetです。v3全体をv2へmergeしません。
  • uchardetのIssuesは無効のため、native側の作業もこのrepositoryで追跡し、実装先PRを紐付けます。
  • 新規ファイルのlicenseは対象実装前にV3-01で判断します。旧generatorの再利用を前提にしません。
  • 完了には実装PR・再現command・測定artifact等の根拠が必要です。Issue作成だけで実装済みとは扱いません。
  • 原則の状態は未着手 → 進行中 → 完了。blocked/延期は理由を記録し、依存Issueを参照します。
  • この親Issueは初期12項目だけで自動的にcloseせず、3.0範囲の決定と後続研究の引継ぎを確認して判断します。

長期Phaseとリリース判断

Phase 内容 位置づけ
1 native build・安全性・挙動比較・trace 必須基盤
2 corpus・新規model generator・provenance 必須基盤
3 失敗分類・優先順位 3.0の対象を決定
4–5 精度改善・新encoding/language対応 分析後に選定
6 段階的検出・hint・evidence limit 必要性を評価
7–9 Rust試験実装・次世代model/engine・SIMD 条件付き研究。3.0の一律の必須条件ではない

Alpha/Beta/RC/正式版の判定はロードマップの条件に従い、未決定の発売日や改善率は約束しません。

初期作業

初期作業のmilestone

V3-01/07/08の基盤は統合済みです。完了済みのcorpus frameworkと、それを用いた精度評価の完了は区別します。

現在の到達点(2026-09-21)

maintainerの再開指示により開発を再開。#169までの統合点を起点とし、元の受入条件の確認から進める。P01の保留とdev限定の範囲は維持する。

Issue 状態 統合済み・確認済み 主な残作業
#115 完了 baseline、license、dev CI/Rules 後続変更は各Issueへ
#116 一部完了 compiler matrix、30 C++20 wheel、sdist、旧glibc x86_64/ARM64各5 ABI 最低macOS/Windows、新機能の配布/採用条件
#117 一部完了 exact候補比較、chunk差分、通常reset、3OS shared lifecycle error/OOM/weight等の残契約
#118 基盤あり・P01保留 sanitizer preset/既存CI 追加fuzz・再現・OOM検証
#119 P01保留 未統合調査・修正案を保存 安全性修正の検証・統合
#120 完了 state/counter、候補照合、限定cost測定、BOM/French内部選抜の代表例説明 モデル修正・全corpus分析は後続へ
#121 完了・拡張済み manifest/権利metadata/split、近似重複診断 権利や独立性の自動認定はしない
#122 完了 strict再encode、サイズ/HTML variants、skip理由 精度評価とは別
#123 完了 新規generator、中断回復、native filter/full engine接続、validation品質評価、受入監査 モデル品質改善・配布・採用は#124/#125/#126へ
#124 完了 158fixture、代表例、model/ratio/chunk、利用者報告、開発順位 採用前の独立/実Web評価と契約は#125/#126へ
#125 判断材料あり 採用条件・試作の評価/制約 利用者向け改善選定、API/移行案
#126 選定待ち 非デフォルト基盤のPython側統合 選択した精度/coverage改善の提供

進捗率の読み方

milestoneは#123/#120/#124の受入完了により12件中6 closed=50%。部分成果・工数の進捗率ではない。
本文の古い「未着手」「Python-only」「ARM64未確認」等を最新実績へ同期した。
前回の本文同期ではstateを変更しなかったが、再開後の検証で#123をcompletedとしてcloseした。元の完了条件・milestone構成は変更していない。

#123のgenerator実装/品質評価とモデル標準採用を分離する。品質後退という結果も評価済みであり、採用できないだけでgeneratorを未実装とは扱わない。
#120の限定cost測定も実施済み。全toolchain/全入力の保証を暗黙の新完了条件にしない。
次回は元の受入条件に対する残差を確認し、必要なclose/後続Issue分割を判断する。

前回の区切り(#169)の統合点と検証

  • cChardet [skip-build] test: native lifecycle比較を統合 #169: 56b669bf9aa5dde4d9c4ee100707f66ef3ab0850
  • uchardet #44まで: f2873ba1fdf521fc7311fbb3c1272be83d87c667
  • #169の通常17 CI成功、統合後run 35555443510も成功。wheelだけ明示省略。
  • ローカル332 passed / 28 skipped / 79 subtests。native CTest154実行成功、既知5件はconfigure時に除外。
  • 公開13関数のheader/export/shared symbol一致。3OS shared lifecycle成功。
  • dev限定。master/v2/tag/release、標準model/APIは変更していない。

モデル評価の結論

Paris validation cp1252 16入力のdecode-equivalentはlegacy16、identity5、filtered7。
別tuning8録音のratio0.90はwhole-input8/8だが、7-byte chunkではlegacy6/8に対し生成model4/8。
標準採用を支持しない。独立holdoutは未開封。BOM試作と追加安全性調査はP01保留。

再開用資料

private artifactはarchives/v3-corpus/、P01 worktreesとlocal BOM試作は未統合のまま保持。履歴の細部は各PR・既存コメントを参照する。

再開後の追加統合(2026-09-21)

#170を全17通常CI成功後devへ統合(1cf683ddecb9609c1998c3388a7672a87bad4cfc)。native #45までの固定点は086a6b652e73f7716eac68e83f98a05a3fb99d82。上記#169は前回の区切りの固定点。
SBCS選択cacheと既存French誤判定のscore競争を対応付け、元の条件に基づき#120を完了とした。ローカル348 passed /15 skipped /79 subtests。詳細・再現根拠は#120本文。
この#170時点では順位確定も未完了だった。#171で#124は完了(下記)。P01、最低runtime残検証、#125/#126の利用者向け改善選定・採用は引き続き未完了。

#171で実測に基づく開発順位と受入案を統合(427e91e7091ea7267b41228224176bfe0ed4234a)。#124完了。先行候補はSBCS filterのincremental証拠の一貫性。#125で2試作枠との関係・状態/EOF/メモリ・候補/done契約を確定してから実装する。公開動作やP01の扱いは未変更。詳細は#124本文とdocs/v3-improvement-priorities.md。

最新の再開点・判断待ち(2026-09-21)

6/12完了=50%はIssue完了数であり、v3リリース全体の完成率ではない。追加の試作承認や保留解除を進捗更新から推定しない。

第3試作の統合状況(2026-09-22)

  • native PR #46は最終11 CI成功後merge。固定commit 058aec784a0891103584a79c7c52b217340db67d。
  • cChardet PR #172でsubmodule固定と日本語契約/結果を統合済み。通常CI run 35623116962の17件成功後merge、wheelのみ明示省略。統合commit 6e208b021b968e74f548d6642968604c5b1ca154。
  • ローカルpytest 355 passed / 15 skipped / 88 subtests。小入力1000比較・tuning320観測・report再実行一致。詳細は#172のdocs/v3-fixed-block-pilot.md。
  • 既定engine/API/modelは不変。第3試作追加は個別許可であり、P01解除や無制限の試作追加ではない。
  • 次は採用前の性能/memory・別validation・block選定/公開契約。[V3-11] 3.0の範囲・API契約・移行方法を確定する #125/#126はこの比較基盤だけで完了にしない。milestoneは6/12のまま。

第3試作の追加評価・統合完了(2026-09-22)

  • native PR #47は全11 CI成功後merge。固定点 2863aeaf420d766c05dfa8c44604c33f20fe9d91。
  • cChardet PR #173は通常17 CI成功(run 35625843669)後devへmerge。最新統合点 6fabbdd7826a231d7ab26c45b63aefb7e2da6a83。wheelのみ省略。
  • ローカルpytest 362 passed / 15 skipped / 94 subtests。native診断suite 38成功・5 skip。
  • 既存validation32入力×4 block×5外部chunkの640観測で、同じ内部blockなら結果が一致。64/1024はcp1252 decode-equivalent16/16を維持するが、候補/confidenceは旧wholeと異なる。
  • CPU固定のnative warm reuse性能を2 run測定。64-byteは外部wholeの文書別5%超悪化が14/16・15/16と再現。1024は同条件で両runとも5%超なし。
  • 1/7は品質、64は性能に採用上の問題が残る。1024は追加評価候補で、まだ標準採用しない。

日本語の結果・再現・hash。性能は文書別trial平均の合計であり、request p95やcorpus-pass latencyではない。初回確保・allocation・peak/live memory・別言語/domain・公開契約の検証が残る。独立holdout未開封、P01保留、既定API/model不変。#125/#126は未完了、milestoneは6/12。

allocation観測の統合完了(2026-09-22)

  • native PR #48: 全11 CI成功後merge、e5272917896eb49dc4860204fead1d1e7bdb1482。
  • cChardet PR #174: 通常CI run 35627297523成功後devへmerge、最新統合点 631600384a85926dcba8c3176e4990d21b29a4b0。wheelのみ省略。
  • ローカルpytest 365 passed / 15 skipped / 94 subtests。native診断suite 41成功・5 skip。
  • 固定tuning16入力で1024-byte adapterの構築時newは直接fixedより1回多い。初回/warm文書の対象8 counterは一致し、外部whole/1-byteでも同じ。計測なし版・保存canonical観測との候補全体一致、report再実行全byte一致を確認。
  • これはselected static-link API call counts。strdup等shared-library内部は対象外であり、physical allocationやlive/peak memoryの測定ではない。対象counterが0でも無allocationと解釈しない。

結果・再現・制限。report content hash f1e073ce9e72d360435be5986af752c18e4f01d48b0edd29d1fc90ccceb22dad。
Valgrind 3.27.1とMassifの導入を確認済み(2026-09-22)。通常小入力のpeak/live memory測定は未着手で、maintainerの希望により一時停止中。保留中のP01/fuzz/OOMは再開しない。追加platform・別言語/domain・request p95・公開契約/採用条件は引き続き残る。

一時停止・次回の再開地点(2026-09-22)

maintainerの希望により、allocation観測の統合とValgrind導入確認までで一区切りとし、開発・自動継続を一時停止した。この記録更新のみ実施し、新しい実装や計測は開始していない。

  • 完了済み: native PR #48とcChardet PR #174のdev統合。#174のmerge commitは 631600384a85926dcba8c3176e4990d21b29a4b0。ローカル作業ツリーは変更なし。
  • 環境確認済み: /usr/bin/valgrind、valgrind-3.27.1、Massif利用可能。導入待ちは解消したが、peak/live heap memoryの実測はまだ行っていない。
  • 次回は明示的な再開指示後、通常の小規模入力(既存pilotの上限4096 bytes)でメモリ計測を準備する。既存の固定tuning16入力、whole/direct fixed/1024-byte adapterの比較条件と候補一致を維持する。
  • 計測時は構築・初回・warm・破棄の区間、requested heap bytesとprofiler推定overhead、入力/実行環境/tool versionを区別して記録する。既存allocation API counterをlive/peak bytesとみなさない。Valgrind下の実行時間を通常の性能比較に流用しない。
  • 再開時に参照する資料: 固定block試作・結果、nativeの benchmark/fixed-block-allocations.ja.md。ローカルreportは archives/v3-corpus/fixed-block-allocations-v2.json(content hash f1e073ce9e72d360435be5986af752c18e4f01d48b0edd29d1fc90ccceb22dad)に保持。
  • P01のfuzz/OOM/関連安全性・BOM調査は引き続き保留。独立holdoutは未開封。既定API/modelは変更せず、1024-byte blockの標準採用も未決定。
  • [V3-11] 3.0の範囲・API契約・移行方法を確定する #125/#126は未完了のまま。メモリ・追加platform/言語/domain・request p95・公開契約/採用条件などの残作業は、導入確認や今回の停止をもって完了扱いにしない。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    pinned継続して追跡する作業。既存stale設定の除外対象roadmapロードマップと進捗の集約v3cChardet v3開発の作業・設計判断

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions