diff options
Diffstat (limited to 'ChangeLog')
-rw-r--r-- | ChangeLog | 35 |
1 files changed, 35 insertions, 0 deletions
@@ -1,3 +1,38 @@ +Thu Jun 2 18:33:51 2011 URABE Shyouhei <shyouhei@ruby-lang.org> + + * variable.c (rb_const_get_0): Fix previous change. There were + possibilities when an autoload-specified library lacks + definition of the constant it was bound to. Once after such + library had already beed loaded, the autoload engine shall not + reload it. Instead the interpreter have to consider such + constant nonexistent. It results in a const_missing situation. + + * variable.c (rb_autoload_load): ditto. + + * variable.c (autoload_node): ditto. + +Thu Jun 2 18:28:58 2011 URABE Shyouhei <shyouhei@ruby-lang.org> + + * variable.c (rb_autoload_load): There is a race condition while + autoloading. When two or more threads touch a single autoloaded + constant at a time, one of them does the require, but others + behave oddly. To fix this situation we now refrain from + deleting the autoload table while someone is doing the autoload. + That deletion is deferred to a point where a require ended + successfully. Doing so make it possible for multiple threads to + enter autoloading at the same time but the require is protected + against multiple simultaneous entrance anyway so all but one + thread gets blocked at that point. So with it, touching a + constant that gets autoloaded cause those threads to block until + there is another one that does the same thing. + [ruby-core:36308] (#921) + + * variable.c (rb_const_get_0): ditto. + + * variable.c (autoload_node): ditto. + + * variable.c (autoload_delete): ditto. + Mon May 30 10:58:17 2011 Hiroshi Nakamura <nahi@ruby-lang.org> * lib/logger.rb (Logger::ProgName): do not depend on subversion |