日本語 · English(未訳)

Kairos 言語仕様 — RC 履歴

リリース候補(RC)宣言ごとの差分と追補の記録。README(最新ステータス) の前段から移した 当時の記録(追記型・古い順)で、旧仮称や当時の宿題表記はそのまま残す。現況の正本は spec 本文・ 命名の確定状況は §5.4・宿題は ../design/90-open-questions.md

RC1 → RC2(2026-07-07)

通読レビューで ADR-29/30 の反映漏れと章間齟齬を修正(EBNF へ labels: を追補、前文を独立文とするスコープの EBNF 修正、高階関数の記述修正ほか)、射影一族ほか六語の命名確定、宿題の分類再確認(DoD)。

RC2 追補(2026-07-07)

リファレンス実装(../impl/)の綻び F43〜F50 を解消——例の不整合修正(F45〜F48)と ADR-31(grid の 既定整列+anchor:・紀元 epoch:・stride 一族の from: 必須化)・ADR-32(文字列リテラル。 tz: "Asia/Tokyo")。

RC2 → RC3(2026-07-08)

頻出しながら未定義だった土台の明文化と、最後の未確定機構の確定: ADR-33(TZ の定義)=射影パラメータモデル(基底 chronos は TZ 非依存・TZ は市民座標への版付き写像・ 「錨」は射影に付く)、市民日は「その日付になる最初の瞬間」からの半開区間、chronos はうるう秒を持たない 一様な理想化軸=UTC の各日を 86,400 秒と数える(23:59:60 は字句エラー)、DST の隙間・重複に落ちる時刻リテラルは 明示エラー(解決規約は将来の opt-in)、紀元の tz 相対性の明文化。ADR-34(label: 付与式の束縛規則)= ラムダは窓の先頭点を受け、意味論は定義的等式「名前(d) ≡ 付与式(先頭点)」(射影時・遅延評価)・ 点±幅算術は導入しない。あわせて ADR-30/31 に改訂節(「別点の窓参照」の精密化・データ由来窓の epochOrdinal=存在する最初の窓が 0(F60)・div/mod の負数は floor(F63))、用語集に TZ の項を新設、 §3.6 の「うるう秒で 23〜25 時間」の誤記を修正。標準 premise は 4 本に拡充済み(../stdlib/——Fiscal・ ISOWeek・Kyureki と暦座標糖衣。ISO 週番号が label: なしの確定語彙で書ける発見 F57 を含む)。

RC3 → RC4(2026-07-08)

最後まで残っていた二つの継続項目の確定: ADR-35(カレンダー実体の宣言)calendar: に立てる実体は予約公開語 nonWorking(仮称)を持つ premise(新構文ゼロ・§3.9 新設)。正体判定(ADR-19 の延長)は nonWorking の day 整列と tz: 宣言 (内側固定の執行点)まで要求し、bizDay は言語規定の標準導出(calendar: 在圏の予約名)。軸位置の premise 名(on: TSE)は正体判定+標準導出への読み替え(F53 解消)。修飾ピンの member 解決規則 (定義側優先)を明文化。ADR-36(結合子・軸所属の粒度整合)整列(alignment)の静的検査を導入 (F56/F54 解消・§4.5)。整列=「全点が原子グリッド G(幅・正規化位相・tz 名)の目盛り上」という導出構造 からの主張で、&/\/filter(on:)/roll(on:)/shift(unit: 点列軸)/stride は両辺同一 G を要求 (黙って空振りする形を静的エラーに)・snapTo が明示の再整列・和 | は不問(混合スケジュール保護)・ tz 名はリテラル文字列の等値。あわせて ADR-05 に注記(整列は型でなく静的性質)・I8 の字面に結合子を追補・ glossary に整列/カレンダー実体/nonWorking/bizDay を追加・reference に nonWorking.md を新設。 リファレンス実装は実体・標準導出・整列検査まで実装し 147 テスト全通過(doctest の標準前提も実体経由)。 新出の宿題は F67〜F70(../design/40-examples/90-findings.md)。

RC4 → RC5(2026-07-08)

評価註釈(I6・ADR-15)の初めての具体化(F61 解消): ADR-37(範囲外出自と covering: の活性化)covering: は「範囲内は完全・範囲外は未知」の二面の 主張値には触れない(列の全要素の包含は静的検査——当初案の clip は敵対検証の致命反例で却下)。 範囲外出自は結果に並走する区間註釈〔[a,b)・種・源・covering・asof〕で、伝播は core 全演算子の 輸送表(§4.10 新設——結合子は和・shift は平行移動像・roll は依存像・選択子は窓拡幅・stride は位相 汚染・segmentBy の edges: 発火は覆域端=実効被覆域)。相殺は自動でなく明示の被覆主張(束縛 後置 covering:)のみ。エラーの分類器=実効被覆域(外なら「落として註釈」・内なら従来どおり硬エラー)。 器は二つ——評価範囲にクリップする区間註釈と、クリップしない被覆サマリ(源・covering・asof・完結 主張・残走路)。covering の表現域を拡張: 開端2021....=完結主張・統治つき)と区間 リスト(中抜けの申告)。あわせて ADR-15/26 に改訂節(空の出自→区間の出自)、I6 の字面更新、 EBNF(covering-list・束縛後置)、glossary 5 項追加。bizDay 標準導出の「データの尽きた先の黙った退化」 (ADR-35 判断 3)が退化するが観測可能になる。リファレンス実装は註釈の区間輸送・包含検査・分類器・ 被覆サマリまで実装し 188 テスト全通過(実装検証で判断 5 の必要条件検査を精密化=ADR-37 改訂。 判断 1 の tz: 必須の執行のみ宿題)。

RC5 追補 1(2026-07-08)——所属の意味論の縁の確定

F68・F70 解消: ADR-38=(a) 窓所属の述語 coincides(S, w, d)(仮称三語目・§4.9 射影一族=値式の有界存在量化)。時刻付き・混合スケジュールへの 例外日適用(filter(t => not coincides(closures, day, t))——発火時刻を保存して「日」で除く)の受け皿。 確定は証人規則(真=非註釈区間の証人のみ・偽=窓が実効被覆域内)・S の市民時 tz と w の tz 名 不一致は静的エラー(クロス tz の裏口封じ)・整列要求は課さない(区間所属=ADR-36 判断 7 免除系へ)。 (b) stride は入力相対に確定(軸引数削除・n ≥ 1 の整数・from: 以上の最初の入力点が第 0 歩・ ADR-36 の stride 整列検査は削除)。あわせて ADR-37 判断 4 の filter 輸送行を逆像拡幅に精密化 (F75——窓越し述語の過小近似の穴)。使い分けの規範「同じなら結合子〈snapTo で整合〉・同じ 所属なら coincides」を §4.5 とエラー文言に整備。

RC5 追補 2(2026-07-08)——並行リストの結びの確定

F62 解消: ADR-39=テーブルの labels:segmentBy 窓列へ一般化(新語ゼロ・三ラベル源の対称完成——点データ/窓規則/窓データ・§4.2)。 読みは束縛名射影・整列は専用の窓列序数(実効被覆域内の先頭マーカー窓が 0——epochOrdinal とは 紀元跨ぎで食い違うため相乗りしない)・同長性検査(リスト長 == 覆域基準の窓数・評価範囲非依存= 正確・窓束縛の評価と同時)。前提=マーカー有限・無註釈の単一覆域。締め=edges: clip/empties: drop/label: 同居/cycle/gen 語すべて静的エラー+未知の名前付き引数の黙殺も封止。守るのは長さのみ (中身の照合は doctest・coincides の分担)。ADR-30 に改訂節(適用先一般化・補助束縛パターンの再配置)。

RC5 追補 3(2026-07-08)——日付ラベル保存の再錨と多 TZ の実行検証

F69 解消: ADR-40= 点変換 rebase(to: "tz")(仮称)=日付ラベルを保存して to tz の同日付の市民日先頭へ写す(§4.4)。 snapTo=chronos 所属・rebase=ラベル対応の二本立てで ADR-36 の整合手段が完成(TSE×NYSE の共通 営業日が書ける)。w=day 固定・非存在日付(Pacific/Apia 2011-12-30)は明示エラー・免除系の tz 名 検査を同時拡張(ADR-36 改訂 2)。リファレンス実装は IANA tz(依存ゼロ)で多 TZ を実装——DST 切替日 23/25h(ADR-11/12 幅規約の初の実行検証)・premise 相対 day グリッド・tz: 必須の全面執行。

RC5 追補 4(2026-07-09)——営業時間の供給規約と標準導出

F67 本体・F79 裁定: ADR-41= カレンダー実体の細粒度層(§3.9)。供給規約=実体の予約公開語の sessionOpens/sessionCloses(仮称・実体 tz の市民座標=壁時計で宣言・任意・with 継承込みで対判定)・セッション=半開区間の和・整合性検査 (結合実効被覆域∩実体化範囲での局所交互・端の切り欠き合法・同時刻対は両点保持)・標準導出 bizOpen/bizClose/isOpen(実体相対)。あわせて ADR-31 改訂 2=時刻付き anchor:/from: の 窓境界(壁時計ラベル読み・隙間→最初の瞬間・重複→最初)と shift の経過保存の明文化(F81/F83)。

RC5 追補 5(2026-07-09)——位置依存の名前解釈と窓インスタンス参照

F64/F9 解消: ADR-42適用の型規則(§2.7 新設——名前の解釈は候補集合を出現位置の期待型で絞り、複数残れば曖昧エラー。 軸位置の premise 名〈ADR-35〉・点引数=束縛名射影〈ADR-34〉・値引数=窓インスタンス参照の三面)と、 窓インスタンス参照 W(v)=逆像(§4.9——W(v) ≡ W の要素点列 |> filter(d => W(d) == v)year(2020)=その年の日々・marineDay & year(2020) の正準形・新語彙ゼロ)。dispatch は糖衣 展開後・実引数束縛後の引数式の型で分岐。標準ラベル=year/month(Gregorian)+year(Fiscal—— 上書きはラベルを継承しないため同時付与)。ゼロマッチは空だが、静的に列挙できるラベル値域の域外は 静的エラー(month(2020) 級のタイポ封じ)。EBNF は stream-atom の修飾適用形 (Gregorian.year(2020))のみ追補。

RC5 追補 6(2026-07-09)——純命名の一括確定とリテラルの締め

F51・F66/F97: 仮称 9 語の うち 8 語を正式名に確定(供給の対のみ opens/closessessionOpens/sessionCloses に改名・ ADR-41 改訂。残る仮称は shiftBoundary 一語=1.0 送り継続)。ADR-43=(a) 日付リテラルの 値域は字句エラー2026-02-30 級の拒否——実装が黙って 2026-03-02 へロールオーバーしていた サイレント面を封じる)・(b) 固定オフセット TZ は厳格一意形 "±HH:MM" のみ(ADR-36 の 「リテラル字面の等値」が依存する一意性)・(c) 時点は値型の一員(裸の値束縛 d0 = 2026-05-15 合法=F97 解消・ADR-42 の dispatch 表は「点以外の値→インスタンス参照」に精密化)。

RC5 追補 7(2026-07-14)——空テーブルリテラル(実装系還流の初便)

ADR-45=F98(発報層実装からの第一次還流で出た綻び——「点ゼロだが覆域は主張したい」束縛の 一次形が無く、恒偽 filter の回避形が迂遠): 空リスト []covering: 後置に限り時間ストリーム 定数(空テーブル)に昇格する。空形は covering 明示必須(省略既定「列の端」が空列で定義できない)・ labels: [] のみ合法・包含/昇順/同長の各検査は空虚に成立。整列は空虚適合の第三状態(ADR-36 改訂 3=全整列に適合し検査に通る・結合は相手を継承)。EBNF は変更なし(要素列は既に省略可能—— 意味論注記のみ改稿)。既存の式の意味は不変(静的エラーだった形の合法化=追加拡張)。検証の副産物 として roll 空軸の依存像の実装欠陥(F99)を発見・修正。

RC5 追補 8(2026-07-14)——外部供給宣言 external(socket の確定)

ADR-46=発報層還流第一次の実測痛点 2 件(静的ソース不可・統治の焼き忘れ)を受けた socket の 要否込み裁定(設計者裁定=採用・宣言語 external)。設計の核=実行時に解決されるテーブル リテラル——新型・新代数ゼロで、リテラルが字面で運ぶ静的性質を宣言(kind:=整列の主張・ labels:=値域の列挙)が先取りし、解決値に同一の統治検査(covering/asof 必須・包含・昇順・同長・ 日付の実在)を供給契約として課す。premise 束縛の右辺(先頭)限定・解決は評価文脈の随伴 (一評価一解決・要求駆動・定義側 premise 単位のスナップショット)・解決失敗は供給エラー (機械可読な部分類——「まだ無い」〈ADR-45〉と型で区別)。EBNF は param-key に kind/source を 追加のみ。§7.8 の決定性は「同一スナップショット相対」の条件を明記。既存の式の意味は不変 (追加拡張)。ADR-26 改訂 3(式に埋める/器で受ける、の使い分け確定)。

RC5 追補 9(2026-07-25)——テーブル後置の順序自由化と窓列被覆域の精密化(発報層還流 第 5 便)

第 3 の適用ドメイン(暦×占い)の実運用検証(発報層還流 第 5 便)が炙り出した 2 件:

RC5 追補 10(2026-07-25)——窓列への周期ラベル labels: cycle(ADR-47)

segmentBylabels: の値位置に周期形 cycle リスト anchor: 実日 を追加(発報層還流 第 5 便 §3 の実需——節切り月の十二支・月家九星・月星座など「窓列=暦の単位・ラベル=固定周期」の形。 候補設計 4 視点検証・設計者裁定 3 件を経た採用)。意味論は窓束縛 cycle と同一「anchor の属する窓が 先頭ラベル」= list[(i − i₀) mod N]・新語彙ゼロ。同長性検査は課さない(covering が伸びても式 不変=ADR-46 静的ソース原則との整合)——守るのは位相の宣言のみで、マーカー中途増減・非周期列への 誤用は機械検出されない(照合は doctest・coincides の分担)。anchor は窓列のいずれかの窓に区間 所属(頭側・範囲外は明示エラー)。締めは静的 labels: と同一を継承。あわせて named-arg の重複指定を 静的エラーに一般化。既存の式の意味は不変(追加拡張)。EBNF は segment-labels/cycle-labels を追加。

RC5 追補 11(2026-07-26)——最後の仮称を rephase に裁定・命名完全確定

窓境界の位相ずらし糖衣の正式名を rephase に裁定(旧仮称 shiftBoundary・設計者裁定= 当初「1.0 宣言時」予定の条件 3 を前倒し)。根拠は三点: (1) 展開の実体(spanphase: 差し替え)と名が一致——rephase(δ, on: W, unit: U) ≡ W = U span (_ => k) phase: ((φ₀+δ) mod k)、 (2) rebase(点の再錨)・anchor:(位相を留める実日)との re-/錨・位相語彙系の対称——ADR-47 で 「位相」が利用者向け語彙に昇格したことが後押し、(3) 簡潔(13 字→7 字)と点変換 shift との 同語幹回避。比較候補 shiftBoundary 昇格・shiftPhaseoffsetBoundary/moveBoundary は 不採用(経緯は design/30-syntax/01)。boundary の語は k 可変組を扱う将来の別演算子 (スコープ外)に温存。これで全語彙が正式名——仮称ゼロ。意味論・展開・シグネチャは不変 (純命名)。全コーパス一括置換(spec・reference〈ページ改名 shiftBoundary.md→rephase.md〉・ stdlib・impl・図版・英語ミラー)。