yhara.jp

Recent Posts

2021年6月 (Shiika enum)

2021-07-03
Diary

近況です。

Shiika

今月はenumを実装した。ようやく念願のOption型が使えるようになるぞ…と思いきや、パターンマッチがないのでメソッドが書けないことが判明。道は長い。

ちなみにクラス名はOptionじゃなくてMaybeにする予定。HaskellとRakuくらいでしか見たことないけど、コンピュータぽくなくて好きなんですよね。あとOptionという名前はCLIアプリで普通に使いそうとか、Maybeの方が(日本人にとっては?)初学者に意味がわかりやすいとか。

BiwaScheme

(more...)

2021年5月 (処理系ミートアップ)

2021-06-04
Diary

近況です。

Shiika

今月は定数まわりの実装を整理した。これでenumが実装できる…と思ったんだけど、その前に「スーパークラスに型パラメータを書けるようにする」が必要であることが判明した。yak shavingだなあ。しかしまあ先に気づけてよかった。ミートアップのおかげだ。

BiwaScheme

(more...)

2021年4月 (Shiika 分割コンパイル)

2021-05-02
Diary

近況です。

Shiika

今月は分割コンパイルへの第一歩として、組み込みクラスとユーザープログラムを別々の.bcファイルとして作り、clangでリンクするようにした。PRの長さを見ればわかる通りけっこう大変だったが、これでライブラリが何をエクスポートし得るかについて整理できた。

関連して、Rustで組み込みクラスを書くための準備もした。Fileクラスとかは今までの仕組み(こういうやつ)だけでやるのは大変すぎるからね。

(more...)


2021年2月 (Shiika return)

2021-03-02
Diary

先月の活動報告です。

Shiika

doc/guide, doc/specを追加した。一見同じものに見えるが、前者はユーザ向け、後者は仕様書なので微妙に内容が違う。例えば「メソッド名は慣習的にunder_scoredにする」という話は前者には書くが、後者には書かない。一方、普段使わないようなコーナーケースの話は後者にだけ書く。という感じ。

あとメソッドからのreturnを実装した。その勢いでブロックからのreturnも実装しようとしたのだが、思ったよりはるかに難しいことがわかり一旦ペンディングにすることにした。

BiwaScheme

(more...)

2021年1月 (TENET)

2021-02-05
Diary

近況です。

Shiika

今月はなんかいろいろやった。大きなのはHashクラスが入ったのと、Array#mapが入ったのと、こないだ書いたctxのリファクタリングかな。

あとは「一年の計は元旦にあり」ということで、Shiikaレベルで書けないものをどうするか検討していた。結果としては、標準ライブラリはRustで書いて、それとは別にffi機能を提供するということに落ち着きそう。Rustでライブラリ(RubyでいうRubyGemsみたいな)を書けるようにしようかなとも思ったのだけど、それだけだと例えばlibSDLを使いたいときにShiika→Rust→Cという二人羽織状態になってしまうので。

BiwaScheme

(more...)

2020年

2020-12-31
Diary

2020年の振り返り。

イベント

今年はほとんどのイベントがオンライン化するという未曾有の事態だった。登壇としては10月のlangsmith1件で、これもオンライン。

開発

Shiikaの開発が進み、だいぶ「本物」に近づいてきた。advent of codeとかで実際にShiikaプログラムを書いてみてるけど、体験はとてもよい。まだまだ荒削りだけど、方向性が間違っていないことが確認できたといえよう。

(more...)


2020年11月 (Alpha28)

2020-12-03
Diary

近況です。

Shiika

今月はブロック記法に対応したのと、やっかいなバグを2つ直した。

(more...)

2020年10月 (Shiika langsmith/vtable)

2020-11-01
Diary

Shiika

自作プログラミング言語の集いで発表した。スライドはここ

vtableの方は10月ぎりぎりで実装できた。残念ながら型システムの問題でまだ実際のメソッド(Object#inspectとか)は実装できていないが、11月中にはなんとかなるだろう。

BiwaScheme

dynamic-windがうまく動かないケースがあるという報告をもらって調べてみたら、確かにスタックがこわれていた。継続まわりのVM命令をいじったときに、「aレジスタを復元する」という処理の位置が間違っていたようだ。winderを実行するとaレジスタは破壊されるので、winderの実行が終わったあとで復元しなければならない。

(more...)

Posts

(more...)

Articles

(more...)

Category

Ads

About

About the author