vol.3 2018.10.01
だいぶ涼しくなって来ましたね。台風襲来が多いですが皆さんは大丈夫だったでしょうか?🌪
色々とあり😓忙しい感じですが、Rust関連の話題を集めてみました。
早速行ってみましょう!!
Rust 1.29.1
REPL
Rustはrustcで直接ファイルを指定してコンパイルして実行するか、cargo newとcargo runあたりを使ってプロジェクトを作って実行しますが、小さなコード片を動かして確認したいときは少し面倒だったりします。先日evcxrが公開されたので、RustのREPLまわりについて少し調べてみました。 割と古くから存在するREPLです
nightly-2016-08-01でビルドする形になっており、少し開発がアクティブではない感じもしますね。
macOSX上ではビルドはできましたが、dylib関連でエラーになり実行はできませんでした。
つい先日公開されたREPLです
macOSX上ではエラーが出て使えずでした。と思ってたら今日インストールしなおしたら動きました🎉
外部クレートも使えて便利ですが、毎回ビルドしているのか1行実行するのに割と時間がかかります。
早速evcxrを紹介している日本語記事がありました👍興味ある方は見てみると良いのでは無いでしょうか。
厳密に言うとREPLではないのですが、小さなコード片を気軽に実行して動きを確かめる時などに気軽に使うことができます。
外部クレートを使いたいときはrunner --add regexみたいな感じで事前に登録しておいて、実行時に-sオプションをつけるとうまく動きます。
これは割と良いかもしれない😊
少し毛色は違いますがRust Playgroundも簡単に動作を確認できる手段のひとつと言えるかもしれません。私自身はあまり使ってはいないのですが、気軽に小さなコード例を共有したりする際には一番良い手段かも。 まだまだ開発が進んでいる途上のものもあるので、この辺りも継続して見ておきたいところです😀
memchrクレートの改良
rustup.rsのテストが失敗する
macOSXでテストを実行するとuninstall_self_delete_worksが失敗するという問題があるようです。rustup自体に問題は無いようです。
これを土曜日あたりから追っているのですが、まだ原因がよくわかってません。解決できるかはわかりませんが引き続き追ってみようと思ってます。
Rustでレイトレ
興味があってRustでレイトレーシングしたことがあるのですが、以前からRustでレイトレーサーを実装されている@gam0022さんがレイトレ合宿6に参加された記事を書かれていました。 1年の歳月を経てRustをアップデートしただけで速度が3倍になったそうです。スゴい!!
tamatebako
gitリポジトリやGitHubのReleaseを監視してバージョンアップ情報を追跡できる仕組みが欲しいなと思ってRustで実装してみました。ぼちぼち開発を進めて行こうと思っています。
使っている主なクレート
CLIオプションパーザ
サブコマンドも実装できるので便利
gitリポジトリの取り回し用
tamatebakoの一部はstd::process::Commandでgitを直接コールしてたりもしますが、できれば全てgit2-rs使いたいところ...
手元でバージョン情報を保持しておくのにSQLite使うために使用
Webインターフェース用(WIP)
BinanceがC++/Rustを使えるシニアエンジニアを募集中
古いシステムはJavaで書かれているっぽい☕️
libdiffuzzやTower Web 0.3など紹介したい記事ありますが、今回はこれくらいで。
忘れないうちに今週末あたりに記事にしたいところ。
ではまた次回お会いしましょう😎