<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2872836124769483246</id><updated>2024-09-05T05:15:37.857+09:00</updated><title type='text'>Ruby Weekly Report</title><subtitle type='html'>What&#39;s happening in ruby-dev, ruby-core? This blog reports it weekly.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://rbwr.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2872836124769483246/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://rbwr.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Shota Fukumori (sora_h)</name><uri>http://www.blogger.com/profile/15688330410097520494</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmoc7dstat8whHtXEyl88daTskSMTmFLIv0ItZecSicPzkDhBYPiIX1Ri1krLXkAzjkdo_3Yem28eqhto3wopQqOEd-G23vAk0BypU5TXiAIbXDcvg0PPTK1S0WWKJ8w/s1600/b99311b48290f8ee37311890a8edfb1d.png%3Fs%3D512'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>5</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2872836124769483246.post-2468072544354327939</id><published>2011-07-10T11:15:00.002+09:00</published><updated>2011-07-10T11:15:59.730+09:00</updated><title type='text'>1.9.3 is nearing you / 1.8.7 will be died.</title><content type='html'>&lt;p&gt;There are many threads from the previous report, because of the ticket assigning party.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;先週の欠席裁判ことチケットアサイン会で大量のメールが届きました．&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;また，先週出す予定だったのに1週間も遅れてしまって申し訳ないです!&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Sorry for delay.&lt;/p&gt;&lt;br /&gt;
&lt;h3&gt;&lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/48199&quot;&gt;[ruby-list:48199]&lt;/a&gt; [ANN] nokogiri 1.4.5 and 1.4.6 リリース&lt;/h3&gt;&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;From&lt;/strong&gt; &lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/48199&quot;&gt;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/48199&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;nokogiri の最新バージョンがリリースされたようです．&lt;/p&gt;&lt;br /&gt;
&lt;h3&gt;&lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/48200&quot;&gt;[ruby-list:48200]&lt;/a&gt; [ANN] ruby 1.8.7 patchlevel 352 released&lt;/h3&gt;&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;From&lt;/strong&gt; &lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/48200&quot;&gt;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/48200&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Ruby 1.8.7&#39;s latest patch release has been released.&lt;/p&gt;&lt;br /&gt;
&lt;h3&gt;&lt;a href=&quot;http://redmine.ruby-lang.org/issues/4950&quot;&gt;Bug 4950&lt;/a&gt;  ほぼ同時に異なる種類のシグナルを受信すると片方のシグナルハンドラが実行されない&lt;/h3&gt;&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;From&lt;/strong&gt; &lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/44005&quot;&gt;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/44005&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;Ticket in redmine&lt;/strong&gt; &lt;a href=&quot;http://redmine.ruby-lang.org/issues/4950&quot;&gt;http://redmine.ruby-lang.org/issues/4950&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Nagachika reported that the following code should output &lt;code&gt;[1,2]&lt;/code&gt; or &lt;code&gt;[2,1]&lt;/code&gt;, but&lt;br /&gt;
&lt;code&gt;[1]&lt;/code&gt; (or &lt;code&gt;[2]&lt;/code&gt;) is outputted.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;He&#39;s also saying signal handler that not ran will run when ruby is exiting.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;And he wrote a patch to resolve this bug. &lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/44007&quot;&gt;[ruby-dev:44007]&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;blockquote&gt;  &lt;p&gt;Delivering signal to handler is delayed until signal processed in main thread, so delivering is jammed if timer thread stopped polling.&lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;
&lt;p&gt;Then, ko1 commented (&lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/44009&quot;&gt;[ruby-dev:44009]&lt;/a&gt;) that:&lt;/p&gt;&lt;br /&gt;
&lt;blockquote&gt;  &lt;p&gt;I was creating a patch because Kosaki-san noticed same problem with solution to me.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;But, I have a problem that &lt;code&gt;make test&lt;/code&gt; freezes in copy_stream test. I&#39;ve not resolved this problem yet.&lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;
&lt;h3&gt;&lt;a href=&quot;http://redmine.ruby-lang.org/issues/4962&quot;&gt;Bug 4962&lt;/a&gt;  come back gem_prelude!&lt;/h3&gt;&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;From&lt;/strong&gt; &lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/37730&quot;&gt;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/37730&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;Ticket in redmine&lt;/strong&gt; &lt;a href=&quot;http://redmine.ruby-lang.org/issues/4962&quot;&gt;http://redmine.ruby-lang.org/issues/4962&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;遠藤さんが1.9.3のベンチマークは1.9.2のベンチマークより遅い事がkosakiさんに伝えられたことから，&lt;br /&gt;
どこが遅くしているかを調査しました．&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;調査の結果，&lt;code&gt;gem_prelude.rb&lt;/code&gt;の廃止がそれを引き起こしているようです．&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;rubygemsの読み込みはたくさんのオブジェクトを生成し参照を保持するので，&lt;br /&gt;
GCマークフェーズ実行時のネックになっているようです．&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;そしてこの問題を解決する3つの提案をしています:&lt;/p&gt;&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;世代別GCを導入する; これは全ての拡張ライブラリの変更も要求するので2.0まで不可能．&lt;/li&gt;
&lt;li&gt;Rubygemsをダイエットする; 可能なかぎり生成するオブジェクトを減らし，参照を保持しないように変更する&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gem_prelude.rb&lt;/code&gt; をrubygemsの遅延ロードのために復活させる&lt;/li&gt;
&lt;/ol&gt;&lt;br /&gt;
&lt;p&gt;また，1.9.3での最適解は3番の&lt;code&gt;gem_prelude.rb&lt;/code&gt;復活だと言っています．&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;次に &lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/37743&quot;&gt;[ruby-core:37743]&lt;/a&gt; でkosakiさんが&lt;br /&gt;
gemを無効化してベンチマーク計測を行うとtrunkのほうが192より速いが，逆に有効化するとtrunkのほうが遅い事を報告しています．&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;しばらくたったあと，Rubygemsのdrbrainがいくつかの無駄な部分をrubygemsに発見したので，無駄な部分がどうベンチマークに影響しているかを調査している&lt;br /&gt;
ということを報告し (&lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/37818&quot;&gt;[ruby-core:37818]&lt;/a&gt;)，&lt;br /&gt;
その後Rubygemsにパッチをあてたtrunkで1.9.2p180より約-10秒 (&lt;code&gt;--disable-gems&lt;/code&gt;したtrunkと1.9.2p180の比較だと13秒速い) 速くなっていることを報告しています (&lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/37821&quot;&gt;[ruby-core:37821]&lt;/a&gt;)&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;次に &lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/37833&quot;&gt;[ruby-core:37833]&lt;/a&gt; で &lt;a href=&quot;http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?revision=32429&amp;amp;view=revision&quot;&gt;r32429&lt;/a&gt; でパッチをコミットした事を報告しています．&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;tenderloveが別のパッチを &lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/37815&quot;&gt;[ruby-core:37815]&lt;/a&gt; で投稿していますが，筆者にはよくわからないので割愛させてください(解説希望)&lt;/p&gt;&lt;br /&gt;
&lt;h3&gt;&lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/43920&quot;&gt;[ruby-dev:43920]&lt;/a&gt; ThreadGroup#make_local_space! (Re: ThreadGroup  の強化案)&lt;/h3&gt;&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;From&lt;/strong&gt; &lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/43920&quot;&gt;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/43920&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;Previous report&lt;/strong&gt; &lt;a href=&quot;http://rbwr.blogspot.com/2011/06/blog-post_26.html&quot;&gt;http://rbwr.blogspot.com/2011/06/blog-post_26.html&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;shyouhei asked a use case of &lt;code&gt;ThreadGroup&lt;/code&gt;.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;He also said:&lt;/p&gt;&lt;br /&gt;
&lt;blockquote&gt;  &lt;p&gt;At my little research in past, there are no many real world example to use Thread in bundles.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Next, you wrote this proposal use case is &quot;sandboxing&quot; in your mail, but I think we must expand first &lt;code&gt;$SAFE&lt;/code&gt; because&lt;br /&gt;
sandboxing is implemented in &lt;code&gt;$SAFE&lt;/code&gt; (but I can&#39;t say &quot;&lt;code&gt;$SAFE&lt;/code&gt; is perfect&quot;), and I can&#39;t think any advantage if we use &lt;code&gt;ThreadGroup&lt;/code&gt; for sandboxing.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;By the way I agree to do something to &lt;code&gt;ThreadGroup&lt;/code&gt; because &lt;code&gt;ThreadGroup&lt;/code&gt; doesn&#39;t have much of features.&lt;br /&gt;
But I think &lt;code&gt;ThreadGroup&lt;/code&gt; is still useless however we add some new features to &lt;code&gt;ThreadGroup&lt;/code&gt; because&lt;br /&gt;
use case of &lt;code&gt;ThreadGroup&lt;/code&gt; is not decided.&lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;
&lt;p&gt;Next, nagai-san answered in &lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/43978&quot;&gt;[ruby-dev:43978]&lt;/a&gt;,&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;Q.&lt;/strong&gt; What is use case of bundling &lt;code&gt;Thread&lt;/code&gt;s ?&lt;/p&gt;&lt;br /&gt;
&lt;blockquote&gt;  &lt;p&gt;I think &lt;code&gt;Thread&lt;/code&gt; generally works with a bundle. In past times, &lt;code&gt;ThreadGroup&lt;/code&gt; is equal to Array because&lt;br /&gt;
doesn&#39;t have much features (without automatically appending sub thread). So people doesn&#39;t use &lt;code&gt;ThreadGroup&lt;/code&gt;.&lt;br /&gt;
This improvement expand use case of &lt;code&gt;ThreadGroup&lt;/code&gt;, this also means increase the range of &lt;code&gt;Thread&lt;/code&gt; programming.&lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;Q.&lt;/strong&gt; &quot;sandboxing&quot; is implemented by &lt;code&gt;$SAFE&lt;/code&gt;...&lt;/p&gt;&lt;br /&gt;
&lt;blockquote&gt;  &lt;p&gt;I want an environment that can run generally ruby script using functional method without environment taint.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;If run script with wrap in anonymous module, Functional method defining doesn&#39;t work well.&lt;br /&gt;
Functional method defining is necessary evil however if it taints global environment.&lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;
&lt;p&gt;He also said all these problems can&#39;t be solved in &lt;code&gt;$SAFE&lt;/code&gt;, if we solve this issue in &lt;code&gt;$SAFE&lt;/code&gt;, he think &lt;code&gt;make_local_space!&lt;/code&gt; is needed for each &lt;code&gt;ThreadGroup&lt;/code&gt;.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Then, kosaki-san asked in &lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/43979&quot;&gt;[ruby-dev:43979]&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Discussion is stopped; This issue will not be going to merge.&lt;/li&gt;
&lt;li&gt;Java has &lt;code&gt;ThreadGroup&lt;/code&gt;; that is as poor as ruby&#39;s... java users doesn&#39;t use &lt;code&gt;ThreadGroup&lt;/code&gt; actively, and they don&#39;t want to expand it. Why ruby needs &lt;code&gt;ThreadGroup&lt;/code&gt;?&lt;/li&gt;
&lt;li&gt;Future of &lt;code&gt;Thread&lt;/code&gt; is dark... Because we can&#39;t increase parallel level with GVL.&lt;/li&gt;
&lt;li&gt;But if we use multi process or multi vm, after all this improvement is useless.&lt;/li&gt;
&lt;li&gt;So please explain why this improvement is needed in form &quot;if ThreadGroup can do X, Y becomes happy&quot;, not &quot;currently ThreadGroup can&#39;t do Z.&quot;&lt;/li&gt;
&lt;li&gt;We need lock for each &lt;code&gt;ThreadGroup&lt;/code&gt; if we add some new method to &lt;code&gt;ThreadGroup&lt;/code&gt;, does this improvement effects to JRuby? (it doesn&#39;t have GVL)&lt;/li&gt;
&lt;/ol&gt;&lt;br /&gt;
&lt;p&gt;nagai-san answered to these in &lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/43980&quot;&gt;[ruby-dev:43980]&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Discussion is stopped because most user doesn&#39;t use &lt;code&gt;ThreadGroup&lt;/code&gt;. most users don&#39;t have trouble around &lt;code&gt;ThreadGroup&lt;/code&gt; because they&#39;re not using.&lt;/li&gt;
&lt;li&gt;i feel &lt;code&gt;ThreadGroup&lt;/code&gt; is useless, does this mean i&#39;m strange?&lt;/li&gt;
&lt;li&gt;that is it if 1 process ruby only. but that is not if working in multiple servers.&lt;/li&gt;
&lt;li&gt;In head of my first mail in this issue is real problem that i think it&#39;s useless&lt;/li&gt;
&lt;li&gt;method namespace needs lock when only adding, is this wrong?&lt;/li&gt;
&lt;li&gt;I can&#39;t say about it... because i was thinking in existing features. sorry&lt;/li&gt;
&lt;/ol&gt;&lt;br /&gt;
&lt;h3&gt;&lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/44027&quot;&gt;[ruby-dev:44027]&lt;/a&gt; [RubyKaigi] Next version of Ruby 1.8 and 1.9&lt;/h3&gt;&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;From&lt;/strong&gt; &lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/44027&quot;&gt;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/44027&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Arrangements of RubyKaigi2011 &lt;a href=&quot;http://rubykaigi.org/2011/en/schedule/details/16M02&quot;&gt;Next Version of Ruby 1.8 and 1.9&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Abstract of development status of 1.9.3 - yugui (5 minutes)&lt;/li&gt;
&lt;li&gt;1.8.7 development deadline&lt;/li&gt;
&lt;li&gt;Why there is no 1.8.8?&lt;/li&gt;
&lt;li&gt;1.9.3 new features - abstract by yugui, detail by others (20 minutes)&lt;/li&gt;
&lt;li&gt;Committer Q&amp;amp;A (30 minutes)&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; This &lt;strong&gt;is not official&lt;/strong&gt; announcement.&lt;/p&gt;&lt;br /&gt;
&lt;hr&gt;&lt;br /&gt;
&lt;p&gt;RubyKaigi2011 &lt;a href=&quot;http://rubykaigi.org/2011/ja/schedule/details/16M02&quot;&gt;Next Version of Ruby 1.8 and 1.9&lt;/a&gt; についての話&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;また今年もいろいろあるようです．尚，これは公式アナウンスじゃないですよ．&lt;/p&gt;&lt;br /&gt;
&lt;h3&gt;&lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/48197&quot;&gt;[ruby-list:48197]&lt;/a&gt; 「Rubyリファレンスマニュアル刷新計画」2011-06分のスナップショットリリース&lt;/h3&gt;&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;From&lt;/strong&gt; &lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/48197&quot;&gt;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/48197&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;「るりま」の2011-06スナップショットがリリースされました．&lt;/p&gt;&lt;br /&gt;
&lt;h3&gt;&lt;a href=&quot;http://redmine.ruby-lang.org/issues/4987&quot;&gt;Bug 4987&lt;/a&gt;  test/rake doesn&#39;t work at all&lt;/h3&gt;&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;From&lt;/strong&gt; &lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/37847&quot;&gt;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/37847&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;Ticket in redmine&lt;/strong&gt; &lt;a href=&quot;http://redmine.ruby-lang.org/issues/4987&quot;&gt;http://redmine.ruby-lang.org/issues/4987&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;nobu reported &lt;code&gt;test/rake/test_rake.rb&lt;/code&gt; is depending on non-existent library &lt;code&gt;flexmock&lt;/code&gt;.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Then drbrain answered (&lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/37852&quot;&gt;[ruby-core:37852]&lt;/a&gt;) that he won&#39;t be able remove this testing dependency until after RubyKaigi.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;--&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;なかださんがテスト &lt;code&gt;test/rake/test_rake.rb&lt;/code&gt; が外部ライブラリ &lt;code&gt;flexmock&lt;/code&gt; に依存していることを報告しています．&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;drbrainさんがこの依存を取り除く事はRubyKaigiが終わるまで厳しいだろうと回答しています．  (&lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/37852&quot;&gt;[ruby-core:37852]&lt;/a&gt;)&lt;/p&gt;&lt;br /&gt;
&lt;h3&gt;&lt;a href=&quot;http://redmine.ruby-lang.org/issues/4985&quot;&gt;Feature 4985&lt;/a&gt;  Add %S[] support for making a list of symbols&lt;/h3&gt;&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;From&lt;/strong&gt; &lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/37840&quot;&gt;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/37840&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;Ticket in redmine&lt;/strong&gt; &lt;a href=&quot;http://redmine.ruby-lang.org/issues/4985&quot;&gt;http://redmine.ruby-lang.org/issues/4985&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;tenderlove proposed new syntax &lt;code&gt;%S[]&lt;/code&gt; for making a list of symbols.&lt;/p&gt;&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;%S[foo bar] #=&amp;gt; [:foo, :bar]
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;p&gt;But matz said, &lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/37844&quot;&gt;[ruby-core:37844]&lt;/a&gt;:&lt;/p&gt;&lt;br /&gt;
&lt;blockquote&gt;  &lt;p&gt;Interesting idea (include Joel&#39;s)!  But I am not sure whether they are the right prefix.&lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;
&lt;p&gt;These are ideas of prefix:&lt;/p&gt;&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;%S[foo bar]
:[foo bar] # It&#39;s conflicts with :[] (&quot;[]&quot;.to_sym), &#39;:&#39; manages hard works
%:[foo bar] # &#39;:&#39; manages hard works
%i[foo bar]
%I[foo bar]
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;hr&gt;&lt;br /&gt;
&lt;p&gt;tenderloveが新しい構文 &lt;code&gt;%S[]&lt;/code&gt; を提案しています．これは&lt;code&gt;Symbol&lt;/code&gt;の配列を作成するものです．&lt;/p&gt;&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;%S[foo bar] #=&amp;gt; [:foo, :bar]
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;p&gt;しかしまつもとさんが &lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/37844&quot;&gt;[ruby-core:37844]&lt;/a&gt; でアイデアは良いものの，はたしてこのprefix &lt;code&gt;%S&lt;/code&gt; が良いものだろうか．と言っています．&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;代替案としていくつかが提案されました:&lt;/p&gt;&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;%S[foo bar]
:[foo bar] # It&#39;s conflicts with :[] (&quot;[]&quot;.to_sym)
%i[foo bar]
%I[foo bar]
%:[foo bar]
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;h3&gt;&lt;a href=&quot;http://redmine.ruby-lang.org/issues/4988&quot;&gt;Bug 4988&lt;/a&gt;  ObjectSpace.#define_finalizer内でMutexをロックして解放しないまま抜けるとabortする&lt;/h3&gt;&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;From&lt;/strong&gt; &lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/44049&quot;&gt;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/44049&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;Ticket in redmine&lt;/strong&gt; &lt;a href=&quot;http://redmine.ruby-lang.org/issues/4988&quot;&gt;http://redmine.ruby-lang.org/issues/4988&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;Patch by Masaki (Glass_saga)&lt;/strong&gt; &lt;a href=&quot;http://redmine.ruby-lang.org/attachments/1865/patch.diff&quot;&gt;http://redmine.ruby-lang.org/attachments/1865/patch.diff&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;Patch by shyouhei&lt;/strong&gt; &lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/44051&quot;&gt;[ruby-dev:44051]&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Masaki (&lt;a href=&quot;http://twitter.com/Glass_saga&quot;&gt;@Glass_saga&lt;/a&gt;) reported the following code crashes:&lt;/p&gt;&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;ObjectSpace.define_finalizer(&quot;&quot;) do
 Mutex.new.lock
end
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;p&gt;-&lt;/p&gt;&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;[BUG] thread_free: keeping_mutexes must be NULL (0x1fa0510:0x21f8ac0)
ruby 1.9.3dev (2011-07-07 trunk 32437) [x86_64-linux]

-- Control frame information -----------------------------------------------


-- C level backtrace information -------------------------------------------
../ruby_trunk/bin/ruby() [0x529687] vm_dump.c:796
../ruby_trunk/bin/ruby() [0x576768] error.c:258
../ruby_trunk/bin/ruby(rb_bug+0xa2) [0x577bc2] error.c:270
../ruby_trunk/bin/ruby(ruby_vm_destruct+0x17f) [0x52741f] vm.c:1744
../ruby_trunk/bin/ruby(ruby_cleanup+0x283) [0x4174c3] eval.c:184
../ruby_trunk/bin/ruby(ruby_run_node+0x3d) [0x4176cd] eval.c:241
../ruby_trunk/bin/ruby() [0x414849] main.c:38
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xff) [0x7f7785469eff]
../ruby_trunk/bin/ruby() [0x414739]
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;p&gt;Then he guessed why this crashes:&lt;/p&gt;&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;At interpreter quitting, &lt;code&gt;ruby_cleanup()&lt;/code&gt; in &lt;code&gt;eval.c&lt;/code&gt; calls &lt;code&gt;rb_thread_terminate_all()&lt;/code&gt; in &lt;code&gt;thread.c&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;rb_mutex_unlock_all()&lt;/code&gt; is called by &lt;code&gt;rb_thread_terminate_all()&lt;/code&gt;, all &lt;code&gt;Mutex&lt;/code&gt;es will be released&lt;/li&gt;
&lt;li&gt;&lt;code&gt;rb_finalize_1()&lt;/code&gt; is called&lt;/li&gt;
&lt;li&gt;&lt;code&gt;rb_gc_call_finalizer_at_exit()&lt;/code&gt; called by &lt;code&gt;rb_finalize_1()&lt;/code&gt;, call finalizers&lt;/li&gt;
&lt;li&gt;A one of finalizers quitted with locked &lt;code&gt;Mutex&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Crashes in &lt;code&gt;ruby_vm_destruct()&lt;/code&gt; called after finalizing&lt;/li&gt;
&lt;/ol&gt;&lt;br /&gt;
&lt;p&gt;Glass also wrote a patch, but this patch has problem that call finalizers before call &lt;code&gt;rb_thread_terminate_all()&lt;/code&gt;. &lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/44050&quot;&gt;[ruby-dev:44050]&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Shyouhei wrote another patch, but this patch is not right if calling &lt;code&gt;ruby_vm_run_at_exit_hooks()&lt;/code&gt; at current position is to make &lt;code&gt;vm-&amp;gt;main_thread&lt;/code&gt; can&#39;t be seen from &lt;code&gt;at_exit&lt;/code&gt; inner.&lt;/p&gt;&lt;br /&gt;
&lt;hr&gt;&lt;br /&gt;
&lt;p&gt;おそろしい事を．&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;&lt;code&gt;ObjectSpace.define_finalizer(&quot;&quot;){Mutex.new.lock}&lt;/code&gt; でRubyが異常終了するという話．&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;ファイナライザの中で&lt;code&gt;Mutex&lt;/code&gt;とは．すごいものだ．&lt;/p&gt;&lt;br /&gt;
&lt;h3&gt;&lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/37866&quot;&gt;[ruby-core:37866]&lt;/a&gt; About 1.8.7 EOL&lt;/h3&gt;&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;From&lt;/strong&gt; &lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/37866&quot;&gt;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/37866&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;Ticket in Redmine&lt;/strong&gt; &lt;a href=&quot;http://redmine.ruby-lang.org/issues/4996&quot;&gt;http://redmine.ruby-lang.org/issues/4996&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;1.8.7 の End Of Life (寿命，サポート終了日) についての話&lt;/p&gt;&lt;br /&gt;
&lt;blockquote&gt;  &lt;p&gt;安心してください．今じゃないから．しかし，そろそろ自分たちは「いつどのように1.8.7は死ぬべきか」を議論すべきでしょう．&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;「おまえらは1.9を使うべき」 自分は何度も何度も何度も何度も行ってきました．もう一度言います．「おまえらは1.9を使うべき」．&lt;br /&gt;
そろそろ1.9.3がリリースされようとしています．(自分は手伝うことができませんが)それは素晴らしい物です．さらによい機能，さらに速い実行，Rubygems統合．&lt;br /&gt;
Railsは完璧に動きます．1.9を1年以上利用していますが，もうもどることはできないです．&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;じゃあどこに1.8.7を使う理由があるんだ．システム管理者の都合ですね．明確です．&lt;br /&gt;
当時1.8.7は最新だったため広く受け入れられ多くの人が使ってきた．新たにソフトウェアに追加するのをやめても，バグ修正やメンテナンスは必要なものです．&lt;br /&gt;
そのメンテナンスが1.8.7に自分が3年間やってきたことにあたります．&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;私はあなたたちがまだ1.8.7用ソフトウェアを開発していることをしっています. 近いうちにRubyコミュニティ全体が1.9に向かって移行をすすめ，1.8.7ベースのシステムはメンテナンスがされなくなることでしょう．&lt;br /&gt;
そのようになるのは避けたいと思っています．1.9に準備して適切に移行することが良いと思っています．&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;なので1.9への移行を支援するため，1.8.7の寿命を決めることが重要だと自分は考えます．&lt;br /&gt;
少なくともあなたは1.8がサポートされている限り1.8を使うであろうということを考えると，是非止めましょう．&lt;br /&gt;
寿命を迎えた後自分を含め誰も1.8.7を修正したり手を加えたりしないようにする事が重要だと思います．&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;自分が理想と考える1.8が死ぬまでの道のりは:&lt;/p&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;いままでと同じようにバグを修正: 2012年6月まで提供&lt;/li&gt;
&lt;li&gt;セキュリティ関連の修正のみ: 2013年6月まで&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;p&gt;是非ご意見を．&lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;
&lt;p&gt;(一部意訳が含まれています．これは筆者による意訳です．非公式なものです．)&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;&lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/37882&quot;&gt;[ruby-core:37882]&lt;/a&gt; で，WindowsでのRuby1.9のパフォーマンス問題は深刻だ(?)との問題が指摘されていますが，それに対して「1.9.3ではrequireでの大幅なパフォーマンス改善が入ります」と回答しています (&lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/37883&quot;&gt;[ruby-core:37883]&lt;/a&gt;)&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;またRailsコミッタでもあるtenderloveが &lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/37899&quot;&gt;[ruby-core:37899]&lt;/a&gt; で&lt;/p&gt;&lt;br /&gt;
&lt;blockquote&gt;  &lt;p&gt;Rails 4 はたぶん1.9のみをサポートすることになるでしょう．Rails 3.1 の段階では，1.9で作成したアプリケーション&lt;br /&gt;
は1.9でのみ動作します．&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Rails チームは 3.2 を 2012 年にリリースすると思われます(1.8サポート込みで). その後自分は 4.0 (1.9のみサポート) を 2013年にリリースされることを期待しています．&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;1.8から開放されるのが待ちきれません :-)&lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;
&lt;p&gt;とコメントしています．&lt;/p&gt;&lt;br /&gt;
&lt;h3&gt;&lt;a href=&quot;http://redmine.ruby-lang.org/issues/5000&quot;&gt;Feature 5000&lt;/a&gt;  skip string creation of when clause&lt;/h3&gt;&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;From&lt;/strong&gt; &lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/44068&quot;&gt;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/44068&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;Ticket in redmine&lt;/strong&gt; &lt;a href=&quot;http://redmine.ruby-lang.org/issues/5000&quot;&gt;http://redmine.ruby-lang.org/issues/5000&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;mame3 proposed that return same string in &lt;code&gt;when&lt;/code&gt; syntax. (without &lt;code&gt;x=&quot;foo&quot;&lt;/code&gt; or &lt;code&gt;&quot;#{foo}x&quot;&lt;/code&gt;)&lt;/p&gt;&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;$ cat t.rb
5000000.times do
  case nil
  when &quot;foo&quot;
  when &quot;bar&quot;
  when &quot;baz&quot;
  end
end

# Without patch
$ time ./ruby.org t.rb
real    0m4.561s
user    0m4.488s
sys     0m0.004s

# With patch
$ time ./ruby.new t.rb
real    0m2.881s
user    0m2.828s
sys     0m0.036s
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;h3&gt;&lt;a href=&quot;http://redmine.ruby-lang.org/issues/4971&quot;&gt;Bug 4971&lt;/a&gt;  Module class_variables&lt;/h3&gt;&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;From&lt;/strong&gt; &lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/44034&quot;&gt;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/44034&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;Ticket in redmine&lt;/strong&gt; &lt;a href=&quot;http://redmine.ruby-lang.org/issues/4971&quot;&gt;http://redmine.ruby-lang.org/issues/4971&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;shugom said currently ruby&#39;s &lt;code&gt;Module#class_variables&lt;/code&gt; doesn&#39;t return superclass class variable.&lt;/p&gt;&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;class Foo
  @@foo = 123
end

class Bar &amp;lt; Foo
  @@bar = 456
end

p Bar.class_variables #=&amp;gt; 1.8: [&quot;@@bar&quot;, &quot;@@foo&quot;], 1.9: [:@@bar]
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;h3&gt;&lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/44055&quot;&gt;[ruby-dev:44055]&lt;/a&gt; [ANN] Ruby 1.9.3 Release plan&lt;/h3&gt;&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;From&lt;/strong&gt; &lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/44055&quot;&gt;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/44055&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Fix of Ruby 1.9.3 Release Plan.&lt;/p&gt;&lt;br /&gt;
&lt;blockquote&gt;  &lt;ul&gt;&lt;li&gt;2011-07-10: Create ruby&lt;em&gt;1&lt;/em&gt;9_3 branch, revert Module#mix. Implementation freeze.&lt;/li&gt;
&lt;li&gt;2011-07-17 or 18: ruby-1.9.3-preview1&lt;/li&gt;
&lt;li&gt;2011-08-01: ruby-1.9.3-preview2&lt;/li&gt;
&lt;li&gt;2011-08-26: ruby-1.9.3 hopefully&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; Release plan must be not like &quot;ruby1.9.3 should be released at 2011-08-26. core team shouldn&#39;t make any delays.&quot; This is wrong.&lt;/p&gt;&lt;br /&gt;
&lt;hr&gt;&lt;br /&gt;
&lt;p&gt;Ruby 1.9.3 のリリースプランが正確な日付とともに修正・確定されました．&lt;/p&gt;&lt;br /&gt;
&lt;blockquote&gt;  &lt;ul&gt;&lt;li&gt;2011-07-10: &lt;code&gt;ruby_1_9_3&lt;/code&gt; ブランチを作成し，&lt;code&gt;Module#mix&lt;/code&gt;をrevertした上実装を確定&lt;/li&gt;
&lt;li&gt;2011-07-17 か 18: ruby-1.9.3-preview1&lt;/li&gt;
&lt;li&gt;2011-08-01: ruby-1.9.3-preview2&lt;/li&gt;
&lt;li&gt;2011-08-26: ruby-1.9.3 をリリースできると良い&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; リリースプランは絶対ではありません．&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;Tips:&lt;/strong&gt; 原文の hopefully がなんかコードネームのように見えることから，一部の開発者がコードネームのように使っていますが，公式のコードネームではないので注意してください． hopefully はやくリリースされないかなあ．&lt;/p&gt;&lt;br /&gt;
&lt;h3&gt;&lt;a href=&quot;http://redmine.ruby-lang.org/issues/4925&quot;&gt;Bug 4925&lt;/a&gt;  Infinite recursion allowed in rescue clause&lt;/h3&gt;&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;From&lt;/strong&gt; &lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/37346&quot;&gt;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/37346&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;Ticket in redmine&lt;/strong&gt; &lt;a href=&quot;http://redmine.ruby-lang.org/issues/4925&quot;&gt;http://redmine.ruby-lang.org/issues/4925&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;def a
  b
rescue NameError
  a
end
a
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;p&gt;どんな例外でも，このようにrescueの中で再帰をするとCPUとメモリをRubyが食い尽くすことが報告されています．&lt;br /&gt;
(本来は&lt;code&gt;SystemStackError&lt;/code&gt;が出るべき)&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;1.9系列でのみ再現し1.8のHEADでは再現しないことも．&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;しかし &lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/37926&quot;&gt;[ruby-core:37926]&lt;/a&gt; でそれは仕様である事が伝えられています．&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://rbwr.blogspot.com/feeds/2468072544354327939/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rbwr.blogspot.com/2011/07/193-is-nearing-you-187-will-be-died.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2872836124769483246/posts/default/2468072544354327939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2872836124769483246/posts/default/2468072544354327939'/><link rel='alternate' type='text/html' href='http://rbwr.blogspot.com/2011/07/193-is-nearing-you-187-will-be-died.html' title='1.9.3 is nearing you / 1.8.7 will be died.'/><author><name>Shota Fukumori (sora_h)</name><uri>http://www.blogger.com/profile/15688330410097520494</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmoc7dstat8whHtXEyl88daTskSMTmFLIv0ItZecSicPzkDhBYPiIX1Ri1krLXkAzjkdo_3Yem28eqhto3wopQqOEd-G23vAk0BypU5TXiAIbXDcvg0PPTK1S0WWKJ8w/s1600/b99311b48290f8ee37311890a8edfb1d.png%3Fs%3D512'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2872836124769483246.post-832503271976985713</id><published>2011-06-26T14:19:00.002+09:00</published><updated>2011-06-26T14:19:26.649+09:00</updated><title type='text'>欠席裁判</title><content type='html'>&lt;h3&gt;&lt;a href=&quot;http://redmine.ruby-lang.org/issues/3924&quot;&gt;Bug 3924&lt;/a&gt;  Performance bug (in require?)&lt;/h3&gt;&lt;br /&gt;
&lt;strong&gt;From&lt;/strong&gt; &lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/37303&quot;&gt;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/37303&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Ticket in redmine&lt;/strong&gt; &lt;a href=&quot;http://redmine.ruby-lang.org/issues/3924&quot;&gt;http://redmine.ruby-lang.org/issues/3924&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
nahi (Hiroshi Nakamura) measured loading times of 2 rails 3.0.7 apps on &lt;code&gt;1.9.2p274&lt;/code&gt;, &lt;code&gt;1.9.3dev r32204&lt;/code&gt;, &lt;code&gt;1.9.3dev r32204&lt;/code&gt; with Shyouhei&#39;s expand_path cache patch.&lt;br /&gt;
&lt;br /&gt;
He asked a downside of this patch.&lt;br /&gt;
&lt;br /&gt;
Then, mame3 (Yusuke ENDOH) said that paths stored in cache won&#39;t never be collected by GC.&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
中村さん (nahi)が2つのrails 3.0.7アプリにおいて，&lt;code&gt;1.9.2p274&lt;/code&gt;, &lt;code&gt;1.9.3dev r32204&lt;/code&gt;, &lt;code&gt;1.9.3dev r32204&lt;/code&gt; に shyouheiさんのexpand_path cache patchを加えた物で起動時間を測定しました．&lt;br /&gt;
&lt;br /&gt;
そして彼はこのパッチのデメリットを聞いたところ，遠藤さんがキャッシュされたpathはGCされず，メモリリークするのではないかとの懸念を示しました．&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;&lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/43898&quot;&gt;[ruby-dev:43898]&lt;/a&gt; Bug assigning party&lt;/h3&gt;&lt;br /&gt;
&lt;strong&gt;From&lt;/strong&gt; &lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/43898&quot;&gt;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/43898&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Sasada announced bug assigning party will be held tomorrow. (6/26 JST)&lt;br /&gt;
&lt;br /&gt;
The party attendees assign not-assigned tickets to maintainers, etc.&lt;br /&gt;
&lt;br /&gt;
Not-assigned tickets are over 100.&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
ささださんが1.9.3リリース前に，未アサインのチケットを&lt;del&gt;&lt;/del&gt;&lt;br /&gt;
誰かに押し付け&lt;br /&gt;
適切な担当者にアサインする会を開くそうです．&lt;br /&gt;
&lt;br /&gt;
欠席裁判怖い&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;kosaki0: こわい
kosaki0: いないと欠席裁判で無茶振りされる会ですか
ko1_ndk: そうです＞無茶ぶり
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
(Logs from #ruby-ja, ircnet)&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;&lt;a href=&quot;http://redmine.ruby-lang.org/issues/4921&quot;&gt;Feature 4921&lt;/a&gt; Remove intern.h&lt;/h3&gt;&lt;br /&gt;
&lt;strong&gt;From&lt;/strong&gt; &lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/43875&quot;&gt;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/43875&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Ticket in redmine&lt;/strong&gt; &lt;a href=&quot;http://redmine.ruby-lang.org/issues/4921&quot;&gt;http://redmine.ruby-lang.org/issues/4921&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Naruse proposed that remove intern.h.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;First, what&#39;s intern.h?&lt;br /&gt;
&lt;br /&gt;
I think intern means &quot;internal&quot;, but if it is, it&#39;s not good that intern.h is in &lt;code&gt;include/ruby&lt;/code&gt;.&lt;/blockquote&gt;&lt;br /&gt;
Matz agreed at &lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/43876&quot;&gt;[ruby-dev:43876]&lt;/a&gt; if it won&#39;t raise compatibility problem.&lt;br /&gt;
&lt;br /&gt;
This change will be included soon.&lt;br /&gt;
Contents in &lt;code&gt;intern.h&lt;/code&gt; will be moved into &lt;code&gt;ruby.h&lt;/code&gt;, and &lt;code&gt;intern.h&lt;/code&gt; will only include &lt;code&gt;ruby.h&lt;/code&gt; and nothing else.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;&lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/37336&quot;&gt;[ruby-core:37336]&lt;/a&gt; I have imported Rake 0.9.2 to trunk&lt;/h3&gt;&lt;br /&gt;
&lt;strong&gt;From&lt;/strong&gt; &lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/37336&quot;&gt;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/37336&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Eric imported rake 0.9.2 to trunk.&lt;br /&gt;
&lt;br /&gt;
Eric が rake 0.9.2 を trunk にマージした旨を伝えています．&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;&lt;a href=&quot;http://redmine.ruby-lang.org/issues/4920&quot;&gt;Bug 4920&lt;/a&gt;  Process.daemon()呼び出しによりタイマースレッドが２つ出来てしまう&lt;/h3&gt;&lt;br /&gt;
&lt;strong&gt;From&lt;/strong&gt; &lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/43873&quot;&gt;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/43873&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Ticket in redmine&lt;/strong&gt; &lt;a href=&quot;http://redmine.ruby-lang.org/issues/4920&quot;&gt;http://redmine.ruby-lang.org/issues/4920&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Kosaki reported a bug that another 2 timer threads are created when call &lt;code&gt;Process.daemon&lt;/code&gt;.&lt;br /&gt;
&lt;br /&gt;
Fixed at &lt;a href=&quot;http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&amp;amp;revision=32221&quot;&gt;r32221&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;&lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/43901&quot;&gt;[ruby-dev:43901]&lt;/a&gt; ThreadGroup#make_local_space! (Re: ThreadGroup の強化案)&lt;/h3&gt;&lt;br /&gt;
&lt;strong&gt;From&lt;/strong&gt; &lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/43901&quot;&gt;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/43901&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Patch (from r32226)&lt;/strong&gt; pasted on mail&lt;br /&gt;
&lt;br /&gt;
Nagai proposed method &lt;code&gt;ThreadGroup#make_local_space&lt;/code&gt; as a &lt;code&gt;ThreadGroup&lt;/code&gt; improvement.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;ThreadGroup#make_local_space&lt;/code&gt; creates independent space by a one &lt;code&gt;ThreadGroup&lt;/code&gt; for methods.&lt;br /&gt;
&lt;br /&gt;
Method that defined in &lt;code&gt;ThreadGroup&lt;/code&gt; that has local space is available only in that &lt;code&gt;ThreadGroup&lt;/code&gt;.&lt;br /&gt;
&lt;br /&gt;
Other &lt;code&gt;ThreadGroup&lt;/code&gt;s can see original method, they don&#39;t get effect.</content><link rel='replies' type='application/atom+xml' href='http://rbwr.blogspot.com/feeds/832503271976985713/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rbwr.blogspot.com/2011/06/blog-post_26.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2872836124769483246/posts/default/832503271976985713'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2872836124769483246/posts/default/832503271976985713'/><link rel='alternate' type='text/html' href='http://rbwr.blogspot.com/2011/06/blog-post_26.html' title='欠席裁判'/><author><name>Shota Fukumori (sora_h)</name><uri>http://www.blogger.com/profile/15688330410097520494</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmoc7dstat8whHtXEyl88daTskSMTmFLIv0ItZecSicPzkDhBYPiIX1Ri1krLXkAzjkdo_3Yem28eqhto3wopQqOEd-G23vAk0BypU5TXiAIbXDcvg0PPTK1S0WWKJ8w/s1600/b99311b48290f8ee37311890a8edfb1d.png%3Fs%3D512'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2872836124769483246.post-4427381121446454196</id><published>2011-06-22T13:40:00.002+09:00</published><updated>2011-06-22T13:40:44.674+09:00</updated><title type='text'>闇</title><content type='html'>&lt;h3&gt;&lt;a href=&quot;http://redmine.ruby-lang.org/issues/4909&quot;&gt;Bug 4909&lt;/a&gt; Trap handlers should not be re-enterable?&lt;/h3&gt;&lt;br /&gt;
&lt;strong&gt;From&lt;/strong&gt; &lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/43852&quot;&gt;[ruby-dev:43852] trapハンドラは再入されてはいけないのではないか？&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Ticket in redmine&lt;/strong&gt; &lt;a href=&quot;http://redmine.ruby-lang.org/issues/4909&quot;&gt;http://redmine.ruby-lang.org/issues/4909&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Kosaki said, the following code shouldn&#39;t raise any &lt;code&gt;Exception&lt;/code&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;n = 0
intrap = 0

parent = $$

trap(:USR1) {
  if intrap == 1
    raise &quot;trap nested&quot;
  end
  intrap = 1
  10000.times {
    n += 1
  }
  intrap = 0
}

fork do
 Process.kill(:USR1, parent) while true
end

sleep 100
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
Problems are:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;You can raise stack overflow by throwing signal continuous (like this program).&lt;/li&gt;
&lt;li&gt;There is no signal blocking method; like &lt;code&gt;sigprocmask()&lt;/code&gt; in ruby level, so we can&#39;t write good signal handlers in ruby.&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
He also said that C masks signal during running signal handler, so MRI should make same consideration as C.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;&lt;a href=&quot;http://redmine.ruby-lang.org/issues/4891&quot;&gt;Feature 4891&lt;/a&gt; Vector#normalize&lt;/h3&gt;&lt;br /&gt;
&lt;strong&gt;From&lt;/strong&gt; &lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/43829&quot;&gt;[ruby-dev:43829] Vector#normalize&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Ticket in redmine&lt;/strong&gt; &lt;a href=&quot;http://redmine.ruby-lang.org/issues/4891&quot;&gt;http://redmine.ruby-lang.org/issues/4891&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Patch (by mrkn)&lt;/strong&gt; &lt;a href=&quot;https://gist.github.com/1029140&quot;&gt;https://gist.github.com/1029140&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
mrkn suggested new method &lt;code&gt;Vector#normalize&lt;/code&gt; to normalize &lt;code&gt;Vector&lt;/code&gt;.&lt;br /&gt;
&lt;br /&gt;
Lafortune will be import this method.&lt;br /&gt;
&lt;br /&gt;
Is there feature freeze to release 1.9.3? I think no announce exists about freezing.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;[Bug 4444] Errors at test_parallel.rb on Windows platform&lt;/h3&gt;&lt;br /&gt;
&lt;strong&gt;Ticket in redmine&lt;/strong&gt; &lt;a href=&quot;http://redmine.ruby-lang.org/issues/4444&quot;&gt;http://redmine.ruby-lang.org/issues/4444&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Now windows can run &lt;code&gt;make test-all&lt;/code&gt; parallel. thanks usa.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;&lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/48190&quot;&gt;[ruby-list:48190]&lt;/a&gt; [ANN]RubyKaigi2011 1st day night &quot;YamiRubyKaigi2011&quot; information and call for proposals&lt;/h3&gt;&lt;br /&gt;
&lt;strong&gt;From&lt;/strong&gt; &lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/48190&quot;&gt;[ruby-list:48190]&lt;/a&gt; [ANN]日本Ruby会議2011 1日目夜「闇RubyKaigi2011」開催情報とスピーカー募集のお知らせ&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Related link (Japanese)&lt;/strong&gt; &lt;a href=&quot;http://yamirubykaigi.wordpress.com/&quot;&gt;http://yamirubykaigi.wordpress.com/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&quot;YamiRubyKaigi2011&quot; will hold at RubyKaigi2011 1st day night.&lt;br /&gt;
&lt;br /&gt;
RubyKaigi2011 attendees can attend this event too.&lt;br /&gt;
And YamiRubyKaigi2011 has limited special attending campaign. RubyKaigi2011 executive committee will announce that.&lt;br /&gt;
&lt;br /&gt;
Information page (Japanese): &lt;a href=&quot;http://yamirubykaigi.wordpress.com/2011/06/21/yamirubykaigi2011info/&quot;&gt;http://yamirubykaigi.wordpress.com/2011/06/21/yamirubykaigi2011info/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;RubyKaigi 1st day night; 7/16(Sat) 20:00-21:30 (JST)&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://rubykaigi.org/2011/en/schedule/details/16MDN&quot;&gt;http://rubykaigi.org/2011/en/schedule/details/16MDN&lt;/a&gt;&lt;/blockquote&gt;&lt;br /&gt;
YamiRubyKaigi2011 also wants speakers.&lt;br /&gt;
&lt;br /&gt;
CFP description is here: &lt;a href=&quot;http://yamirubykaigi.wordpress.com/2011/06/21/yamirubykaigi2011cfp/&quot;&gt;http://yamirubykaigi.wordpress.com/2011/06/21/yamirubykaigi2011cfp/&lt;/a&gt; (Japanese)&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;Theme: Anything about &lt;strong&gt;Ruby&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
Time: 3min-5min&lt;/blockquote&gt;&lt;br /&gt;
This is last chance to talk in RubyKaigi2011.&lt;br /&gt;
&lt;br /&gt;
You can apply to this event as speaker before RubyKaigi2011 or at RubyKaigi2011 first day (detail will be announced at place!)&lt;br /&gt;
&lt;br /&gt;
Tip: Yami (闇) means darkness in Japanese.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Note: This page is not official announce.&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
闇RubyKaigiとやらがRubyKaigi2011の1日目の夜にあるそうですよ．&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;&lt;a href=&quot;http://redmine.ruby-lang.org/issues/4907&quot;&gt;Feature 4907&lt;/a&gt; enumerable#permutation and combination&lt;/h3&gt;&lt;br /&gt;
&lt;strong&gt;From&lt;/strong&gt; &lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/37231&quot;&gt;[ruby-core:37231] enumerable#permutation and combination&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Ticket in Redmine&lt;/strong&gt; &lt;a href=&quot;http://redmine.ruby-lang.org/issues/4907&quot;&gt;http://redmine.ruby-lang.org/issues/4907&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
既にArrayには&lt;code&gt;permutation&lt;/code&gt;と&lt;code&gt;combination&lt;/code&gt;で組み合わせ，順列を生成できるが，Enumerableなオブジェクトでもできるべきだという提案．&lt;br /&gt;
&lt;br /&gt;
今のところ進展は見られない．</content><link rel='replies' type='application/atom+xml' href='http://rbwr.blogspot.com/feeds/4427381121446454196/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rbwr.blogspot.com/2011/06/blog-post.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2872836124769483246/posts/default/4427381121446454196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2872836124769483246/posts/default/4427381121446454196'/><link rel='alternate' type='text/html' href='http://rbwr.blogspot.com/2011/06/blog-post.html' title='闇'/><author><name>Shota Fukumori (sora_h)</name><uri>http://www.blogger.com/profile/15688330410097520494</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmoc7dstat8whHtXEyl88daTskSMTmFLIv0ItZecSicPzkDhBYPiIX1Ri1krLXkAzjkdo_3Yem28eqhto3wopQqOEd-G23vAk0BypU5TXiAIbXDcvg0PPTK1S0WWKJ8w/s1600/b99311b48290f8ee37311890a8edfb1d.png%3Fs%3D512'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2872836124769483246.post-697917479241831394</id><published>2011-06-18T01:05:00.000+09:00</published><updated>2011-06-18T01:05:56.013+09:00</updated><title type='text'>Write a patch!</title><content type='html'>This is my first report; 最初のレポートをお届けします.&lt;br /&gt;
&lt;h3&gt;&lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/43834&quot;&gt;[ruby-dev:43834]&lt;/a&gt; new deadlock detection&lt;/h3&gt;&lt;br /&gt;
ko1 proposed a new deadlock detection method with patch.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;How it works&lt;/h4&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&quot;Thread waker&quot; changes &lt;code&gt;sleeper&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Only compareing &lt;code&gt;living thread num&lt;/code&gt; and &lt;code&gt;sleeper&lt;/code&gt; is needed for detection&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;h4&gt;Asset&lt;/h4&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Deadlock detection code is more beautiful than currents.&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;h4&gt;Patch&lt;/h4&gt;&lt;br /&gt;
patch is in mail (base64 encoded)&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;&lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/37164&quot;&gt;[ruby-core:37164]&lt;/a&gt; Enumerable#lazy&lt;/h3&gt;&lt;br /&gt;
&lt;code&gt;(1..100).map{|x| 長い文字列等を生成する作業 }.select{|x| それを選択する作業 }&lt;/code&gt; 等だと，まず &lt;code&gt;Enumerable#map&lt;/code&gt; を実行して&lt;br /&gt;
中間配列を生成，そしてその配列を &lt;code&gt;Enumerable#select&lt;/code&gt; に渡すのですが，長い文字列等を作り配列にするとかなりのメモリを消費するため，&lt;br /&gt;
生成した物を中間配列を生成せずにそのまま次の &lt;code&gt;Enumerable#select&lt;/code&gt; に渡したいよね，という話は前から上がっていた． (後述の rude_map もそれ)&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;Enumerable#rude_map&lt;/code&gt; なども良いが，見た目カッコ悪い．どうせなら別のEnumeratorを生成して，綺麗にどんなメソッドでも遅延評価できると良いのでは? という案もあった．&lt;br /&gt;
&lt;br /&gt;
このチケットはその案，&lt;code&gt;Enumerable#lazy&lt;/code&gt; を実装し， &lt;code&gt;(1..100).lazy.map{|x| 長い文字列等を生成する作業 }.select{|x| それを選択する作業 }&lt;/code&gt; などで好きなEnumerableメソッドを遅延評価できる．&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;Enumerable#lazy&lt;/code&gt; は &lt;code&gt;Enumerable::Lazy&lt;/code&gt; クラスのオブジェクトを返します．&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;Enumerable::Lazy&lt;/code&gt; は &lt;code&gt;Enumerable&lt;/code&gt; のサブクラスで，&lt;code&gt;Enumerable&lt;/code&gt;をインクルードしています．そのためあなたは&lt;code&gt;Lazy&lt;/code&gt;でも&lt;code&gt;Enumerable&lt;/code&gt;と同じメソッドを利用することができるそうです． (ただし一部のメソッドは&lt;code&gt;Lazy&lt;/code&gt;で再実装されている物もあります)&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Ruby での実装 (動作を確認するための仮の実装)&lt;/strong&gt; &lt;a href=&quot;http://redmine.ruby-lang.org/attachments/1803/lazy.rb&quot;&gt;lazy.rb&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;あわせて読みたい&lt;/strong&gt; &lt;a href=&quot;http://redmine.ruby-lang.org/issues/4653&quot;&gt;#4653&lt;/a&gt; &lt;code&gt;Enumerable#rude_map&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;&lt;a href=&quot;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/37170&quot;&gt;[ruby-core:37170]&lt;/a&gt; Literal Instantiation breaks Object Model&lt;/h3&gt;&lt;br /&gt;
例えば &lt;code&gt;String.new&lt;/code&gt; では&lt;code&gt;initialize&lt;/code&gt;呼ばれるのに，リテラルから生成した場合呼ばれないじゃねーか．と&lt;br /&gt;
&lt;br /&gt;
リテラル化するときもRubyレベルで定義されたinitialize呼ぶべきじゃないでしょうかー．というバグ(提案?)&lt;br /&gt;
&lt;br /&gt;
バグには見えないし，対応する理由も特に見当たらないのでReject．奥義「パッチを書いてこい」</content><link rel='replies' type='application/atom+xml' href='http://rbwr.blogspot.com/feeds/697917479241831394/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rbwr.blogspot.com/2011/06/2011-06-17.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2872836124769483246/posts/default/697917479241831394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2872836124769483246/posts/default/697917479241831394'/><link rel='alternate' type='text/html' href='http://rbwr.blogspot.com/2011/06/2011-06-17.html' title='Write a patch!'/><author><name>Shota Fukumori (sora_h)</name><uri>http://www.blogger.com/profile/15688330410097520494</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmoc7dstat8whHtXEyl88daTskSMTmFLIv0ItZecSicPzkDhBYPiIX1Ri1krLXkAzjkdo_3Yem28eqhto3wopQqOEd-G23vAk0BypU5TXiAIbXDcvg0PPTK1S0WWKJ8w/s1600/b99311b48290f8ee37311890a8edfb1d.png%3Fs%3D512'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2872836124769483246.post-697153444895718274</id><published>2011-06-17T00:49:00.001+09:00</published><updated>2011-06-17T00:49:04.419+09:00</updated><title type='text'>Hi</title><content type='html'>Hi.</content><link rel='replies' type='application/atom+xml' href='http://rbwr.blogspot.com/feeds/697153444895718274/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rbwr.blogspot.com/2011/06/hi.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2872836124769483246/posts/default/697153444895718274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2872836124769483246/posts/default/697153444895718274'/><link rel='alternate' type='text/html' href='http://rbwr.blogspot.com/2011/06/hi.html' title='Hi'/><author><name>Shota Fukumori (sora_h)</name><uri>http://www.blogger.com/profile/15688330410097520494</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmoc7dstat8whHtXEyl88daTskSMTmFLIv0ItZecSicPzkDhBYPiIX1Ri1krLXkAzjkdo_3Yem28eqhto3wopQqOEd-G23vAk0BypU5TXiAIbXDcvg0PPTK1S0WWKJ8w/s1600/b99311b48290f8ee37311890a8edfb1d.png%3Fs%3D512'/></author><thr:total>0</thr:total></entry></feed>