このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

Catyの変更や拡張

http://d.hatena.ne.jp/m-hiyama-memo/20121231/1356927784 から後の2012年後半の変更拡張:

  1. file:writeに--mkdirオプションを追加
  2. pv, item, nth, xjson:get に --safe, --default オプション
  3. 特殊コマンドもオプションの構文チェック
  4. アプリケーション修飾を '::' に
  5. sreifモジュールを実装して追加
  6. リンク宣言(links の内部)にもアノテーションが書ける
  7. case分岐でのエラーをTypeErrorからCaseUnmatchedに変更
  8. 状態記述の仕様変更 #844
  9. 変数参照に、? と ?=を導入
  10. json:merge をunbiased版に
  11. コマンドパラメータに限って %? を導入
  12. 型パラメータをコマンドのボディ内でも可視とする #502
  13. call/forward のターゲットをモジュール修飾不要に
  14. call/forwardなしでも再帰コマンドが書けるようになった
  15. templateモジュールを導入
  16. forwardでスクリプトファイルも実行可能に
  17. Wikiプラグイン記法を導入 #869
  18. CatyScriptの型引数に型表現を書けるようになった pass<[string, {*:string}?]> とか
  19. validateこまんどを型パラメータ方式に変更
  20. リクエストディスパッチャが排他でない場合にエラーとするよう修正
  21. begin/repeat の導入
  22. cyclic dependency チェック
  23. CDパスの曖昧さ解決 #882
  24. 例外機構を実装
  25. モジュールをまたぐ再帰の問題をmodule宣言のrelated節で解決
  26. 単独のtryブロック #905
  27. neverコマンド
  28. Never例外
  29. throwコマンド
  30. signalコマンド
  31. throws句にnotをサポート not throws Exc
  32. mos:fullpathを実装
  33. unclose構文を実装 #937
  34. 型 UncloseInput を定義
  35. FIT内のマクロの参照を%%に変更
  36. uncloseに--clearオプションを追加 #933
  37. 例外処理に、--wallオプション #938
  38. runawayシグナルのサポート #945
  39. env利用の有料化
  40. instances構文を追加 #965
  41. アクション起動時に環境変数ACTIONの追加
  42. wsgiモジュールを追加
  43. GETの入力はnullに
  44. OS_PLATFORM環境変数を追加
  45. gen:sampleの引数を型名ではなく型表現に変更 #984
  46. gen:sampleに--modオプションを追加、モジュール指定ができる
  47. mos:fullpath の仕様を他のコマンドでも使用するように(一部は)した
  48. @[interactive] アノテーション
  49. xjson:univ-prettyコマンドを追加
  50. json:prettyの扱える範囲を標準的なJSONの範囲に制限
  51. (ほとんど)すべてのメタオブジェクトに位置情報(location)を埋め込む
  52. validateに--modオプションを追加
  53. testモジュールを廃止
  54. マルチプロファイルは廃止予定
  55. on demandモジュールを実現
  56. force-load特殊コマンドを実装
  57. override-publicアノテーション #1096
  58. inspect:where-isを追加
  59. override("")アノテーションを追加。任意のモジュールを上書き可能。#1090
  60. branch文を実装、まだ不十分
  61. fillコマンドを追加
  62. no-auto-fillアノテーションを追加、このアノテーションの指定されたコマンドはデフォルト値の自動補完がされない。
  63. gv:drawに--time, --timefileオプションを追加
  64. browserモジュールを追加
  65. array-to-object に --multi オプション #1106
  66. kyesコマンドを追加
  67. InvalidInput --> BadInput
  68. レイフィケーションStateSummaryにforWhom項目
  69. 任意のファイルからの force-load #1114
  70. flattenコマンドを追加 #1139
  71. file:mkdir にも --mkdir オプション
  72. gen:sampleをypicalアノテーションに対応
  73. narrowコマンドを追加。
  74. reject-non-jsonコマンドを追加
  75. open/close演算子をサポート
  76. extract演算子をサポート
  77. execコマンドを一部機能のみ実装
  78. UncloseConflict->SetEnvConflictにリネーム
  79. envに--toplevelオプションを追加
  80. call, forwardに--appオプションを追加
  81. takeに--objオプションを追加
  82. CatyFITにおける例外種別をサポート #963
  83. sreif:list-annotationsとshow-annotationを実装
  84. gen:sampleをwith/withoutアノテーションに対応
  85. annotations名前空間の追加に伴い、レイフィケーションデータのアノテーション情報を"anno"にリネーム
  86. インボーカーの動詞とメソッドの識別方法を変えた #1174
  87. open演算子に型パラメータを追加
  88. CatyEnviron型を定義
  89. PackageNotFound例外型を追加。
  90. アノテーション構文サポート #1187
  91. フラグメントの構文を変更({#ID ... } or (#ID ...))
  92. 任意のコマンド/アクションに reads, updates, uses が書ける #1194
  93. extract型演算も Ignore Tag Once
  94. サーバーモードでも-uオプションを有効化
  95. Catyアーカイバ
  96. Catyインストーラ
  97. Catyアンインストーラ
  98. Catyチェッカー
  99. cambの構文サポート #1224
  100. init-appとremove-appを実装
  101. hconからのinit-app, remove-appが可能に
  102. nit-appをアプリケーションインスタンスの生成のみに限定、これまので同コマンドはsetup-appに移行
  103. caty-archiverに--ignore-missingオプションを追加
  104. caty-archiverのフィルターファイルにオプショナルなファイルの指定を追加(行頭に?)
  105. viva:drawに--node=facilityを追加
  106. マニフェストのdeprecatedサポート #1270
  107. 特殊コマンドの名前 #1273
  108. mailモジュールを追加
  109. facilityとentityの構文を変えた #1357
  110. 型エラー(妥当性の違反)を分類した例外を追加
  111. python/app-manifest.xjsonに基づいて標準モジュールを読み込むように変更
  112. load-mods(l)の引数仕様を拡張 #1389
  113. 空式の導入

2012-12-31時点での課題と予定:

  1. 特殊コマンドのヘルプの自動化
  2. CatyScript構文のオンラインヘルプ
  3. 変数参照構文の拡張
  4. 別名とポート束縛
  5. クラス演算とクラス表現
  6. 順序付きオブジェクト(ordered object)データ
  7. CDパス解釈の明確化
  8. 三値論理とsetoid
  9. Catyのクロージャの明確化
  10. case構文とユニオン型
  11. スキーマ属性の整理と拡張
  12. フィルターのプラグイン
  13. フォーマット(サブセットタイプ)のプラグイン

以下に、http://d.hatena.ne.jp/m-hiyama-memo/20121231/1356927784 までを再掲。

http://d.hatena.ne.jp/m-hiyama-memo/20120229/1330491076 から後の2012年前半の変更拡張:

  1. debug:fuserコマンドを追加(Linux用)
  2. cpl (Classical Propositional Logic) モジュールを追加、暫定的
  3. gv:draw に --format=plaindot を追加
  4. Caty起動時オプション --app に追加
  5. callコマンドで.catyファイルの呼び出しを可能に
  6. 文字列化コマンド to-string を追加
  7. deprecatedログを追加
  8. os:platform コマンド追加
  9. 古いexecを廃止
  10. 型パラメータのデフォルト指定構文を導入、 など
  11. hconをコンソールから起動可能に
  12. 型ケース構文を導入 case
  13. 手続き的cond構文を導入
  14. オブジェクトに対するeachの仕様を変更 #397 、each --obj の導入 #398
  15. takeに--indfオプションで三値論理対応
  16. takeに--objオプションでオブジェクト出力対応 #430
  17. file:list の機能拡張 glob対応、末尾スラッシュの解釈、--recオプション
  18. 定数定義constを導入
  19. Caty起動オプションに --goodbye オプションを追加
  20. catyをアプリケーション名として予約
  21. inspectモジュールを追加 #460
  22. Catyにクラスシステムを導入
  23. helpアプリケーション、とりあえず動くレベル
  24. テンプレートの区切り記号のクォーティングとして、<<, >>、{{, }} などを導入
  25. helpアプリケーションにhelpモジュール追加
  26. CDパス(ColonDotパス)仕様を導入
  27. Caty起動オプション --force-app を追加
  28. state宣言の構文拡張、asとbaseobjectを追加、#528
  29. docコメントを構造化、最初の一行を特別扱い #533
  30. 各種テンプレート変数より_接頭辞を削除(例: _CONTEXT --> CONTEXT)
  31. パッケージメタデータファイル pkg-manifest.xjson を導入
  32. Catyの標準モジュールも.casmから読むように修正
  33. Catyコマンドラインで、同一名称の複数のオプションを許す
  34. public.casmを廃止(モジュールの@[register-public]で代替)
  35. call で任意のファイルを呼べるようにした
  36. Web処理に三層のレイヤーアーキテクチャを導入
  37. バイナリリテラル b"..." を導入
  38. binモジュールを追加
  39. webioモジュールを追加
  40. 環境変数の追加:QUERY_STRING, SERVER_SOFTWARE, SERVER_MODULE
  41. pv, item, nth に --safeオプションを追加。
  42. ext-content-typeコマンドを追加
  43. アプリケーションごとにlibを持たせた、#639
  44. class構文を導入
  45. classのrefers節、構文だけ対応
  46. runtime.casmを追加、暫定的不完全
  47. setenv, unsetenv特殊コマンドを追加
  48. FITのabandon -> suspend と変更
  49. XJSONパスで末尾の'?'をサポート
  50. neqコマンドを追加

http://d.hatena.ne.jp/m-hiyama-memo/20120229/1330491076 再掲:

  1. text:verify-chars追加
  2. start.logにロギング
  3. _OPTS, _ARGV変数
  4. dribbleファイル機能
  5. smarty-mxの実装 https://bitbucket.org/project_caty/dev/issue/17/smarty-mx
  6. list:tightenを実装
  7. object-to-array, array-to-objectを実装
  8. テンプレートで仮想プロパティをサポート
  9. list:range コマンド追加
  10. smarty=smarty-mx とした
  11. ハイフン1個オプションを廃止
  12. path:matchesコマンド、テスト不十分
  13. パス式アクセスに$記法を導入(実装方式はけっこうヒドイ)
  14. ハイパーリンク記述を開始 https://bitbucket.org/project_caty/dev/issue/63/
  15. httpコンソール
  16. viva:draw
  17. gen-data -> gen:sampleに変更
  18. リソースのヘルプを追加
  19. viva:draw-action
  20. 環境変数LANGUAGEを追加。主にi18nメッセージの言語選択に使われる。
  21. viva:draw-actionに --loneオプション
  22. caraとcasmの統合
  23. call, forwardを追加。コマンド宣言にsignals節追加
  24. start{...}を追加、参考:https://bitbucket.org/project_caty/dev/issue/114/
  25. sleepを追加。
  26. キーボード割り込みでREPの中断、Windowsではまともに動かない。
  27. gen:urlを実装
  28. <?caty-* の出現位置の制限を先頭200文字→先頭10行に変更
  29. viva:draw/draw-action に --if-modified オプション
  30. vivaの描画フォーマットにsvgeを追加
  31. Literate形式のモジュール
  32. Wikiにignoreプラグイン
  33. caraにもlit形式
  34. h, hc, ht, hrをコンソールに出力するよう修正(helpはこれまで通り)
  35. schemata@this, actions@this を readonly で公開する。
  36. patternスキーマ属性
  37. userrole宣言、ユースケースのアクター概念を入れた(最小限)
  38. 不明なuserroleに疑問符
  39. --node=userrole の描画
  40. Catyの名前文字の日本語対応
  41. file:listでschemataやactionsを見られるように
  42. globalをアプリケーションとして扱えるように
  43. -マークで、別にどっちでもいいよトリガー
  44. globalのWebアクセス禁止(Webからは存在しない扱い)
  45. lexicalキーワードをsyntax宣言で使用可能に
  46. portのナンチャッテ実装
  47. ポートが束縛される機構/タイミングによりポートノードの色を変える
  48. 不明なノードのSVG出力時、classにunknownを追加
  49. CSSセレクターライブラリ
  50. filter:json フィルターコマンド
  51. filter:javascript フィルターコマンド
  52. with, withoutアノテーションを実装
  53. gv:drawを実装
  54. コマンドがエラーになったときに、スクリプトでの位置を同時に出力
  55. setモジュールを暫定的に追加

http://d.hatena.ne.jp/m-hiyama-memo/20120227/1330299117 再掲

  1. osモジュールにコマンド追加
  2. json:fix-on-selection
  3. json:fix-on-selection に、インライン・インクルード機能としての $embed
  4. pidファイル機能
  5. server status を server だけで参照可能。
  6. OSシグナル SIGTERM, SIGQUITに対応。Windowsでは不十分。
  7. キーボード割り込みをシグナルハンドラで対応するよう変更。Windowsでは不十分。
  8. isarray, isobjectフィルターを追加
  9. smarty3のfunctionを実装。
  10. その他 SmartyMinEx(smarty-mx)
  11. モジュールにアノテーションを付けられる。
  12. chcker.casm と checker:check-files、 まだ不十分。

http://d.hatena.ne.jp/m-hiyama-memo/20110623/1308807276 再掲

  1. when-otherwiseのワイルドカード
  2. PATH_INFO環境変数
  3. 環境変数が直接参照可能に。
  4. app.logとloggingモジュールを追加。
  5. osモジュール os:exec-scriptコマンドを追加。
  6. rc-once/*.caty による一回実行起動時スクリプト
  7. 複数候補から選択した値の解決 json:fix-on-selectionコマンド、$selection, $embed。
  8. モジュール循環依存性の検出
  9. コンパイル方式を少しずつ改善
  10. make-exception, throw-if-can。throw-if-canは今バグっている。
  11. pathモジュール
  12. when, eachにオプションが(構文上は)可能となる。
  13. gen-dataの改善、@[typical]アノテーション
  14. デーモンモードでのシグナル(SIGTERM, SIGHUPなど)に対応
  15. SIGHUPではリスタートする。
  16. PIDファイルをちゃんと消す。
  17. システム情報の公開性を少し高めた。
  18. 疑似タグのプロパティ名に文字列が使える。
  19. 疑似タグでundefinedが使える。

予定:

http://d.hatena.ne.jp/m-hiyama-memo/20110506/1304662541 再掲。

  1. 変数生成 '>'
  2. 変数参照 '%'
  3. パイプラインの一時的終了 ';'
  4. eachによる変数スコープ(つうかエクステント)
  5. casmでスクリプトコマンド定義
  6. kindのナンチャッテ第一段階。
  7. バッグ型
  8. actions/*.cara
  9. 新しいスキーマ属性 maxProperties, minProperties, propNameFormat, tight。(remarkは以前から。)
  10. XJSONパス、XJSON get/put、パートはまだだが。
  11. ignore-tag-onceルール、pv, item, nth とXJSONパス
  12. 疑似タグ構文 '@?' '(' (name|string) ':' スカラーリテラル ')'
  13. 任意のタグ '@*'
  14. 任意の明示的タグ '@*!'
  15. 型名タグ '@&'
  16. undefined型と#'undefined
  17. @[register-public]
  18. CatyBNFのナンチャッテ実装: ::=, :=, = が使える。
  19. /*{{{, }}}*/ コメント
  20. debug特殊コマンド
  21. --no-ambient, --no-appオプション
  22. select-action, select-script, trace-dispatchコマンド
  23. スキーマ記述用のPythonファイルの分離
  24. *.caraにfiletypeを書ける
  25. 例外型の定義(exception宣言)
  26. deferred型
  27. お尻スラッシュ問題に対して、マニフェストに "missingSlash" 追加。
  28. _global.xjsonに "addrsAllowed", "addrsDenied"
  29. スタックトレースのWebへの出力
  30. throws only
  31. 総称コマンドの実行時具体化
  32. 国際化フレームワーク
  33. フィルターのコマンド化
  34. deprecatedアノテーションの処理
  35. defaultアノテーションの処理
  36. moduleにdocコメント
  37. 配列型の項目名
  38. HTTPメソッドトンネリング
  39. CatyFITのjudge欄
  40. ハッシュ記法
  41. timeメタコマンド
  42. CatyFITにignore-spaceオプション

予定:

  1. __integerスキーマ属性
  2. whenにotherwiseワイルドカード
  3. 複数プロファイル
  4. オブジェクトのeach
  5. ユニオン型のワイルドカード
  6. importと名前の本籍追跡
  7. tag-onlyデータ
  8. コマンドオーバーロード(優先度低し)
  9. テンプレートの elseif

中途半端または未着手:

  1. profileスキーマ属性(これはそもそも間違いだった)
  2. パラメータ付きのファシリティ
  3. inspect-dispatchコマンド
  4. アクションサーチのfinishing
  5. ファイルタイプの登録抹消
  6. auto-print, gen-data
  7. 動的総称型、動的総称コマンド
  8. アクションの内部プロファイル
  9. インスタンスドキュメンテーション
  10. 初期化の最後にコマンドラインを実行するオプション
  11. 疑似タグによる分岐
  12. 例外マッパースクリプト
  13. rootApplication 設定
  14. validate --closed
  15. untagged演算子 ^