ruck
ruckã¯ChucKã®è»½éã¹ã¬ããå¨ãã®å¦çãrubyã«ç§»æ¤ãããã®ã§ãRubyKaigi2010でもプレゼンがあったãã¿ã¤ãã«ã ãè¦ãã¨ã²ã¼ã ã®è©±ãã¨æããã©ã²ã¼ã ã«é¢ãã¦ã¯å°ãã ã触ãããã¦ãã¦ã»ã¨ãã©ã¯ruckã¨ChucKã®è©±ã ã£ããChucKã¯ä»ã¾ã§ã«ãä½åº¦ãããããããã ãªã¼ã¨æã£ããã¨ããã£ãã®ã§ruckã®ã³ã¼ããèªãã§ã¿ããChucKの論文眺めてたã®ããã®çºã§ãã
ruckã¯clock, event_clock, shred, shredulerããæ§æããã¦ãããshredulerã«å¯¾ãã¦shredãç»é²ããã¨ãã®shredã¯shredulerãæã¤clockã«ç»é²ããããshredulerå®è¡ã«ã¼ãã§ã¯ä»¥ä¸ã®ãããªå¦çãè¡ããã¦ããã
- clockããç¾æå»ã®shredåãåºã
- clockæå»é²ãã
- åãåºããshredå®è¡
clockãshred管çãã¹ã±ã¸ã¥ã¼ãªã³ã°ãæéå¶å¾¡ãæ å½ããshredulerã¯ãã®ã©ããã¼ã¨ããæããå®éã«ä½¿ãã¨ãã¯shredulerã¤ã³ã¹ã¿ã³ã¹ã®make_convinientã¨ããã¡ã½ãããå®è¡ããã¨module_evalãincludeã§ä¾¿å©ãªã¡ã½ãããããã¤ã追å ãããclockãç´æ¥è§¦ããªãã¦æ¸ãããã«ãªã£ã¦ãã以ä¸ã¯readmeããmake_convinient使ã£ã¦ãã³ã¼ãã®æç²
@shreduler = Ruck::Shreduler.new @shreduler.make_convenient spork do %w{ A B C D E }.each do |letter| puts "#{letter}" Ruck::Shred.yield(1) end end spork do %w{ 1 2 3 4 5 }.each do |number| puts "#{number}" Ruck::Shred.yield(1) end end @shreduler.run
shredã®å®è£ ã¯ruby 1.8ç³»ã¯callcc, 1.9ç³»ã¯Fiberã使ã£ããã®ã«ãªã£ã¦ãã¦shreduler/clockããå¶å¾¡ããã¨ãã«å®éã®å®è£ ãæèããªãã
Ruck::Shred.yieldã¡ã½ããã¯shredããshredulerã«å¶å¾¡ãæ»ãããã®ã¡ã½ããã§ãyieldã«æ¸¡ããæéã¨shredèªèº«ãshredulerã®clockã«å¯¾ãã¦åã¹ã±ã¸ã¥ã¼ã«ããããæ示ãã¦shredãåæ¢ãããshredåæ¢ã¯fiberå®è£ ã ã¨åã«Fiber.yieldããããã«ãªã£ã¦ãã¦ãã®ãããã¯é¢ç½ãã£ãã
event_clockã¯clockã¨ä¼¼ããããªã¤ã³ã¿ãã§ã¼ã¹ãæã¤ãæéã§ãªãã¤ãã³ãã«å¯¾ããshredã¹ã±ã¸ã¥ã¼ãªã³ã°ãè¡ããclockãæéã§ã½ã¼ããããé åãªã®ã«å¯¾ãã¦event_clockã¯ã¤ãã³ãããã¼ã¨ããè¾æ¸ã¨ãã£ãæãã
RubyKaigi2010ã§ã®ãã¬ã¼ã³ã§ã¯strong timing, virtual timeã¾ããã®èª¬æã«éç¹ãç½®ããã¦ãããé常ã®threadã¨ã®æ¯è¼ãfast_forwardã«ããvirtual timeã®å¶å¾¡çãthreadã¨ã®æ¯è¼ã§åºã¦ãããåæåãå
ã«ãã£ã¦åã¹ã¬ããã®æéçµéã¯åæã ããã¿ã¤ãã³ã°ããããªãã¨ãããããªèª¬æå³ã®æå³ãã³ã¼ããèªãã§ããã¯ç解ã§ããã
é¢é£:
- ruck-ugen: ChucKã§ããã¨ããã®UGenãæ å½ãã¦ãã¦ãããããããã¦ä½¿ããã¨ã§ChucKã®ãããªé³çæãå®ç¾ã§ããã
- ruck-realtime: clockã®fast_forwardã¡ã½ãããä¸æ¸ãããã¢ã¸ã¥ã¼ã«ã§ãVMã®ã¹ããããé²ããæéã調æ´ãã¦ãããããã©ã«ãã®fast_forwardå®è£ ã ã¨VMä¸ã§ã®æéã¨ãªãå®æéã¨ãºã¬ãçããã®ã§fast_forwardä¸æ¸ãã§ãã®å·®åãåããããã¨ãããã¨ã ã¨æãã