vtableを用いたOOP言語の実装
これの補足。
上記記事では実行時にクラスを判定することで多態を実現していたけど、別の方法としてvtableという仕組みがあるようだ。
vtableとは
C++やSwiftで使われている方式。
これの補足。
上記記事では実行時にクラスを判定することで多態を実現していたけど、別の方法としてvtableという仕組みがあるようだ。
C++やSwiftで使われている方式。
最近の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?
Rubyでブラウザゲームが作れるライブラリ、DXOpalの1.4.1をリリースしました。
v1.4.0はバグがあって取り下げたので、1.3.0以来のリリースとなります。
主な変更点は以下です。
touch eventは#21で作ってもらったもので、いまのところシングルタッチのみ対応ですが、これでスマホ用のゲームも作れるようになりますね。
このエントリは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で実装された言語処理系のことを指します(コンパイラかインタプリタかは問わない)。 ↩