[ruby-core:119745] [Ruby master Feature#20855] Introduce `Fiber::Scheduler#blocking_region` to avoid stalling the event loop.
From:
"kjtsanaktsidis (KJ Tsanaktsidis) via ruby-core" <ruby-core@...>
Date:
2024-11-05 16:56:10 UTC
List:
ruby-core #119745
SXNzdWUgIzIwODU1IGhhcyBiZWVuIHVwZGF0ZWQgYnkga2p0c2FuYWt0c2lkaXMgKEtKIFRzYW5h a3RzaWRpcykuDQoNCg0KPiBJZiByYl9ub2d2bCBpcyBjYWxsZWQgaW4gdGhlIGZpYmVyIHNjaGVk dWxlciwgaXQgY2FuIGludHJvZHVjZSBsYXRlbmN5LCBhcyByZWxlYXNpbmcgdGhlIEdWTCB3aWxs IHByZXZlbnQgdGhlIGV2ZW50IGxvb3AgZnJvbSBwcm9ncmVzc2luZyB3aGlsZSBub2d2bCBmdW5j dGlvbiBpcyBleGVjdXRpbmcNCg0KSSBkZWZpbml0ZWx5IHVuZGVyc3RhbmQgdGhlIHByb2JsZW0g aGVyZS4gQnV04oCmIGRlYWxpbmcgd2l0aCBhIGhldGVyb2dlbm91cyBtaXggb2YgY29tcHV0ZSBh bmQgSU8gb3BlcmF0aW9ucyBpcyBleGFjdGx5IHdoYXQgdGhlIE06TiBzY2hlZHVsZXIgaXMgZm9y LCByaWdodD8gSW4gdGhhdCBkZXNpZ24sIGEgUnVieSB0aHJlYWQgaW4gYSByYl9ub2d2bCBibG9j ayBwaW5zIHRoZSBuYXRpdmUgdGhyZWFkLCBidXQgb3RoZXIgUnVieSB0aHJlYWRzIGNhbiBydW4g b24gYSBkaWZmZXJlbnQgbmF0aXZlIHRocmVhZC4NCg0KSSBkb27igJl0IHRoaW5rIHdlIHdhbnQg YSBfc2Vjb25kXyB3YXkgZm9yIFJ1YnkgdGhyZWFkcyB0byBiZSBtb3ZlZCBhcm91bmQgYmV0d2Vl biBuYXRpdmUgdGhyZWFkcy4gU2hvdWxkIHRoaXMgYmUgaW50ZWdyYXRlZCB3aXRoIHRoZSBNOk4g c2NoZWR1bGVyIGluIHNvbWUgd2F5Pw0KDQpJTUhPIEkgdGhpbmsgaXQgc2hvdWxkIGJlIHRoZSBy ZXNwb25zaWJpbGl0eSBvZiBhcHBsaWNhdGlvbnMgbGlrZSBmYWxjb24sIGV0YyB0byBleHBsaWNp dGx5IG9mZmxvYWQgaGVhdnkgd29yayBsaWtlIHpsaWIgb250byBhbiBhcHBsaWNhdGlvbiBtYW5h Z2VkIHRocmVhZCBwb29sLg0KDQpJIHdvbmRlciBpZiBhbm90aGVyIHdheSB0byB0YWNrbGUgdGhp cyBwcm9ibGVtIGlzIHRvIGFkZCBzb21lIG1ldHJpY3Mgb3IgY2FsbGJhY2tzIHRvIHRoZSBmaWJl ciBzY2hlZHVsZXIgQVBJLCBzbyB0aGF0IGUuZy4gYXN5bmMgY291bGQgd2FybiB5b3Ugd2hlbiB0 aGUgZXZlbnQgbG9vcCBpcyBibG9ja2VkIGZvciBhIGxvbmcgdGltZSBhbmQgdGhhdCB5b3Ugc2hv dWxkIGNvbnNpZGVyIHB1bGxpbmcgd29yayBvdXQgaW50byBhIHRocmVhZCBwb29sLg0KDQotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpGZWF0dXJlICMyMDg1NTogSW50 cm9kdWNlIGBGaWJlcjo6U2NoZWR1bGVyI2Jsb2NraW5nX3JlZ2lvbmAgdG8gYXZvaWQgc3RhbGxp bmcgdGhlIGV2ZW50IGxvb3AuDQpodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy9pc3N1ZXMvMjA4 NTUjY2hhbmdlLTExMDQwOQ0KDQoqIEF1dGhvcjogaW9xdWF0aXggKFNhbXVlbCBXaWxsaWFtcykN CiogU3RhdHVzOiBPcGVuDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t DQpUaGUgY3VycmVudCBGaWJlciBTY2hlZHVsZXIgcGVyZm9ybWFuY2UgY2FuIGJlIHNpZ25pZmlj YW50bHkgaW1wYWN0ZWQgYnkgYmxvY2tpbmcgb3BlcmF0aW9ucyB0aGF0IGNhbm5vdCBiZSBkZWZl cnJlZCB0byB0aGUgZXZlbnQgbG9vcCwgcGFydGljdWxhcmx5IGluIGhpZ2gtY29uY3VycmVuY3kg ZW52aXJvbm1lbnRzIHdoZXJlIEZpYmVycyByZWx5IG9uIG5vbi1ibG9ja2luZyBvcGVyYXRpb25z IGZvciBlZmZpY2llbnQgdGFzayBleGVjdXRpb24uDQoNCiMjIFByb2JsZW0gRGVzY3JpcHRpb24N Cg0KRmliZXJzIGluIFJ1YnkgYXJlIGRlc2lnbmVkIHRvIGltcHJvdmUgcGVyZm9ybWFuY2UgYW5k IHJlc3BvbnNpdmVuZXNzIGJ5IGFsbG93aW5nIGNvbmN1cnJlbnQgdGFza3MgdG8gcHJvY2VlZCB3 aXRob3V0IGJsb2NraW5nIG9uZSBhbm90aGVyLiBIb3dldmVyLCBjZXJ0YWluIG9wZXJhdGlvbnMg aW5oZXJlbnRseSBibG9jayB0aGUgZmliZXIgc2NoZWR1bGVyLCBsZWFkaW5nIHRvIGRlbGF5ZWQg ZXhlY3V0aW9uIGFjcm9zcyBvdGhlciBmaWJlcnMuIFdoZW4gYmxvY2tpbmcgb3BlcmF0aW9ucyBh cmUgaW5ldml0YWJsZSwgc3VjaCBhcyBzeXN0ZW0gb3IgQ1BVIGJvdW5kIG9wZXJhdGlvbnMgd2l0 aG91dCBldmVudC1sb29wIHN1cHBvcnQsIHRoZXkgY3JlYXRlIGJvdHRsZW5lY2tzIHRoYXQgZGVn cmFkZSB0aGUgc2NoZWR1bGVyJ3Mgb3ZlcmFsbCBwZXJmb3JtYW5jZS4NCg0KIyMgUHJvcG9zZWQg U29sdXRpb24NCg0KVGhlIHByb3Bvc2VkIHNvbHV0aW9uIGluIFBSIGh0dHBzOi8vZ2l0aHViLmNv bS9ydWJ5L3J1YnkvcHVsbC8xMTk2MyBpbnRyb2R1Y2VzIGEgYGJsb2NraW5nX3JlZ2lvbmAgaG9v ayBpbiB0aGUgZmliZXIgc2NoZWR1bGVyIHRvIGltcHJvdmUgaGFuZGxpbmcgb2YgYmxvY2tpbmcg b3BlcmF0aW9ucy4gVGhpcyBhZGRpdGlvbiBhbGxvd3MgY29kZSB0aGF0IHJlbGVhc2VzIHRoZSBH VkwgKEdsb2JhbCBWTSBMb2NrKSB0byBiZSBsaWZ0ZWQgb3V0IG9mIHRoZSBldmVudCBsb29wLCBy ZWR1Y2luZyB0aGUgcGVyZm9ybWFuY2UgaW1wYWN0IG9uIHRoZSBzY2hlZHVsZXIgZHVyaW5nIGJs b2NraW5nIGNhbGxzLiBCeSBpc29sYXRpbmcgdGhlc2Ugb3BlcmF0aW9ucyBmcm9tIHRoZSBwcmlt YXJ5IGV2ZW50IGxvb3AsIHRoaXMgZW5oYW5jZW1lbnQgYWltcyB0byBpbXByb3ZlIHdvcnN0IGNh c2UgcGVyZm9ybWFuY2UgaW4gdGhlIHByZXNlbmNlIG9mIGJsb2NraW5nIG9wZXJhdGlvbnMuDQoN CiMjIyBgYmxvY2tpbmdfcmVnaW9uKHdvcmspYA0KDQpUaGUgbmV3LCBvcHRpb25hbCwgZmliZXIg c2NoZWR1bGVyIGhvb2sgYGJsb2NraW5nX3JlZ2lvbmAgYWNjZXB0cyBhbiBvcGFxdWUgY2FsbGFi bGUgb2JqZWN0IGB3b3JrYCwgd2hpY2ggZW5jYXBzdWxhdGVzIHdvcmsgdGhhdCBjYW4gYmUgb2Zm bG9hZGVkIHRvIGEgdGhyZWFkIHBvb2wgZm9yIGV4ZWN1dGlvbi4gSWYgdGhlIGhvb2sgaXMgbm90 IGltcGxlbWVudGVkIGByYl9ub2d2bGAgZXhlY3V0ZXMgYXMgdXN1YWwuDQoNCiMjIEV4YW1wbGUN Cg0KYGBgcnVieQ0KcmVxdWlyZSAiemxpYiINCnJlcXVpcmUgImFzeW5jIg0KcmVxdWlyZSAiYmVu Y2htYXJrIg0KDQpEQVRBID0gUmFuZG9tLm5ldy5ieXRlcygxMDI0KjEwMjQqMTAwKQ0KDQpkdXJh dGlvbiA9IEJlbmNobWFyay5tZWFzdXJlIGRvDQogIEFzeW5jIGRvDQogICAgMTAudGltZXMgZG8N CiAgICAgIEFzeW5jIGRvDQogICAgICAgIFpsaWIuZGVmbGF0ZShEQVRBKQ0KICAgICAgZW5kDQog ICAgZW5kDQogIGVuZA0KZW5kDQoNCiMgUnVieSAzLjMuNDogfjE2IHNlY29uZHMNCiMgUnVieSAz LjQuMCArIFBSOiB+MiBzZWNvbmRzLg0KYGBgDQoNCg0KLS0tRmlsZXMtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQ0KY2xpcGJvYXJkLTIwMjQxMTA2MDMxNC1tYnk4ay5wbmcgKDEyMCBL QikNCg0KDQotLSANCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnLw0KIF9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KIHJ1YnktY29yZSBtYWlsaW5nIGxpc3Qg LS0gcnVieS1jb3JlQG1sLnJ1YnktbGFuZy5vcmcKIFRvIHVuc3Vic2NyaWJlIHNlbmQgYW4gZW1h aWwgdG8gcnVieS1jb3JlLWxlYXZlQG1sLnJ1YnktbGFuZy5vcmcKIHJ1YnktY29yZSBpbmZvIC0t IGh0dHBzOi8vbWwucnVieS1sYW5nLm9yZy9tYWlsbWFuMy9saXN0cy9ydWJ5LWNvcmUubWwucnVi eS1sYW5nLm9yZy8=