今日の電車
- 行き: 勝った気持ち
- 帰り: 勝ち
GitHub
部室で作業をしていたけど, GitHubが落ちたので帰ることにした. なお, 別にGitHubを使った作業をしていた訳ではなく, ただ帰る口実にしたかっただけ.
GitHub落ちたし帰るか
— mizdra (@mizdra) July 10, 2018
静的例外
C++に静的例外と呼ばれる, 実行時にコストの掛からない例外を実装する提案が出ているらしい.
記事でも触れられているけど, 関数に throws
を付けることで戻り値の型が expected<T,E>
likeに拡張されて, 静的ディスパッチが可能になるという感じみたい? これってつまりRustで言うところの Result<T, E>
相当のものだよね. Rustと違うのは, ある関数が例外を返す可能性があることを戻り値の型 (Result<T, E>
など) ではなく throws
で表現し, match式ではなくtry-catch文でハンドリングする点だという理解. 面白そう.
Rust
読んだ.
Cargoにおけるsemverについて, めちゃめちゃ詳しく書かれている. どういう変更がBreaking Changeに当たるのかがRFCで定義されていて, そこまでやるのか…という気持ち. 何かあらゆるものがRFCで定義されているような印象を持っているけど, RFCで扱う内容の範囲とかどっかで決まっていたりするのだろうか.
この記事を読んで cargo yank
というコマンドを知った. npm unpublish
と同じように, あるクレート(パッケージ)を非公開にしたい時に使うコマンドだけど, 非公開対象のクレート(パッケージ)の扱いが異なる. npm unpublish
は npm 上から完全にパッケージを削除するのに対し, cargo yank
は crates.io からクレートを削除せず残したまま, クレートへの新規の依存を禁止する. ただ, 新規に Cargo.lock
に追加できなくなるだけ. クレートに依存する既存のプロジェクトは cargo yank
された後も問題無く動作する. つまり, npmで発生していたようなleft-pad問題は発生しない. 健全で良さそう.
yosuke-furukawa.hatenablog.com
cargo yankは指定したクレートへの新規の依存を禁止するコマンド. crates. ioからクレートを削除する訳ではないので, そのクレートに依存する既存のプロジェクトでは従来通り利用できる.新規にCargo.lockに追加できなくなるだけ.
— mizdra (@mizdra) July 10, 2018
Publishing on crates. io - The Cargo Bookhttps://t.co/RzLHu48Co7