[ruby-core:121630] [Ruby Feature#21221] Proposal to upstream ZJIT
From:
"Eregon (Benoit Daloze) via ruby-core" <ruby-core@...>
Date:
2025-04-11 10:16:27 UTC
List:
ruby-core #121630
SXNzdWUgIzIxMjIxIGhhcyBiZWVuIHVwZGF0ZWQgYnkgRXJlZ29uIChCZW5vaXQgRGFsb3plKS4N Cg0KDQpJbnRlcmVzdGluZyB0byBzZWUgd29yayBzdGFydGluZyBvbiBhIENSdWJ5IG9wdGltaXpp bmcgbWV0aG9kLWJhc2VkIEpJVC4NCg0KRm9yIGNvbnRleHQgWUpJVCBpcyBlc3NlbnRpYWxseSBh IGJhc2VsaW5lIEpJVCBnaXZlbiBpdCBkb2VzIGxpdHRsZSBpbmxpbmluZyBhbmQgYXMgeW91IHNh eSBvbmx5IHJlYWxseSBvbmUgb3B0aW1pemF0aW9uIHBhc3MgKFlKSVQgY29tcGlsZXMgWUFSViBi eXRlY29kZSBtb3JlIG9yIGxlc3MgZGlyZWN0bHkgdG8gbWFjaGluZSBjb2RlKS4NCg0KPiBTaWRl LWV4aXQgbXVjaCBsZXNzIG9mdGVuIHRoYW4gWUpJVA0KDQpJc24ndCB0aGlzIHRoZSBtYWluIHJl YXNvbiB0byBtb3ZlIHRvIGEgbWV0aG9kLWJhc2VkIEpJVD8NCg0KSSB0aGluayB0aGUgc2Vjb25k IGFuZCBjb25uZWN0ZWQgcmVhc29uIGlzIGFuIElSIHdvdWxkIGJlIGxlc3MgdXNlZnVsIGZvciBM QkJWIGFzIGl0IGNhbiBvbmx5IG9wdGltaXplIGEgYmFzaWMgYmxvY2sgYXQgYSB0aW1lLCBzaW5j ZSBpdCBkb2VzIG5vdCBrbm93IHdoaWNoIGJyYW5jaCBpcyB0YWtlbiBiZWZvcmUgZ2VuZXJhdGlu ZyBjb2RlIGFuZCBleGVjdXRpbmcgaXQgdG8gZmluZCBvdXQuIE9uZSBjb3VsZCBvcHRpbWl6ZSBh IHRyYWNlL3NlcXVlbmNlIG9mIGJhc2ljIGJsb2NrcyBhdCBvbmNlIGFmdGVyIHRoZSB0cmFjZSdz IGNvZGUgaXMgZ2VuZXJhdGVkICYgZXhlY3V0ZWQgZm9yIGEgbWV0aG9kIGJ1dCB0aGF0IHdvdWxk IG1lYW4gZ2VuZXJhdGluZyBjb2RlIHR3aWNlIGluIHN1Y2Nlc3Npb24uDQpTbyBpbiBzdW1tYXJ5 IChjb3JyZWN0IG1lIGlmIEknbSB3cm9uZykgTEJCViBsaWtlIHRyYWNpbmcgSklUcyBjYW5ub3Qg b3B0aW1pemUgd2VsbCAoZS5nLiBubyBzaWRlIGV4aXRzKSBtdWx0aXBsZSBmcmVxdWVudCBwYXRo cyB3aXRoaW4gYSBtZXRob2QgKG9yIGl0IHdvdWxkIGVmZmVjdGl2ZWx5IGJlY29tZXMgYSBtZXRo b2QgSklUIGFuZCB2ZXJ5IGxpdHRsZSBvZiBMQkJWIHdvdWxkIGJlIHVzZWQgdGhlbikuDQoNCldo YXQgaXMgdGhlIHBsYW4gZm9yIGdhdGhlcmluZyBwcm9maWxpbmcgaW5mb3JtYXRpb24gaW4gWkpJ VCwgZS5nLiByZWNlaXZlciBjbGFzcyBmb3IgY2FsbHMgKHRoZSBpbnRlcnByZXRlciBoYXMgYW4g aW5saW5lIGNhY2hlIGJ1dCBvbmx5IGlmIG1vbm9tb3JwaGljKSwgZm9yIGJyYW5jaGVzICh0byBh dm9pZCBnZW5lcmF0aW5nIGNvZGUgZm9yIG5ldmVyIHVzZWQgYnJhbmNoZXMpLCBldGM/DQoNCi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkZlYXR1cmUgIzIxMjIxOiBQ cm9wb3NhbCB0byB1cHN0cmVhbSBaSklUDQpodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy9pc3N1 ZXMvMjEyMjEjY2hhbmdlLTExMjY4NA0KDQoqIEF1dGhvcjogbWF4aW1lY2IgKE1heGltZSBDaGV2 YWxpZXItQm9pc3ZlcnQpDQoqIFN0YXR1czogT3Blbg0KKiBBc3NpZ25lZTogbWF4aW1lY2IgKE1h eGltZSBDaGV2YWxpZXItQm9pc3ZlcnQpDQoqIFRhcmdldCB2ZXJzaW9uOiAzLjUNCi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQmFja2dyb3VuZA0KDQpGb3IgdGhl IHBhc3QgMyBtb250aHMsIHRoZSBZSklUIHRlYW0gYXQgU2hvcGlmeSBoYXMgYmVlbiB3b3JraW5n IG9uIGEgbmV4dC1nZW5lcmF0aW9uIFJ1YnkgSklULCB3aGljaCB3ZSByZWZlciB0byBhcyBaSklU LiAgVGhpcyBuZXcgY29tcGlsZXIgaXMgY3VycmVudGx5IGJlaW5nIGRldmVsb3BlZCBpbiBhIHBy aXZhdGUgZm9yaywgd2l0aCB0aGUgaG9wZSB0aGF0IHdlIGNhbiBldmVudHVhbGx5IHVwc3RyZWFt IGl0IGludG8gcnVieS9ydWJ5LiBNYXhpbWUgQ2hldmFsaWVyLUJvaXN2ZXJ0IHdpbGwgZ2l2ZSBh IHRhbGsgYXQgUnVieUthaWdpIDIwMjUgdG8gb2ZmaWNpYWxseSBhbm5vdW5jZSB0aGUgcHJvamVj dCB0byB0aGUgUnVieSBjb21tdW5pdHkgYW5kIHRoZSBicm9hZGVyIHB1YmxpYy4NCg0KIyBEZXNp Z24gb2YgWkpJVA0KDQpZSklUIGNvbXBpbGVzIFlBUlYgYnl0ZWNvZGUgbW9yZSBvciBsZXNzIGRp cmVjdGx5IHRvIG1hY2hpbmUgY29kZS4gVGhpcyBoYXMgdGhlIGJlbmVmaXQgdGhhdCBZSklUIGNv bXBpbGVzIGNvZGUgZmFzdCBhbmQgdGhhdCBpdOKAmXMgYSByZWxhdGl2ZWx5IHNpbXBsZSBhcmNo aXRlY3R1cmUsIHdoaWNoIHdhcyBoZWxwZnVsIGluIGJ1aWxkaW5nIHRoZSBjb21waWxlciBpbmNy ZW1lbnRhbGx5LiBUaGUgZG93bnNpZGUgaXMgdGhhdCBZSklUIGlzIGRpZmZpY3VsdCB0byBleHRl bmQgYW5kIGJ1aWxkIHVwb24uIEluIHBhcnRpY3VsYXIsIFlKSVQgaXMgdmVyeSBsaW1pdGVkIHdo ZW4gaXQgY29tZXMgdG8gb3B0aW1pemF0aW9ucyB0aGF0IGNyb3NzIFlBUlYgaW5zdHJ1Y3Rpb24g Ym91bmRhcmllcy4gV2XigJl2ZSBrbm93biBmb3Igc29tZSB0aW1lIHRoYXQgaW4gb3JkZXIgdG8g dW5sb2NrIGhpZ2hlciBsZXZlbHMgb2YgcGVyZm9ybWFuY2UsIGEgUnVieSBKSVQgd291bGQgbmVl ZCB0aGUgYWJpbGl0eSB0byBwZXJmb3JtIG1vcmUgYWdncmVzc2l2ZSBpbmxpbmluZywgYnV0IGl0 IGlzIGNoYWxsZW5naW5nIHRvIGNsZWFubHkgZG8gdGhpcyBpbiBZSklULg0KDQpUaGUgbWFpbiBp bm5vdmF0aW9uIG9mIFpKSVQgaXMgdGhhdCBpdCBoYXMgaXRzIG93biBTdGF0aWMgU2luZ2xlIEFz c2lnbm1lbnQgKFNTQSkgSW50ZXJtZWRpYXRlIFJlcHJlc2VudGF0aW9uIChJUikuIFlBUlYgYnl0 ZWNvZGUgaXMgY29udmVydGVkIGludG8gdGhpcyBJUiwgd2hpY2ggY2FuIHRoZW4gYmUgb3B0aW1p emVkIHVzaW5nIG11bHRpcGxlIG9wdGltaXphdGlvbiBwYXNzZXMuIFRoZXNlIHBhc3NlcyBjYW4g YmUgb3J0aG9nb25hbCBhbmQgbW9kdWxhciB0byBzb21lIGRlZ3JlZSwgd2hpY2ggbWFrZXMgdGhl IGRlc2lnbiBvZiB0aGUgY29tcGlsZXIgZWFzaWVyIHRvIHJlYXNvbiBhYm91dCwgZWFzaWVyIHRv IGV4dGVuZCBhbmQgYWxzbyBvcGVucyB1cCB0aGUgcG9zc2liaWxpdHkgb2YgaGF2aW5nIG11bHRp cGxlIEpJVCBjb21waWxhdGlvbiB0aWVycyBpbiB0aGUgZnV0dXJlLCB3aGljaCBpcyBzb21ldGhp bmcgdGhhdCBib3RoIE1hdHogYW5kIFRha2FzaGkgS29rdWJ1biBoYXZlIGhvcGVkIHRvIHNlZSBp biBhIFJ1YnkgSklUIGZvciBzb21lIHRpbWUuDQoNCkluIGFkZGl0aW9uIHRvIHRoaXMsIHdlIGFy ZSBtb3ZpbmcgdG8gYSBtb3JlIHRyYWRpdGlvbmFsIG1ldGhvZC1iYXNlZCBKSVQgY29tcGlsZXIg ZGVzaWduLiBJIChNYXhpbWUpIGhhdmUgaGFkIHRoZSBjaGFuY2UgdG8gaGVscCBidWlsZCBhbmQg ZGVwbG95IExhenkgQmFzaWMgQmxvY2sgVmVyc2lvbmluZyAoTEJCViksIGFuIG9mZnNob290IG9m IG15IFBoRCByZXNlYXJjaCBpbnRvIGEgcHJvZHVjdGlvbiBjb21waWxlciwgYW4gb3Bwb3J0dW5p dHkgd2hpY2ggSeKAmW0gdmVyeSB0aGFua2Z1bCBmb3IuIEhvd2V2ZXIsIEkgZmVlbCBsaWtlIFpK SVQgbWlnaHQgYmVuZWZpdCBmcm9tIGhhdmluZyBhIGNvbXBpbGVyIGFyY2hpdGVjdHVyZSB0aGF0 IGlzIG1vcmUg4oCcc3RhbmRhcmTigJ0uIFdpdGggWUpJVCwgd2XigJl2ZSBoYWQgdmVyeSBmZXcg Y29udHJpYnV0aW9ucyBmcm9tIFJ1YnkgQ29yZSBjb250cmlidXRvcnMgb3V0c2lkZSBvZiBTaG9w aWZ5LiBJ4oCZbSBob3BpbmcgdGhhdCBpZiB3ZSBidWlsZCBhIGNvbXBpbGVyIHdpdGggYW4gYXJj aGl0ZWN0dXJlIHRoYXQgaXMgbW9yZSB0ZXh0Ym9vay1saWtlLCB3ZSBjb3VsZCBoYXZlIGEgcHJv amVjdCB0aGF0IGlzIG1vcmUgYXBwcm9hY2hhYmxlIGZvciBuZXcgY29udHJpYnV0b3JzIGFuZCB0 aHVzIG1vcmUgaW5jbHVzaXZlIG9mIG90aGVyIFJ1YnkgY29yZSBtZW1iZXJzIG91dHNpZGUgb2Yg U2hvcGlmeSwgd2hpY2ggd291bGQgYmUgZ3JlYXQgZm9yIHRoZSBsb25nLXRlcm0gZnV0dXJlIG9m IFJ1YnkuDQoNCiMgQ3VycmVudCBTdGF0dXMNCg0KSXQgaXMgc3RpbGwgZWFybHkgZGF5cyBmb3Ig WkpJVC4gV2UgYXJlIG9ubHkgMyBtb250aHMgaW50byBpdHMgZGV2ZWxvcG1lbnQuIEFzIHN1Y2gs IFpKSVQgaXMgY3VycmVudGx5IHZlcnkgbXVjaCBpbmNvbXBsZXRlIGFuZCBjYW4gb25seSBydW4g c21hbGwgdGVzdHMgYW5kIG1pY3JvYmVuY2htYXJrcy4gTm9uZXRoZWxlc3MsIHdlIHdvdWxkIHN0 aWxsIGxpa2UgdG8gdXBzdHJlYW0gaXQgYmVjYXVzZSBkZXZlbG9waW5nIGluIGEgZm9yayBtYWtl cyBpdCBtdWNoIGhhcmRlciB0byBrZWVwIHVwIHdpdGggdXBzdHJlYW0gY2hhbmdlcyBpbiBSdWJ5 LiBXZeKAmXJlIGhvcGluZyB0byBicmluZyBpdCBtdWNoIGZhcnRoZXIgYWxvbmcgdGhpcyB5ZWFy LCBhbmQgd2UgYmVsaWV2ZSB0aGF0IFpKSVQgd2lsbCBiZSBmYWlybHkgdW5pbnRydXNpdmUgaW4g dGhlIHVwc3RyZWFtIHJlcG8gZ2l2ZW4gdGhhdCBpdCB3aWxsIGhhdmUgbm8gbW9yZSBkZXBlbmRl bmNpZXMgdGhhbiBZSklULCBhbmQgaXQgd2lsbCBhbHNvIGJlIGd1YXJkZWQgYnkgYSBjb21tYW5k LWxpbmUgc3dpdGNoLg0KUnVieSAzLjUgLyAyMDI1IE9iamVjdGl2ZXMNCk91ciBnb2FsIGZvciB0 aGUgZW5kIG9mIHRoZSB5ZWFyIGlzIHRvIGJyaW5nIFpKSVQgYXBwcm94aW1hdGVseSBhdCBwYXJp dHkgd2l0aCBZSklUIGluIHRlcm1zIG9mIHBlcmZvcm1hbmNlLiBXZSBleHBlY3QgdGhhdCBpdCB3 aWxsIGJlIHJlbGF0aXZlbHkgZWFzeSB0byBvdXRwZXJmb3JtIFlKSVQgb24gc21hbGwgbWljcm9i ZW5jaG1hcmtzLCBidXQgdGhhdCBtYXRjaGluZyBZSklU4oCZcyBwZXJmb3JtYW5jZSBhY3Jvc3Mg bGFyZ2VyIFJ1YnkgcHJvZ3JhbXMgd2lsbCB0YWtlIHNldmVyYWwgbW9udGhzIGJlY2F1c2Ugb2Yg dGhlIGJyZWFkdGggb2YgUnVieSBmZWF0dXJlcyB1c2VkLiBJdCBpcyBub24tdHJpdmlhbCB0byBl ZmZpY2llbnRseSBoYW5kbGUgbWVnYW1vcnBoaWMgY2FsbCBzaXRlcyBtYWtpbmcgdXNlIG9mIGtl eXdvcmQgYXJndW1lbnRzLCBmb3IgaW5zdGFuY2UuDQoNCkl0IHNob3VsZCBub3QgYmUgZGlmZmlj dWx0IHRvIGJyaW5nIFpKSVQgYXQgcGFyaXR5IHdpdGggWUpJVCBpbiB0ZXJtcyBvZiBzdXBwb3J0 ZWQvdW5zdXBwb3J0ZWQgUnVieSBmZWF0dXJlcywgYmVjYXVzZSB0aGUgSklUIGNvbXBpbGVyIGNh biBhbHdheXMgZmFsbCBiYWNrIHRvIHRoZSBpbnRlcnByZXRlciBmb3IgYW55IGZlYXR1cmUgaXQg ZG9lc27igJl0IHN1cHBvcnQuDQoNClNvbWUgZmVhdHVyZXMgd2UgYWltIHRvIGltcGxlbWVudC9j b21wbGV0ZSBpbiB0aW1lIGZvciBSdWJ5IDMuNToNCi0gRmFzdCBKSVQtdG8tSklUIGNhbGxzIHVz aW5nIGEgY3VzdG9tIGNhbGxpbmcgY29udmVudGlvbg0KLSBQb2x5bW9ycGhpYyBpbmxpbmUgY2Fj aGVzDQotIFN1cHBvcnQgZm9yIGZ1bGwgZGVvcHRpbWl6YXRpb24gKGUuZy4gZm9yIFRyYWNlUG9p bnQpDQotIEFiaWxpdHkgdG8gZGVvcHRpbWl6ZSBzaW5nbGUgZnVuY3Rpb25zIChlLmcuIG1ldGhv ZCByZWRlZmluZWQsIGNhbGxlciBnZXRzIGRlb3B0aW1pemVkKQ0KLSBTaWRlLWV4aXQgbXVjaCBs ZXNzIG9mdGVuIHRoYW4gWUpJVCAoY3J1Y2lhbCBmb3IgZ29vZCBwZXJmb3JtYW5jZSkNCi0gQWJp bGl0eSB0byBzZXJpYWxpemUgbWFjaGluZSBjb2RlDQotIERlYWQtY29kZSBlbGltaW5hdGlvbiwg Y29uc3RhbnQgcHJvcGFnYXRpb24NCi0gRnVzaW9uIG9mIGNvbXBhcmlzb24gYW5kIGJyYW5jaCBp bnN0cnVjdGlvbnMNCg0KU3RyZXRjaCBnb2FscyBhbmQgbG9uZ2VyLXRlcm0gZ29hbHM6DQotIFN1 cHBvcnQgdHdvIEpJVCBjb21waWxhdGlvbiB0aWVycw0KLSBBZ2dyZXNzaXZlIGlubGluaW5nIG9m IFJ1YnkgY2FsbHMNCi0gT3B0aW1pemUgR0MgYWxsb2NhdGlvbnMNCi0gQWxsb2NhdGlvbiBlbGlz aW9uIHRvIHNwZWVkIHVwIGFsbG9jYXRpb25zIGFuZCByZWR1Y2UgR0MgcHJlc3N1cmUNCg0KV2Ug YXJlIGN1cnJlbnRseSB1c2luZyBhIG1vZGlmaWVkL2ltcHJvdmVkIHZlcnNpb24gb2YgdGhlIFlK SVQgYmFja2VuZCB0byBnZW5lcmF0ZSBtYWNoaW5lIGNvZGUuIFRoaXMgbWVhbnMgWkpJVCBpcyBj b21pbmcgb3V0IG9mIHRoZSBnYXRlIHdpdGggc3VwcG9ydCBmb3IgYm90aCB4ODYtNjQgYW5kIGFy bTY0LCBhcyBZSklUIGRpZC4NCg0KVGhlIGFiaWxpdHkgdG8gc2VyaWFsaXplIG1hY2hpbmUgY29k ZSBpcyBzb21ldGhpbmcgdGhhdCB3ZSBob3BlIHRvIGJlIGFibGUgdG8gaW1wbGVtZW50IGluIFpK SVQuIFRoaXMgd291bGQgYWxsb3cgdXMgdG8gc2F2ZSBjb21waWxlZCBjb2RlIGFuZCByZXVzZSBp dCBpbiBmdXR1cmUgZXhlY3V0aW9ucyBvZiBhIGdpdmVuIHByb2dyYW0uIFRoaXMgd291bGQgZW5h YmxlIGZhc3RlciBzdGFydHVwIHRpbWVzLiBXZSBrbm93IGZyb20gZXhwZXJpZW5jZSB0aGF0IHRo aXMgaXMgaW1wb3J0YW50IGluIHByb2R1Y3Rpb24gZW52aXJvbm1lbnRzIHN1Y2ggYXMgU2hvcGlm eeKAmXMgd2hlcmUgY29kZSBjYW4gYmUgKHJlKWRlcGxveWVkIHNldmVyYWwgdGltZXMgYSBkYXks IGJ1dCBpdCBhbHNvIG1ha2VzIHNlbnNlIG9uIGEgc21hbGxlciBzY2FsZSB3aGVyZSBpbmRpdmlk dWFscyBydW4gY29kZSBvbiBhIHBlcnNvbmFsIGNvbXB1dGVyIGFuZCBjYW4gYmVuZWZpdCBmcm9t IHNvZnR3YXJlIHN0YXJ0aW5nIHVwIGZhc3Rlci4NCg0KIyBNZXJnaW5nIExvZ2lzdGljcw0KDQpM aWtlIGl0cyBwcmVkZWNlc3NvciwgWkpJVCBpcyB3cml0dGVuIGluIFJ1c3QsIGFuZCBoYXMgdmVy eSBmZXcgZGVwZW5kZW5jaWVzIGJ5IGRlc2lnbi4gSW4gcGFydGljdWxhciwgdGhlcmUgYXJlIG5v IGV4dGVybmFsIGRlcGVuZGVuY2llcyBvdXRzaWRlIG9mIHRoZSBSdXN0IGNvbXBpbGVyIChydXN0 YykgdG8gYnVpbGQgWkpJVCB3aXRoIFJ1YnkuDQoNCkdpdmVuIHRoYXQgaXQgaXMgdmVyeSBlYXJs eSBpbiBaSklU4oCZcyBkZXZlbG9wbWVudCBwcm9jZXNzLCB3ZSB3b3VsZCBsaWtlIHRvIHVwc3Ry ZWFtIFpKSVQgd2l0aG91dCByZXBsYWNpbmcgWUpJVCwgc28gYXMgdG8gZW5zdXJlIHRoYXQgUnVi eSAzLjUgc2hpcHMgd2l0aCBhIHdlbGwtdGVzdGVkLCBwcm9kdWN0aW9uLXJlYWR5IEpJVC4gQXMg d2l0aCBZSklULCB3ZSB3b3VsZCBsaWtlIHRvIHN1Z2dlc3QgdGhhdCBaSklUIHNob3VsZCBiZSBn dWFyZGVkIGJ5IGEgLS16aml0IGNvbW1hbmQtbGluZSBzd2l0Y2guIFNpbmNlIHVzaW5nIHRoZSBj b21waWxlciBpcyBvcHQtaW4sIHRoZXJlIGlzIHZlcnkgbGl0dGxlIHJpc2sgZm9yIHRoZSBhdmVy YWdlIFJ1YnkgdXNlci4gV2UgY2FuIGFkanVzdCB0aGUgd2F5IHdlIGFkdmVydGlzZSBaSklUIGF0 IHRoZSB0aW1lIG9mIHRoZSBSdWJ5IDMuNSByZWxlYXNlIGFuZCBob3cgbXVjaCB3ZSB3YW50IHRo ZSBicm9hZGVyIFJ1YnkgY29tbXVuaXR5IHRvIHRyeSBpdCBiYXNlZCBvbiBpdHMgbGV2ZWwgb2Yg bWF0dXJpdHkgYXQgdGhhdCBwb2ludC4gSWYgWkpJVCBpcyBub3Qgc3VmZmljaWVudGx5IG1hdHVy ZSwgd2UgY2FuIHNpbXBseSB0ZWxsIHBlb3BsZSB0aGF0IGl0IGlzIGV4cGVyaW1lbnRhbCBhbmQg b25seSBmb3IgZW50aHVzaWFzdHMsIGFuZCByZWNvbW1lbmQgdGhhdCB0aGV5IHVzZSBZSklUIGlu c3RlYWQuDQoNCldlIGFyZSBjdXJyZW50bHkgZGV2ZWxvcGluZyBaSklUIHVzaW5nIFJ1c3QgMS44 NS4wIHNvIHRoYXQgd2UgY2FuIHVzZSB0aGUgMjAyNCBlZGl0aW9uIG9mIFJ1c3QuIFRoaXMgc2hv dWxkbuKAmXQgYmUgYSBwcm9ibGVtIHNpbmNlIFJ1c3QgY2FuIGVhc2lseSBiZSBpbnN0YWxsZWQg dXNpbmcgdGhlIHJ1c3R1cCB0b29sLCBhbmQgaWYgYSBzdWZmaWNpZW50bHkgcmVjZW50IFJ1c3Qg Y29tcGlsZXIgaXMgbm90IGF2YWlsYWJsZSwgQ1J1YnkgY2FuIHN0aWxsIGJ1aWxkIHdpdGhvdXQg WkpJVCwgb3Igd2l0aCBZSklUIG9ubHkgKFlKSVQgcmVxdWlyZXMgcnVzdGMgMS41OC4wKS4NCg0K SW4gdGVybXMgb2YgYnVpbGQgc3RyYXRlZ3ksIGlmIGEgcmVjZW50IHZlcnNpb24gb2YgdGhlIFJ1 c3QgY2FyZ28gdG9vbCBpcyBpbnN0YWxsZWQsIGl0IG1heSBiZSBwb3NzaWJsZSB0byBhdXRvbWF0 aWNhbGx5IGJ1aWxkIGJvdGggWUpJVCBhbmQgWkpJVCBpbiB0aGUgc2FtZSBiaW5hcnkuIE90aGVy d2lzZSwgWUpJVCBjb3VsZCBiZSBidWlsdCB3aXRob3V0IFpKSVQgYXMgbG9uZyBhcyBydXN0YyAx LjU4LjAgb3IgbW9yZSBhIHJlY2VudCB2ZXJzaW9uIGlzIGF2YWlsYWJsZS4gSWYgbmVpdGhlciBp cyBhdmFpbGFibGUsIHRoZW4gQ1J1YnkgY2FuIGJlIGJ1aWx0IHdpdGhvdXQgZWl0aGVyIEpJVCBh cyBhIGZhbGxiYWNrLiBBbm90aGVyIHBvc3NpYmlsaXR5LCBpZiB3ZSB3YW50IHRvIGJlIG1vcmUg Y29uc2VydmF0aXZlIGZvciBSdWJ5IDMuNSwgaXMgdG8gb25seSBlbmFibGUgYnVpbGRpbmcgWkpJ VCBpZiBjb25maWd1cmUgaXMgcnVuIHdpdGggYW4gZXhwbGljaXQgLS1lbmFibGUtemppdC4gV2Ug Y2FuIHBvdGVudGlhbGx5IG1ha2UgdGhpcyBkZWNpc2lvbiBjbG9zZXIgdG8gdGhlIGVuZCBvZiB0 aGUgeWVhci4NCg0KVGhlIHRpbWVsaW5lIGZvciB1cHN0cmVhbWluZyB3b3VsZCBiZSBpbiB0aGUg NCB0byA2IHdlZWtzIGZvbGxvd2luZyBSdWJ5S2FpZ2kuIFRvIG1lcmdlIFpKSVQgdXBzdHJlYW0s IHdlIHdpbGwgcmViYXNlIHRoZSBjb21taXRzIG9uIHJ1YnkvcnVieeKAmHMgbWFzdGVyIGJyYW5j aCBhbmQgZ2VuZXJhbGx5IHByZXNlcnZlIHRoZSBjb21taXQgaGlzdG9yeS4gU29tZSBjb21taXQg bWVzc2FnZXMgd2lsbCBiZSBjbGVhbmVkIHVwIGFuZCBpbXByb3ZlZCBwcmlvciB0byBtZXJnaW5n LiBTb21lIGNvbW1pdHMgd2hpY2ggYXJlIGxvZ2ljYWxseSByZWxhdGVkIG1heSBiZSBzcXVhc2hl ZCB0b2dldGhlci4gV2Ugd2lsbCBvbmx5IGVuYWJsZSBhIHNtYWxsIHN1YnNldCBvZiBDSSB0ZXN0 cyBmb3IgWkpJVCBhdCBmaXJzdCwgc28gYXMgdG8ga2VlcCBhbGwgdGVzdHMgcGFzc2luZy4NCg0K DQoNCg0KDQotLSANCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnLw0KIF9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KIHJ1YnktY29yZSBtYWlsaW5nIGxpc3Qg LS0gcnVieS1jb3JlQG1sLnJ1YnktbGFuZy5vcmcKIFRvIHVuc3Vic2NyaWJlIHNlbmQgYW4gZW1h aWwgdG8gcnVieS1jb3JlLWxlYXZlQG1sLnJ1YnktbGFuZy5vcmcKIHJ1YnktY29yZSBpbmZvIC0t IGh0dHBzOi8vbWwucnVieS1sYW5nLm9yZy9tYWlsbWFuMy9saXN0cy9ydWJ5LWNvcmUubWwucnVi eS1sYW5nLm9yZy8=