コンテンツへ移動

ruby-dev/core ななめ読む 3/14

2014/3/15 00:25:07

アトミック演算子の議論を誤読しているしている気がしています。が、とりあえずそのまま公開。昨日に引き続きシンボル GC が熱い。そして自称凡人氏の非凡っぷりは通常営業。(2014/3/16 アトミック演算子の部分の気づいた点を修正)

チケット無し


[ruby-core:61466]
by SASADA Koichi

[ruby-core:61424] への返信。malloc_increase って概算にしか使ってないから、単純にアトミック演算子消せるんじゃないかな、大体普通は GVL が保護するから call_without_gvl() の時ぐらいしか関係ないし、とのこと。


[ruby-core:61471]
by Eric Wong

[ruby-core:61466] への返信。(malloc_increase を)プロセス全体で共有はやめてスレッドローカルにするのはどうかな?競合して計算間違えたら GC 頻発するかもよ、とのこと。
(普通は GVL が保護する、というコメントを受けて)そうだね GVL 管理外のことを考えてたよ、例えばスイープとかは GVL 管理外にできるかもね、とのこと。(強調部分は3/16に付け足し)


[ruby-core:61488]
by Eric Wong

[ruby-core:61471] の指針でパッチ書いてみたよ、配列と大きなハッシュの生成が速くなったよ、でもマルチスレッドだと GC 走らなさすぎたりするかも、とのこと。

自分の感想ですが、例えば生きてるスレッドの本数でリミットを割った数を一本あたりのリミットにする、とか何か対策しないとちょっと困る気がします。


#5825

initialize の引数定義に直接インスタンス変数を書きたい


[ruby-core:61475]
by Tyler Rick

これいいね、引数と代入文の両辺とで計三回も同じ名前を繰り返したくないもんね、CoffeeScript にも似た構文があって綺麗だし簡潔だよ、とのこと。


[ruby-core:61483]
by Nobuyoshi Nakada

(CoffeeScript のコンストラクタの例 “constructor: (@name) ->” に対して)悪いけど綺麗とは思えないなあ、とのこと。


[ruby-core:61485]
by Matthew Kerwin

ブロック引数にインスタンス変数やグローバル変数を渡せたことがあったけど、変更になったときの議論の過去ログ誰か持ってない?とのこと。


#7743

protected なメソッドを respond_to? で評価した時の結果が 1.9 と異なる(原文ママ)


[ruby-dev:48038]
by Motohiro KOSAKI

チケット操作ミス。


[ruby-dev:48039]
by Motohiro KOSAKI

[ruby-dev:48038] がチケット操作ミスだったとの説明。


#8572

Fiber は Enumerable であるべき


[ruby-core:61482]
by Yasuhiro Matsumoto

(ストリームを扱うときに便利、というユースケースは Enumerator を使うことで解決できるので)もうチケットは閉じていいよ、反応遅れてごめん、とのこと。


[ruby-core:61484]
by Nobuyoshi Nakada

クローズ。


#9573

クラスに include されたモジュールに別のモジュールを include しても、クラスの祖先にそれが出てこない


[ruby-core:61476]
by First Last

(提示した疑問に)なんで説明してくれないの?とのこと。


[ruby-core:61477]
by Jeremy Evans

なかださんの説明を解説するね、モジュールはどこかに include すると iclass ってコピーが作られるんだ、二つはほとんど同じだけど super ってポインタだけが違うんだ。
例えば M1.include M0 すると、i0M0 が作られて M1 の super に入る。ここで A.include M1 すると、M1 と i0M0 からそれぞれ i0M1 と i1M0 が作られて、A -> i0M1 -> i1M0 -> Object となるよね。
さらに M1.include M2 すると M1 の super が i0M2 になるんだけど、i0M1 には影響ないから A にも影響ない、ってわけ。木構造じゃなくて連結リストだからね、とのこと。なげえ。


[ruby-core:61480]
by First Last

でも概念的には多重 include も多重継承みたいなもんだよね、iclass スナップショットは実装の詳細であって別のやり方でもいいわけだよね?とのこと。

iclass スナップショットって表現はわかりやすくて私気に入りました。


#9593

デフォルト値の扱いがキーワード引数と普通の引数で違う


[ruby-core:61472]
by Aaron Patterson

(元々の振る舞いがバグだった、というコメントを受けて)じゃあ(バグの挙動を想定している)Rails のテスト側を直すよありがとね、とのこと。


[ruby-core:61473]
by Aaron Patterson

ほんとにバグにしちゃっていいのこれ、もう6年前にこの(Rails の)テスト書かれてるんだけど、僕はいいけどみんな「ぎゃっ」てならないかなあ、とのこと。


[ruby-core:61474]
by Nobuyoshi Nakada

古いバグだね、オプション引数は代入と同じに扱われるべきだもの、とのこと。


#9594

2.1.1 で Rails アプリに debugger でブレークかけて cont すると SEGV


[ruby-core:61478]
by Adrian Rangel

うちの Mac OS X Mavericks 10.9.3 でも再現したから .crash ファイル添付するよ、とのこと。


#9605

each_with_index.detect &lambda で wnoa(1 for 2)


[ruby-core:61461]
by Alex Rothenberg

RubyMotion は MRI と同じ振る舞いをするね、とのこと。


[ruby-core:61463]
by Alex Rothenberg

JRuby に issue 登録したよ、とのこと。


[ruby-core:61468]
by Nobuyoshi Nakada

Matz と話したんだけど、lambda の引数チェックの例外を作る予定だよ、引数の個数と同じ長さの配列1個が yield されるのは許そうと思うよ、とのこと。
plus = ->(x,y) {next x+y}; [1,2].tap(&plus) みたいな場合のことだそうです。


[ruby-core:61470]
by Alex Rothenberg

そうすると plus.call [1,2] はどうなるの、とのこと。


#9627

SMTP が(本文末尾の)区切り文字でないピリオドを適切に変換してくれない


[ruby-core:61479]
by Josh Goebel

モンキーパッチ書いたよ、とのこと。


#9629

GC::Profiler.total_time と dtrace の GC 時間との比較


[ruby-core:61481]
by Ben Weintraub

原因がわかったよ、dtrace は lazy sweep のたびに getrusage のオーバーヘッドの分まで加算してて、それが積もり積もってたみたいだよ、Mac OS X じゃなく Linux なら clock_gettime でもっと正確に計測できるかもね、もうチケット閉じていいよ、とのこと。


#9634

シンボルの GC


[ruby-core:61469]
by Kazuki Tsujimoto

test-all がたまに失敗するよ、ログ添付したよ、とのこと。


[ruby-core:61486]
by Narihiro Nakamura

チケット操作。パッチを更新したらしく、URL を書き換えています。


[ruby-core:61487]
by Narihiro Nakamura

[ruby-core:61469]に対してのコメント。パッチ直したよありがとう、とのこと。


[ruby-core:61489]
by Eric Wong

すごい!ベンチマークとったけどひどく遅くなった部分とかはないみたいだね、rb_check_id_without_pindown に volatile があるけど RB_GC_GUARD のほうが良くない?とのこと。


[ruby-core:61490]
by Eric Wong

[ruby-core:61489] の重複。


[ruby-core:61491]
by Kazuki Tsujimoto

[ruby-core:61487] への返信。いい感じだよありがとう、とのこと。


#9635
(新規)
ハッシュから直接ハッシュにマッピングしたい


[ruby-core:61462]
by Andrey Mikhaylov

ハッシュから直接ハッシュにマッピングしたいよ、キーと値のペアが並んだ配列を作ってハッシュに変換するいつものやり方は美しくないよ、とのこと。
{foo: ‘foo’, bar: ‘bar’}.hashy_map { |key, value| key.upcase => value.reverse } のようなやり方を提案されています。


[ruby-core:61464]
by Andrey Mikhaylov

さっきのは構文的におかしかったね、.hashy_map { |key, value| {key => value} } ならどうかな、とのこと。
@apeiros さんという方が指摘とパッチ作成をしてくれたそうです。


[ruby-core:61465]
by Matthew Kerwin

ぶしつけで悪いけど、これって #7793(の重複)だね、とのこと。


[ruby-core:61467]
by Matthew Kerwin

[ruby-core:61465] の重複。

Sort by ML-id:
[ruby-core:61461] by Alex Rothenberg:#9605
[ruby-core:61462] by Andrey Mikhaylov:#9635
[ruby-core:61463] by Alex Rothenberg:#9605
[ruby-core:61464] by Andrey Mikhaylov:#9635
[ruby-core:61465] by Matthew Kerwin :#9635
[ruby-core:61466] by SASADA Koichi
[ruby-core:61467] by Matthew Kerwin:#9635
[ruby-core:61468] by Nobuyoshi Nakada:#9605
[ruby-core:61469] by Kazuki Tsujimoto:#9634
[ruby-core:61470] by Alex Rothenberg:#9605
[ruby-core:61471] by Eric Wong
[ruby-core:61472] by Aaron Patterson:#9593
[ruby-core:61473] by Aaron Patterson:#9593
[ruby-core:61474] by Nobuyoshi Nakada:#9593
[ruby-core:61475] by Tyler Rick:#5825
[ruby-core:61476] by First Last:#9573
[ruby-core:61477] by Jeremy Evans:#9573
[ruby-core:61478] by Adrian Rangel:#9594
[ruby-core:61479] by Josh Goebel:#9627
[ruby-core:61480] by First Last:#9573
[ruby-core:61481] by Ben Weintraub:#9629
[ruby-core:61482] by Yasuhiro Matsumoto:#8572
[ruby-core:61483] by Nobuyoshi Nakada:#5825
[ruby-core:61484] by Nobuyoshi Nakada:#8572
[ruby-core:61485] by Matthew Kerwin:#5825
[ruby-core:61486] by Narihiro Nakamura:#9634
[ruby-core:61487] by Narihiro Nakamura:#9634
[ruby-core:61488] by Eric Wong
[ruby-core:61489] by Eric Wong :#9634
[ruby-core:61490] by Eric Wong:#9634
[ruby-core:61491] by Kazuki Tsujimoto:#9634
[ruby-dev:48038] by Motohiro KOSAKI:#7743
[ruby-dev:48039] by Motohiro KOSAKI:#7743

広告
No comments yet

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。