From: nobu@... Date: 2015-12-06T12:30:44+00:00 Subject: [ruby-core:71857] [Ruby trunk - Feature #11664] [PATCH] introduce rb_autoload_value to replace rb_autoload Issue #11664 has been updated by Nobuyoshi Nakada. I don't think there is good enough reason to deprecate `rb_autoload`. ---------------------------------------- Feature #11664: [PATCH] introduce rb_autoload_value to replace rb_autoload https://bugs.ruby-lang.org/issues/11664#change-55261 * Author: Eric Wong * Status: Closed * Priority: Normal * Assignee: ---------------------------------------- `rb_autoload_value` may be safer by preventing premature GC. It can also be more efficient by passing a pre-frozen string that can be deduped using `rb_fstring`. Common autoload callers (e.g. rubygems, rdoc) already use string literals as the file argument. There seems to be no reason to expose `rb_autoload_value` to the public C API since autoload is not performance-critical. Applications may declare autoloads in Ruby code or via `rb_funcall`; so merely deprecate `rb_autoload` without exposing `rb_autoload_value` to new users. Running: `valgrind -v ruby -rrdoc -rubygems -e exit` shows a minor memory reduction (32-bit userspace) before: ~~~ in use at exit: 1,600,621 bytes in 28,819 blocks total heap usage: 55,786 allocs, 26,967 frees, 6,693,790 bytes allocated ~~~ after: ~~~ in use at exit: 1,599,778 bytes in 28,789 blocks total heap usage: 55,739 allocs, 26,950 frees, 6,692,973 bytes allocated ~~~ ---Files-------------------------------- 0001-introduce-rb_autoload_value-to-replace-rb_autoload.patch (3.89 KB) -- https://bugs.ruby-lang.org/