<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ruby.git/coroutine, 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>coroutine/ppc64le: fix conditional registers got clobbered unexpectedly</title>
<updated>2025-01-09T15:07:20+00:00</updated>
<author>
<name>liushuyu</name>
<email>liushuyu011@gmail.com</email>
</author>
<published>2025-01-08T19:06:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=d8a21592b462aba0a66324f7444a2f6e61116d3a'/>
<id>d8a21592b462aba0a66324f7444a2f6e61116d3a</id>
<content type='text'>
Now we also save the special cr registers during the fiber switching
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Now we also save the special cr registers during the fiber switching
</pre>
</div>
</content>
</entry>
<entry>
<title>Win32: Define COROUTINE_DECL to suppress a warning</title>
<updated>2025-01-03T04:43:33+00:00</updated>
<author>
<name>Nobuyoshi Nakada</name>
<email>nobu@ruby-lang.org</email>
</author>
<published>2025-01-03T02:29:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=fb73be1f2a76cc7faaaab19ac7a818fd095bd725'/>
<id>fb73be1f2a76cc7faaaab19ac7a818fd095bd725</id>
<content type='text'>
In cont.c:

```
warning C4141: 'noreturn': used more than once
```
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In cont.c:

```
warning C4141: 'noreturn': used more than once
```
</pre>
</div>
</content>
</entry>
<entry>
<title>Win32: Add coroutine for mswin on arm64</title>
<updated>2024-12-17T11:25:06+00:00</updated>
<author>
<name>Nobuyoshi Nakada</name>
<email>nobu@ruby-lang.org</email>
</author>
<published>2024-12-17T05:55:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=c25dd4ee472e1516be64b9b2f0a9e222ef7532d6'/>
<id>c25dd4ee472e1516be64b9b2f0a9e222ef7532d6</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix coroutine implementaion on Windows-Arm64</title>
<updated>2024-12-17T00:46:27+00:00</updated>
<author>
<name>Lars Kanis</name>
<email>lars@greiz-reinsdorf.de</email>
</author>
<published>2024-12-16T20:02:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=187b8fdb6990145210ef6394ca8d866c2f885854'/>
<id>187b8fdb6990145210ef6394ca8d866c2f885854</id>
<content type='text'>
When setjmp/longjmp/exceptions are used on Windows it's necessary to store+restore additional information from the TEB.
I didn't find any official documentation about the values to be saved, but found the corresponding boost/context implemenataion:
    https://github.com/boostorg/context/commit/abf8e04e23cf05a499594e674d1c90db39117662

This is similar to the special TIB handling on x86/x86_64 on Windows.

Without this fix an exception in a fiber segfaults without any output:
  ruby -e "Fiber.new{ raise 'test' }.resume"
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When setjmp/longjmp/exceptions are used on Windows it's necessary to store+restore additional information from the TEB.
I didn't find any official documentation about the values to be saved, but found the corresponding boost/context implemenataion:
    https://github.com/boostorg/context/commit/abf8e04e23cf05a499594e674d1c90db39117662

This is similar to the special TIB handling on x86/x86_64 on Windows.

Without this fix an exception in a fiber segfaults without any output:
  ruby -e "Fiber.new{ raise 'test' }.resume"
</pre>
</div>
</content>
</entry>
<entry>
<title>Substitute `coroutine_transfer` with prefixed symbol in Makefile</title>
<updated>2024-10-08T14:29:49+00:00</updated>
<author>
<name>Nobuyoshi Nakada</name>
<email>nobu@ruby-lang.org</email>
</author>
<published>2024-10-08T07:12:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=1f39184bc7e564eefc9c6e09e038e20e112bef20'/>
<id>1f39184bc7e564eefc9c6e09e038e20e112bef20</id>
<content type='text'>
```
coroutine/arm64/Context.S:31:57: error: invoking macro TOKEN_PASTE argument 1: empty macro arguments are undefined in ISO C90 [-Wpedantic]
   31 | .global PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer)
      |                                                         ^
```
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
```
coroutine/arm64/Context.S:31:57: error: invoking macro TOKEN_PASTE argument 1: empty macro arguments are undefined in ISO C90 [-Wpedantic]
   31 | .global PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer)
      |                                                         ^
```
</pre>
</div>
</content>
</entry>
<entry>
<title>Cast via `uintptr_t` function pointer between object pointer</title>
<updated>2024-10-08T14:29:49+00:00</updated>
<author>
<name>Nobuyoshi Nakada</name>
<email>nobu@ruby-lang.org</email>
</author>
<published>2024-10-08T06:41:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=9a90cd228466ec088d6f0da8d1aa065f03daa7c8'/>
<id>9a90cd228466ec088d6f0da8d1aa065f03daa7c8</id>
<content type='text'>
- ISO C forbids conversion of function pointer to object pointer type
- ISO C forbids conversion of object pointer to function pointer type
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- ISO C forbids conversion of function pointer to object pointer type
- ISO C forbids conversion of object pointer to function pointer type
</pre>
</div>
</content>
</entry>
<entry>
<title>Don't emit ELF notes on non-ELF platforms</title>
<updated>2024-08-22T07:35:43+00:00</updated>
<author>
<name>KJ Tsanaktsidis</name>
<email>ktsanaktsidis@zendesk.com</email>
</author>
<published>2024-08-19T06:25:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=86c2724e75375ceb165c378ed4261c551136e593'/>
<id>86c2724e75375ceb165c378ed4261c551136e593</id>
<content type='text'>
These apparently break compilation on old MacOS toolchains, because the
MachO section name is capped to 16 chars (although, on my MacOS, at
least, the section name just gets truncated). Nevertheless, these serve
no purpose on non-ELF platforms (they're part of the LSB Linux ABI).

[Bug #20677]
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
These apparently break compilation on old MacOS toolchains, because the
MachO section name is capped to 16 chars (although, on my MacOS, at
least, the section name just gets truncated). Nevertheless, these serve
no purpose on non-ELF platforms (they're part of the LSB Linux ABI).

[Bug #20677]
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix typo in ELF note generation</title>
<updated>2024-08-22T07:35:43+00:00</updated>
<author>
<name>KJ Tsanaktsidis</name>
<email>ktsanaktsidis@zendesk.com</email>
</author>
<published>2024-08-19T06:21:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=ff0a1818526460fe71f612f26b231b15e80f746a'/>
<id>ff0a1818526460fe71f612f26b231b15e80f746a</id>
<content type='text'>
This wasn't looking at the right macro name for pac-ret support, so if
Ruby was compiled with pac-ret but NOT BTI, then the ELF note would not
be emitted.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This wasn't looking at the right macro name for pac-ret support, so if
Ruby was compiled with pac-ret but NOT BTI, then the ELF note would not
be emitted.
</pre>
</div>
</content>
</entry>
<entry>
<title>Do not define SHSTK feature for amd64 Context.S</title>
<updated>2024-07-07T10:14:44+00:00</updated>
<author>
<name>KJ Tsanaktsidis</name>
<email>kj@kjtsanaktsidis.id.au</email>
</author>
<published>2024-07-06T05:00:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=8ec67052e67dff62b828820e381a94a3acc73459'/>
<id>8ec67052e67dff62b828820e381a94a3acc73459</id>
<content type='text'>
We do not implement CET shadow-stack switching in amd64 Context.S. If
you compile Ruby with `-fcf-protection=full` and run it with
`GLIBC_TUNABLES=glibc.cpu.hwcaps=SHSTK` exported, it will crash with a
control flow exception.

Configure the appropriate notes at the end of Context.S

[Bug #18061]
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We do not implement CET shadow-stack switching in amd64 Context.S. If
you compile Ruby with `-fcf-protection=full` and run it with
`GLIBC_TUNABLES=glibc.cpu.hwcaps=SHSTK` exported, it will crash with a
control flow exception.

Configure the appropriate notes at the end of Context.S

[Bug #18061]
</pre>
</div>
</content>
</entry>
<entry>
<title>Revert autoconf macros defining RUBY_AARCH64_{BTI|PAC}_ENABLED</title>
<updated>2024-07-07T10:14:44+00:00</updated>
<author>
<name>KJ Tsanaktsidis</name>
<email>kj@kjtsanaktsidis.id.au</email>
</author>
<published>2024-07-06T04:51:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=b940de83dee1932cef69cd249911aa8fe632df89'/>
<id>b940de83dee1932cef69cd249911aa8fe632df89</id>
<content type='text'>
This partially reverts https://github.com/ruby/ruby/pull/10944; now that
we decided to pass CFLAGS to $(CC) when assembling .S files, we don't
need these autoconf macros that capture the state of
__ARM_FEATURE{PAC|BTI}_DEFAULT.

[Bug #20601]
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This partially reverts https://github.com/ruby/ruby/pull/10944; now that
we decided to pass CFLAGS to $(CC) when assembling .S files, we don't
need these autoconf macros that capture the state of
__ARM_FEATURE{PAC|BTI}_DEFAULT.

[Bug #20601]
</pre>
</div>
</content>
</entry>
</feed>
