2019年11月 (Shiika while)
近況です。
Shiika
11月下旬は体調を崩していてあまり作業できなかった。
varとwhileとビット演算を足して、あとはbreakを実装すればマンデルブロー集合が描けるようになるかな?というところ。
近況です。
11月下旬は体調を崩していてあまり作業できなかった。
varとwhileとビット演算を足して、あとはbreakを実装すればマンデルブロー集合が描けるようになるかな?というところ。
近況です。
10月頭はISUCON本戦のために新宿まで行ってた。予選の規模もすごかったけど、本戦ではこの32チームのために予選とは全く違う問題が作られていて、本当に運営がすごいと思う。ありがとうございました。
結果は13位…なのだけど、実をいうと終了10分前からベンチマークのFailが連発しており、あわやNo Scoreかと思われたのだった。ので順位がついて良かったなあというのが正直な気持ち。
近況です。
会社ブログにも書いたけど、ISUCONの本戦に出ることになった。今回が初参加で、「本戦行くぞ!」みたいなテンションでやってたわけでもなくて、期待はしてたけど、本当に行けるとはみたいな感じ。
quickrunというプラグインを使うと、vim内から任意のプログラムを起動できるようになる。僕はこれを使って、Rustのユニットテスト(cargo test
コマンド)を\r
で起動できるようにしている。
ただ少し困るのは、場合によってコマンドの実行時間が大きくことなる点だ。コンパイルエラーがあるときは一瞬で結果が出るのだけど、コンパイルが通ると、実行に10秒程度かかることもある。どちらになるのかは実行してみるまで分からない。
これに対して、.vimrcを以下のようにすることでcargo test
の実行前と実行後に音を鳴らすようにしてみた。afplayはMacにデフォルトで入っている音声再生コマンドである。
let g:quickrun_config['rust'] = {
\ 'exec': 'afplay ~/proj/sound/beep_low.wav; cargo test; afplay ~/proj/sound/beep1.wav',
\}
こうすると、テストの実行が長い場合は音が鳴るまで目を閉じておくことができ、プログラミングという負荷の高い作業の中で少しでも目を休めることができる。
近況です。
BiwaSchemeにsyntax-caseを実装した。まだ基本的なケースだけしかサポートしていないので本体にマージしていないが、とりあえず現時点のものはここにある。
シンボルを自動でリネームする機構("Beautiful Code"に載ってるやつ)までは何年か前に実装していたのだけど、それを一歩進めて、define-syntax + syntax-caseで(簡単な)マクロが定義できるようにした。おぼろげに「パターンマッチを実装する」という作業だと想像していたのだけど、それに加えて「マクロ展開時にScheme式を実行できるようにする」という作業があった。このあたりの話は月報ではとても書ききれないので、別途記事にしたい。
どうして数年ぶりに作業を再開したのかというと、define-syntaxないのと聞かれたからという単純なものである。まあ中途半端な状態で放置してたのがずっと気になってたというのもあるけどね。
近況です。
7月は主にShiikaのLLVM IR生成をやっていました。.llファイルの書き方は知っていても、それをinkwell(あるいはLLVM C API、あるいはLLVM C++ API)で出力する方法が分からなくて手間取ったりしましたが、だいぶ慣れてきて、Boehm GCでオブジェクト用のメモリをアロケートするところまでできました。あとはnewとinitializeを実装すればShiikaオブジェクトを実体化できるようになって、動くものが増えるはずです。
…と思ったのですが、p foo().bar
がパースエラーになるのをきっかけにパーサ沼にはまってしまい、昔のRubyのparse.yを調べたりしていました。なんとなく分かってきたので、次の作業はこれを実装することになりそうです。
Tochigi RubyKaigi 08に呼んでいただいたので、zanzouというgemを作った話をしてきました。あと餃子を食べたりボルダリングに行ったりしました。楽しかったです。
zanzouはimmer.jsをRubyに移植できないかというチャレンジなのですが、ES6 Proxyがすごくて、JS以外で同じことをするのは結構大変そうだということが分かりました。ES6 ProxyはArray.sortの内部までトレースできたりするんですが、RubyのsortはCで実装されていて、その中のrb_ary_pushとかまではフックできないんですよねえ。
会場は駅から少し離れた場所でしたが、一つの部屋で昼食から夕食まで過ごすスタイルで楽ちんでした。懇親会は自由参加のLTがあったのですが、参加枠が全員分用意されてて、最終的に40人以上が発表者になっててすごかったです。
これ最終的に40以上まで埋まっててすごかった #toruby https://t.co/CIdUMor7lg
— yhara (Yutaka HARA) (@yhara) June 29, 2019
2分という時間設定が絶妙で、これが初LTという方も何人かいたり、資料なしで喋る人もいました。なんていうか、「自分も何かしたい」と思わせる場は多くても、実際に参加させてしまう場は貴重だと思います。
自分のスライドはこれでした。
自作言語の処理系をRustで書いてLLVM IR生成をやろうとしているのですが、とりあえずHello Worldができたのでコードを載せておきます。
準備編は以下です。
[dependencies]