github actions でビルドしたモジュールを google drive にアップロード

LuneScript の CI 環境として github actions を使用している。 この CI のテスト時にビルドした go 版 LuneScript のシングルバイナリを、 google drive にアップロードして公開するように対応した。 <https://drive.google.com/drive/folders/1S5NgeM6qIOIUC0rkBHqnWZcuhmsTqB2w> 今回は、この手順について説明する。 公開方法 基本的には次の手順に従えば出来るが、 Google の UI の一部が変っているので、そこを主に補足していく。 <https://qiita.com/satackey/items/56729c8551aabb2ae7cc> skicka google drive へのアップロードは skicka を利用する。 skicka は OSS だ。 この skicka を利用するためには、 OAuth2 認証 ClientID と Client Secret が必要になる。 OAuth2 認証は、ウェブサービス

go の自作モジュールを github で公開して import するまで

LuneScript 向けの別ツールを作ろうと思い、 LuneScript の go 向けランタイムを単独モジュールとして分割して管理すべく 奮闘した際の備忘録。 go のモジュール go は、 github に公開されているモジュールを取得して使用できる。 では、自作モジュールを github に公開して使用するにはどうすれば良いか? ここでは、その方法について順を追って説明する。 go のモジュール管理のおさらい go にはモジュール管理機能が内包されており、 基本的には次の手順でコマンドを実行する

LuneScript のトランスコンパイル時間を 478 パーセント改善した件

前回から引き続き LuneScript のトランスコンパイル時間短縮を行なっています。 今回の時間短縮は以下の通りです。 改善前(lua) 改善後(go) 参考 (lua batch) 参考 (luajit) 20.65 sec 4.32 sec 21.90 sec 21.56 sec この表の通り、 (/ 20.65 4.32) 4.780092592592592 ≒ 478% 改善しています。 以降では、今回の LuneScript 性能向上の実現方法について説明します。 一括処理 従来は、複数ある .lns ファイルを一つずつ処理するために、 LuneScript をファイル数分実行していました。 今回は、複数ある .lns ファイル全てを 一回の LuneScript の起動で処理

LuneScript のトランスコンパイル時間を 425 パーセント改善した件

LuneScript は Lua 向けのトランスコンパイラで、 LuneScript 自体も Lua 上で動作しています。 また、LuneScript は LuneScript 自体の処理を、 LuneScript で開発する所謂セルフホスティングを採用しています。 そのセルフホスティングしているコード規模は、右肩上がりで増大しています。 上記グラフは少し以前のもので、現在は 50Kline を突破しています。 コード規模が増えて一番気になるのは、やはりコンパイル時間です。 特に LuneScript は Lua で動作するため、 一般的なネイティブのコン

LuneScript のコード規模の推移を調べた

これまでの LuneScript のコード規模の推移を調べてみた。 これは単純に LuneScript をセルフホストしている .lns ファイルの行数をトータルした結果。 よって、コメントや空行等も入っている。 2020年前半はさぼってたけど、それ以外はコンスタントに成長している感じ。 参考までに、このグラフを作った gnuplot スクリプト。 1列目に YYYY-MM-DD の日付データ、2列目に行数データの dump.csv からデータをロードして、 codesize.svg を出力する。 file='dump' se g se xdata time se timefmt "%Y-%m-%d" se datafile separator "," se format x "%Y/%m" se title 'Code Size of