[ruby-core:123495] [Ruby Feature#19326] Please add a better API for passing a Proc to a Ractor
From:
sdwolfz via ruby-core <ruby-core@...>
Date:
2025-10-18 13:34:25 UTC
List:
ruby-core #123495
SXNzdWUgIzE5MzI2IGhhcyBiZWVuIHVwZGF0ZWQgYnkgc2R3b2xmeiAoQ29kcnXImyBHdciZb2kp Lg0KDQoNCmJ5cm9vdCAoSmVhbiBCb3Vzc2llcikgd3JvdGUgaW4gI25vdGUtMTM6DQo+IEkgdGhp bmsgd2UgY2FuIGNsb3NlIG5vdz8NCg0KYGBgcnVieQ0KcmVxdWlyZSAncHAnDQoNCmNsYXNzIFdv cmtlcg0KICBkZWYgaW5pdGlhbGl6ZSgqYXJncywgJmJsb2NrKQ0KICAgIEBhcmdzID0gYXJncw0K DQogICAgQGJsb2NrID0gUmFjdG9yLnNoYXJlYWJsZV9wcm9jKCZibG9jaykNCiAgZW5kDQoNCiAg ZGVmIHJ1bihjb3VudCkNCiAgICBAd29ya2VycyA9IEFycmF5Lm5ldyhjb3VudCkgZG8gfGl8DQog ICAgICBSYWN0b3IubmV3KGksIEBhcmdzLCBAYmxvY2spIHsgfGlkLCBhcmdzLCBibGt8IGJsay5j YWxsKGlkLCAqYXJncykgfQ0KICAgIGVuZA0KICBlbmQNCg0KICBkZWYgc2VuZChpbmRleCwgbXNn KQ0KICAgIEB3b3JrZXJzW2luZGV4XS5zZW5kKG1zZykNCiAgZW5kDQplbmQNCg0KcHJpbnRlciA9 IFdvcmtlci5uZXcgZG8NCiAgbG9vcCBkbw0KICAgIG1zZyA9IFJhY3Rvci5yZWNlaXZlDQogICAg YnJlYWsgaWYgbXNnID09IDpzaHV0ZG93bg0KDQogICAgcHAobXNnKQ0KICBlbmQNCmVuZA0KDQpw cmludGVyLnJ1bigxKQ0KDQp3b3JrZXIgPSBXb3JrZXIubmV3KHByaW50ZXIpIGRvIHxpZCwgcHJp bnRlcnwNCiAgbG9vcCBkbw0KICAgIG1zZyA9IFJhY3Rvci5yZWNlaXZlDQogICAgYnJlYWsgaWYg bXNnID09IDpzaHV0ZG93bg0KDQogICAgcHJpbnRlci5zZW5kKDAsIHt3b3JrZXI6IGlkLCBtc2c6 IG1zZ30pDQogIGVuZA0KICBwcmludGVyLnNlbmQoMCwgIndvcmtlciAje2lkfSBkb25lIikNCmVu ZA0KDQp3b3JrZXIucnVuKDMpDQoxMC50aW1lcyB7IHxufCB3b3JrZXIuc2VuZChuICUgMywgIm1l c3NhZ2UgI3tufSIpIH0NCnNsZWVwIDENCmBgYA0KDQpHaXZlczoNCg0KYGBgDQp7d29ya2VyOiAx LCBtc2c6ICJtZXNzYWdlIDEifQ0Ke3dvcmtlcjogMSwgbXNnOiAibWVzc2FnZSA0In0NCnt3b3Jr ZXI6IDEsIG1zZzogIm1lc3NhZ2UgNyJ9DQp7d29ya2VyOiAwLCBtc2c6ICJtZXNzYWdlIDAifQ0K e3dvcmtlcjogMCwgbXNnOiAibWVzc2FnZSAzIn0NCnt3b3JrZXI6IDAsIG1zZzogIm1lc3NhZ2Ug NiJ9DQp7d29ya2VyOiAwLCBtc2c6ICJtZXNzYWdlIDkifQ0Ke3dvcmtlcjogMiwgbXNnOiAibWVz c2FnZSAyIn0NCnt3b3JrZXI6IDIsIG1zZzogIm1lc3NhZ2UgNSJ9DQp7d29ya2VyOiAyLCBtc2c6 ICJtZXNzYWdlIDgifQ0KYGBgDQoNClllcyBpdCBzZWVtcyB0byBiZSB3b3JraW5nIHByb3Blcmx5 Lg0KDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpGZWF0dXJlICMx OTMyNjogUGxlYXNlIGFkZCBhIGJldHRlciBBUEkgZm9yIHBhc3NpbmcgYSBQcm9jIHRvIGEgUmFj dG9yDQpodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy9pc3N1ZXMvMTkzMjYjY2hhbmdlLTExNDg2 Nw0KDQoqIEF1dGhvcjogc2R3b2xmeiAoQ29kcnXImyBHdciZb2kpDQoqIFN0YXR1czogQ2xvc2Vk DQoqIEFzc2lnbmVlOiBrbzEgKEtvaWNoaSBTYXNhZGEpDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tDQpFeGFtcGxlIDE6DQpgYGBydWJ5DQpjbGFzcyBXb3JrZXINCiAg ZGVmIGluaXRpYWxpemUoJmJsb2NrKQ0KICAgIEBibG9jayA9IGJsb2NrDQogIGVuZA0KDQogIGRl ZiBydW4NCiAgICBSYWN0b3IubmV3KEBibG9jaywgJjpjYWxsKQ0KICBlbmQNCmVuZA0KDQp3b3Jr ZXIgPSBXb3JrZXIubmV3IHsgMSB9DQpwdXRzIHdvcmtlci5ydW4udGFrZQ0KYGBgDQoNCkVycm9y cyB3aXRoOg0KYGBgDQo8aW50ZXJuYWw6cmFjdG9yPjoyNzE6aW4gYG5ldyc6IGFsbG9jYXRvciB1 bmRlZmluZWQgZm9yIFByb2MgKFR5cGVFcnJvcikNCiAgICAgICAgZnJvbSBzY3JpcHRzL3J1bi5y Yjo5OmluIGBydW4nDQogICAgICAgIGZyb20gc2NyaXB0cy9ydW4ucmI6MTQ6aW4gYDxtYWluPicN CmBgYA0KDQpFeGFtcGxlIDI6DQpgYGBydWJ5DQpjbGFzcyBXb3JrZXINCiAgZGVmIGluaXRpYWxp emUoJmJsb2NrKQ0KICAgIEBibG9jayA9IFJhY3Rvci5tYWtlX3NoYXJlYWJsZShibG9jaykNCiAg ZW5kDQoNCiAgZGVmIHJ1bg0KICAgIFJhY3Rvci5uZXcoQGJsb2NrLCAmOmNhbGwpDQogIGVuZA0K ZW5kDQoNCndvcmtlciA9IFdvcmtlci5uZXcgeyAxIH0NCnB1dHMgd29ya2VyLnJ1bi50YWtlDQpg YGANCg0KRXJyb3JzIHdpdGg6DQoNCmBgYA0KPGludGVybmFsOnJhY3Rvcj46ODIwOmluIGBtYWtl X3NoYXJlYWJsZSc6IFByb2MncyBzZWxmIGlzIG5vdCBzaGFyZWFibGU6ICM8UHJvYzoweDAwMDA3 ZjAwMzk0YzM4Yjggc2NyaXB0cy9ydW4ucmI6MTM+IChSYWN0b3I6Oklzb2xhdGlvbkVycm9yKQ0K ICAgICAgICBmcm9tIHNjcmlwdHMvcnVuLnJiOjU6aW4gYGluaXRpYWxpemUnDQogICAgICAgIGZy b20gc2NyaXB0cy9ydW4ucmI6MTM6aW4gYG5ldycNCiAgICAgICAgZnJvbSBzY3JpcHRzL3J1bi5y YjoxMzppbiBgPG1haW4+Jw0KYGBgDQoNCkV4YW1wbGUgMzoNCmBgYHJ1YnkNCmNsYXNzIFdvcmtl cg0KICBkZWYgaW5pdGlhbGl6ZSgmYmxvY2spDQogICAgQGJsb2NrID0gUmFjdG9yLm1ha2Vfc2hh cmVhYmxlKGJsb2NrKQ0KICBlbmQNCg0KICBkZWYgcnVuDQogICAgUmFjdG9yLm5ldyhAYmxvY2ss ICY6Y2FsbCkNCiAgZW5kDQplbmQNCg0Kd29ya2VyID0gUmFjdG9yLmN1cnJlbnQuaW5zdGFuY2Vf ZXZhbCB7IFdvcmtlci5uZXcgeyAxIH0gfQ0KcHV0cyB3b3JrZXIucnVuLnRha2UNCmBgYA0KDQpX b3JrcywgYnV0IGhhdmluZyBgUmFjdG9yLmN1cnJlbnQuaW5zdGFuY2VfZXZhbGAgYXMgYSB3cmFw cGVyIGFyb3VuZCB0aGUgYmxvY2sgaXMgbm90IGlkZWFsLCBhcyBSYWN0b3IgaXMgc3VwcG9zZWQg dG8gYmUgb25seSBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgaW4gV29ya2VyLg0KDQpJIGtub3cg YWJvdXQgaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvaXNzdWVzLzE4MjQzIGFuZCB0aGUgZGlz Y3Vzc2lvbiBhcm91bmQgYHByb2MuYmluZChuaWwpYC4gVGhhdCB3b3VsZCBhY3R1YWxseSBiZSBp ZGVhbCwgYXMgZm9yIHRoZSBwdXJwb3NlcyBpZiB3aHkgSSB3YW50IHRoaXMgZnVuY3Rpb25hbGl0 eSBJIGRvbid0IGNhcmUgd2hhdCBgc2VsZmAgaXMgaW4gYSBibG9jaywgYW5kIHRoZSBsZXNzIGl0 IGhhcyBhY2Nlc3MgdG8gdGhlIGJldHRlci4NCg0KVGhlIGdlbmVyYWwgaWRlYSBvZiBXb3JrZXIg aXMgdG8gaGF2ZSBhIFJhY3RvciBiZSBhYmxlIHRvIGxhemlseSBleGVjdXRlIGFuIGFyYml0cmFy eSBwcm9jLiBBbmQgYWxsIHRoZSBiaW5kaW5ncyBpdCB3b3VsZCBuZWVkIHdvdWxkIGJlIHBhc3Nl ZCBleHBsaWNpdGx5LCBlaXRoZXIgdGhyb3VnaCBgYXJnc2AgaW4gdGhlIGNvbnN0cnVjdG9yIG9y IHRocm91Z2ggYHNlbmRgL2ByZWNlaXZlYCwgc28gYHNlbGZgIHdvdWxkIHJlYWxseSBub3QgbWF0 dGVyLg0KDQpUaGUgYmVuZWZpdDogdGhpcyB3b3VsZCBtYWtlIGl0IHNvIGNvbmN1cnJlbnQgY29k ZSBjYW4gYmUgbW9yZSBlYXNpbHkgYmUgaW1wbGVtZW50ZWQgd2l0aCBSYWN0b3JzIGFzIGN1cnJl bnRseSB5b3UgY2FuIGV4ZWN1dGUgYW4gYXJiaXRyYXJ5IHByb2MgYnkgcGFzc2luZyBpdCB0byBh IFRocmVhZCAoYnV0IHlvdSBkb24ndCBnZXQgdGhlIG5pY2UgZGF0YSBpc29sYXRpb24pLg0KDQoN Cg0KLS0gDQpodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy8NCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KIHJ1YnktY29yZSBtYWlsaW5nIGxpc3QgLS0gcnVi eS1jb3JlQG1sLnJ1YnktbGFuZy5vcmcKIFRvIHVuc3Vic2NyaWJlIHNlbmQgYW4gZW1haWwgdG8g cnVieS1jb3JlLWxlYXZlQG1sLnJ1YnktbGFuZy5vcmcKIHJ1YnktY29yZSBpbmZvIC0tIGh0dHBz Oi8vbWwucnVieS1sYW5nLm9yZy9tYWlsbWFuMy9saXN0cy9ydWJ5LWNvcmUubWwucnVieS1sYW5n Lm9yZy8K