<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ruby.git/ext/objspace, branch ruby_3_0</title>
<subtitle>The Ruby Programming Language</subtitle>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/'/>
<entry>
<title>merge revision(s) 9f0c6f20c58067923864575b60af730d191b8f6c: [Backport #18382]</title>
<updated>2022-03-12T05:43:41+00:00</updated>
<author>
<name>nagachika</name>
<email>nagachika@ruby-lang.org</email>
</author>
<published>2022-03-12T05:43:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=2ec864d9b7a2c79b5bd9136665aa6f705fa76e53'/>
<id>2ec864d9b7a2c79b5bd9136665aa6f705fa76e53</id>
<content type='text'>
	[Bug #18382] Fix crash in compaction for
	 ObjectSpace.trace_object_allocations

	ObjectSpace.trace_object_allocations can crash when auto-compaction is
	enabled.
	---
	 ext/objspace/object_tracing.c | 3 ++-
	 1 file changed, 2 insertions(+), 1 deletion(-)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
	[Bug #18382] Fix crash in compaction for
	 ObjectSpace.trace_object_allocations

	ObjectSpace.trace_object_allocations can crash when auto-compaction is
	enabled.
	---
	 ext/objspace/object_tracing.c | 3 ++-
	 1 file changed, 2 insertions(+), 1 deletion(-)
</pre>
</div>
</content>
</entry>
<entry>
<title>merge revision(s) c0f4e4ca6d0f76985bca79314b232b787c8f008e: [Backport #18007]</title>
<updated>2021-09-05T05:55:14+00:00</updated>
<author>
<name>nagachika</name>
<email>nagachika@ruby-lang.org</email>
</author>
<published>2021-09-05T05:55:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=c42208f8e24402fe1aa8747901fba275bfb0d56b'/>
<id>c42208f8e24402fe1aa8747901fba275bfb0d56b</id>
<content type='text'>
	undefine alloc functions for C extensions

	per guidance in doc/extension.rdoc, these classes now undefine their
	alloc functions:

	- ObjectSpace::InternalObjectWrapper
	- Socket::Ifaddr
	---
	 ext/objspace/objspace.c | 1 +
	 ext/socket/ifaddr.c     | 1 +
	 2 files changed, 2 insertions(+)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
	undefine alloc functions for C extensions

	per guidance in doc/extension.rdoc, these classes now undefine their
	alloc functions:

	- ObjectSpace::InternalObjectWrapper
	- Socket::Ifaddr
	---
	 ext/objspace/objspace.c | 1 +
	 ext/socket/ifaddr.c     | 1 +
	 2 files changed, 2 insertions(+)
</pre>
</div>
</content>
</entry>
<entry>
<title>merge revision(s) 6ca3d1af3302f722aed530764d07c1cc83e95ecf: [Backport #17552]</title>
<updated>2021-02-02T06:47:50+00:00</updated>
<author>
<name>NARUSE, Yui</name>
<email>naruse@airemix.jp</email>
</author>
<published>2021-02-01T15:15:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=c09f5ee344ae5e6edb827b177bc6a5c2df37e805'/>
<id>c09f5ee344ae5e6edb827b177bc6a5c2df37e805</id>
<content type='text'>
	objspace_dump.c: Handle allocation path and line missing

	---
	 ext/objspace/objspace_dump.c | 13 +++++++++----
	 1 file changed, 9 insertions(+), 4 deletions(-)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
	objspace_dump.c: Handle allocation path and line missing

	---
	 ext/objspace/objspace_dump.c | 13 +++++++++----
	 1 file changed, 9 insertions(+), 4 deletions(-)
</pre>
</div>
</content>
</entry>
<entry>
<title>enable constant cache on ractors</title>
<updated>2021-01-13T08:06:16+00:00</updated>
<author>
<name>Koichi Sasada</name>
<email>ko1@atdot.net</email>
</author>
<published>2021-01-04T09:08:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=b93e16dc0f45069d4a5fcce20d5c4437e151f0a8'/>
<id>b93e16dc0f45069d4a5fcce20d5c4437e151f0a8</id>
<content type='text'>
constant cache `IC` is accessed by non-atomic manner and there are
thread-safety issues, so Ruby 3.0 disables to use const cache on
non-main ractors.

This patch enables it by introducing `imemo_constcache` and allocates
it by every re-fill of const cache like `imemo_callcache`.
[Bug #17510]

Now `IC` only has one entry `IC::entry` and it points to
`iseq_inline_constant_cache_entry`, managed by T_IMEMO object.

`IC` is atomic data structure so `rb_mjit_before_vm_ic_update()` and
`rb_mjit_after_vm_ic_update()` is not needed.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
constant cache `IC` is accessed by non-atomic manner and there are
thread-safety issues, so Ruby 3.0 disables to use const cache on
non-main ractors.

This patch enables it by introducing `imemo_constcache` and allocates
it by every re-fill of const cache like `imemo_callcache`.
[Bug #17510]

Now `IC` only has one entry `IC::entry` and it points to
`iseq_inline_constant_cache_entry`, managed by T_IMEMO object.

`IC` is atomic data structure so `rb_mjit_before_vm_ic_update()` and
`rb_mjit_after_vm_ic_update()` is not needed.
</pre>
</div>
</content>
</entry>
<entry>
<title>Expose atomic operation macros with RUBY prefix</title>
<updated>2020-12-24T02:43:21+00:00</updated>
<author>
<name>Nobuyoshi Nakada</name>
<email>nobu@ruby-lang.org</email>
</author>
<published>2020-12-23T05:09:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=6ed6b85ece8733518a7da0c3ec714f20d1102bf5'/>
<id>6ed6b85ece8733518a7da0c3ec714f20d1102bf5</id>
<content type='text'>
Now we need atomic operations, which are lighter than mutex, more
widely for extension libraries because of Ractor.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Now we need atomic operations, which are lighter than mutex, more
widely for extension libraries because of Ractor.
</pre>
</div>
</content>
</entry>
<entry>
<title>Prevent objects from moving while iterating the heap</title>
<updated>2020-10-06T23:22:01+00:00</updated>
<author>
<name>Aaron Patterson</name>
<email>tenderlove@ruby-lang.org</email>
</author>
<published>2020-10-06T20:17:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=cdc4084b0a947b87a794394b9cc8cbdb10537146'/>
<id>cdc4084b0a947b87a794394b9cc8cbdb10537146</id>
<content type='text'>
This iterator uses an st_table, but if objects move the references in
the st table won't be updated.  This patch just changes the st table to
an identity hash.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This iterator uses an st_table, but if objects move the references in
the st table won't be updated.  This patch just changes the st table to
an identity hash.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix ObjectSpace.dump(obj, output: :stdout)</title>
<updated>2020-10-02T15:00:01+00:00</updated>
<author>
<name>Kazuhiro NISHIYAMA</name>
<email>zn@mbf.nifty.com</email>
</author>
<published>2020-10-02T09:19:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=d0a7189f26dcb185c76771823dcfd20d8d4a7e3e'/>
<id>d0a7189f26dcb185c76771823dcfd20d8d4a7e3e</id>
<content type='text'>
RDoc says `ObjectSpace.dump(obj, output: :stdout)   # =&gt; nil`,
but it returns STDOUT since fbba6bd4e3dff7a61965208fecae908f10c4edbe.

I think it is unintentional change.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
RDoc says `ObjectSpace.dump(obj, output: :stdout)   # =&gt; nil`,
but it returns STDOUT since fbba6bd4e3dff7a61965208fecae908f10c4edbe.

I think it is unintentional change.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix up dependencies on internal/sanitizers.h</title>
<updated>2020-09-29T04:14:54+00:00</updated>
<author>
<name>Nobuyoshi Nakada</name>
<email>nobu@ruby-lang.org</email>
</author>
<published>2020-09-29T04:14:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=b971f141b20d484c48358e5f2d4d9b6957ccd17a'/>
<id>b971f141b20d484c48358e5f2d4d9b6957ccd17a</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Refactor common heap iteration code</title>
<updated>2020-09-28T15:20:23+00:00</updated>
<author>
<name>Aaron Patterson</name>
<email>tenderlove@ruby-lang.org</email>
</author>
<published>2020-09-25T23:25:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=0b0e2d88cebc0b546b75234321fa31a1f3a0be3f'/>
<id>0b0e2d88cebc0b546b75234321fa31a1f3a0be3f</id>
<content type='text'>
We have code common to all heap iteration paths in this file.  Refactor
such that we keep ASAN checks and flags checks in one place
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We have code common to all heap iteration paths in this file.  Refactor
such that we keep ASAN checks and flags checks in one place
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix ASAN support when invalidating CCs</title>
<updated>2020-09-28T15:20:23+00:00</updated>
<author>
<name>Aaron Patterson</name>
<email>tenderlove@ruby-lang.org</email>
</author>
<published>2020-09-25T22:01:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=b9488accf9e2cbf5f7c47b42b3eb23469f0aa58d'/>
<id>b9488accf9e2cbf5f7c47b42b3eb23469f0aa58d</id>
<content type='text'>
Again, this code is walking the heap.  Empty slots can be poisoned, so
we need to unpoison before checking the type
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Again, this code is walking the heap.  Empty slots can be poisoned, so
we need to unpoison before checking the type
</pre>
</div>
</content>
</entry>
</feed>
