Monthly report 2017-11
2017-11 の日記。
ニュース・知ったこと
Mastodon日本語メタフォーラム 開設 (2017-11-13)
- Mastodon日本語メタフォーラム
- Mastodon日本語メタフォーラム - mstdn.jp on The Edge (新規トピック通知 bot)
日本の超大手インスタンスである mstdn.jp の管理人、ぬるかる氏が開設した日本語フォーラム。 疑問とか要望っぽいのはあるけど issue 立てるほどでも……とか、宣伝・自慢したいとか、そんな感じの話ができる。
Firefox Quantum リリース (2017-11-14)
Rust のコード等も組み込まれている、 Quantum CSS (Stylo) が有効化された安定リリース。 内部だけでなく、 UI 等も刷新された。
私は Firefox beta を使っているので数週間前から恩恵に与っていた。 内部エンジンが変わったから何なんだという感想を持つ人もあるかもしれないが、ユーザにとって(わかりやすく)直接的に嬉しいのは、マルチプロセス対応とかだろうか。
『見上げてごらん、夜空の星を』 英語版 発表 (2017-11-17)
OP曲とかテーマ曲とか非常に好きなので気になっていたゲーム。 翻訳されるくらいなんだから面白いのだろう。 そのうちやってみたい。
『ものべの -happy end-』 中国語版 発表 (2017-11-17)
すごい。めでたい。 しかし英語じゃなくて中国語か…… もっとも、英語で出たところであのシナリオを英語でやられて私が理解できるとも思えないが。
はやくクリアして『まいてつ』やりたい……(最近エヨゲ自体起動してない顔)
Rust 1.22 (と 1.22.1) リリース (2017-11-22)
- Announcing Rust 1.22 (and 1.22.1) - The Rust Programming Language Blog
- プログラミング言語 Rust
- rust-lang/rust: A safe, concurrent, practical language.
Option
に対して ?
演算子を使えるようになったのが目玉機能かな。
このリリースとは直接関係ないが、 rls-preview が rustup からインストールできるようになったりとか、 WebAssembly へのコンパイルができるようになったりとか、最近いろいろ面白い。 これからの進歩も楽しみだ。
diesel crate の v0.99.0 がリリース (2017-11-29)
パブリック活動
lazy-init crate へプルリク出した(マージされた)
- khuey/lazy-init
- lazy-init - Cargo: packages for Rust
- Some refactoring by lo48576 · Pull Request #1 · khuey/lazy-init
- Add `Default` impls by lo48576 · Pull Request #2 · khuey/lazy-init
やったね。
lazy-init は、スレッドセーフな遅延初期化を実現するライブラリ。 静的サイトジェネレータで「スレッド間で共有されうるファイルコンテント(ただし実際使うかはわからないので読み込みは遅延させたい)」みたいなオブジェクトが欲しかったところ、これを見付けた。
似たようなものとして std::sync::Once
が標準ライブラリにもあるが、これは初期化済フラグがグローバルなものなので、動的にポコポコ生み出すオブジェクトには使えない。
シングルトンを作りたいとかハードウェアを初期化したりといった用途で使うものだ。
coco crate へドキュメントの誤字修正のプルリク出した(マージされた)
- stjepang/coco: Concurrent collections (deprecated in favor of Crossbeam)
- Fix typo: `s/Attemps/Attempts/` by lo48576 · Pull Request #19 · stjepang/coco
- https://mastodon.cardina1.red/@lo48576/99003430797812718
内容について特に語ることはない。
deprecated って言ってるしどうしようか悩んだが、まあちょくちょく更新されてるっぽいので投げとくかということになった。
Gentoo wiki の「ローカライゼーション/ガイド」記事を翻訳した
twitter で typo を発見したというツイートを見たので、
そういえば、いつぞや LINGUAS
から L10N
に引っ越せよ〜みたいなアナウンスがあったなぁと思いながら翻訳。
こういった技術文書は、特にプログラミング分野ではそうだが、往々にして英語に苦労する初心者/初学者は翻訳できるほど記事の内容に精通しておらず、内容を理解している人々はもはや英語で十分なので翻訳されている必要がないという、ニーズのミスマッチが大きい。 布教したければ、わかりきった内容の記事でも積極的に翻訳していくことが必要だ。
気持ちとしては未翻訳部分を発見次第気軽に訳したいのだが、英語に堪能でないので片手間でやれるほど簡単ではないというのが厄介。
handlebars-rust crate に issue 立てたら修正してもらえた
- sunng87/handlebars-rust: Rust templating with Handlebars
- handlebars - Cargo: packages for Rust
- Require `Sync` for `cause` of `RenderError` · Issue #194 · sunng87/handlebars-rust
エラー型がマルチスレッドを視野に入れてそうな設計だったのに微妙に使えない感じになっていたので issue を立てて聞いてみたところ、意図した状況ではなかったらしく、問題ない形に修正された。
これは static site generator で使おうとしていたライブラリなのだが、後述の進捗を優先的にやることになったため、はてさて、いつになれば handlebars を使う段階までくるやら。
strum crate に issue 立てた
- Peternator7/strum: A small rust library for adding custom derives to enums
- strum - Cargo: packages for Rust
- ToString: implement `Display`, std doc says "`ToString` shouldn't be implemented directly" · Issue #12 · Peternator7/strum
昔プルリクを出したこともある crate で、これは enum を文字列と相互変換するコードを自動生成する proc macro 。
ToString
trait を実装していたが format!("{}", some_enum)
のようにしても使えなかったので、おかしいと思って調べてみたところ、 ToString
を直接実装するのは望ましくない、 Display
を先に実装しろというお告げがちゃんと標準ライブラリの ToString
のドキュメントに書いてあった。
これが意図したものか意図せぬものか不明だが、変更するにしても derive する名前とか属性名の変更をした方が良さそうだし、 breaking change になると思ったのでプルリクにせず issue を立ててみた次第。
進展はなく、返答待ち。
私的活動
opaque_typedef crate を作りはじめた (2017-11-29)
static site generator を書くためのライブラリを作りたかったのだが、 strong typedef (opaque typedef) 相当のことを Rust でしたいとき[0]あまりにボイラープレートが多いため、こりゃもうコード生成するしかねえな!という気持ちになり実装を開始した。 手応えはあるので、遠からず公開できそう。
これが一段落したら、今度は str
と String
のような、 slice と owned buffer の間の変換とかいい感じの trait の自動実装とかをする proc macro も実装したい。
そもそもそれが本来の目的なので、 opaque_typedef はその単純版というか、シンプルな部分を逃がしただけの実装に過ぎない。
考え事
プルリクを出すレベル
GitHub の Ricty リポジトリ閉鎖騒動 - Togetter を思い出していた。
雑感
- 進捗していくぞ〜
- 研究……アッアッ
- (Advent Calendar の準備が全然できてない顔)