<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ruby.git/include/ruby/atomic.h, branch v4.0.2</title>
<subtitle>The Ruby Programming Language</subtitle>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/'/>
<entry>
<title>Replace stdatomic ops with explicit mem order</title>
<updated>2025-08-12T17:38:00+00:00</updated>
<author>
<name>John Hawthorn</name>
<email>john@hawthorn.email</email>
</author>
<published>2025-07-29T07:14:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=4cf05ea77a82368f77fc50c193934b3b1a027b03'/>
<id>4cf05ea77a82368f77fc50c193934b3b1a027b03</id>
<content type='text'>
My previous pass missed these atomic operations using operators.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
My previous pass missed these atomic operations using operators.
</pre>
</div>
</content>
</entry>
<entry>
<title>Implement rbimpl_atomic_value_load</title>
<updated>2025-08-12T17:38:00+00:00</updated>
<author>
<name>John Hawthorn</name>
<email>john@hawthorn.email</email>
</author>
<published>2025-07-29T06:24:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=cb360b0b4b2e53f2335f77f477df54337fc4d87e'/>
<id>cb360b0b4b2e53f2335f77f477df54337fc4d87e</id>
<content type='text'>
This only adds the rbimpl_ version to include/ruby/atomic.h so that it
is not a new public interface.

We were already using RUBY_ATOMIC_VALUE_LOAD in a few locations. This
will allow us to use other memory orders internally when desired.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This only adds the rbimpl_ version to include/ruby/atomic.h so that it
is not a new public interface.

We were already using RUBY_ATOMIC_VALUE_LOAD in a few locations. This
will allow us to use other memory orders internally when desired.
</pre>
</div>
</content>
</entry>
<entry>
<title>Update rbimpl_atomic_* to all take a memory order</title>
<updated>2025-08-12T17:38:00+00:00</updated>
<author>
<name>John Hawthorn</name>
<email>john@hawthorn.email</email>
</author>
<published>2025-07-28T23:13:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=1d9f76096e8072bf4fa4e2eb22d02079e1cbe429'/>
<id>1d9f76096e8072bf4fa4e2eb22d02079e1cbe429</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Rename rbimpl_atomic.*_set to _store</title>
<updated>2025-08-12T17:38:00+00:00</updated>
<author>
<name>John Hawthorn</name>
<email>john@hawthorn.email</email>
</author>
<published>2025-07-19T06:03:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=2f95eb4e803f3107c157d8eccf6ba62f0487e9ad'/>
<id>2f95eb4e803f3107c157d8eccf6ba62f0487e9ad</id>
<content type='text'>
"store" is the terminology the C11 standard uses, which allows us to use
this as a fallback.

This only changes the private rbimpl_ version of the method,
RUBY_ATOMIC_SET et al. keep the same name.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
"store" is the terminology the C11 standard uses, which allows us to use
this as a fallback.

This only changes the private rbimpl_ version of the method,
RUBY_ATOMIC_SET et al. keep the same name.
</pre>
</div>
</content>
</entry>
<entry>
<title>`atomic.h`: Add C11 &lt;stdatomic.h&gt; implementation</title>
<updated>2025-07-17T06:46:37+00:00</updated>
<author>
<name>fuhsnn</name>
<email>66062782+fuhsnn@users.noreply.github.com</email>
</author>
<published>2025-07-06T00:03:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=98aa2a6608b026c56130154aa07b1635e05d95e8'/>
<id>98aa2a6608b026c56130154aa07b1635e05d95e8</id>
<content type='text'>
The implementation is only active if `HAVE_STDATOMIC_H` is defined,
and only after the compiler fails to match all currently supported
systems.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The implementation is only active if `HAVE_STDATOMIC_H` is defined,
and only after the compiler fails to match all currently supported
systems.
</pre>
</div>
</content>
</entry>
<entry>
<title>`atomic.h`: Use explicit logic for 32-bit #else branches</title>
<updated>2025-07-17T06:46:37+00:00</updated>
<author>
<name>fuhsnn</name>
<email>66062782+fuhsnn@users.noreply.github.com</email>
</author>
<published>2025-07-05T23:41:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=a7992400f18b2cdabe97a3e2a356cb5e0b5d4454'/>
<id>a7992400f18b2cdabe97a3e2a356cb5e0b5d4454</id>
<content type='text'>
These branches are only active for 32-bit Windows and Solaris platforms,
codify the fact by changing `#else` to `#elif`'s that explicitly include
those targets and `#error`-out otherwise.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
These branches are only active for 32-bit Windows and Solaris platforms,
codify the fact by changing `#else` to `#elif`'s that explicitly include
those targets and `#error`-out otherwise.
</pre>
</div>
</content>
</entry>
<entry>
<title>Reduce `Object#object_id` contention.</title>
<updated>2025-05-14T12:41:46+00:00</updated>
<author>
<name>Jean Boussier</name>
<email>jean.boussier@gmail.com</email>
</author>
<published>2025-05-10T14:18:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=b5575a80bc3849651c395d0ae470eb41dc3aa897'/>
<id>b5575a80bc3849651c395d0ae470eb41dc3aa897</id>
<content type='text'>
If the object isn't shareable and already has a object_id
we can access it without a lock.

If we need to generate an ID, we may need to lock to find
the child shape.

We also generate the next `object_id` using atomics.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If the object isn't shareable and already has a object_id
we can access it without a lock.

If we need to generate an ID, we may need to lock to find
the child shape.

We also generate the next `object_id` using atomics.
</pre>
</div>
</content>
</entry>
<entry>
<title>get_next_shape_internal: Skip VM lock for single child case</title>
<updated>2025-04-30T21:32:33+00:00</updated>
<author>
<name>Jean Boussier</name>
<email>jean.boussier@gmail.com</email>
</author>
<published>2025-04-28T08:37:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=c65991978baac17fbfd3bc09e58a35bb2e5f769e'/>
<id>c65991978baac17fbfd3bc09e58a35bb2e5f769e</id>
<content type='text'>
If the shape has only one child, we check it lock-free without
compromising thread safety.

I haven't computed hard data as to how often that it the case,
but we can assume that it's not too rare for shapes to have
a single child that is often requested, typically when freezing
and object.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If the shape has only one child, we check it lock-free without
compromising thread safety.

I haven't computed hard data as to how often that it the case,
but we can assume that it's not too rare for shapes to have
a single child that is often requested, typically when freezing
and object.
</pre>
</div>
</content>
</entry>
<entry>
<title>Work on ATOMIC_VALUE_SET</title>
<updated>2025-04-18T04:03:54+00:00</updated>
<author>
<name>John Hawthorn</name>
<email>john@hawthorn.email</email>
</author>
<published>2025-03-29T05:23:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=b28363a8381fd4e93d1254e71486e0185a84c9c5'/>
<id>b28363a8381fd4e93d1254e71486e0185a84c9c5</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Include windows.h for `LONG` and `Interlocked` functions</title>
<updated>2024-11-02T13:27:03+00:00</updated>
<author>
<name>Nobuyoshi Nakada</name>
<email>nobu@ruby-lang.org</email>
</author>
<published>2024-11-02T13:27:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=e2909570bb00c7c6056638b71c1d3c363dc0d40d'/>
<id>e2909570bb00c7c6056638b71c1d3c363dc0d40d</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
