[ruby-core:118954] [Ruby master Feature#18368] Range#step semantics for non-Numeric ranges
From:
"zverok (Victor Shepelev) via ruby-core" <ruby-core@...>
Date:
2024-08-25 18:14:42 UTC
List:
ruby-core #118954
SXNzdWUgIzE4MzY4IGhhcyBiZWVuIHVwZGF0ZWQgYnkgenZlcm9rIChWaWN0b3IgU2hlcGVsZXYp Lg0KDQoNCkhlcmUgd2UgZ286IGh0dHBzOi8vZ2l0aHViLmNvbS9ydWJ5L3J1YnkvcHVsbC8xMTQ1 NA0KDQpJbiB0aGUgYWJzZW5jZSBvZiBmdXJ0aGVyIGRpc2N1c3Npb24sIEkgd2VudCB3aXRoIG9w dGlvbiAoMyk6IFN0cmluZyByYW5nZXMgc3VwcG9ydCBib3RoIOKAnG9sZOKAnSBhbmQg4oCcbmV3 4oCdIGJlaGF2aW9yLg0KDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t DQpGZWF0dXJlICMxODM2ODogUmFuZ2Ujc3RlcCBzZW1hbnRpY3MgZm9yIG5vbi1OdW1lcmljIHJh bmdlcw0KaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvaXNzdWVzLzE4MzY4I2NoYW5nZS0xMDk1 MjcNCg0KKiBBdXRob3I6IHp2ZXJvayAoVmljdG9yIFNoZXBlbGV2KQ0KKiBTdGF0dXM6IE9wZW4N Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkkgYW0gc29ycnkgaWYg dGhlIHF1ZXN0aW9uIGhhZCBhbHJlYWR5IGJlZW4gZGlzY3Vzc2VkLCBjYW4ndCBmaW5kIHRoZSBy ZWxldmFudCB0b3BpYy4NCg0KIkludHVpdGl2ZWx5IiwgdGhpcyBsb29rcyAoZm9yIG1lKSBsaWtl IGEgbWVhbmluZ2Z1bCBzdGF0ZW1lbnQ6DQoNCmBgYHJ1YnkNCihUaW1lLnBhcnNlKCcyMDIxLTEy LTAxJykuLlRpbWUucGFyc2UoJzIwMjEtMTItMjQnKSkuc3RlcCgxLmRheSkudG9fYQ0KIyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5eXl5e IG9yIGp1c3QgMjQqNjAqNjANCmBgYA0KVW5mb3J0dW5hdGVseSwgaXQgZG9lc24ndCB3b3JrIHdp dGggIlR5cGVFcnJvciAoY2FuJ3QgaXRlcmF0ZSBmcm9tIFRpbWUpIi4NCkluaXRpYWxseSBpdCBs b29rZWQgbGlrZSBhIGJ1ZyBmb3IgbWUsIGJ1dCBhZnRlciBkaWdnaW5nIGEgYml0IGludG8gY29k ZS9kb2NzLCBJIHVuZGVyc3Rvb2QgdGhhdCBgUmFuZ2Ujc3RlcGAgaGFzIGFuIG9kZCBzZW1hbnRp Y3Mgb2YgImFkdmFuY2UgdGhlIGJlZ2luIE4gdGltZXMgd2l0aCBgI3N1Y2NgLCBhbmQgeWllbGQg dGhlIHJlc3VsdCIsIHdpdGggTiBiZWluZyBhbHdheXMgaW50ZWdlcjoNCmBgYHJ1YnkNCignYScu Lid6Jykuc3RlcCgzKS5maXJzdCg1KQ0KIyA9PiBbImEiLCAiZCIsICJnIiwgImoiLCAibSJdDQpg YGANCg0KVGhlIGZhY3QgdGhhdCBzZW1hbnRpYyBpcyAib2RkIiBpcyBjb25maXJtZWQgYnkgdGhl IGZhY3QgdGhhdCBmb3IgRmxvYXQgaXQgaXMgcmVkZWZpbmVkIHRvIGRvIHdoYXQgSSAiaW50dWl0 aXZlbHkiIGV4cGVjdGVkOg0KYGBgcnVieQ0KKDEuMC4uNy4wKS5zdGVwKDAuMykuZmlyc3QoNSkN CiMgPT4gWzEuMCwgMS4zLCAxLjYsIDEuOSwgMi4yXSANCmBgYA0KKExpa2Ugd2l0aCBbYFJhbmdl Iz09PWAgc29tZSB0aW1lIGFnb10oaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvaXNzdWVzLzE0 NTc1KSwgSSBiZWxpZXZlIHRoYXQgdG8gYmUgYSBzdHJvbmcgcHJvb2Ygb2YgdGhlIHdyb25nIGdl bmVyaWMgc2VtYW50aWNzLCBpZiBmb3IgbnVtYmVycyB0aGUgc2VtYW50aWNzIG5lZWRlZCB0byBi ZSByZWRlZmluZWQgY29tcGxldGVseS4pDQoNCkFub3RoZXIgdGhpbmcgdG8gbm90ZSBpcyB0aGF0 ICJza2lwIE4gZWxlbWVudHMiIHNlZW0gdG8gYmUgcmF0aGVyICJnZW5lcmljYWxseSBFbnVtZXJh YmxlLXJlbGF0ZWQiIHlldCBpdCBpc24ndCBkZWZpbmVkIG9uIGBFbnVtZXJhYmxlYCAoYmVjYXVz ZSBub2JvZHkgbmVlZHMgdGhpcyBzZW1hbnRpY3MsIHR5cGljYWxseSEpDQoNCkhlbmNlLCB0d28g cXVlc3Rpb25zOg0KKiBDYW4gd2UgcmVkZWZpbmUgZ2VuZXJpYyBgUmFuZ2Ujc3RlcGAgdG8gbmV3 IHNlbWFudGljcyAob2YgdXNpbmcgYGJlZ2luICsgc3RlcGAgaXRlcmF0aXZlbHkpPyBJdCBpcyBo YXJkIHRvIGltYWdpbmUgdGhlIGFtb3VudCBvZiBhY3R1YWwgdXNhZ2Ugb2YgdGhlIG9sZCBiZWhh dmlvciAod2l0aCBTdHJpbmc/Li4gdG8gd2hhdCBlbmQ/KSBpbiB0aGUgd2lsZA0KKiBJZiB0aGUg YW5zd2VyIGlzICJubyIsIGNhbiB3ZSBkZWZpbmUgYSBuZXcgbWV0aG9kIHdpdGggbmV3IHNlbWFu dGljcywgbGlrZSwgSURLLCBgUmFuZ2Ujb3ZlcihzcGFuKWA/DQoNCioqVVBEOioqIE1vcmUgZXhh bXBsZXMgb2YgdXNlZnVsIGJlaGF2aW9yIChpdCBpcyBOT1Qgb25seSBhYm91dCBjb3JlIGBUaW1l YCBjbGFzcyk6DQoNCmBgYHJ1YnkNCnJlcXVpcmUgJ2FjdGl2ZV9zdXBwb3J0L2FsbCcNCg0KKDEu bWludXRlLi4yMC5taW51dGVzKS5zdGVwKDIubWludXRlcykudG9fYQ0KIz0+IFsxIG1pbnV0ZSwg MyBtaW51dGVzLCA1IG1pbnV0ZXMsIDcgbWludXRlcywgOSBtaW51dGVzLCAxMSBtaW51dGVzLCAx MyBtaW51dGVzLCAxNSBtaW51dGVzLCAxNyBtaW51dGVzLCAxOSBtaW51dGVzXQ0KDQpyZXF1aXJl ICd0b2QnDQoNCihUb2Q6OlRpbWVPZkRheS5wYXJzZSgiOGFtIikuLlRvZDo6VGltZU9mRGF5LnBh cnNlKCIxMGFtIikpLnN0ZXAoMzAubWludXRlcykudG9fYSANCiM9PiBbIzxUb2Q6OlRpbWVPZkRh eSAwODowMDowMD4sICM8VG9kOjpUaW1lT2ZEYXkgMDg6MzA6MDA+LCAjPFRvZDo6VGltZU9mRGF5 IDA5OjAwOjAwPiwgIzxUb2Q6OlRpbWVPZkRheSAwOTozMDowMD4sICM8VG9kOjpUaW1lT2ZEYXkg MTA6MDA6MDA+XQ0KDQoNCnJlcXVpcmUgJ21hdHJpeCcNCihWZWN0b3JbMSwgMiwgM10uLikuc3Rl cChWZWN0b3JbMSwgMSwgMV0pLnRha2UoMykNCiM9PiBbVmVjdG9yWzEsIDIsIDNdLCBWZWN0b3Jb MiwgMywgNF0sIFZlY3RvclszLCA0LCA1XV0NCg0KcmVxdWlyZSAndW5pdHdpc2UnDQooVW5pdHdp c2UoMCwgJ2ttJykuLlVuaXR3aXNlKDEsICdrbScpKS5zdGVwKFVuaXR3aXNlKDEwMCwgJ20nKSku bWFwKCY6dG9fcykNCiM9PiBbIjAga20iLCAiMS8xMCBrbSIsICIxLzUga20iLCAiMy8xMCBrbSIs ICIyLzUga20iLCAiMC41IGttIiwgIjMvNSBrbSIsICI3LzEwIGttIiwgIjQvNSBrbSIsICI5LzEw IGttIiwgIjEga20iXQ0KYGBgDQoNCg0KKipVUEQ6KiogUmVzcG9uZGluZyB0byBkaXNjdXNzaW9u IHBvaW50czoNCg0KKipROioqIE1hdHogaXMgY29uY2VybmVkIHRoYXQgdGhlIHByb3Bvc2VkIHNp bXBsZSBkZWZpbml0aW9uIHdpbGwgYmUgY29uZnVzaW5nIHdpdGggdGhlIGNsYXNzZXMgd2hlcmUg YCtgIGlzIHJlZGVmaW5lZCBhcyBjb25jYXRlbmF0aW9uLg0KDQoqKkE6KiogSSBiZWxpZXZlIHRo YXQgc2ltcGxpY2l0eSBvZiBzZW1hbnRpY3MgYW5kIGVhc2Ugb2YgZXhwbGFpbmluZyAoIml0IGp1 c3QgdXNlcyBgK2AgdW5kZXJuZWF0aCwgd2hhdGV2ZXIgYCtgIGRvZXMsIHdpbGwgYmUgcGVyZm9y bWVkIikgd2lsbCBtYWtlIHRoZSBjb25mdXNpb24gbWluaW1hbC4NCg0KKipROioqIFdoeSBub3Qg aW50cm9kdWNlIG5ldyBBUEkgcmVxdWlyZW1lbnQgKGxpa2UgImNsYXNzIG9mIHJhbmdlJ3MgYGJl Z2luYCBzaG91bGQgaW1wbGVtZW50IGBpbmNyZW1lbnRgIG1ldGhvZCwgYW5kIHRoZW4gaXQgd2ls bCBiZSB1c2VkIGluIGBzdGVwYCkNCg0KKipBOioqIHJlcXVpcmUgKmV2ZXJ5KiBnZW0gYXV0aG9y IHRvIGNoYW5nZSAqZXZlcnkqIG9mIHRoZWlyIG9iamVjdHMnIGJlaGF2aW9yLiBGb3IgdGhhdCwg dGhleSBzaG91bGQgYmUgYXdhcmUgb2YgdGhlIGNoYW5nZSwgY29uc2lkZXIgaXQgaW1wb3J0YW50 IGVub3VnaCB0byBjYXJlLCBjbGVhcmx5IHVuZGVyc3RhbmQgdGhlIG5lY2Vzc2FyeSBzZW1hbnRp Y3Mgb2YgaW1wbGVtZW50YXRpb24sIGhhdmUgYSByZXNvdXJjZSB0byByZWxlYXNlIGEgbmV3IHZl cnNpb24uLi4gVGhlbiBhbGwgdXNlcnMgb2YgYWxsIHN1Y2ggZ2VtcyB3b3VsZCBiZSByZXF1aXJl ZCB0byB1cGdyYWRlLiBUaGUgZmVhdHVyZSB3b3VsZCBiZSBET0EgKGRlYWQtb24tYXJyaXZhbCku DQoNClRoZSB0d28gYWx0ZXJuYXRpdmUgd2F5cyBJIGFtIHN1Z2dlc3Rpbmc6IGNoYW5nZSB0aGUg YmVoYXZpb3Igb2YgYCNzdGVwYCBvciBpbnRyb2R1Y2UgYSBuZXcgbWV0aG9kIHdpdGggZGVzaXJl ZCBiZWhhdmlvcjoNCjEuIEVhc3kgdG8gZXhwbGFpbiBhbmQgYW5ub3VuY2UNCjIuIFJlcXVpcmUg bm8gb3RoZXIgY29kZSBjaGFuZ2VzIHRvIGltbWVkaWF0ZWx5IGJlY29tZSB1c2VmdWwNCjMuIFdp dGggc29tZXRoaW5nIGxpa2UgW2JhY2twb3J0c10oaHR0cHM6Ly9naXRodWIuY29tL21hcmNhbmRy ZS9iYWNrcG9ydHMpIG9yIFtydWJ5LW5leHRdKGh0dHBzOi8vZ2l0aHViLmNvbS9ydWJ5LW5leHQv cnVieS1uZXh0KSBlYXN5IHRvIHN0YXJ0IHVzaW5nIGV2ZW4gaW4gb2xkZXIgUnVieSB2ZXJzaW9u LCBtYWtpbmcgdGhlIGNvZGUgbW9yZSBleHByZXNzaXZlIGV2ZW4gYmVmb3JlIGl0IHdvdWxkIGJl IHBvc3NpYmxlIGZvciBzb21lIHBhcnRpY3VsYXIgYXBwL2NvbXBueSB0byB1cGdyYWRlIHRvIChz YXkpIDMuMg0KDQpBbGwgZXhhbXBsZXMgb2YgYmVoYXZpb3IgZnJvbSB0aGUgY29kZSBhYm92ZSBh cmUgcmVhbCBgaXJiYCBvdXRwdXQgd2l0aCBtb25rZXktcGF0Y2hlZCBgUmFuZ2Ujc3RlcGAsIGRl bW9uc3RyYXRpbmcgaG93IGxpdHRsZSBjaGFuZ2Ugd2lsbCBiZSBuZWVkZWQgdG8gY29kZSBvdXRz aWRlIG9mIHRoZSBgUmFuZ2VgLg0KDQoNCg0KLS0gDQpodHRwczovL2J1Z3MucnVieS1sYW5nLm9y Zy8NCiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCiBydWJ5 LWNvcmUgbWFpbGluZyBsaXN0IC0tIHJ1YnktY29yZUBtbC5ydWJ5LWxhbmcub3JnCiBUbyB1bnN1 YnNjcmliZSBzZW5kIGFuIGVtYWlsIHRvIHJ1YnktY29yZS1sZWF2ZUBtbC5ydWJ5LWxhbmcub3Jn CiBydWJ5LWNvcmUgaW5mbyAtLSBodHRwczovL21sLnJ1YnktbGFuZy5vcmcvbWFpbG1hbjMvbGlz dHMvcnVieS1jb3JlLm1sLnJ1YnktbGFuZy5vcmcv