2020-07-02
Diary6月の活動報告です。
配列リテラルが動くようになった。いや、動くっていうと語弊があるな…、実はまだObjectのインスタンスしか要素に取れないのだ。今月はIntやStringなど任意のオブジェクトを入れられるようにする。その下準備として、Int/Floatを即値からllvm structに変更した。そうするとInt/Floatもポインタと同じ64bitサイズ(※64bit環境を想定)になるから、配列の要素は全部一個64bitとして扱えばよくて楽なのだ。
ちなみにサイズを64bitに揃える方法としては、llvm structにする以外に「ポインタへの埋め込み」という方法もある。GC_mallocで確保したメモリのアドレスの下2桁が00であると仮定してよいならば、最後を〜01、〜10、〜11のいずれかにすればポインタと衝突しないので、残りの62bitの部分に好きなデータを入れられるのである。
せっかくなので、Boolについてはこの方式を実装してみた。010をfalse、110をtrueとして、メモリ上ではこの値をBoolとして扱う。ただしLLVMの分岐命令などはi1を引数に取るから、適宜i64からi1に変換(box/unbox)してやる。埋め込みの実装は初めてだったけど、テストが通ってるのでちゃんと動いてるっぽい。
2020-06-28
Tech家のMacBookはずっとOSアップグレードをしてなかったのだけど、qmk_firmwareのためにavr-gccを入れようとしたらXCodeが古すぎると言われたので、重い腰を上げてCatalinaにアップグレードした。
以前のアップグレードの際は途中で止まったりして印象が悪かったのだが、今回はすんなり行ってくれた。
ただmakeコマンドを打つと
unable to find utility "make", not a developer tool or in PATH
というエラーが出るようになってしまった。
このへんを見るも原因がよく分からず、App StoreからXCodeのインストールを試したら直った。
2020-06-07
Diary近況です。
インスタンス変数の定義時に、getter/setterを自動で生やすようにした。これによって、以下のようなboilerplateなコードを書かなくて良くなった。
あとは、これを入れるためにいろいろリファクタしたりしていた。
2020-05-17
Techpuma-devを.devで運用していたのだが、最近は.devドメインで提供されるサイトが存在して、実用上困ることになっていた。例えば以下のエントリが閲覧できなかった。
puma-dev -uninstall
で直るかと思ったけど直らず、/etc/resolver/dev というファイルを削除したら直った。
2020-05-06
Diary先月の活動報告です。
いろいろ機能を足して、レイトレのサンプルが動くようになった。ここまでは前作Esquisでもやったわけだが、IntとFloatの区別ができたり、文字列を扱えるようになっていたり、細かいところでいろいろ違いがある。
今月は何をやろうかなぁ。とりあえずgetter/setterを手で書くのが面倒なのでそのへんをなんとかするところかな。
2020-04-21
Techこれの補足。
上記記事では実行時にクラスを判定することで多態を実現していたけど、別の方法としてvtableという仕組みがあるようだ。
vtableとは
C++やSwiftで使われている方式。
2020-04-04
Diary3月の活動報告です。
BiwaScheme
BiwaScheme 0.7.0をリリースした。だいたい年1回くらいのスローペースでリリースしてるんだけど、調べてみると2019年は一回もリリースがなかった。年末にやっとけばよかったな。と思ったけど、dynamic-windが中途半端な状態だったので今年に伸ばしたのだった。
0.7.xでは今までやってなかったリファクタリングをしていきたい。手始めにビルドシステムをrollup.jsに移行することを考えている。
Shiika
2020-03-08
Diary近況です。
Ovto::Middleware
2月はBiwaSchemeのリリースをするのと、Shiikaの続きをやろうかな。
と書いておきながら、思いつきで全然違う作業をしていた。アドカレに書いたようにOvtoで巨大なものを作ろうとすると名前空間の管理が大変になりそうという課題があったのだが、これをMiddlewareという仕組みで名前空間を分割できるようにした。
2020-02-29
Tech最近のGitHubは使っているライブラリの脆弱性報告が出たときにalertで教えてくれるんだけど、自分のプロジェクトの一つで削除済みのファイル(exmaples/rails4/Gemfile.lock)に対してalertが出たままになっていたので、サポートに問い合わせてみた。
Hello,
In the page https://github.com/yhara/ovto/network/alerts I see two security alerts.
One is for example/rails5/Gemfile.lock and another is for example/rails4/Gemfile.lock.
However, both files are already deleted from git master. Why these alerts are shown?
2020-02-22
Money