[{"id":"8440181454","type":"PullRequestEvent","actor":{"id":14981592,"login":"Earlopain","display_login":"Earlopain","gravatar_id":"","url":"https://api.github.com/users/Earlopain","avatar_url":"https://avatars.githubusercontent.com/u/14981592?"},"repo":{"id":538746,"name":"ruby/ruby","url":"https://api.github.com/repos/ruby/ruby"},"payload":{"action":"opened","number":16750,"pull_request":{"url":"https://api.github.com/repos/ruby/ruby/pulls/16750","id":3533612341,"number":16750,"head":{"ref":"prism-branch-predicate-no-pop","sha":"92c066b80a1e0ff6903a1223ceacef4d18cceee0","repo":{"id":773712148,"url":"https://api.github.com/repos/Earlopain/ruby","name":"ruby"}},"base":{"ref":"master","sha":"75387fd3d7a3466e265839dd32ef3b399c1e6b80","repo":{"id":538746,"url":"https://api.github.com/repos/ruby/ruby","name":"ruby"}}}},"public":true,"created_at":"2026-04-15T11:37:32Z","org":{"id":210414,"login":"ruby","gravatar_id":"","url":"https://api.github.com/orgs/ruby","avatar_url":"https://avatars.githubusercontent.com/u/210414?"}},{"id":"8437815349","type":"PullRequestReviewEvent","actor":{"id":44640,"login":"byroot","display_login":"byroot","gravatar_id":"","url":"https://api.github.com/users/byroot","avatar_url":"https://avatars.githubusercontent.com/u/44640?"},"repo":{"id":538746,"name":"ruby/ruby","url":"https://api.github.com/repos/ruby/ruby"},"payload":{"review":{"id":4112751768,"node_id":"PRR_kwDOAAg4es71I5yY","user":{"login":"byroot","id":44640,"node_id":"MDQ6VXNlcjQ0NjQw","avatar_url":"https://avatars.githubusercontent.com/u/44640?v=4","gravatar_id":"","url":"https://api.github.com/users/byroot","html_url":"https://github.com/byroot","followers_url":"https://api.github.com/users/byroot/followers","following_url":"https://api.github.com/users/byroot/following{/other_user}","gists_url":"https://api.github.com/users/byroot/gists{/gist_id}","starred_url":"https://api.github.com/users/byroot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/byroot/subscriptions","organizations_url":"https://api.github.com/users/byroot/orgs","repos_url":"https://api.github.com/users/byroot/repos","events_url":"https://api.github.com/users/byroot/events{/privacy}","received_events_url":"https://api.github.com/users/byroot/received_events","type":"User","user_view_type":"public","site_admin":false},"body":null,"commit_id":"9ab45d85c818c5ae256225bbbce96d1f877396a1","state":"approved","html_url":"https://github.com/ruby/ruby/pull/16737#pullrequestreview-4112751768","pull_request_url":"https://api.github.com/repos/ruby/ruby/pulls/16737","_links":{"html":{"href":"https://github.com/ruby/ruby/pull/16737#pullrequestreview-4112751768"},"pull_request":{"href":"https://api.github.com/repos/ruby/ruby/pulls/16737"}},"submitted_at":"2026-04-15T10:27:44Z","updated_at":"2026-04-15T10:27:44Z"},"pull_request":{"url":"https://api.github.com/repos/ruby/ruby/pulls/16737","id":3525539784,"number":16737,"head":{"ref":"ivar_foreach_buffered","sha":"9ab45d85c818c5ae256225bbbce96d1f877396a1","repo":{"id":193747446,"url":"https://api.github.com/repos/jhawthorn/ruby","name":"ruby"}},"base":{"ref":"master","sha":"93f1010f70a3ac924c3b37e4ae82cf1a669fcbf0","repo":{"id":538746,"url":"https://api.github.com/repos/ruby/ruby","name":"ruby"}}},"action":"created"},"public":true,"created_at":"2026-04-15T10:27:47Z","org":{"id":210414,"login":"ruby","gravatar_id":"","url":"https://api.github.com/orgs/ruby","avatar_url":"https://avatars.githubusercontent.com/u/210414?"}},{"id":"8436940795","type":"PullRequestReviewEvent","actor":{"id":44640,"login":"byroot","display_login":"byroot","gravatar_id":"","url":"https://api.github.com/users/byroot","avatar_url":"https://avatars.githubusercontent.com/u/44640?"},"repo":{"id":538746,"name":"ruby/ruby","url":"https://api.github.com/repos/ruby/ruby"},"payload":{"review":{"id":4112599729,"node_id":"PRR_kwDOAAg4es71IUqx","user":{"login":"byroot","id":44640,"node_id":"MDQ6VXNlcjQ0NjQw","avatar_url":"https://avatars.githubusercontent.com/u/44640?v=4","gravatar_id":"","url":"https://api.github.com/users/byroot","html_url":"https://github.com/byroot","followers_url":"https://api.github.com/users/byroot/followers","following_url":"https://api.github.com/users/byroot/following{/other_user}","gists_url":"https://api.github.com/users/byroot/gists{/gist_id}","starred_url":"https://api.github.com/users/byroot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/byroot/subscriptions","organizations_url":"https://api.github.com/users/byroot/orgs","repos_url":"https://api.github.com/users/byroot/repos","events_url":"https://api.github.com/users/byroot/events{/privacy}","received_events_url":"https://api.github.com/users/byroot/received_events","type":"User","user_view_type":"public","site_admin":false},"body":null,"commit_id":"9ab45d85c818c5ae256225bbbce96d1f877396a1","state":"commented","html_url":"https://github.com/ruby/ruby/pull/16737#pullrequestreview-4112599729","pull_request_url":"https://api.github.com/repos/ruby/ruby/pulls/16737","_links":{"html":{"href":"https://github.com/ruby/ruby/pull/16737#pullrequestreview-4112599729"},"pull_request":{"href":"https://api.github.com/repos/ruby/ruby/pulls/16737"}},"submitted_at":"2026-04-15T10:01:38Z","updated_at":"2026-04-15T10:01:38Z"},"pull_request":{"url":"https://api.github.com/repos/ruby/ruby/pulls/16737","id":3525539784,"number":16737,"head":{"ref":"ivar_foreach_buffered","sha":"9ab45d85c818c5ae256225bbbce96d1f877396a1","repo":{"id":193747446,"url":"https://api.github.com/repos/jhawthorn/ruby","name":"ruby"}},"base":{"ref":"master","sha":"93f1010f70a3ac924c3b37e4ae82cf1a669fcbf0","repo":{"id":538746,"url":"https://api.github.com/repos/ruby/ruby","name":"ruby"}}},"action":"created"},"public":true,"created_at":"2026-04-15T10:01:40Z","org":{"id":210414,"login":"ruby","gravatar_id":"","url":"https://api.github.com/orgs/ruby","avatar_url":"https://avatars.githubusercontent.com/u/210414?"}},{"id":"8436939686","type":"PullRequestReviewCommentEvent","actor":{"id":44640,"login":"byroot","display_login":"byroot","gravatar_id":"","url":"https://api.github.com/users/byroot","avatar_url":"https://avatars.githubusercontent.com/u/44640?"},"repo":{"id":538746,"name":"ruby/ruby","url":"https://api.github.com/repos/ruby/ruby"},"payload":{"action":"created","comment":{"url":"https://api.github.com/repos/ruby/ruby/pulls/comments/3085611911","pull_request_review_id":4112599729,"id":3085611911,"node_id":"PRRC_kwDOAAg4es636rOH","diff_hunk":"@@ -2353,10 +2362,39 @@ rb_field_foreach(VALUE obj, rb_ivar_foreach_callback_func *func, st_data_t arg,\n     }\n }\n \n+struct ivar_buf_entry {\n+    ID name;\n+    VALUE val;\n+};\n+\n+static int\n+collect_ivar_i(ID id, VALUE val, st_data_t arg)\n+{\n+    struct ivar_buf_entry **pos = (struct ivar_buf_entry **)arg;\n+    (*pos)->name = id;\n+    (*pos)->val = val;","path":"variable.c","commit_id":"9ab45d85c818c5ae256225bbbce96d1f877396a1","original_commit_id":"9ab45d85c818c5ae256225bbbce96d1f877396a1","user":{"login":"byroot","id":44640,"node_id":"MDQ6VXNlcjQ0NjQw","avatar_url":"https://avatars.githubusercontent.com/u/44640?v=4","gravatar_id":"","url":"https://api.github.com/users/byroot","html_url":"https://github.com/byroot","followers_url":"https://api.github.com/users/byroot/followers","following_url":"https://api.github.com/users/byroot/following{/other_user}","gists_url":"https://api.github.com/users/byroot/gists{/gist_id}","starred_url":"https://api.github.com/users/byroot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/byroot/subscriptions","organizations_url":"https://api.github.com/users/byroot/orgs","repos_url":"https://api.github.com/users/byroot/repos","events_url":"https://api.github.com/users/byroot/events{/privacy}","received_events_url":"https://api.github.com/users/byroot/received_events","type":"User","user_view_type":"public","site_admin":false},"body":"🤦 I get it now. We're not just collecting ivar names, but also values. That explains it.","created_at":"2026-04-15T10:01:38Z","updated_at":"2026-04-15T10:01:38Z","html_url":"https://github.com/ruby/ruby/pull/16737#discussion_r3085611911","pull_request_url":"https://api.github.com/repos/ruby/ruby/pulls/16737","_links":{"self":{"href":"https://api.github.com/repos/ruby/ruby/pulls/comments/3085611911"},"html":{"href":"https://github.com/ruby/ruby/pull/16737#discussion_r3085611911"},"pull_request":{"href":"https://api.github.com/repos/ruby/ruby/pulls/16737"}},"reactions":{"url":"https://api.github.com/repos/ruby/ruby/pulls/comments/3085611911/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"original_position":59,"position":59,"subject_type":"line"},"pull_request":{"url":"https://api.github.com/repos/ruby/ruby/pulls/16737","id":3525539784,"number":16737,"head":{"ref":"ivar_foreach_buffered","sha":"9ab45d85c818c5ae256225bbbce96d1f877396a1","repo":{"id":193747446,"url":"https://api.github.com/repos/jhawthorn/ruby","name":"ruby"}},"base":{"ref":"master","sha":"93f1010f70a3ac924c3b37e4ae82cf1a669fcbf0","repo":{"id":538746,"url":"https://api.github.com/repos/ruby/ruby","name":"ruby"}}}},"public":true,"created_at":"2026-04-15T10:01:38Z","org":{"id":210414,"login":"ruby","gravatar_id":"","url":"https://api.github.com/orgs/ruby","avatar_url":"https://avatars.githubusercontent.com/u/210414?"}},{"id":"10606111815","type":"PushEvent","actor":{"id":21976,"login":"nagachika","display_login":"nagachika","gravatar_id":"","url":"https://api.github.com/users/nagachika","avatar_url":"https://avatars.githubusercontent.com/u/21976?"},"repo":{"id":538746,"name":"ruby/ruby","url":"https://api.github.com/repos/ruby/ruby"},"payload":{"repository_id":538746,"push_id":32897980312,"ref":"refs/heads/ruby_3_4","head":"1bdce3585e2e135a3d69c5bf3e3ea446d4839851","before":"0280c61fb4ac408611721dd9680e4bb9a436a9c3"},"public":true,"created_at":"2026-04-15T09:51:05Z","org":{"id":210414,"login":"ruby","gravatar_id":"","url":"https://api.github.com/orgs/ruby","avatar_url":"https://avatars.githubusercontent.com/u/210414?"}},{"id":"8436549416","type":"PullRequestEvent","actor":{"id":44640,"login":"byroot","display_login":"byroot","gravatar_id":"","url":"https://api.github.com/users/byroot","avatar_url":"https://avatars.githubusercontent.com/u/44640?"},"repo":{"id":538746,"name":"ruby/ruby","url":"https://api.github.com/repos/ruby/ruby"},"payload":{"action":"merged","number":16727,"pull_request":{"url":"https://api.github.com/repos/ruby/ruby/pulls/16727","id":3519529194,"number":16727,"head":{"ref":"ruby_3_4_basicobj-init","sha":"4c88653763729305316ca46445cff27f12b1be17","repo":{"id":145185970,"url":"https://api.github.com/repos/byroot/ruby","name":"ruby"}},"base":{"ref":"ruby_3_4","sha":"0280c61fb4ac408611721dd9680e4bb9a436a9c3","repo":{"id":538746,"url":"https://api.github.com/repos/ruby/ruby","name":"ruby"}}}},"public":true,"created_at":"2026-04-15T09:51:03Z","org":{"id":210414,"login":"ruby","gravatar_id":"","url":"https://api.github.com/orgs/ruby","avatar_url":"https://avatars.githubusercontent.com/u/210414?"}},{"id":"10605634021","type":"PushEvent","actor":{"id":29403229,"login":"matzbot","display_login":"matzbot","gravatar_id":"","url":"https://api.github.com/users/matzbot","avatar_url":"https://avatars.githubusercontent.com/u/29403229?"},"repo":{"id":538746,"name":"ruby/ruby","url":"https://api.github.com/repos/ruby/ruby"},"payload":{"repository_id":538746,"push_id":32897503588,"ref":"refs/heads/master","head":"75387fd3d7a3466e265839dd32ef3b399c1e6b80","before":"e14897a0674af69b5e738a1f1525616ef1265b6b"},"public":true,"created_at":"2026-04-15T09:38:36Z","org":{"id":210414,"login":"ruby","gravatar_id":"","url":"https://api.github.com/orgs/ruby","avatar_url":"https://avatars.githubusercontent.com/u/210414?"}},{"id":"8435994479","type":"WatchEvent","actor":{"id":185055669,"login":"fredex90-dev","display_login":"fredex90-dev","gravatar_id":"","url":"https://api.github.com/users/fredex90-dev","avatar_url":"https://avatars.githubusercontent.com/u/185055669?"},"repo":{"id":538746,"name":"ruby/ruby","url":"https://api.github.com/repos/ruby/ruby"},"payload":{"action":"started"},"public":true,"created_at":"2026-04-15T09:35:42Z","org":{"id":210414,"login":"ruby","gravatar_id":"","url":"https://api.github.com/orgs/ruby","avatar_url":"https://avatars.githubusercontent.com/u/210414?"}},{"id":"8434337346","type":"WatchEvent","actor":{"id":509078,"login":"timkofu","display_login":"timkofu","gravatar_id":"","url":"https://api.github.com/users/timkofu","avatar_url":"https://avatars.githubusercontent.com/u/509078?"},"repo":{"id":538746,"name":"ruby/ruby","url":"https://api.github.com/repos/ruby/ruby"},"payload":{"action":"started"},"public":true,"created_at":"2026-04-15T08:51:52Z","org":{"id":210414,"login":"ruby","gravatar_id":"","url":"https://api.github.com/orgs/ruby","avatar_url":"https://avatars.githubusercontent.com/u/210414?"}},{"id":"8431771750","type":"IssueCommentEvent","actor":{"id":44640,"login":"byroot","display_login":"byroot","gravatar_id":"","url":"https://api.github.com/users/byroot","avatar_url":"https://avatars.githubusercontent.com/u/44640?"},"repo":{"id":538746,"name":"ruby/ruby","url":"https://api.github.com/repos/ruby/ruby"},"payload":{"action":"created","issue":{"url":"https://api.github.com/repos/ruby/ruby/issues/16737","repository_url":"https://api.github.com/repos/ruby/ruby","labels_url":"https://api.github.com/repos/ruby/ruby/issues/16737/labels{/name}","comments_url":"https://api.github.com/repos/ruby/ruby/issues/16737/comments","events_url":"https://api.github.com/repos/ruby/ruby/issues/16737/events","html_url":"https://github.com/ruby/ruby/pull/16737","id":4258321850,"node_id":"PR_kwDOAAg4es7SI3fI","number":16737,"title":"Use buffer in rb_ivar_foreach","user":{"login":"jhawthorn","id":131752,"node_id":"MDQ6VXNlcjEzMTc1Mg==","avatar_url":"https://avatars.githubusercontent.com/u/131752?v=4","gravatar_id":"","url":"https://api.github.com/users/jhawthorn","html_url":"https://github.com/jhawthorn","followers_url":"https://api.github.com/users/jhawthorn/followers","following_url":"https://api.github.com/users/jhawthorn/following{/other_user}","gists_url":"https://api.github.com/users/jhawthorn/gists{/gist_id}","starred_url":"https://api.github.com/users/jhawthorn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jhawthorn/subscriptions","organizations_url":"https://api.github.com/users/jhawthorn/orgs","repos_url":"https://api.github.com/users/jhawthorn/repos","events_url":"https://api.github.com/users/jhawthorn/events{/privacy}","received_events_url":"https://api.github.com/users/jhawthorn/received_events","type":"User","user_view_type":"public","site_admin":false},"labels":[],"state":"open","locked":false,"assignees":[],"milestone":null,"comments":2,"created_at":"2026-04-13T22:44:41Z","updated_at":"2026-04-15T10:27:44Z","closed_at":null,"assignee":null,"type":null,"active_lock_reason":null,"draft":false,"pull_request":{"url":"https://api.github.com/repos/ruby/ruby/pulls/16737","html_url":"https://github.com/ruby/ruby/pull/16737","diff_url":"https://github.com/ruby/ruby/pull/16737.diff","patch_url":"https://github.com/ruby/ruby/pull/16737.patch","merged_at":null},"body":"Previously, rb_ivar_foreach would walk up the shape tree, but yield\r\ninstance variables to the callback as it went. If the object shape was\r\nmodified during this callback, particularly with removing an instance\r\nvariable, it could result in reading free'd memory.\r\n\r\nThis commit solves this by buffering all instance variable names and\r\nvalues before calling the callback, giving a snapshot of the object at\r\nthe time rb_ivar_foreach is called.\r\n\r\nThe buffer is made with ALLOCV_N, so the performance difference should\r\nbe minimal, and I don't think this method is particuarly heavily used.\r\n\r\n[[Bug #21996]](https://bugs.ruby-lang.org/issues/21996)","reactions":{"url":"https://api.github.com/repos/ruby/ruby/issues/16737/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ruby/ruby/issues/16737/timeline","performed_via_github_app":null,"state_reason":null},"comment":{"url":"https://api.github.com/repos/ruby/ruby/issues/comments/4250144114","html_url":"https://github.com/ruby/ruby/pull/16737#issuecomment-4250144114","issue_url":"https://api.github.com/repos/ruby/ruby/issues/16737","id":4250144114,"node_id":"IC_kwDOAAg4es79VA1y","user":{"login":"byroot","id":44640,"node_id":"MDQ6VXNlcjQ0NjQw","avatar_url":"https://avatars.githubusercontent.com/u/44640?v=4","gravatar_id":"","url":"https://api.github.com/users/byroot","html_url":"https://github.com/byroot","followers_url":"https://api.github.com/users/byroot/followers","following_url":"https://api.github.com/users/byroot/following{/other_user}","gists_url":"https://api.github.com/users/byroot/gists{/gist_id}","starred_url":"https://api.github.com/users/byroot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/byroot/subscriptions","organizations_url":"https://api.github.com/users/byroot/orgs","repos_url":"https://api.github.com/users/byroot/repos","events_url":"https://api.github.com/users/byroot/events{/privacy}","received_events_url":"https://api.github.com/users/byroot/received_events","type":"User","user_view_type":"public","site_admin":false},"created_at":"2026-04-15T07:39:20Z","updated_at":"2026-04-15T07:39:20Z","body":"> This commit solves this by buffering all instance variable names and values before calling the callback, giving a snapshot of the object at the time rb_ivar_foreach is called.\r\n\r\nMaybe I'm dense, but I don't understand how this changed. I get that now we're buffering the list of ivars, but previously `rb_shape_foreach_field(` would basically have the same effect because it recursively walk up the shape tree, but then call the callbacks on its way back. So effectively it already \"snapshot\" the list of ivars.\r\n\r\nClearly the fix works, I just don't get how.","reactions":{"url":"https://api.github.com/repos/ruby/ruby/issues/comments/4250144114/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"performed_via_github_app":null}},"public":true,"created_at":"2026-04-15T07:39:20Z","org":{"id":210414,"login":"ruby","gravatar_id":"","url":"https://api.github.com/orgs/ruby","avatar_url":"https://avatars.githubusercontent.com/u/210414?"}},{"id":"10600520721","type":"PushEvent","actor":{"id":29403229,"login":"matzbot","display_login":"matzbot","gravatar_id":"","url":"https://api.github.com/users/matzbot","avatar_url":"https://avatars.githubusercontent.com/u/29403229?"},"repo":{"id":538746,"name":"ruby/ruby","url":"https://api.github.com/repos/ruby/ruby"},"payload":{"repository_id":538746,"push_id":32892404068,"ref":"refs/heads/master","head":"e14897a0674af69b5e738a1f1525616ef1265b6b","before":"84f7692242fa41c0e4ec4ecfe469cd91c67bd8a8"},"public":true,"created_at":"2026-04-15T07:21:06Z","org":{"id":210414,"login":"ruby","gravatar_id":"","url":"https://api.github.com/orgs/ruby","avatar_url":"https://avatars.githubusercontent.com/u/210414?"}},{"id":"8430771589","type":"PullRequestReviewEvent","actor":{"id":44640,"login":"byroot","display_login":"byroot","gravatar_id":"","url":"https://api.github.com/users/byroot","avatar_url":"https://avatars.githubusercontent.com/u/44640?"},"repo":{"id":538746,"name":"ruby/ruby","url":"https://api.github.com/repos/ruby/ruby"},"payload":{"review":{"id":4111482286,"node_id":"PRR_kwDOAAg4es71ED2u","user":{"login":"byroot","id":44640,"node_id":"MDQ6VXNlcjQ0NjQw","avatar_url":"https://avatars.githubusercontent.com/u/44640?v=4","gravatar_id":"","url":"https://api.github.com/users/byroot","html_url":"https://github.com/byroot","followers_url":"https://api.github.com/users/byroot/followers","following_url":"https://api.github.com/users/byroot/following{/other_user}","gists_url":"https://api.github.com/users/byroot/gists{/gist_id}","starred_url":"https://api.github.com/users/byroot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/byroot/subscriptions","organizations_url":"https://api.github.com/users/byroot/orgs","repos_url":"https://api.github.com/users/byroot/repos","events_url":"https://api.github.com/users/byroot/events{/privacy}","received_events_url":"https://api.github.com/users/byroot/received_events","type":"User","user_view_type":"public","site_admin":false},"body":null,"commit_id":"9ab45d85c818c5ae256225bbbce96d1f877396a1","state":"commented","html_url":"https://github.com/ruby/ruby/pull/16737#pullrequestreview-4111482286","pull_request_url":"https://api.github.com/repos/ruby/ruby/pulls/16737","_links":{"html":{"href":"https://github.com/ruby/ruby/pull/16737#pullrequestreview-4111482286"},"pull_request":{"href":"https://api.github.com/repos/ruby/ruby/pulls/16737"}},"submitted_at":"2026-04-15T07:08:28Z","updated_at":"2026-04-15T07:08:28Z"},"pull_request":{"url":"https://api.github.com/repos/ruby/ruby/pulls/16737","id":3525539784,"number":16737,"head":{"ref":"ivar_foreach_buffered","sha":"9ab45d85c818c5ae256225bbbce96d1f877396a1","repo":{"id":193747446,"url":"https://api.github.com/repos/jhawthorn/ruby","name":"ruby"}},"base":{"ref":"master","sha":"93f1010f70a3ac924c3b37e4ae82cf1a669fcbf0","repo":{"id":538746,"url":"https://api.github.com/repos/ruby/ruby","name":"ruby"}}},"action":"created"},"public":true,"created_at":"2026-04-15T07:08:30Z","org":{"id":210414,"login":"ruby","gravatar_id":"","url":"https://api.github.com/orgs/ruby","avatar_url":"https://avatars.githubusercontent.com/u/210414?"}},{"id":"8430770813","type":"PullRequestReviewCommentEvent","actor":{"id":44640,"login":"byroot","display_login":"byroot","gravatar_id":"","url":"https://api.github.com/users/byroot","avatar_url":"https://avatars.githubusercontent.com/u/44640?"},"repo":{"id":538746,"name":"ruby/ruby","url":"https://api.github.com/repos/ruby/ruby"},"payload":{"action":"created","comment":{"url":"https://api.github.com/repos/ruby/ruby/pulls/comments/3084596606","pull_request_review_id":4111482286,"id":3084596606,"node_id":"PRRC_kwDOAAg4es632zV-","diff_hunk":"@@ -2353,10 +2362,39 @@ rb_field_foreach(VALUE obj, rb_ivar_foreach_callback_func *func, st_data_t arg,\n     }\n }\n \n+struct ivar_buf_entry {\n+    ID name;\n+    VALUE val;\n+};\n+\n+static int\n+collect_ivar_i(ID id, VALUE val, st_data_t arg)\n+{\n+    struct ivar_buf_entry **pos = (struct ivar_buf_entry **)arg;\n+    (*pos)->name = id;\n+    (*pos)->val = val;\n+    (*pos)++;\n+    return ST_CONTINUE;\n+}\n+\n void\n rb_ivar_foreach(VALUE obj, rb_ivar_foreach_callback_func *func, st_data_t arg)\n {\n-    rb_field_foreach(obj, func, arg, true);\n+    st_index_t count = rb_ivar_count(obj);\n+    if (count == 0) return;\n+\n+    VALUE tmpbuf;\n+    struct ivar_buf_entry *buf = ALLOCV_N(struct ivar_buf_entry, tmpbuf, count);","path":"variable.c","commit_id":"9ab45d85c818c5ae256225bbbce96d1f877396a1","original_commit_id":"9ab45d85c818c5ae256225bbbce96d1f877396a1","user":{"login":"byroot","id":44640,"node_id":"MDQ6VXNlcjQ0NjQw","avatar_url":"https://avatars.githubusercontent.com/u/44640?v=4","gravatar_id":"","url":"https://api.github.com/users/byroot","html_url":"https://github.com/byroot","followers_url":"https://api.github.com/users/byroot/followers","following_url":"https://api.github.com/users/byroot/following{/other_user}","gists_url":"https://api.github.com/users/byroot/gists{/gist_id}","starred_url":"https://api.github.com/users/byroot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/byroot/subscriptions","organizations_url":"https://api.github.com/users/byroot/orgs","repos_url":"https://api.github.com/users/byroot/repos","events_url":"https://api.github.com/users/byroot/events{/privacy}","received_events_url":"https://api.github.com/users/byroot/received_events","type":"User","user_view_type":"public","site_admin":false},"body":"What worries me slightly here is that `rb_ivar_foreach` now allocate when called on objects with over 512 ivars, which we're very unlikely to have coverage for, so we could end up calling it in a context were allocations aren't allowed without realizing.\n\ne.g. not sure that's actually the case there, but we call in `ractor.c: obj_traverse_i`.\n\nPerhaps it would be better to keep `rb_ivar_foreach` as is was, and instead add a `_safe` variant? (perhaps not worth it?)","created_at":"2026-04-15T07:08:28Z","updated_at":"2026-04-15T07:08:28Z","html_url":"https://github.com/ruby/ruby/pull/16737#discussion_r3084596606","pull_request_url":"https://api.github.com/repos/ruby/ruby/pulls/16737","_links":{"self":{"href":"https://api.github.com/repos/ruby/ruby/pulls/comments/3084596606"},"html":{"href":"https://github.com/ruby/ruby/pull/16737#discussion_r3084596606"},"pull_request":{"href":"https://api.github.com/repos/ruby/ruby/pulls/16737"}},"reactions":{"url":"https://api.github.com/repos/ruby/ruby/pulls/comments/3084596606/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"original_position":72,"position":72,"subject_type":"line"},"pull_request":{"url":"https://api.github.com/repos/ruby/ruby/pulls/16737","id":3525539784,"number":16737,"head":{"ref":"ivar_foreach_buffered","sha":"9ab45d85c818c5ae256225bbbce96d1f877396a1","repo":{"id":193747446,"url":"https://api.github.com/repos/jhawthorn/ruby","name":"ruby"}},"base":{"ref":"master","sha":"93f1010f70a3ac924c3b37e4ae82cf1a669fcbf0","repo":{"id":538746,"url":"https://api.github.com/repos/ruby/ruby","name":"ruby"}}}},"public":true,"created_at":"2026-04-15T07:08:28Z","org":{"id":210414,"login":"ruby","gravatar_id":"","url":"https://api.github.com/orgs/ruby","avatar_url":"https://avatars.githubusercontent.com/u/210414?"}},{"id":"10599079618","type":"PushEvent","actor":{"id":29403229,"login":"matzbot","display_login":"matzbot","gravatar_id":"","url":"https://api.github.com/users/matzbot","avatar_url":"https://avatars.githubusercontent.com/u/29403229?"},"repo":{"id":538746,"name":"ruby/ruby","url":"https://api.github.com/repos/ruby/ruby"},"payload":{"repository_id":538746,"push_id":32890967764,"ref":"refs/heads/master","head":"84f7692242fa41c0e4ec4ecfe469cd91c67bd8a8","before":"5b4d95b8d03b17c80f2b54a1e92b74df2bb9f63e"},"public":true,"created_at":"2026-04-15T06:38:21Z","org":{"id":210414,"login":"ruby","gravatar_id":"","url":"https://api.github.com/orgs/ruby","avatar_url":"https://avatars.githubusercontent.com/u/210414?"}},{"id":"8429704281","type":"PullRequestReviewEvent","actor":{"id":44640,"login":"byroot","display_login":"byroot","gravatar_id":"","url":"https://api.github.com/users/byroot","avatar_url":"https://avatars.githubusercontent.com/u/44640?"},"repo":{"id":538746,"name":"ruby/ruby","url":"https://api.github.com/repos/ruby/ruby"},"payload":{"review":{"id":4111303593,"node_id":"PRR_kwDOAAg4es71DYOp","user":{"login":"byroot","id":44640,"node_id":"MDQ6VXNlcjQ0NjQw","avatar_url":"https://avatars.githubusercontent.com/u/44640?v=4","gravatar_id":"","url":"https://api.github.com/users/byroot","html_url":"https://github.com/byroot","followers_url":"https://api.github.com/users/byroot/followers","following_url":"https://api.github.com/users/byroot/following{/other_user}","gists_url":"https://api.github.com/users/byroot/gists{/gist_id}","starred_url":"https://api.github.com/users/byroot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/byroot/subscriptions","organizations_url":"https://api.github.com/users/byroot/orgs","repos_url":"https://api.github.com/users/byroot/repos","events_url":"https://api.github.com/users/byroot/events{/privacy}","received_events_url":"https://api.github.com/users/byroot/received_events","type":"User","user_view_type":"public","site_admin":false},"body":null,"commit_id":"9ab45d85c818c5ae256225bbbce96d1f877396a1","state":"commented","html_url":"https://github.com/ruby/ruby/pull/16737#pullrequestreview-4111303593","pull_request_url":"https://api.github.com/repos/ruby/ruby/pulls/16737","_links":{"html":{"href":"https://github.com/ruby/ruby/pull/16737#pullrequestreview-4111303593"},"pull_request":{"href":"https://api.github.com/repos/ruby/ruby/pulls/16737"}},"submitted_at":"2026-04-15T06:31:08Z","updated_at":"2026-04-15T06:31:09Z"},"pull_request":{"url":"https://api.github.com/repos/ruby/ruby/pulls/16737","id":3525539784,"number":16737,"head":{"ref":"ivar_foreach_buffered","sha":"9ab45d85c818c5ae256225bbbce96d1f877396a1","repo":{"id":193747446,"url":"https://api.github.com/repos/jhawthorn/ruby","name":"ruby"}},"base":{"ref":"master","sha":"93f1010f70a3ac924c3b37e4ae82cf1a669fcbf0","repo":{"id":538746,"url":"https://api.github.com/repos/ruby/ruby","name":"ruby"}}},"action":"created"},"public":true,"created_at":"2026-04-15T06:31:11Z","org":{"id":210414,"login":"ruby","gravatar_id":"","url":"https://api.github.com/orgs/ruby","avatar_url":"https://avatars.githubusercontent.com/u/210414?"}},{"id":"8429703276","type":"PullRequestReviewCommentEvent","actor":{"id":44640,"login":"byroot","display_login":"byroot","gravatar_id":"","url":"https://api.github.com/users/byroot","avatar_url":"https://avatars.githubusercontent.com/u/44640?"},"repo":{"id":538746,"name":"ruby/ruby","url":"https://api.github.com/repos/ruby/ruby"},"payload":{"action":"created","comment":{"url":"https://api.github.com/repos/ruby/ruby/pulls/comments/3084422667","pull_request_review_id":4111303593,"id":3084422667,"node_id":"PRRC_kwDOAAg4es632I4L","diff_hunk":"@@ -970,6 +970,69 @@ def initialize\n     assert_not_include(s, \"@password=\")\n   end\n \n+  def test_inspect_mutating_ivar","path":"test/ruby/test_object.rb","commit_id":"9ab45d85c818c5ae256225bbbce96d1f877396a1","original_commit_id":"9ab45d85c818c5ae256225bbbce96d1f877396a1","user":{"login":"byroot","id":44640,"node_id":"MDQ6VXNlcjQ0NjQw","avatar_url":"https://avatars.githubusercontent.com/u/44640?v=4","gravatar_id":"","url":"https://api.github.com/users/byroot","html_url":"https://github.com/byroot","followers_url":"https://api.github.com/users/byroot/followers","following_url":"https://api.github.com/users/byroot/following{/other_user}","gists_url":"https://api.github.com/users/byroot/gists{/gist_id}","starred_url":"https://api.github.com/users/byroot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/byroot/subscriptions","organizations_url":"https://api.github.com/users/byroot/orgs","repos_url":"https://api.github.com/users/byroot/repos","events_url":"https://api.github.com/users/byroot/events{/privacy}","received_events_url":"https://api.github.com/users/byroot/received_events","type":"User","user_view_type":"public","site_admin":false},"body":"It might be easier to write these tests in `test_shape.rb` which already has a number of helpers etc to create complex shapes and such.","created_at":"2026-04-15T06:31:09Z","updated_at":"2026-04-15T06:31:09Z","html_url":"https://github.com/ruby/ruby/pull/16737#discussion_r3084422667","pull_request_url":"https://api.github.com/repos/ruby/ruby/pulls/16737","_links":{"self":{"href":"https://api.github.com/repos/ruby/ruby/pulls/comments/3084422667"},"html":{"href":"https://github.com/ruby/ruby/pull/16737#discussion_r3084422667"},"pull_request":{"href":"https://api.github.com/repos/ruby/ruby/pulls/16737"}},"reactions":{"url":"https://api.github.com/repos/ruby/ruby/pulls/comments/3084422667/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"original_position":4,"position":4,"subject_type":"line"},"pull_request":{"url":"https://api.github.com/repos/ruby/ruby/pulls/16737","id":3525539784,"number":16737,"head":{"ref":"ivar_foreach_buffered","sha":"9ab45d85c818c5ae256225bbbce96d1f877396a1","repo":{"id":193747446,"url":"https://api.github.com/repos/jhawthorn/ruby","name":"ruby"}},"base":{"ref":"master","sha":"93f1010f70a3ac924c3b37e4ae82cf1a669fcbf0","repo":{"id":538746,"url":"https://api.github.com/repos/ruby/ruby","name":"ruby"}}}},"public":true,"created_at":"2026-04-15T06:31:09Z","org":{"id":210414,"login":"ruby","gravatar_id":"","url":"https://api.github.com/orgs/ruby","avatar_url":"https://avatars.githubusercontent.com/u/210414?"}},{"id":"8429666002","type":"PullRequestReviewEvent","actor":{"id":44640,"login":"byroot","display_login":"byroot","gravatar_id":"","url":"https://api.github.com/users/byroot","avatar_url":"https://avatars.githubusercontent.com/u/44640?"},"repo":{"id":538746,"name":"ruby/ruby","url":"https://api.github.com/repos/ruby/ruby"},"payload":{"review":{"id":4111297822,"node_id":"PRR_kwDOAAg4es71DW0e","user":{"login":"byroot","id":44640,"node_id":"MDQ6VXNlcjQ0NjQw","avatar_url":"https://avatars.githubusercontent.com/u/44640?v=4","gravatar_id":"","url":"https://api.github.com/users/byroot","html_url":"https://github.com/byroot","followers_url":"https://api.github.com/users/byroot/followers","following_url":"https://api.github.com/users/byroot/following{/other_user}","gists_url":"https://api.github.com/users/byroot/gists{/gist_id}","starred_url":"https://api.github.com/users/byroot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/byroot/subscriptions","organizations_url":"https://api.github.com/users/byroot/orgs","repos_url":"https://api.github.com/users/byroot/repos","events_url":"https://api.github.com/users/byroot/events{/privacy}","received_events_url":"https://api.github.com/users/byroot/received_events","type":"User","user_view_type":"public","site_admin":false},"body":null,"commit_id":"9ab45d85c818c5ae256225bbbce96d1f877396a1","state":"commented","html_url":"https://github.com/ruby/ruby/pull/16737#pullrequestreview-4111297822","pull_request_url":"https://api.github.com/repos/ruby/ruby/pulls/16737","_links":{"html":{"href":"https://github.com/ruby/ruby/pull/16737#pullrequestreview-4111297822"},"pull_request":{"href":"https://api.github.com/repos/ruby/ruby/pulls/16737"}},"submitted_at":"2026-04-15T06:29:40Z","updated_at":"2026-04-15T06:29:40Z"},"pull_request":{"url":"https://api.github.com/repos/ruby/ruby/pulls/16737","id":3525539784,"number":16737,"head":{"ref":"ivar_foreach_buffered","sha":"9ab45d85c818c5ae256225bbbce96d1f877396a1","repo":{"id":193747446,"url":"https://api.github.com/repos/jhawthorn/ruby","name":"ruby"}},"base":{"ref":"master","sha":"93f1010f70a3ac924c3b37e4ae82cf1a669fcbf0","repo":{"id":538746,"url":"https://api.github.com/repos/ruby/ruby","name":"ruby"}}},"action":"created"},"public":true,"created_at":"2026-04-15T06:29:42Z","org":{"id":210414,"login":"ruby","gravatar_id":"","url":"https://api.github.com/orgs/ruby","avatar_url":"https://avatars.githubusercontent.com/u/210414?"}},{"id":"8429665135","type":"PullRequestReviewCommentEvent","actor":{"id":44640,"login":"byroot","display_login":"byroot","gravatar_id":"","url":"https://api.github.com/users/byroot","avatar_url":"https://avatars.githubusercontent.com/u/44640?"},"repo":{"id":538746,"name":"ruby/ruby","url":"https://api.github.com/repos/ruby/ruby"},"payload":{"action":"created","comment":{"url":"https://api.github.com/repos/ruby/ruby/pulls/comments/3084417105","pull_request_review_id":4111297822,"id":3084417105,"node_id":"PRRC_kwDOAAg4es632HhR","diff_hunk":"@@ -970,6 +970,69 @@ def initialize\n     assert_not_include(s, \"@password=\")\n   end\n \n+  def test_inspect_mutating_ivar\n+    obj = Object.new\n+    evil = Object.new\n+    evil.define_singleton_method(:inspect) do\n+      obj.instance_variables.each { |v| obj.remove_instance_variable(v) }\n+      \"evil\"\n+    end\n+    obj.instance_variable_set(:@evil, evil)\n+    10.times { |i| obj.instance_variable_set(:\"@v#{i}\", 0) }\n+    # Buffered iteration: inspect sees a snapshot of the original ivars\n+    result = obj.inspect\n+    assert_include result, \"@evil=evil\"\n+    10.times { |i| assert_include result, \"@v#{i}=0\" }\n+  end\n+\n+  def test_inspect_mutating_ivar_too_complex\n+    # Force too_complex by creating many shape variations on the same class\n+    c = Class.new\n+    50.times do |i|\n+      o = c.new\n+      o.instance_variable_set(:\"@unique_#{i}\", 0)\n+    end\n+\n+    obj = c.new\n+    evil = Object.new\n+    evil.define_singleton_method(:inspect) do\n+      obj.instance_variables.each { |v| obj.remove_instance_variable(v) }\n+      \"\"\n+    end\n+    obj.instance_variable_set(:@evil, evil)\n+    10.times { |i| obj.instance_variable_set(:\"@v#{i}\", 0) }\n+    # too_complex objects use st_foreach which handles mutation gracefully\n+    obj.inspect\n+  end\n+\n+  def test_inspect_too_complex\n+    kernel_inspect = Kernel.instance_method(:inspect)\n+\n+    klasses = [\n+      Class.new,\n+      Class.new(String),\n+      Class.new(Array),\n+      Class.new(Hash),\n+      Struct.new(:x),\n+      Class.new(Thread::Mutex),\n+      # It's very difficult to get a too_complex T_CLASS, to that isn't tested here","path":"test/ruby/test_object.rb","commit_id":"9ab45d85c818c5ae256225bbbce96d1f877396a1","original_commit_id":"9ab45d85c818c5ae256225bbbce96d1f877396a1","user":{"login":"byroot","id":44640,"node_id":"MDQ6VXNlcjQ0NjQw","avatar_url":"https://avatars.githubusercontent.com/u/44640?v=4","gravatar_id":"","url":"https://api.github.com/users/byroot","html_url":"https://github.com/byroot","followers_url":"https://api.github.com/users/byroot/followers","following_url":"https://api.github.com/users/byroot/following{/other_user}","gists_url":"https://api.github.com/users/byroot/gists{/gist_id}","starred_url":"https://api.github.com/users/byroot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/byroot/subscriptions","organizations_url":"https://api.github.com/users/byroot/orgs","repos_url":"https://api.github.com/users/byroot/repos","events_url":"https://api.github.com/users/byroot/events{/privacy}","received_events_url":"https://api.github.com/users/byroot/received_events","type":"User","user_view_type":"public","site_admin":false},"body":"```suggestion\n      # It's very difficult to get a too_complex T_CLASS, so that isn't tested here\n```","created_at":"2026-04-15T06:29:40Z","updated_at":"2026-04-15T06:29:40Z","html_url":"https://github.com/ruby/ruby/pull/16737#discussion_r3084417105","pull_request_url":"https://api.github.com/repos/ruby/ruby/pulls/16737","_links":{"self":{"href":"https://api.github.com/repos/ruby/ruby/pulls/comments/3084417105"},"html":{"href":"https://github.com/ruby/ruby/pull/16737#discussion_r3084417105"},"pull_request":{"href":"https://api.github.com/repos/ruby/ruby/pulls/16737"}},"reactions":{"url":"https://api.github.com/repos/ruby/ruby/pulls/comments/3084417105/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"original_position":49,"position":49,"subject_type":"line"},"pull_request":{"url":"https://api.github.com/repos/ruby/ruby/pulls/16737","id":3525539784,"number":16737,"head":{"ref":"ivar_foreach_buffered","sha":"9ab45d85c818c5ae256225bbbce96d1f877396a1","repo":{"id":193747446,"url":"https://api.github.com/repos/jhawthorn/ruby","name":"ruby"}},"base":{"ref":"master","sha":"93f1010f70a3ac924c3b37e4ae82cf1a669fcbf0","repo":{"id":538746,"url":"https://api.github.com/repos/ruby/ruby","name":"ruby"}}}},"public":true,"created_at":"2026-04-15T06:29:40Z","org":{"id":210414,"login":"ruby","gravatar_id":"","url":"https://api.github.com/orgs/ruby","avatar_url":"https://avatars.githubusercontent.com/u/210414?"}},{"id":"8429540742","type":"IssueCommentEvent","actor":{"id":44640,"login":"byroot","display_login":"byroot","gravatar_id":"","url":"https://api.github.com/users/byroot","avatar_url":"https://avatars.githubusercontent.com/u/44640?"},"repo":{"id":538746,"name":"ruby/ruby","url":"https://api.github.com/repos/ruby/ruby"},"payload":{"action":"created","issue":{"url":"https://api.github.com/repos/ruby/ruby/issues/16737","repository_url":"https://api.github.com/repos/ruby/ruby","labels_url":"https://api.github.com/repos/ruby/ruby/issues/16737/labels{/name}","comments_url":"https://api.github.com/repos/ruby/ruby/issues/16737/comments","events_url":"https://api.github.com/repos/ruby/ruby/issues/16737/events","html_url":"https://github.com/ruby/ruby/pull/16737","id":4258321850,"node_id":"PR_kwDOAAg4es7SI3fI","number":16737,"title":"Use buffer in rb_ivar_foreach","user":{"login":"jhawthorn","id":131752,"node_id":"MDQ6VXNlcjEzMTc1Mg==","avatar_url":"https://avatars.githubusercontent.com/u/131752?v=4","gravatar_id":"","url":"https://api.github.com/users/jhawthorn","html_url":"https://github.com/jhawthorn","followers_url":"https://api.github.com/users/jhawthorn/followers","following_url":"https://api.github.com/users/jhawthorn/following{/other_user}","gists_url":"https://api.github.com/users/jhawthorn/gists{/gist_id}","starred_url":"https://api.github.com/users/jhawthorn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jhawthorn/subscriptions","organizations_url":"https://api.github.com/users/jhawthorn/orgs","repos_url":"https://api.github.com/users/jhawthorn/repos","events_url":"https://api.github.com/users/jhawthorn/events{/privacy}","received_events_url":"https://api.github.com/users/jhawthorn/received_events","type":"User","user_view_type":"public","site_admin":false},"labels":[],"state":"open","locked":false,"assignees":[],"milestone":null,"comments":2,"created_at":"2026-04-13T22:44:41Z","updated_at":"2026-04-15T10:27:44Z","closed_at":null,"assignee":null,"type":null,"active_lock_reason":null,"draft":false,"pull_request":{"url":"https://api.github.com/repos/ruby/ruby/pulls/16737","html_url":"https://github.com/ruby/ruby/pull/16737","diff_url":"https://github.com/ruby/ruby/pull/16737.diff","patch_url":"https://github.com/ruby/ruby/pull/16737.patch","merged_at":null},"body":"Previously, rb_ivar_foreach would walk up the shape tree, but yield\r\ninstance variables to the callback as it went. If the object shape was\r\nmodified during this callback, particularly with removing an instance\r\nvariable, it could result in reading free'd memory.\r\n\r\nThis commit solves this by buffering all instance variable names and\r\nvalues before calling the callback, giving a snapshot of the object at\r\nthe time rb_ivar_foreach is called.\r\n\r\nThe buffer is made with ALLOCV_N, so the performance difference should\r\nbe minimal, and I don't think this method is particuarly heavily used.\r\n\r\n[[Bug #21996]](https://bugs.ruby-lang.org/issues/21996)","reactions":{"url":"https://api.github.com/repos/ruby/ruby/issues/16737/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ruby/ruby/issues/16737/timeline","performed_via_github_app":null,"state_reason":null},"comment":{"url":"https://api.github.com/repos/ruby/ruby/issues/comments/4249786112","html_url":"https://github.com/ruby/ruby/pull/16737#issuecomment-4249786112","issue_url":"https://api.github.com/repos/ruby/ruby/issues/16737","id":4249786112,"node_id":"IC_kwDOAAg4es79TpcA","user":{"login":"byroot","id":44640,"node_id":"MDQ6VXNlcjQ0NjQw","avatar_url":"https://avatars.githubusercontent.com/u/44640?v=4","gravatar_id":"","url":"https://api.github.com/users/byroot","html_url":"https://github.com/byroot","followers_url":"https://api.github.com/users/byroot/followers","following_url":"https://api.github.com/users/byroot/following{/other_user}","gists_url":"https://api.github.com/users/byroot/gists{/gist_id}","starred_url":"https://api.github.com/users/byroot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/byroot/subscriptions","organizations_url":"https://api.github.com/users/byroot/orgs","repos_url":"https://api.github.com/users/byroot/repos","events_url":"https://api.github.com/users/byroot/events{/privacy}","received_events_url":"https://api.github.com/users/byroot/received_events","type":"User","user_view_type":"public","site_admin":false},"created_at":"2026-04-15T06:24:46Z","updated_at":"2026-04-15T06:24:46Z","body":"> If the object shape was modified during this callback, particularly with removing an instance variable, it could result in reading free'd memory.\r\n\r\nI'll keep reading the diff, and try the repro, but I'm trying to understand this part.\r\n\r\nThe shape tree is never freed, so I don't get what freed memory we're accessing, clearly, not shape memory right?","reactions":{"url":"https://api.github.com/repos/ruby/ruby/issues/comments/4249786112/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"performed_via_github_app":null}},"public":true,"created_at":"2026-04-15T06:24:46Z","org":{"id":210414,"login":"ruby","gravatar_id":"","url":"https://api.github.com/orgs/ruby","avatar_url":"https://avatars.githubusercontent.com/u/210414?"}},{"id":"10598579679","type":"PushEvent","actor":{"id":29403229,"login":"matzbot","display_login":"matzbot","gravatar_id":"","url":"https://api.github.com/users/matzbot","avatar_url":"https://avatars.githubusercontent.com/u/29403229?"},"repo":{"id":538746,"name":"ruby/ruby","url":"https://api.github.com/repos/ruby/ruby"},"payload":{"repository_id":538746,"push_id":32890469945,"ref":"refs/heads/master","head":"5b4d95b8d03b17c80f2b54a1e92b74df2bb9f63e","before":"b21043f8ac1aa2aeaaadae4153f4e059aedaf988"},"public":true,"created_at":"2026-04-15T06:21:10Z","org":{"id":210414,"login":"ruby","gravatar_id":"","url":"https://api.github.com/orgs/ruby","avatar_url":"https://avatars.githubusercontent.com/u/210414?"}},{"id":"8427810507","type":"IssueCommentEvent","actor":{"id":121233810,"login":"nozomemein","display_login":"nozomemein","gravatar_id":"","url":"https://api.github.com/users/nozomemein","avatar_url":"https://avatars.githubusercontent.com/u/121233810?"},"repo":{"id":538746,"name":"ruby/ruby","url":"https://api.github.com/repos/ruby/ruby"},"payload":{"action":"created","issue":{"url":"https://api.github.com/repos/ruby/ruby/issues/16746","repository_url":"https://api.github.com/repos/ruby/ruby","labels_url":"https://api.github.com/repos/ruby/ruby/issues/16746/labels{/name}","comments_url":"https://api.github.com/repos/ruby/ruby/issues/16746/comments","events_url":"https://api.github.com/repos/ruby/ruby/issues/16746/events","html_url":"https://github.com/ruby/ruby/pull/16746","id":4265442302,"node_id":"PR_kwDOAAg4es7SeaIS","number":16746,"title":"ZJIT: Use SP for reloading locals","user":{"login":"nozomemein","id":121233810,"node_id":"U_kgDOBznhkg","avatar_url":"https://avatars.githubusercontent.com/u/121233810?v=4","gravatar_id":"","url":"https://api.github.com/users/nozomemein","html_url":"https://github.com/nozomemein","followers_url":"https://api.github.com/users/nozomemein/followers","following_url":"https://api.github.com/users/nozomemein/following{/other_user}","gists_url":"https://api.github.com/users/nozomemein/gists{/gist_id}","starred_url":"https://api.github.com/users/nozomemein/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nozomemein/subscriptions","organizations_url":"https://api.github.com/users/nozomemein/orgs","repos_url":"https://api.github.com/users/nozomemein/repos","events_url":"https://api.github.com/users/nozomemein/events{/privacy}","received_events_url":"https://api.github.com/users/nozomemein/received_events","type":"User","user_view_type":"public","site_admin":false},"labels":[],"state":"open","locked":false,"assignees":[],"milestone":null,"comments":1,"created_at":"2026-04-15T00:09:23Z","updated_at":"2026-04-15T05:15:52Z","closed_at":null,"assignee":null,"type":null,"active_lock_reason":null,"draft":true,"pull_request":{"url":"https://api.github.com/repos/ruby/ruby/pulls/16746","html_url":"https://github.com/ruby/ruby/pull/16746","diff_url":"https://github.com/ruby/ruby/pull/16746.diff","patch_url":"https://github.com/ruby/ruby/pull/16746.patch","merged_at":null},"body":"Closes: https://github.com/Shopify/ruby/issues/769\r\n\r\nUse `SP` for reloading locals after block-backed send-ish instructions when EP has not escaped.\r\nTo make that safe, add a `NoEPEscape` patch point before the reload and use a post-send snapshot for side exits, so exiting does not re-execute the send in the interpreter.","reactions":{"url":"https://api.github.com/repos/ruby/ruby/issues/16746/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ruby/ruby/issues/16746/timeline","performed_via_github_app":null,"state_reason":null},"comment":{"url":"https://api.github.com/repos/ruby/ruby/issues/comments/4249418410","html_url":"https://github.com/ruby/ruby/pull/16746#issuecomment-4249418410","issue_url":"https://api.github.com/repos/ruby/ruby/issues/16746","id":4249418410,"node_id":"IC_kwDOAAg4es79SPqq","user":{"login":"nozomemein","id":121233810,"node_id":"U_kgDOBznhkg","avatar_url":"https://avatars.githubusercontent.com/u/121233810?v=4","gravatar_id":"","url":"https://api.github.com/users/nozomemein","html_url":"https://github.com/nozomemein","followers_url":"https://api.github.com/users/nozomemein/followers","following_url":"https://api.github.com/users/nozomemein/following{/other_user}","gists_url":"https://api.github.com/users/nozomemein/gists{/gist_id}","starred_url":"https://api.github.com/users/nozomemein/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nozomemein/subscriptions","organizations_url":"https://api.github.com/users/nozomemein/orgs","repos_url":"https://api.github.com/users/nozomemein/repos","events_url":"https://api.github.com/users/nozomemein/events{/privacy}","received_events_url":"https://api.github.com/users/nozomemein/received_events","type":"User","user_view_type":"public","site_admin":false},"created_at":"2026-04-15T05:15:52Z","updated_at":"2026-04-15T05:15:52Z","body":"I found an issue related to this PR.\r\nFilled: https://github.com/Shopify/ruby/issues/976","reactions":{"url":"https://api.github.com/repos/ruby/ruby/issues/comments/4249418410/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"performed_via_github_app":null}},"public":true,"created_at":"2026-04-15T05:15:52Z","org":{"id":210414,"login":"ruby","gravatar_id":"","url":"https://api.github.com/orgs/ruby","avatar_url":"https://avatars.githubusercontent.com/u/210414?"}},{"id":"8426581465","type":"PullRequestReviewEvent","actor":{"id":142719,"login":"rwstauner","display_login":"rwstauner","gravatar_id":"","url":"https://api.github.com/users/rwstauner","avatar_url":"https://avatars.githubusercontent.com/u/142719?"},"repo":{"id":538746,"name":"ruby/ruby","url":"https://api.github.com/repos/ruby/ruby"},"payload":{"review":{"id":4110732577,"node_id":"PRR_kwDOAAg4es71BM0h","user":{"login":"rwstauner","id":142719,"node_id":"MDQ6VXNlcjE0MjcxOQ==","avatar_url":"https://avatars.githubusercontent.com/u/142719?v=4","gravatar_id":"","url":"https://api.github.com/users/rwstauner","html_url":"https://github.com/rwstauner","followers_url":"https://api.github.com/users/rwstauner/followers","following_url":"https://api.github.com/users/rwstauner/following{/other_user}","gists_url":"https://api.github.com/users/rwstauner/gists{/gist_id}","starred_url":"https://api.github.com/users/rwstauner/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rwstauner/subscriptions","organizations_url":"https://api.github.com/users/rwstauner/orgs","repos_url":"https://api.github.com/users/rwstauner/repos","events_url":"https://api.github.com/users/rwstauner/events{/privacy}","received_events_url":"https://api.github.com/users/rwstauner/received_events","type":"User","user_view_type":"public","site_admin":false},"body":null,"commit_id":"aaee7f9bb01ffc283e0081c3ffb652d8f54ad425","state":"approved","html_url":"https://github.com/ruby/ruby/pull/16743#pullrequestreview-4110732577","pull_request_url":"https://api.github.com/repos/ruby/ruby/pulls/16743","_links":{"html":{"href":"https://github.com/ruby/ruby/pull/16743#pullrequestreview-4110732577"},"pull_request":{"href":"https://api.github.com/repos/ruby/ruby/pulls/16743"}},"submitted_at":"2026-04-15T04:25:55Z","updated_at":"2026-04-15T04:25:55Z"},"pull_request":{"url":"https://api.github.com/repos/ruby/ruby/pulls/16743","id":3529866965,"number":16743,"head":{"ref":"zjit-request-review","sha":"aaee7f9bb01ffc283e0081c3ffb652d8f54ad425","repo":{"id":44536396,"url":"https://api.github.com/repos/k0kubun/ruby","name":"ruby"}},"base":{"ref":"master","sha":"93f1010f70a3ac924c3b37e4ae82cf1a669fcbf0","repo":{"id":538746,"url":"https://api.github.com/repos/ruby/ruby","name":"ruby"}}},"action":"created"},"public":true,"created_at":"2026-04-15T04:25:56Z","org":{"id":210414,"login":"ruby","gravatar_id":"","url":"https://api.github.com/orgs/ruby","avatar_url":"https://avatars.githubusercontent.com/u/210414?"}},{"id":"8426211085","type":"PullRequestEvent","actor":{"id":41898282,"login":"github-actions[bot]","display_login":"github-actions","gravatar_id":"","url":"https://api.github.com/users/github-actions[bot]","avatar_url":"https://avatars.githubusercontent.com/u/41898282?"},"repo":{"id":538746,"name":"ruby/ruby","url":"https://api.github.com/repos/ruby/ruby"},"payload":{"action":"labeled","number":16749,"pull_request":{"url":"https://api.github.com/repos/ruby/ruby/pulls/16749","id":3531741899,"number":16749,"head":{"ref":"fix-calling-methods-rdoc-typo","sha":"4cb2fbf277c75771fcd3ea0dcbc08d10893cb3e2","repo":{"id":1211060347,"url":"https://api.github.com/repos/JohnnyKei/ruby","name":"ruby"}},"base":{"ref":"master","sha":"b21043f8ac1aa2aeaaadae4153f4e059aedaf988","repo":{"id":538746,"url":"https://api.github.com/repos/ruby/ruby","name":"ruby"}}},"label":{"id":670832961,"node_id":"MDU6TGFiZWw2NzA4MzI5NjE=","url":"https://api.github.com/repos/ruby/ruby/labels/Documentation","name":"Documentation","color":"0e8a16","default":false,"description":"Improvements to documentation."},"labels":[{"id":670832961,"node_id":"MDU6TGFiZWw2NzA4MzI5NjE=","url":"https://api.github.com/repos/ruby/ruby/labels/Documentation","name":"Documentation","color":"0e8a16","default":false,"description":"Improvements to documentation."}]},"public":true,"created_at":"2026-04-15T04:05:30Z","org":{"id":210414,"login":"ruby","gravatar_id":"","url":"https://api.github.com/orgs/ruby","avatar_url":"https://avatars.githubusercontent.com/u/210414?"}},{"id":"8426207675","type":"PullRequestEvent","actor":{"id":6628975,"login":"JohnnyKei","display_login":"JohnnyKei","gravatar_id":"","url":"https://api.github.com/users/JohnnyKei","avatar_url":"https://avatars.githubusercontent.com/u/6628975?"},"repo":{"id":538746,"name":"ruby/ruby","url":"https://api.github.com/repos/ruby/ruby"},"payload":{"action":"opened","number":16749,"pull_request":{"url":"https://api.github.com/repos/ruby/ruby/pulls/16749","id":3531741899,"number":16749,"head":{"ref":"fix-calling-methods-rdoc-typo","sha":"4cb2fbf277c75771fcd3ea0dcbc08d10893cb3e2","repo":{"id":1211060347,"url":"https://api.github.com/repos/JohnnyKei/ruby","name":"ruby"}},"base":{"ref":"master","sha":"b21043f8ac1aa2aeaaadae4153f4e059aedaf988","repo":{"id":538746,"url":"https://api.github.com/repos/ruby/ruby","name":"ruby"}}}},"public":true,"created_at":"2026-04-15T04:05:30Z","org":{"id":210414,"login":"ruby","gravatar_id":"","url":"https://api.github.com/orgs/ruby","avatar_url":"https://avatars.githubusercontent.com/u/210414?"}},{"id":"8425063163","type":"ForkEvent","actor":{"id":6628975,"login":"JohnnyKei","display_login":"JohnnyKei","gravatar_id":"","url":"https://api.github.com/users/JohnnyKei","avatar_url":"https://avatars.githubusercontent.com/u/6628975?"},"repo":{"id":538746,"name":"ruby/ruby","url":"https://api.github.com/repos/ruby/ruby"},"payload":{"action":"forked","forkee":{"id":1211060347,"node_id":"R_kgDOSC9Qew","name":"ruby","full_name":"JohnnyKei/ruby","private":false,"owner":{"login":"JohnnyKei","id":6628975,"node_id":"MDQ6VXNlcjY2Mjg5NzU=","avatar_url":"https://avatars.githubusercontent.com/u/6628975?v=4","gravatar_id":"","url":"https://api.github.com/users/JohnnyKei","html_url":"https://github.com/JohnnyKei","followers_url":"https://api.github.com/users/JohnnyKei/followers","following_url":"https://api.github.com/users/JohnnyKei/following{/other_user}","gists_url":"https://api.github.com/users/JohnnyKei/gists{/gist_id}","starred_url":"https://api.github.com/users/JohnnyKei/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JohnnyKei/subscriptions","organizations_url":"https://api.github.com/users/JohnnyKei/orgs","repos_url":"https://api.github.com/users/JohnnyKei/repos","events_url":"https://api.github.com/users/JohnnyKei/events{/privacy}","received_events_url":"https://api.github.com/users/JohnnyKei/received_events","type":"User","user_view_type":"public","site_admin":false},"html_url":"https://github.com/JohnnyKei/ruby","description":"The Ruby Programming Language","fork":true,"url":"https://api.github.com/repos/JohnnyKei/ruby","forks_url":"https://api.github.com/repos/JohnnyKei/ruby/forks","keys_url":"https://api.github.com/repos/JohnnyKei/ruby/keys{/key_id}","collaborators_url":"https://api.github.com/repos/JohnnyKei/ruby/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/JohnnyKei/ruby/teams","hooks_url":"https://api.github.com/repos/JohnnyKei/ruby/hooks","issue_events_url":"https://api.github.com/repos/JohnnyKei/ruby/issues/events{/number}","events_url":"https://api.github.com/repos/JohnnyKei/ruby/events","assignees_url":"https://api.github.com/repos/JohnnyKei/ruby/assignees{/user}","branches_url":"https://api.github.com/repos/JohnnyKei/ruby/branches{/branch}","tags_url":"https://api.github.com/repos/JohnnyKei/ruby/tags","blobs_url":"https://api.github.com/repos/JohnnyKei/ruby/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/JohnnyKei/ruby/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/JohnnyKei/ruby/git/refs{/sha}","trees_url":"https://api.github.com/repos/JohnnyKei/ruby/git/trees{/sha}","statuses_url":"https://api.github.com/repos/JohnnyKei/ruby/statuses/{sha}","languages_url":"https://api.github.com/repos/JohnnyKei/ruby/languages","stargazers_url":"https://api.github.com/repos/JohnnyKei/ruby/stargazers","contributors_url":"https://api.github.com/repos/JohnnyKei/ruby/contributors","subscribers_url":"https://api.github.com/repos/JohnnyKei/ruby/subscribers","subscription_url":"https://api.github.com/repos/JohnnyKei/ruby/subscription","commits_url":"https://api.github.com/repos/JohnnyKei/ruby/commits{/sha}","git_commits_url":"https://api.github.com/repos/JohnnyKei/ruby/git/commits{/sha}","comments_url":"https://api.github.com/repos/JohnnyKei/ruby/comments{/number}","issue_comment_url":"https://api.github.com/repos/JohnnyKei/ruby/issues/comments{/number}","contents_url":"https://api.github.com/repos/JohnnyKei/ruby/contents/{+path}","compare_url":"https://api.github.com/repos/JohnnyKei/ruby/compare/{base}...{head}","merges_url":"https://api.github.com/repos/JohnnyKei/ruby/merges","archive_url":"https://api.github.com/repos/JohnnyKei/ruby/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/JohnnyKei/ruby/downloads","issues_url":"https://api.github.com/repos/JohnnyKei/ruby/issues{/number}","pulls_url":"https://api.github.com/repos/JohnnyKei/ruby/pulls{/number}","milestones_url":"https://api.github.com/repos/JohnnyKei/ruby/milestones{/number}","notifications_url":"https://api.github.com/repos/JohnnyKei/ruby/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/JohnnyKei/ruby/labels{/name}","releases_url":"https://api.github.com/repos/JohnnyKei/ruby/releases{/id}","deployments_url":"https://api.github.com/repos/JohnnyKei/ruby/deployments","created_at":"2026-04-15T03:03:15Z","updated_at":"2026-04-15T03:03:15Z","pushed_at":"2026-04-15T03:13:45Z","git_url":"git://github.com/JohnnyKei/ruby.git","ssh_url":"git@github.com:JohnnyKei/ruby.git","clone_url":"https://github.com/JohnnyKei/ruby.git","svn_url":"https://github.com/JohnnyKei/ruby","homepage":"https://www.ruby-lang.org/","size":304619,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"has_discussions":false,"forks_count":0,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":0,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"has_pull_requests":true,"pull_request_creation_policy":"all","topics":[],"visibility":"public","forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"public":true,"created_at":"2026-04-15T03:03:15Z","org":{"id":210414,"login":"ruby","gravatar_id":"","url":"https://api.github.com/orgs/ruby","avatar_url":"https://avatars.githubusercontent.com/u/210414?"}},{"id":"8424979694","type":"IssueCommentEvent","actor":{"id":556213,"login":"BurdetteLamar","display_login":"BurdetteLamar","gravatar_id":"","url":"https://api.github.com/users/BurdetteLamar","avatar_url":"https://avatars.githubusercontent.com/u/556213?"},"repo":{"id":538746,"name":"ruby/ruby","url":"https://api.github.com/repos/ruby/ruby"},"payload":{"action":"created","issue":{"url":"https://api.github.com/repos/ruby/ruby/issues/16742","repository_url":"https://api.github.com/repos/ruby/ruby","labels_url":"https://api.github.com/repos/ruby/ruby/issues/16742/labels{/name}","comments_url":"https://api.github.com/repos/ruby/ruby/issues/16742/comments","events_url":"https://api.github.com/repos/ruby/ruby/issues/16742/events","html_url":"https://github.com/ruby/ruby/pull/16742","id":4263087203,"node_id":"PR_kwDOAAg4es7SWyMf","number":16742,"title":"[DOC] Add links to timestamps doc","user":{"login":"BurdetteLamar","id":556213,"node_id":"MDQ6VXNlcjU1NjIxMw==","avatar_url":"https://avatars.githubusercontent.com/u/556213?v=4","gravatar_id":"","url":"https://api.github.com/users/BurdetteLamar","html_url":"https://github.com/BurdetteLamar","followers_url":"https://api.github.com/users/BurdetteLamar/followers","following_url":"https://api.github.com/users/BurdetteLamar/following{/other_user}","gists_url":"https://api.github.com/users/BurdetteLamar/gists{/gist_id}","starred_url":"https://api.github.com/users/BurdetteLamar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/BurdetteLamar/subscriptions","organizations_url":"https://api.github.com/users/BurdetteLamar/orgs","repos_url":"https://api.github.com/users/BurdetteLamar/repos","events_url":"https://api.github.com/users/BurdetteLamar/events{/privacy}","received_events_url":"https://api.github.com/users/BurdetteLamar/received_events","type":"User","user_view_type":"public","site_admin":false},"labels":[{"id":670832961,"node_id":"MDU6TGFiZWw2NzA4MzI5NjE=","url":"https://api.github.com/repos/ruby/ruby/labels/Documentation","name":"Documentation","color":"0e8a16","default":false,"description":"Improvements to documentation."}],"state":"open","locked":false,"assignees":[],"milestone":null,"comments":3,"created_at":"2026-04-14T15:24:38Z","updated_at":"2026-04-15T02:58:29Z","closed_at":null,"assignee":null,"type":null,"active_lock_reason":null,"draft":false,"pull_request":{"url":"https://api.github.com/repos/ruby/ruby/pulls/16742","html_url":"https://github.com/ruby/ruby/pull/16742","diff_url":"https://github.com/ruby/ruby/pull/16742.diff","patch_url":"https://github.com/ruby/ruby/pull/16742.patch","merged_at":null},"body":null,"reactions":{"url":"https://api.github.com/repos/ruby/ruby/issues/16742/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/ruby/ruby/issues/16742/timeline","performed_via_github_app":null,"state_reason":null},"comment":{"url":"https://api.github.com/repos/ruby/ruby/issues/comments/4248813062","html_url":"https://github.com/ruby/ruby/pull/16742#issuecomment-4248813062","issue_url":"https://api.github.com/repos/ruby/ruby/issues/16742","id":4248813062,"node_id":"IC_kwDOAAg4es79P74G","user":{"login":"BurdetteLamar","id":556213,"node_id":"MDQ6VXNlcjU1NjIxMw==","avatar_url":"https://avatars.githubusercontent.com/u/556213?v=4","gravatar_id":"","url":"https://api.github.com/users/BurdetteLamar","html_url":"https://github.com/BurdetteLamar","followers_url":"https://api.github.com/users/BurdetteLamar/followers","following_url":"https://api.github.com/users/BurdetteLamar/following{/other_user}","gists_url":"https://api.github.com/users/BurdetteLamar/gists{/gist_id}","starred_url":"https://api.github.com/users/BurdetteLamar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/BurdetteLamar/subscriptions","organizations_url":"https://api.github.com/users/BurdetteLamar/orgs","repos_url":"https://api.github.com/users/BurdetteLamar/repos","events_url":"https://api.github.com/users/BurdetteLamar/events{/privacy}","received_events_url":"https://api.github.com/users/BurdetteLamar/received_events","type":"User","user_view_type":"public","site_admin":false},"created_at":"2026-04-15T02:58:29Z","updated_at":"2026-04-15T02:58:29Z","body":"> `atime` methods only?\r\n\r\nMore to come.  All in good time.","reactions":{"url":"https://api.github.com/repos/ruby/ruby/issues/comments/4248813062/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"performed_via_github_app":null}},"public":true,"created_at":"2026-04-15T02:58:29Z","org":{"id":210414,"login":"ruby","gravatar_id":"","url":"https://api.github.com/orgs/ruby","avatar_url":"https://avatars.githubusercontent.com/u/210414?"}},{"id":"8424670626","type":"PullRequestEvent","actor":{"id":16700,"login":"nobu","display_login":"nobu","gravatar_id":"","url":"https://api.github.com/users/nobu","avatar_url":"https://avatars.githubusercontent.com/u/16700?"},"repo":{"id":538746,"name":"ruby/ruby","url":"https://api.github.com/repos/ruby/ruby"},"payload":{"action":"merged","number":16747,"pull_request":{"url":"https://api.github.com/repos/ruby/ruby/pulls/16747","id":3531451250,"number":16747,"head":{"ref":"master","sha":"3d672bbdccf3eff744981099ca94673abe1d5908","repo":{"id":516066,"url":"https://api.github.com/repos/nobu/ruby","name":"ruby"}},"base":{"ref":"master","sha":"edb95b13a3789617095f9c4f1d4b8e9bcee23344","repo":{"id":538746,"url":"https://api.github.com/repos/ruby/ruby","name":"ruby"}}}},"public":true,"created_at":"2026-04-15T02:41:59Z","org":{"id":210414,"login":"ruby","gravatar_id":"","url":"https://api.github.com/orgs/ruby","avatar_url":"https://avatars.githubusercontent.com/u/210414?"}},{"id":"10593220673","type":"PushEvent","actor":{"id":16700,"login":"nobu","display_login":"nobu","gravatar_id":"","url":"https://api.github.com/users/nobu","avatar_url":"https://avatars.githubusercontent.com/u/16700?"},"repo":{"id":538746,"name":"ruby/ruby","url":"https://api.github.com/repos/ruby/ruby"},"payload":{"repository_id":538746,"push_id":32885144412,"ref":"refs/heads/master","head":"b21043f8ac1aa2aeaaadae4153f4e059aedaf988","before":"40189f8f951bd0f655baaf26a774ee83cb9a04a5"},"public":true,"created_at":"2026-04-15T02:42:01Z","org":{"id":210414,"login":"ruby","gravatar_id":"","url":"https://api.github.com/orgs/ruby","avatar_url":"https://avatars.githubusercontent.com/u/210414?"}},{"id":"10592811128","type":"DeleteEvent","actor":{"id":29403229,"login":"matzbot","display_login":"matzbot","gravatar_id":"","url":"https://api.github.com/users/matzbot","avatar_url":"https://avatars.githubusercontent.com/u/29403229?"},"repo":{"id":538746,"name":"ruby/ruby","url":"https://api.github.com/repos/ruby/ruby"},"payload":{"ref":"dependabot/github_actions/github-actions-7459a93872","ref_type":"branch","full_ref":"refs/heads/dependabot/github_actions/github-actions-7459a93872","pusher_type":"user"},"public":true,"created_at":"2026-04-15T02:24:53Z","org":{"id":210414,"login":"ruby","gravatar_id":"","url":"https://api.github.com/orgs/ruby","avatar_url":"https://avatars.githubusercontent.com/u/210414?"}},{"id":"10592810544","type":"PushEvent","actor":{"id":29403229,"login":"matzbot","display_login":"matzbot","gravatar_id":"","url":"https://api.github.com/users/matzbot","avatar_url":"https://avatars.githubusercontent.com/u/29403229?"},"repo":{"id":538746,"name":"ruby/ruby","url":"https://api.github.com/repos/ruby/ruby"},"payload":{"repository_id":538746,"push_id":32884736849,"ref":"refs/heads/master","head":"40189f8f951bd0f655baaf26a774ee83cb9a04a5","before":"edb95b13a3789617095f9c4f1d4b8e9bcee23344"},"public":true,"created_at":"2026-04-15T02:24:51Z","org":{"id":210414,"login":"ruby","gravatar_id":"","url":"https://api.github.com/orgs/ruby","avatar_url":"https://avatars.githubusercontent.com/u/210414?"}}]