Permalink
Commits on May 17, 2012
  1. Tag IO#advise.

    ileitch committed May 17, 2012
  2. Implement IO#advise.

    ileitch committed May 17, 2012
  3. Implement IO::advise primitive.

    ileitch committed May 17, 2012
Commits on May 16, 2012
  1. Merge pull request #1726 from Gibheer/1732-include_path_fix

    dbussink committed May 16, 2012
    fix the order of include paths
  2. Add spec for various Struct methods that should not override

    carlosgaldino committed May 16, 2012
    the attributes accessor.
    
    The methods that should not override the accessor are:
    Struct#each
    Struct#each_pair
    Struct#hash
    Struct#length
    Struct#members
    Struct#select
    Struct#size
    Struct#to_a
  3. Don't specialize Struct methods after defining accessors

    carlosgaldino committed May 16, 2012
    In MRI if we define a Struct with attributes that have the same name
    that other default methods that ship with any Struct instance, the
    default methods will be overriden. For example:
    
    S = Struct.new :length
    s = S.new 42
    s.length # => 42
    
    This commit makes Rubinius compliant with the MRI behavior by defining
    all accessor methods after specializing. This way any Struct attribute
    with the same name of a default method will override the default method.
    
    Fixes #1724
  4. fix the order of include paths

    Gibheer committed May 16, 2012
    When oniguruma was installed on a system and located in the include path
    of llvm, then the compile could brake. This happend on freebsd 9.0 with
    oniguruma and llvm installed from ports.
    
    This fix moves the inclusion of the paths after all libs are processed
    so that these include paths are first.
  5. Merge pull request #1710 from r-stu31/blueprint_ldflags

    brixen committed May 16, 2012
    Add LDFLAGS from envionment to ldflags used for building vm.
  6. Remove a tag for a passing spec

    ryoqun committed May 16, 2012
Commits on May 15, 2012
  1. Add Zlib::ZStream#avail_out=

    IPGlider committed May 15, 2012
    More work on issue #1561
  2. Use pointer size in Zlib::ZStream#expand_output

    IPGlider committed May 15, 2012
    More work on issue #1561
    
    expand_output creates a FFI::MemoryPointer of CHUNK size, and used CHUNK
    to cleanup the allocated memory.
    
    Now we use FFI::MemoryPointer#total instead of CHUNK to get the real
    allocated mmeory size in that pointer.
Commits on May 14, 2012
  1. Merge pull request #1722 from troessner/improve_name_error_message_fo…

    carlosgaldino committed May 14, 2012
    …r_module_public_constant
    
    Improve NameError message for Module#public_constant.
  2. Add unstable tags.

    carlosgaldino committed May 14, 2012
Commits on May 13, 2012
  1. Update failing tags.

    carlosgaldino committed May 13, 2012
    This should fix the build
  2. Update 1.9 tags

    guilleiguaran committed May 13, 2012
  3. Merge pull request #1720 from troessner/public_constant_can_only_be_p…

    guilleiguaran committed May 13, 2012
    …assed_constant_names_defined_in_the_target_self_module
    
    Adds: Module#public_constant can only be passed constant names defined i...
  4. Adds: Module#public_constant can only be passed constant names define…

    troessner committed May 13, 2012
    …d in the target (self) module.
    
    This commit makes the corresponding spec in
    spec/ruby/core/module/public_constant_spec.rb pass.
    The error message is the very as issued by MRI Ruby (1.9.3 head).
Commits on May 12, 2012
  1. Merge pull request #1715 from caiquanqing/master

    guilleiguaran committed May 12, 2012
    Fix an issue that Marshal cannot unmarshal from an IO stream in 1.9 mode
  2. Add a spec for marshal.load to unmarshal through StringIO stream into

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

    Ryo Onodera committed May 12, 2012
    Float comparison
  4. Improve concurrent performance by cache locality

    ryoqun committed May 12, 2012
    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)
  5. Fix Float#<=> spec. Fixes #1718

    carlosgaldino committed May 12, 2012