Skip to content
Commits on May 13, 2012
  1. Update 1.9 tags

    committed
Commits on May 12, 2012
  1. Merge pull request #1715 from caiquanqing/master

    committed
    Fix an issue that Marshal cannot unmarshal from an IO stream in 1.9 mode
  2. @caiquanqing

    Add a spec for marshal.load to unmarshal through StringIO stream into

    caiquanqing committed
    spec/ruby/core/marshal/shared/load.rb, according to Ryo Onodera's
    suggestion.
  3. @caiquanqing
  4. Merge pull request #1719 from carlosgaldino/float-comparison

    Ryo Onodera committed
    Float comparison
  5. @ryoqun

    Improve concurrent performance by cache locality

    ryoqun committed
    There is a bottle neck in SharedState::check_gc_p. It is called from all Ruby
    threads and always writes to memory. That invalidates CPU cache and thus,
    everything is slowed down.
    
    Actually writing isn't always necessary in this case. It is only when the GC
    flag is set. And that situation is unlikely.
    
    This commit removes the bottle neck by avoiding writing. Then, each CPU core
    runs at their full speed, not hampered by slow memory fetching due to cache
    invalidation.
    
    check_gc_p is heavily called under concurrently-executed tight loops (happen
    sometime in the real word, are excised often by people interested in Rubinius's
    promised concurrency)
    
    After this commit, each concurrent thread executes a specially synthesized test
    code as roughly fast as a single thread. This doesn't indicate that Rubinius
    executes Ruby code purely proportional to the number of CPU cores. However it
    does that Rubinius runs its core vm and has a potential to run Ruby code at the
    speed.
    
    Hello true concurrency :)
    
    I measured performance as follows.
    
    BEFORE THIS COMMIT:
    1 thread:
     #<Thread:0x1c id=3 run>: 1.677862 seconds for looping 100000000 times
     #<Thread:0x1c id=3 run>: 1.681874 seconds for looping 100000000 times
     #<Thread:0x1c id=3 run>: 1.682204 seconds for looping 100000000 times
     #<Thread:0x1c id=3 run>: 1.672264 seconds for looping 100000000 times
    
    2 threads:
     #<Thread:0x1c id=4 run>: 4.340247 seconds for looping 100000000 times
     #<Thread:0x24 id=3 run>: 4.443239 seconds for looping 100000000 times
     #<Thread:0x1c id=4 run>: 4.338425 seconds for looping 100000000 times
     #<Thread:0x24 id=3 run>: 4.465941 seconds for looping 100000000 times
    
    AFTER THIS COMMIT:
    1 thread:
     #<Thread:0x10 id=3 run>: 1.645313 seconds for looping 100000000 times
     #<Thread:0x10 id=3 run>: 1.640116 seconds for looping 100000000 times
     #<Thread:0x10 id=3 run>: 1.641852 seconds for looping 100000000 times
     #<Thread:0x10 id=3 run>: 1.647724 seconds for looping 100000000 times
    
    2 threads:
     #<Thread:0x10 id=4 run>: 1.764503 seconds for looping 100000000 times
     #<Thread:0x18 id=3 run>: 1.697629 seconds for looping 100000000 times
     #<Thread:0x10 id=4 run>: 1.715689 seconds for looping 100000000 times
     #<Thread:0x10 id=4 run>: 1.702426 seconds for looping 100000000 times
    
    TEST CODE:
    loop_count = 100_000_000
    threads = 2
    threads.times.collect do
      Thread.new do
        loop do
          time = Time.now
          i = loop_count
          i -= 1 until i.zero?
          puts "#{Thread.current}: #{Time.now - time} seconds for looping " +
               "#{loop_count} times"
        end
      end
    end.each(&:join)
  6. @carlosgaldino
  7. @carlosgaldino
  8. @brixen
  9. @brixen
  10. @brixen
  11. @brixen
Commits on May 11, 2012
  1. @ryoqun
  2. @ryoqun
  3. @ryoqun

    Remove trailing white spaces

    ryoqun committed
  4. @ryoqun
  5. @abyx

    Merge pull request #1714 from dubek/time_with_rational_offest_for_19

    abyx committed
    Time accepts a Rational offset
Commits on May 10, 2012
  1. @ryoqun
  2. @dubek

    Time utc_offset can be Rational

    dubek committed
  3. @dubek
Commits on May 9, 2012
  1. @IPGlider
  2. @dbussink
  3. @arthurschreiber

    Merge pull request #1711 from r-stu31/spec_splat_orarray

    arthurschreiber committed
    Add a test case for a splat of 'obj || []'.
  4. @r-stu31

    Tag failing splat spec.

    r-stu31 committed
  5. @r-stu31

    Add a test case for a splat of 'obj || []'. This is currently failing…

    r-stu31 committed with rudolf
    … under Rubinius.
Commits on May 8, 2012
  1. @jc00ke

    Merge pull request #1709 from troessner/master

    jc00ke committed
    BasicObject includes itself in its list of constants.
  2. @jc00ke

    Hex letters should be downcased

    jc00ke committed
    This came up when fixing a bug in MagLev
    MagLev/maglev@78e9025
  3. @troessner
  4. @troessner
  5. @ileitch
  6. @jfirebaugh
  7. @ileitch

    A misplaced retry statement raising a SyntaxError is a 1.9 feature, a…

    ileitch committed
    …nd not specific to Fiber#new.
Commits on May 7, 2012
  1. @jfirebaugh

    Tag failing specs

    jfirebaugh committed
  2. @jfirebaugh
  3. @jfirebaugh

    Remove Open3.popen3 tags

    jfirebaugh committed
Something went wrong with that request. Please try again.