yhara.jp

Recent Posts

2020年8月

2020-09-02
Diary

8月の活動報告です。

Shiika

無名関数を実装した。クロージャ(自由変数のキャプチャ)は作業中。先月の日記を見たら「そんなに難しくなさそう」とか書いているが、実際にはすごく大変だった。設計メモがここにある。

何が大変だったかというとクロージャがネストする場合で、各クロージャはllvmのfunctionに変換されるのだが、2つ以上外側のクロージャの変数をキャプチャする場合、真ん中のクロージャも協力して変数をバケツリレーしてやらないといけないのであった。

普段はわりと「書き始めたらなんとかなるだろ」的な感じで見切り発車してしまうのだけど、今回はわりと真面目に考察してみた。そのかいあって実装自体は順調に行っている。

(more...)

2020年7月 (BiwaScheme rollup化)

2020-07-31
Diary

近況です。

Shiika

Genericsを導入した。具体的には ary = [1]; ary.first1 が取れるようになった。極めて地味だが、これをちゃんと実現するにはArray<T>という型が必要なのだ。

次の作業としては無名関数(クロージャ)の実装を予定している。ちょっと考えた限りではそんなに難しくなさそう。

BiwaScheme

(more...)


VimでRustのLanguage Serverを使う

2020-07-14
Tech

VimでRustのLanguage Serverを使う手順。

rlsまたはrust-analyzerを入れる

rlsはrustupでインストールできる。

rustup component add rls rust-analysis rust-src

rust-analyzerはrlsより新しいのだが、まだrustupではインストールできない模様。バイナリ配布があるのでそれをダウンロードしてPATHの通ったところに置く。

(more...)

2020年6月 (Shiika 配列リテラル)

2020-07-02
Diary

6月の活動報告です。

Shiika

配列リテラルが動くようになった。いや、動くっていうと語弊があるな…、実はまだ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)してやる。埋め込みの実装は初めてだったけど、テストが通ってるのでちゃんと動いてるっぽい。

(more...)

OS X Catalinaに上げた

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のインストールを試したら直った。



puma-devの残骸が残っていて.devドメインが閲覧できなかった

2020-05-17
Tech

puma-devを.devで運用していたのだが、最近は.devドメインで提供されるサイトが存在して、実用上困ることになっていた。例えば以下のエントリが閲覧できなかった。

puma-dev -uninstallで直るかと思ったけど直らず、/etc/resolver/dev というファイルを削除したら直った。


2020年4月 (Shiikaレイトレ)

2020-05-06
Diary

先月の活動報告です。

Shiika

いろいろ機能を足して、レイトレのサンプルが動くようになった。ここまでは前作Esquisでもやったわけだが、IntとFloatの区別ができたり、文字列を扱えるようになっていたり、細かいところでいろいろ違いがある。

今月は何をやろうかなぁ。とりあえずgetter/setterを手で書くのが面倒なのでそのへんをなんとかするところかな。

(more...)


Posts

(more...)

Articles

(more...)

Category

Ads

About

About the author