目的
実データの取り込みに適した、高速・並列・堅牢な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・公開契約/採用条件などの残作業は、導入確認や今回の停止をもって完了扱いにしない。
目的
実データの取り込みに適した、高速・並列・堅牢なnative文字コード検出器としてcChardet v3を開発します。
設計の正本は日本語ロードマップです。本Issueは作業状態・依存関係・PR・成果物への入口として使います。
運用
dev向けにDraftで作成します。cchardetです。v3全体をv2へmergeしません。長期Phaseとリリース判断
Alpha/Beta/RC/正式版の判定はロードマップの条件に従い、未決定の発売日や改善率は約束しません。
初期作業
初期作業のmilestone
V3-01/07/08の基盤は統合済みです。完了済みのcorpus frameworkと、それを用いた精度評価の完了は区別します。
現在の到達点(2026-09-21)
maintainerの再開指示により開発を再開。#169までの統合点を起点とし、元の受入条件の確認から進める。P01の保留とdev限定の範囲は維持する。
進捗率の読み方
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)の統合点と検証
56b669bf9aa5dde4d9c4ee100707f66ef3ab0850f2873ba1fdf521fc7311fbb3c1272be83d87c667モデル評価の結論
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)
427e91e7091ea7267b41228224176bfe0ed4234a、nativeはIncorrect detection of GB18030 as ISO-8859-16 #45086a6b652e73f7716eac68e83f98a05a3fb99d82。両repositoryともv3向けの未マージPRなし。既存のmaster/v2向けPRは対象外。6/12完了=50%はIssue完了数であり、v3リリース全体の完成率ではない。追加の試作承認や保留解除を進捗更新から推定しない。
第3試作の統合状況(2026-09-22)
058aec784a0891103584a79c7c52b217340db67d。6e208b021b968e74f548d6642968604c5b1ca154。第3試作の追加評価・統合完了(2026-09-22)
2863aeaf420d766c05dfa8c44604c33f20fe9d91。6fabbdd7826a231d7ab26c45b63aefb7e2da6a83。wheelのみ省略。日本語の結果・再現・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)
e5272917896eb49dc4860204fead1d1e7bdb1482。631600384a85926dcba8c3176e4990d21b29a4b0。wheelのみ省略。結果・再現・制限。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導入確認までで一区切りとし、開発・自動継続を一時停止した。この記録更新のみ実施し、新しい実装や計測は開始していない。
631600384a85926dcba8c3176e4990d21b29a4b0。ローカル作業ツリーは変更なし。/usr/bin/valgrind、valgrind-3.27.1、Massif利用可能。導入待ちは解消したが、peak/live heap memoryの実測はまだ行っていない。benchmark/fixed-block-allocations.ja.md。ローカルreportはarchives/v3-corpus/fixed-block-allocations-v2.json(content hashf1e073ce9e72d360435be5986af752c18e4f01d48b0edd29d1fc90ccceb22dad)に保持。