Rubinius

Use Ruby™

ChangeLog

1.0.0-rc4

Brian Ford (73):
      Updated MSpec source to 8537c769.
      Updated CI specs to RubySpec 4fd07cfb.
      Enable features for with_feature guard.
      Updated CI tags for merged rubyspecs.
      Updated CI specs to RubySpec 48fe98c6.
      Fix Fixnum#/ coercion from #divide method (from Evan).
      Updated CI specs to RubySpec 24ce35c0.
      Updated MSpec source to 88d85da8.
      Force configure to update version and release date.
      Actually write config version to config.rb.
      Added specs for masgn with to_ary rhs not calling #to_a.
      Tag a, b = x failures pending decision on new insn.
      Purged tags for non-matching specs.
      Removed tags for passing specs.
      Spec for a, b = x calling #to_ary on x.
      Removed extconf.h from openssl.
      Fix building ext if extconf.h is missing but Makefile exists.
      Added stdin and snippet support to compiler CLI.
      Added SexpPrinter to render an AST.
      Added String#to_sexp and File.to_sexp.
      Standardize some AST class names.
      Fixed misspelling of snippet.
      Use bin/rbx compile instead of bin/rbx describe.
      Rewrote the defined? specs.
      Fixed defined? for various literals.
      Fixed defined? for assignments.
      More defined? specs.
      Fixed defined? for method receivers.
      Some defined? specs for back_ref, nth_ref and stuff.
      Fixed defined? for nth_ref and back_ref.
      Specs for defined? with constants.
      Load gem_prelude from loader.rb.
      Refactored defined?() for when values are needed.
      Fixed defined?() for constants.
      Updated CI tag for description change.
      Fixed wrong conflict resolution on rebase.
      Small refactoring for Send node.
      Fixed compiler specs for defined?() changes.
      Small refactor for const_get/const_missing.
      Cleanup AST for constants.
      Fixed masgn for constants.
      Fixed defined?() for self sends.
      Updated compiler specs for defined?().
      Quarantine more IO.new specs.
      Patch from postmodern for LLVM prebuilt checksums. Closes #202.
      Fixed sexp for class/module.
      Revert IO.new quarantine to fix the specs.
      Added #new_io and #new_fd mspec helpers.
      Added #and_raise to mspec mocks.
      Reworked some IOSpecs helper methods.
      Use IOSpecs.closed_io helper in place of closed_file.
      Fixed IO specs that used IO.new to alias system file descriptors.
      Fixed IO#reopen.
      Updated MSpec source to 60fa49cd.
      Updated CI specs to RubySpec 2a1a307e.
      Reworked handling DATA.
      Updated CI tags for IO.
      Updated MSpec source to 26e25432.
      Updated CI specs to RubySpec 250cb801.
      Added Rubinius.invoke_primitive compiler transform.
      Improved compilation perf with smarter insn stream labels.
      Removed some obsolete code from Generator.
      Renamed CompilerNG -> Compiler finally.
      Added generated opcode methods instead of #method_missing on Generator.
      Reworked stack depth calculation and consistency checking.
      Removed StackDepthCalculator.
      Use bytecode values rather than symbols in cast_array optimization.
      Improved performance of generating a compiled file.
      Small optimization for processing nested generators.
      Evan's fix for invoke_primitive glue generation.
      Small opts for Bignum/Fixnum#to_s.
      Use DependencyGrapher in C exts.
      Updated CI specs to RubySpec a5abafc7.

Brian Lopez (2):
      Add GzipFile#ended? as an alias of GzipFile#closed? for 1.8 compat
      put the ended? alias in the wrong class

Charles Remes (2):
      Add two new functions to C API to expose Regexp
      Changed new RREGEX_SOURCE macro name to RREGEXP_SRC to match ruby 1.9.x

Dirkjan Bussink (13):
      Use -fPIC for extensions on Linux by default
      Fix a whole bunch of warnings in the OpenSSL extension
      More friendly error when a large number of variables is used
      Rework melbourne's var_table to use a std::vector
      Remove now unused libev external library
      Fix incorrect CAPI module specs
      Add rb_hash_lookup to CAPI
      Add specs for rb_hash_lookup
      Remove tags for passing CAPI specs
      Readd tags for apparently platform dependent specs
      Add rb_mGC because sadly it's used in CAPI extensions
      Rubinius needs > as the edge case, since we have a different FIXNUM_MIN
      Add edge cases to Fixnum#*

Evan Phoenix (138):
      Change version for release
      Fix a couple of OS X package building issues
      Add release:all task for release management sanity
      Add ByteArray#utf8_char and use it to implement String#unpack
      Add additional String#split spec
      Fix String#split(//) via String#find_character
      Add spec for String#gsub + $KCODE
      Add spec for String#scan + $KCODE
      Teach String#gsub and String#scan about $KCODE
      Add String#[]= with Regexp specs
      Fix typo
      Add proper unicode support to Regexp
      Begin pulling in the OpenSSL CAPI extension
      Fix building the OpenSSL extension
      Force some regexp's to be in Ascii
      Add a reminder to update @config_version
      Fix copying Frozen and Tainted flags
      Merge branch 'master' of git@github.com:evanphx/rubinius
      Add cast_multi_value instruction to deal with #to_a vs #to_ary
      Reimplement $~, known as last_match.
      Add more spec cases for when $~ is set
      Add RBX_CAPI_DIR to assign in building extensions
      Handle very long lines in the backtrace better
      Lame rails ivar conflict fix
      Lame rails ivar conflict fix
      Fix Regexp#names to return an array of Strings, not Symbols
      Change asserts() in interpreter to raise InternalError
      Fix exception stomping bug in exception condition check
      Lame rails ivar conflict fix
      Add spec Autoload for running in an exception condition
      StringScanner only return String's, never String subclasses
      Add StringScanner test for class of returned values
      Introduce better base64 encode/decoding
      Update Rubygems to 1.3.6
      Cleanup some conditions in #eval
      Improve Globals (better hooks, better aliases)
      Rails fix: Avoid subclass clash on #[]=
      Fix bug in excluding ivars from the Marshal output
      Rails fix: Avoid subclass clash on String#<<
      Cleanup style of a couple of String methods
      Fix $KCODE check
      Make reporting the raise location of an exception more robust
      Use $stdout for showing, to allow for specing
      Fix defined?() checking for a local remote binding
      Use underscore methods in defined?() to avoid overriding
      Fix being able to specify a line of 1 or less to eval
      Fix how $KCODE is checked
      Fix method cache/method_missing bug
      Fix compiler specs for using underscore methods in defined?
      Change when .rbxrc is loaded, so it can be compiled
      Fix Regexp#names ordering bug (must be in order of captures)
      Flesh out Regexp.union cases
      Fix Regexp.union
      More Regexp#inspect cases
      Fix Regexp#inspect from over-escaping
      Spec the order of brace expansions in Dir.glob
      Fix brace expansion order in Dir.glob
      Fix Proc#binding to pick up the correct self
      Don't use #sort! directly, a subclass can override it.
      Fix Kernel.Float to be more restrictive
      Add more Kernel.Float specs
      Fix String#unpack('M')
      Add multiline quoted-printable spec
      Remove redundent over overtesting specs
      raise NameError when hitting method_missing via a private send
      Fix $! interactions with long return
      Change the @message to @reason_message in Exception to avoid conflicts
      Cleanup and flesh out Exception#message specs
      Prune and quartine IO.new specs. IO.new is the devil.
      Fix JIT bug wrt blocks as methods
      Fix #clone, can't implement in terms of #dup
      Don't use Array#[] internally to avoid subclass overrides
      Maintain Array subclass in #reject
      Remove deviates_on for Array#reject and subclasses
      Fix typo Array#sort
      Make Array#isort! easier to read
      Fix ordering of value comparison in Hash#==
      Add spec for value comparison order in Hash#==
      Add frozen checks to Hash
      Fix marshal when used on proxies that remove critical methods
      Show file:line in Method#inspect
      Call #method_added in #define_method
      Add spec for #define_method/#method_added
      Rails fix: Don't expect #metaclass to exist or work
      Inspect the values rather than using #to_s
      Include self:: in the NameError message
      Add spec for #const_missing raising NameError
      Fix when const_missing is called in defined?()
      Clarify specs on defined?/const_missing
      Check frozen before setting an ivar
      Prevent JIT from accidentally treating a block like a method
      rb_ll2inum should return a Fixnum for small values
      Remove all caching of super sends
      Clarify specs between Hash#== and Hash#eql?
      Iron out differences between Hash#== and Hash#eql?
      Disable the loop transform, make zlib a little more efficent
      Assign exception handlers better
      Rails fix: avoid calling an overriden  respond_to?
      Remember to flush the emit for a block before a super
      Fix WeakRef bug. Fixes #216
      Fix missing write_barrier calls in the JIT
      Add specs for edges of Fixnum#** and Bignum#**
      Add more logic to Fixnum#** and Bignum#**
      Fix JIT exception handler calculation bug
      Quiet down the gem install process
      Fix really weird error in Linux g++ 4.3.2
      Style fix
      Fix strange finalizer bug
      Implement proper pipe invocations in IO class methods
      Add specs for pipe invocations in IO class methods
      Use the correct StaticScope in instance_exec
      Don't do critical work in assert! Fixes #197.
      Add check when invoking an UnboundMethod. Fixes #32.
      Keep track of what's from a vcall. Fixes #36.
      Support sync'd writes properly. Fixes #48.
      Add missing pos() calls in transforms. Fixes #164.
      Minor fix of ftools specs (they need major help still). Fixes #166.
      Finish phasing out using #metaclass in the kernel. Fixes #189.
      Fix Backtrace from collapsing too many recursive frames
      Don't trust Kernel#class in method_missing
      Don't track subclasses. Fixes #11.
      Lazily start the timer thread. Fixes #199.
      Fix a few visibility problems. Fixes #219.
      Fixes #224. Merged regexp changes from chuckremes/master.
      Exclude some ivars in Exception's yaml output. Fixes #214.
      Update C++ Argument objects with the GC. Fixes NASTY GC bug.
      Fix bad asserts, add build:nodebug to use NDEBUG. Fixes #227.
      Add minor optimization for detecting a substring
      Fill out missing initializers in Argument constructors
      Document we require pthread currently. Fixes #225.
      Flesh out more of capi trying to build a number of extensions
      Appease GCC 4.3
      Merge OpenSSL changes from MRI
      Clamp a random value better. Fixes #218.
      Use the absolute path rather than a relative link. Fixes #205.
      Use a fallback conversion in string_build. Fixes #34.
      Bump version
      Fix release task

Ivan Samsonov (15):
      Update specs for Array#shift and Array#slice
      Repair Array#slice and Array#shift
      Speed up Array#inspect
      Update specs for Enumerable#cycle and Array#cycle
      Fix Array#cycle and Enumerable#cycle
      Fix MatchData#inspect
      Update spec for Array#hash: Add cases for same arrays with diffrent order
      Improve Array#hash
      Update defined? spec: defined? for private class methods should return nil
      Tag failing defined? spec
      Revert "Update spec for Array#hash: Add cases for same arrays with diffrent order"
      Remove Hash#dup, since we don't need it
      Add some specs for File::basename
      Fix some cases for File::basename
      Don't forget to close read pipe

Luis Lavena (4):
      Removed dead code that refers to libev.
      Updated external dependency libffi to 3.0.9
      Made libgdtoa aware of runtime definition of RANLIB tool.
      Made libtommath aware of runtime definition of RANLIB tool.

Matthew Draper (1):
      Remove duplicate module_function call in kernel.rb

Michael Fellinger (2):
      Spec behaviour of /g and /G options for Regexp
      Implement /g and /G options for Regexp

Michael Neumann (1):
      Fix bug with negative indices in Array#at

Sean Bryant (3):
      add specs for capi methods added
      adding capi functions to get ruby-odbc to work
      clean up comments, remove deadcode. thanks matthewd from #rubinius

Sylvain Joyeux (2):
      update spec for expand_path(a, b): fixes for 'b' being a relative path
      fix File.expand_path(relative_path, relative_path)

1.0.0-rc3

Brian Ford (16):
      Fixed building with LLVM disabled.
      Moved release date into configure defaults.
      Added config version to enable detecting stale configuration.
      Updated MSpec source to ddf4bd5a.
      Updated CI specs to RubySpec cdce2bd0.
      Updated CI tags for merged rubyspecs.
      Rewrote Kernel[.#]require specs.
      Rewrote Kernel[.#]load specs.
      Rewrote rbx-specific Kernel[.#]require specs.
      Updated MSpec source to cb6e4ec4.
      Rewrote rbx-specific Kernel[.#]load specs.
      Fix invocation of shared Kernel#require/load specs.
      Omit Kernel#require/load specs from CI for now.
      Updated CI specs to RubySpec 10f861de.
      Ensure flip-flop operators don't cause unbalanced stack errors.
      Updated CI tags for merged rubyspecs.

Burke Libbey (1):
      FIXED failing class variable-related specs in C API.

David Pinheiro (1):
      Added support to http proxy when download llvm source.

Dirkjan Bussink (19):
      There are no secret locals anymore
      Throw a proper exception if a thread can't be created
      std::tr1::hash is a feature added in GCC 4.1
      Add Method#parameters and UnboundMethod#parameters following 1.9
      Improve performance of Array#pack's X, see ticket #173
      Use the already available 64 bit platform flag
      Add spec to verify File.join doesn't mutate the first argument when to_str is used
      Be sure we have a fresh copy and don't mutate the argument directly
      Add spec for calling exit inside at_exit handler
      Fix bug that caused an exception when calling exit inside at_exit handler
      Remove tags for now passing specs
      Add spec for Kernel#method where an object is extended
      Kernel#methods didn't include methods added through extend
      Expose rb_gc_register_address and rb_gc_unregister_address in CAPI
      Return false if download is erronuous, for example with a 404
      Add explicit casts when Fiber isn't supported
      FreeBSD doesn't support sticky bit
      Move ucontext detection to vm/detection.hpp
      Fix ucontext for freebsd

Dmitriy Timokhin (1):
      Really use llvm-config flags when building with system LLVM

Evan Phoenix (134):
      Allow any (? in a regexp. Fixes #146
      Fixes #148. Investigate better escape detection
      Add spec for eval/__FILE__ stomping behavior
      Don't change a StaticScope in eval. Fixes #149.
      Remove using Object#id
      Improve File.join performance 5x
      Try and report the class a block is in better
      Add String#find_string_reverse
      Improve String#rindex significantly
      Style fix
      Remove -P argument, it never worked right
      Fix Pathname performance bug
      Add missing File.dirname test case
      Don't bother outputting anything in benchmarks
      Improve File.basename and File.dirname by 75x
      Incorporate MRI's custom time_t calculator
      Add spec for method_missing + super behavior
      Fix method_missing + super behavior. Fixes #157.
      Kludge around an immix memory increase boundary case
      Big memory usage cleanup
      Delete IR after JIT'ing unless -Xjit.debug
      Add GC finalization support, fix IO close-on-cleanup bug
      Add missing file
      Fix profiler bug crash when it sees eval'd code
      Speed up File.extname
      Speed up String#each_line and String#index
      Fix spec description, add another test case
      Don't reset promotions, we loose stats.
      Fix non-proxy case in configure
      Fix JIT block inlining (restricted)
      Remove Undefined constant all together
      Call StringValue in Dir.mkdir and Dir.rmdir
      Fix Time#+ rounding microseconds
      Fix how Kernel.require creates a LoadError (rails fix)
      Add specs for cases found running active_support
      Disable JIT'd code cleanup, it's totally broken
      Simplify locals in VariableScope
      Fix JIT code unloading
      Fix docs a little
      Add String#to_inum support for soft bases. Fixes #163.
      Cleanup the style and comment String#partition
      Fix and expand the Module#include specs
      Fix Module#include. Fixes #170.
      Add Module#include spec for cache effects
      Clear the method cache on Module#include
      Fix Module#module_function eval interactions
      Fix spec bug in autoload. Autoload uses require internally.
      Remove Module#autoload tags
      Add missing file
      Cleanup GC specs, remove useless tests.
      Stub out GC methods, pass all specs.
      Use mock_numeric rather than NumericSub
      Clarify edge case in Numeric#coerce specs
      Fix Numeric#ceil and Numeric#floor
      Add Numeric#coerce class checking
      Get the numeric tower more compatible with MRI.
      Fix UnboundMethod#name to return a String, not a Symbol
      Fix some Enumerable edge cases
      Clean up Comparable
      Remove Range tags
      Fix Method#name to return a String
      Fix coercion of the argument to Kernel.exit
      Remove some Numeric tags
      More Numeric tower revisement
      Finish cleaning up Numeric failures
      Fix IO#print spec to actually test IO#print
      Remove IO#print tags
      Cleanup the IO#print specs
      Cleanup IO#ungetc spec
      Cleanup IO#pos=, IO#pos, and IO#seek specs
      Fix a whole bunch of IO failures, implement IO#ungetc
      Remove errant boundary use, use mock for real test
      Remove boundary case
      Move Frozen and Tainted to the header, add Ruby.check_frozen
      Add a proper guard, expand the 1.8 case
      Fix finalizer spec to use captureless proc
      Add ObjectSpace.find_object, implement other OS methods
      Add ability to store object_id in the header (64bit only)
      Refactor System::vm_find_object into it's own file.
      Correct a Mutex#lock spec (Mutex is not recursive)
      MemoryPointer#address should report signed pointers
      Update spec tags
      Remove redundent fails tag
      Fix Socket#accept
      Inliners changed name
      Minor cleanup
      Check that something is a reference before using it
      Use a std::map for marking rather than the header
      Improve how the stack depth is checked
      Update LLVM generated type info
      Add experimental Fiber support
      Improve arguments to Fiber.yield and Fiber#resume
      Add Module#append_features spec for cyclic includes
      Detect cyclic includes properly. Fixes #33.
      Fix Resolv specs to not depend on DNS
      Add spec for super/alias_method interaction
      Fix the super/alias interaction problem
      Support early exit from #find_object. Fixes #179.
      Add rb_define_global_const to C-API
      Add rb_big2ll to C-API
      Stub out rb_gc() in C-API
      Implement rb_obj_freeze and rb_str_freeze in C-API
      Fix rb_str_freeze to return the object passed in
      Add ULL2NUM alias for rb_ull2inum
      Improve range check for rb_big2ll
      Remove errant NULL check
      Refactor code out of rubinius::VM
      Remove Globals& from VM
      Remove VM::mailbox_
      The beginning of the core benchmarks
      Fix segfault in exiting before JIT actually runs
      Reformulate find_candidate
      Fix latent typo in Float#== inlining. Fixes #185.
      Exception#exception is crazy. Fixes #168.
      Cleanup backtraces, add Exception#capture_backtrace!
      Speed up String#inspect, implement KCode support
      Cleanup Globals.set_hook API
      Speed up String#capitalize by using String#escape
      Rename String#escape => transform, speed up String#downcase
      Only flatten recursion on the same line in the same method
      Fix Gem.path to include Gem.user_dir, not Gem.user_home
      Fix marshal_dump/_dump ordering issue
      Fix Range#=== to use <=>, like MRI.
      Respect gmt properly in Time, round a Float in #at() properly
      Report immediate values diffrently in NoMethodError#message
      Additional Marshal specs (marshal_dump related)
      Spec for Range#===, showing <=> must be used
      Fix Time#_dump spec
      Respect gmt in Time's parsing
      Full retooling of Time
      Add a few Time edge cases
      Fix spec failures on 32bit Linux
      Change version for release
      Fix a couple of OS X package building issues

Graham (1):
      Updated spec for issue when raising an object instance with a message

Ivan Samsonov (11):
      Fix String#hex spec
      Fix format cases with % u and %+u. Fixies #162
      Implement String#partition. Fixies #165
      Implement 'w' directive for String#unpack
      Speed up Array#pack, String#unpack, and String#rpartition
      Repair $~ variable
      Add spec for checking that rpartition affects $~
      Updates specs for method#arity and proc#arity
      Fix some cases for method#arity and proc#arity
      Spec for checking that defined_method is private
      defined_method should be private

Marc-Andre Lafortune (6):
      Array#product: Fixing implementation. Should even be quicker...
      Fix recursion for Array#hash, Hash#hash, Struct#hash, #<=>, #eql?
      Removing obsolete libs (1.8.7, 1.9)
      Thread.detect_outermost_recursion: Fix error spotted by Evan and make much nicer
      Array#product: cleaner style
      ENV.index: implementation

Mikko Perttunen (2):
      Updated specs for Enumerator#each_with_index.
      Fix Enumerator#each_with_index.

Yehuda Katz (2):
      Add a test that chdir should call to_str on an object if a block is given
      call StringValue on the call to chdir whether a block was given or not