Typical programs that log to eg /var/log are daemons or services. There is typically a single process or process group on a node. In contrast, Rubinius may be run by multiple users on a single node. Segregating the log file by user enables better control of the log file permissions.
The version check was necessary when Rubinius used language modes because the signature would only uniquely identify the entire build toolchain and virtual machine, but not the specific language mode used. This would create an issue if running the same Ruby file in different language modes because the bytecode differs.
There's a very important comment in ruby_init_setproctitle. I'll just quote it verbatim: /* * NB: This assumes that argv has already been copied out of the * way. This is true for sshd, but may not be true for other * programs. Beware. */ Nothing was saving argv and since this code does this: argv = NULL; it was causing a segv on Mavericks when the Agent init code was iterating argv. Why this was not segv'ing on Linux (ie running the CI specs on Travis) is unknown.
The objects to be finalized are now grouped into "generations." All the objects in a generation are kept alive until all the finalizers are run. The Ruby finalizers are run first, then the C finalizers, and finally, the objects are "released", which primarily involves cleaning up handle-related aspects. The Ruby finalizers are run first so that any objects that are being finalized can access other objects that were alive at the same time they were alive. Once all the objects in a generation have been processed, the list of objects is dropped. Since the objects are kept alive by the list they are a member of, all objects in a list that is dropped before the next GC cycle will be collected in that cycle.
This reverts commit 75537c1.
Introduce AuxiliaryThreads to manage the AuxiliaryThread instances.
Conflicts: Rakefile configure kernel/bootstrap/load_order.txt kernel/common/array.rb kernel/common/load_order.txt kernel/delta/load_order.txt kernel/platform/library.rb rakelib/blueprint.rb rakelib/vm.rake spec/tags/18/ruby/core/kernel/eval_tags.txt spec/tags/18/ruby/core/kernel/public_methods_tags.txt spec/tags/18/ruby/library/fiber/transfer_tags.txt spec/tags/18/ruby/library/iconv/iconv_tags.txt spec/tags/20/ruby/library/socket/basicsocket/close_read_tags.txt spec/tags/20/ruby/library/socket/basicsocket/close_write_tags.txt spec/tags/20/ruby/library/uri/eql_tags.txt spec/tags/20/ruby/library/uri/equality_tags.txt vm/builtin/class.cpp vm/builtin/nativefunction.cpp vm/builtin/nativemethod.cpp vm/builtin/regexp.cpp vm/builtin/string.cpp vm/builtin/system.cpp vm/builtin/taskprobe.cpp vm/capi/string.cpp vm/codegen/field_extract.rb vm/environment.cpp vm/external_libs/winpthreads/tests/ChangeLog vm/gc/managed.cpp vm/gc/managed.hpp vm/gc/slab.hpp vm/instruments/profiler.cpp vm/instruments/profiler.hpp vm/llvm/jit_util.cpp vm/llvm/jit_visit.hpp vm/native_thread.cpp vm/objectmemory.cpp vm/ontology.cpp vm/primitives.cpp vm/shared_state.cpp vm/shared_state.hpp vm/test/test_profiler.hpp vm/vm.cpp vm/vm.hpp vm/vmmethod.cpp