mizdra's poem

雑なこと (日記/技術ポエム/メモ/…) を書くブログです. 真に受けないでください.

2018-07-10

今日の電車

  • 行き: 勝った気持ち
  • 帰り: 勝ち

GitHub

部室で作業をしていたけど, GitHubが落ちたので帰ることにした. なお, 別にGitHubを使った作業をしていた訳ではなく, ただ帰る口実にしたかっただけ.

静的例外

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 unpublishnpm 上から完全にパッケージを削除するのに対し, cargo yankcrates.io からクレートを削除せず残したまま, クレートへの新規の依存を禁止する. ただ, 新規に Cargo.lock に追加できなくなるだけ. クレートに依存する既存のプロジェクトは cargo yank された後も問題無く動作する. つまり, npmで発生していたようなleft-pad問題は発生しない. 健全で良さそう.

yosuke-furukawa.hatenablog.com