Ovto 0.5.0をリリースしました
このエントリはOpal Advent Calendar 2019の22日目の記事です。
Ovtoの0.5.0をリリースしました。
変更点
- Opal 1.0がリリースされたので、対応しました。といっても具体的な修正は特に必要なく、gemspecを直すくらいでOKでした。
- pockeさんに寄贈していただいたOvto::PureComponentという機能が入りました。性能が求められる時に役に立つかもしれません。
このエントリはOpal Advent Calendar 2019の22日目の記事です。
Ovtoの0.5.0をリリースしました。
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',
\}
こうすると、テストの実行が長い場合は音が鳴るまで目を閉じておくことができ、プログラミングという負荷の高い作業の中で少しでも目を休めることができる。
自作言語の処理系をRustで書いてLLVM IR生成をやろうとしているのですが、とりあえずHello Worldができたのでコードを載せておきます。
準備編は以下です。
[dependencies]
https://atcoder.jp/contests/abc068/tasks/arc079_b
公式解説とは少しだけ違うやり方をしたので解説します。
数列に対するある「操作」が定義されています。この操作は停止条件があります。
整数Kが与えられるので、ちょうどK回の操作で停止するような数列を作ってくださいという問題です。
この記事はRuby Advent Calendar 2018の21日目の記事です。
今年のある日、rubyweeklyで流れてきたのがこれ。どうやらsedやawkみたいなワンラインプログラムが、Rubyで簡単にできるようになるみたいだが…?
この記事は言語実装 Advent Calendar 2018の18日目の記事です。昨日の記事はC(のサブセット)コンパイラを書く上でハマった点:配列編 - hsjoihs’s diaryでした。
最近、BiwaScheme公式サイトのREPLでread関数が使えるようになったので、その解説をします。(read)は標準入力からS式を同期的に読み込むのですが、JavaScriptでキー入力を処理しようとすると必ず非同期処理になるので、readのようなものを実装するには工夫が必要です。
本稿ではaltjs1上に同期的なsleepやreadを実装する方法について解説します。
死語になりかけてる気もしますが、alternative javascript(代替JavaScript)の略で、本稿ではJavaScriptで実装された言語処理系のことを指します(コンパイラかインタプリタかは問わない)。 ↩
JavaScriptによるSchemeインタプリタ、BiwaSchemeのリリースを行いました。バグ修正が主です。
最近修正したものとして、トップページのREPLで(read)ができるようになりました。

これの詳しい話はまた別途書きます。
この記事は言語実装 Advent Calendar 2018 - Qiitaの3日目の記事です。
Shiikaはyharaが開発しているプログラミング言語です。
class Pair<S, T>
def initialize(@a: S, @b: T)
end
最近はどのプロジェクトもCHANGELOG.mdを書くようにしているのだが、CHANGELOGとコミットログは基本的に同じ内容になるので、手間を省くために自動で記入するようにしてみた。
以下を.git/hooks/prepare-commit-msgという名前で保存してchmod +xする。
#!/usr/bin/env ruby
CHANGELOG_PATH = "./CHANGELOG.md"