VimでRustのLanguage Serverを使う
VimでRustのLanguage Serverを使う手順。
rlsまたはrust-analyzerを入れる
rlsはrustupでインストールできる。
rustup component add rls rust-analysis rust-src
rust-analyzerはrlsより新しいのだが、まだrustupではインストールできない模様。バイナリ配布があるのでそれをダウンロードしてPATHの通ったところに置く。
OS X Catalinaに上げた
家の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ドメインが閲覧できなかった
puma-devを.devで運用していたのだが、最近は.devドメインで提供されるサイトが存在して、実用上困ることになっていた。例えば以下のエントリが閲覧できなかった。
puma-dev -uninstall
で直るかと思ったけど直らず、/etc/resolver/dev というファイルを削除したら直った。
vtableを用いたOOP言語の実装
これの補足。
上記記事では実行時にクラスを判定することで多態を実現していたけど、別の方法としてvtableという仕組みがあるようだ。
vtableとは
C++やSwiftで使われている方式。
GitHubで存在しないファイルのsecurity alertが出た
最近の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?
DXOpal 1.4.1をリリースしました
Rubyでブラウザゲームが作れるライブラリ、DXOpalの1.4.1をリリースしました。
v1.4.0はバグがあって取り下げたので、1.3.0以来のリリースとなります。
主な変更点は以下です。
- dxopal initの代わりに、railsみたいにdxopal new GAME_NAMEとできるようにした(新規ディレクトリが作られる)
- いくつかメソッドを追加(touch event対応等)
- Opal 1.0に対応
touch eventは#21で作ってもらったもので、いまのところシングルタッチのみ対応ですが、これでスマホ用のゲームも作れるようになりますね。
Ovto 0.5.0をリリースしました
このエントリはOpal Advent Calendar 2019の22日目の記事です。
Ovtoの0.5.0をリリースしました。
変更点
- Opal 1.0がリリースされたので、対応しました。といっても具体的な修正は特に必要なく、gemspecを直すくらいでOKでした。
- pockeさんに寄贈していただいたOvto::PureComponentという機能が入りました。性能が求められる時に役に立つかもしれません。
vimに音声を再生させることで目を休める
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 (inkwell)でHello World
自作言語の処理系をRustで書いてLLVM IR生成をやろうとしているのですが、とりあえずHello Worldができたのでコードを載せておきます。
準備編は以下です。
Cargo.tomlに以下を追加
[dependencies]