テクノロジー
現在、Lispインタープリター「Liyad」にコンパイラ搭載を進めている。 まだ、公開リポジトリにはpushしていないが、現在、技術検証用のプロトタイプを作成している。 同インタープリターはJavaScriptで書かれているので、コンパイラといっても、ホスト環境の…
古いlodash#merge()にはプロトタイプ汚染に対する脆弱性(修正済み)がありましたが、Object.assign() の動作について調べてみました。 var a = {}; console.log(Object.assign({},JSON.parse(`{"__proto__":{"foo":"bar"},"a":"b"}`))); console.log(a.foo); …
拙作のLispインタープリター「Liyad」においても、 (無いとLisp処理系として格好が付かないので) 非常に限定的に末尾再帰最適化を実装しています。 Liyadにおける末尾再帰最適化 Liyadでは、単純にASTのS式が特定のパターン(1種類)に合致するときのみ末尾再…
Liyad v0.0.13をリリースしました。 今回のリリースでは、クロージャー(関数閉包)関連のオペレーターが追加になりました。 ($closure (arg1 argN) use (var1 varM) expr) (|-> (arg1 argN) use (var1 varM) expr) ($capture (var1 varM) ($lambda (arg1 argN…
Qiitaに書きましたが、RawGitが終了する模様です😿 最近作った、Ménneu Markdown Notebookで使っていたので、参照先をjsDelivrに切り替えました。 記事も直さないと…
現在、私の進めているプロジェクトの概要と当面のゴールについて説明したいと思います。 Ménneu Markdownやhtmlのドキュメントテンプレートから、動的にドキュメント生成するためのCLIおよびAPIです。 ドキュメントはhtml、画像、pdfとして出力できます。 後…