Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Serialisp

Niyarin
October 09, 2020

 Serialisp

Serialize特化言語

Niyarin

October 09, 2020
Tweet

More Decks by Niyarin

Other Decks in Programming

Transcript

  1. Serializeに特化した言語
    「Serialisp」
    Niyarin

    View Slide

  2. Serialisp(未完成)の前提
    JSONで表現される
    [“list”, 1, 2, 3]
    ・ClojureのCheshireを用いて書きやすくした
    ・常に変更時にコピーして(COW)オブジェクトを共有しない
    オブジェクトの比較もequal?なものだけ
    循環参照もできない
    closureもJSONで表現される
    {“args”:[x], “code”:x, “bindings”:{}}
    ・ローカル変数の変更は許容しない

    View Slide

  3. Continuation in Serialisp
    Serialispは継続のシリアライズができる
    ・CPS(継続渡しスタイル) + closureのシリアライズ
    ・”強い”Scheme処理系に搭載されるような機能
    Gambitとか
    ・活用する場面
    継続ベースのアプリケーション(Kahua)とか
    ※ 継続を動かすためには環境情報を一部送る必要がある

    View Slide

  4. Serialize copy GC
    1.グローバルと現在の継続をJSONにして 好きな記憶領域に置く
    2.システムを落とす & 再起動
    3.記憶領域からJSONを読み込む
    Serialispはゴミ集めが楽

    View Slide

  5. Serialispと永続性
    記憶領域をMongoDBにする
    ・PCが落ちても容易に再開できる
    ・適宜再起動すればゴミ集め完了
    ・DBと連動するアプリケーションもDBを意識せずかける
    ・緩和してRAMとハイブリットなモデルにする予定

    View Slide

  6. Serialispを活用しよう?
    せっかく作った(ている)ので、実用したい
    Serialispは汎用向けではない (FFIと相性が悪いので)
    私の妄想
    ・JSON系 NOSQLクエリ言語
    関数定義もDBに入っていて自由に定義できると良い
    ・汎用言語に組み込む
    JSONなので、組み込みやすい
    永続性や継続を使える
    ・IPLD等を使って、ブロックチェーンとしてキャッシュを持つ
    人に話したら返ってきたコメントなので詳しくは知らない

    View Slide