Hello Worldが動かなくなった
これは言語実装 - Qiita Advent Calendar 2025 - Qiitaの16日目の記事です。
私はShiikaというRuby風文法の静的型付け言語を作っているのですが、今年はずっと非同期処理の対応をしていて大きな話題(新機能とか)がないため、日々のデバッグの様子を紹介しようと思います。
現象
開発中のブランチで、いつのまにかputs "Hello"が動かなくなっていました。
$ ./a.out
これは言語実装 - Qiita Advent Calendar 2025 - Qiitaの16日目の記事です。
私はShiikaというRuby風文法の静的型付け言語を作っているのですが、今年はずっと非同期処理の対応をしていて大きな話題(新機能とか)がないため、日々のデバッグの様子を紹介しようと思います。
開発中のブランチで、いつのまにかputs "Hello"が動かなくなっていました。
$ ./a.out
このエントリは言語実装 - Qiita Advent Calendar 2024 - Qiitaの24日目の記事です。
Shiikaは私が作っている、Ruby風の文法をもつ静的型付け言語です。
昨年まででInteger/String/Arrayなどの基本的なところは実装したのですが、そのあとIO機能を実装するところで、これは先に並行性のサポートについてちゃんと考えておかないとなと気付き、今年はその作業をしていました。
(たとえば後から並行性のサポートを無理やり入れたため、Fileのreadとread_asyncが両方あって使い分けないといけない…みたいなことは避けたいなという話です。
このエントリは言語実装 - Qiita Advent Calendar 2024 - Qiitaの10日目の記事です。
最近やってた「ファミコン上で動作するRuby」ですが、シンプルなゲームが実装できるとこまでできたのでいったんv0.1.0としました。
https://github.com/yhara/nesruby
ゲームは先日のRubyWorld Conference 2024の弊社ブースで展示していたものです。JSNESを使ってgithub pagesにもアップロードしておきました。
このエントリは言語実装 - Qiita Advent Calendar 2024 - Qiitaの17日目の記事です。
今日は処理系実装上のTipsを一つ紹介します。
たとえばC言語みたいに、
if (a) {
このエントリはmrubyファミリ (組み込み向け軽量Ruby) Advent Calendar 2024の1日目の記事です。
近年、mruby bytecodeを利用していろんな環境でRubyを動かす試みがみられます。ふつうRuby処理系を自分で実装するとすれば
ソースコードのパース→命令列への変換→VMでの実行
という3段階になるわけですが、mruby bytecodeを使えば前段はmrbcコマンドがやってくれるので、後段であるVM+ランタイムの実装だけでRubyプログラムを動かすことができ、だいぶ楽になります。
これ。
https://github.com/BurntSushi/jiff
Rustの日時ライブラリはchrono(とchrono-tz)が有名だが、新しく日時ライブラリを作った理由が
https://github.com/BurntSushi/jiff/blob/master/DESIGN.md
に詳しく書かれていて面白かった。
一番違うのはタイムゾーンデータの扱いで、jiffはOSがデータベースを持っていれば自動でそれを見て、なければバイナリに同梱したものを参照する。IANAのタイムゾーン情報は年に数回くらい更新されるそうなので、そのたびにバイナリを再コンパイルしてリリースし直すのは確かに筋が悪いかも。
久しぶりにDXOpalに手を入れて1.6.0をリリースしました。
.play(true)でループ再生するようになりました。<div id="dxopal-loading">というタグがあるとき、画像や音声ファイルの読み込み状況をそこに表示するようにしました。読み込みが終わると消えます(display: none)。こちらをどうぞ。
このエントリは言語実装のカレンダー | Advent Calendar 2023 - Qiitaの2日目の記事です。前日の記事はabo_junghichiさんの9キロバイトのコードで関数型言語を実装 - 自作言語revappの理由 - 一人一党党でした。
Shiikaは私が作っている、Ruby風文法の静的型付け言語です。今日は10月に行った型推論周りの整理を解説します。
型推論が行われるのは以下の2つのケースです。