From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS24940 94.130.0.0/16 X-Spam-Status: No, score=-2.9 required=3.0 tests=AWL,BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_BL_SPAMCOP_NET,SPF_HELO_PASS, SPF_PASS,UNPARSEABLE_RELAY shortcircuit=no autolearn=no autolearn_force=no version=3.4.2 Received: from nue.mailmanlists.eu (nue.mailmanlists.eu [94.130.110.93]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by dcvr.yhbt.net (Postfix) with ESMTPS id 70EEA1F4C1 for ; Wed, 30 Nov 2022 03:13:33 +0000 (UTC) Authentication-Results: dcvr.yhbt.net; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=ruby-lang.org header.i=@ruby-lang.org header.b="ueju5xA5"; dkim-atps=neutral Received: from nue.mailmanlists.eu (localhost [127.0.0.1]) by nue.mailmanlists.eu (Postfix) with ESMTP id 9BB827E8A7; Wed, 30 Nov 2022 03:13:26 +0000 (UTC) Authentication-Results: nue.mailmanlists.eu; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=ruby-lang.org header.i=@ruby-lang.org header.a=rsa-sha256 header.s=s1 header.b=ueju5xA5; dkim-atps=neutral Received: from xtrwkhkc.outbound-mail.sendgrid.net (xtrwkhkc.outbound-mail.sendgrid.net [167.89.16.28]) by nue.mailmanlists.eu (Postfix) with ESMTPS id 1E9757E87C for ; Wed, 30 Nov 2022 03:13:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ruby-lang.org; h=from:references:subject:mime-version:content-type: content-transfer-encoding:list-id:to:cc; s=s1; bh=VC0WLKu49qOSlABk50LgRTNjOAGsFsdr0ZinOFkc7/Q=; b=ueju5xA5B+b2T546AIAhZ6PzCd7cASAEoVDyuAQoccgAsEqI6+XyaSAKoEW63MiHjx5o QWIuQ9YmSn3xCjx7n/r9JV0QWP5tMDgCTREG1S9GTNyUkFl1PcmqJ5/Gkk/uTlPO+QxVuS EeM3DO2TAHYSSWYT/+p5mu4Ecqt9EO+F0OokWFK48wmQblczIr7PQIVQjmQqV2EoiL//Uo yyu1JfDwy6owFGTKy9Fz43+GFZrU9E+b/jVmZo1AxbsEiJFVgIJFTsOzecdr8jxwHygXWh co3Qmr93w2F1Rd3PNKOtnptm6LmkNlTL+WYpePXq4rAWnzYIm9WZ6cxTK6ku1ZAg== Received: by filterdrecv-69c5db5cf4-r5pcf with SMTP id filterdrecv-69c5db5cf4-r5pcf-1-6386CA51-E 2022-11-30 03:13:21.516692474 +0000 UTC m=+1051515.224146753 Received: from herokuapp.com (unknown) by geopod-ismtpd-5-3 (SG) with ESMTP id nxO7H6yXQsi5Fqc3Iwfosw for ; Wed, 30 Nov 2022 03:13:21.414 +0000 (UTC) Date: Wed, 30 Nov 2022 03:13:21 +0000 (UTC) From: "Eregon (Benoit Daloze)" Message-ID: References: Mime-Version: 1.0 X-Redmine-Project: ruby-master X-Redmine-Issue-Tracker: Feature X-Redmine-Issue-Id: 19000 X-Redmine-Issue-Author: RubyBugs X-Redmine-Sender: Eregon X-Mailer: Redmine X-Redmine-Host: bugs.ruby-lang.org X-Redmine-Site: Ruby Issue Tracking System X-Auto-Response-Suppress: All Auto-Submitted: auto-generated X-Redmine-MailingListIntegration-Message-Ids: 87430 X-SG-EID: =?us-ascii?Q?DvL3W2Xo+Vk=2FeUn3F50L=2FNc8u9NqZCnbE0mXZHiyye4R1YZg=2FtAFc0SAFzpcS=2F?= =?us-ascii?Q?Zcr7BqPN=2FYCcMZBMITNeIci9STxYay0JAJWPbek?= =?us-ascii?Q?rFR+qXv9rvTj058eHwi+VJUW9Oy+vp+gbbGoSK9?= =?us-ascii?Q?jRrJp+SrMe=2FjlBEaCvPJEuB0vM3wctO3n2B0TFw?= =?us-ascii?Q?dZguCBDqAcQs1Eixn7qdNyBNgnkhcPXDoSXzhrU?= =?us-ascii?Q?FO4dhYav0jUAT3ZsH=2F8XiFmNyZ234JDwA6roDIf?= =?us-ascii?Q?zTvWgQR17IewRpa3PBfCQ=3D=3D?= To: ruby-core@ml.ruby-lang.org X-Entity-ID: b/2+PoftWZ6GuOu3b0IycA== Message-ID-Hash: EVJJXPPWT6ROUU6CQE3IYZ7DGQQVP5BG X-Message-ID-Hash: EVJJXPPWT6ROUU6CQE3IYZ7DGQQVP5BG X-MailFrom: bounces+313651-b711-ruby-core=ml.ruby-lang.org@em5188.ruby-lang.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.3 Precedence: list Reply-To: Ruby developers Subject: [ruby-core:111080] [Ruby master Feature#19000] Data: Add "Copy with changes method" [Follow-on to #16122 Data: simple immutable value object] List-Id: Ruby developers Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SXNzdWUgIzE5MDAwIGhhcyBiZWVuIHVwZGF0ZWQgYnkgRXJlZ29uIChCZW5vaXQgRGFsb3plKS4N DQoNDQoNDQpwOCAoUGV0cmlrIGRlIEhldXMpIHdyb3RlIGluICNub3RlLTE4Og0NCj4gSWYgYGR1 cGAgaXMgY2hvc2VuIHdvdWxkIGl0IG1ha2Ugc2Vuc2UgdG8gYWx3YXlzIGFsbG93IGBkdXBgIG1l dGhvZHMgdG8gdGFrZSBhcmd1bWVudHMgZm9yIGNvbnNpc3RlbmN5Pw0NCg0NCkknbSByYXRoZXIg YWdhaW5zdCB0aGF0LCBpdCBtYWtlcyB0aGUgc3RhbmRhcmQgYGR1cGAgc28gbXVjaCBtb3JlIGNv bXBsaWNhdGVkLCBhbmQgaXQgd291bGQgbW9zdCBsaWtlbHkgYmUgcHJldHR5IHNsb3cgaW4gQ1J1 YnkuDQ0KSWYgaXQncyBvbmx5IGZvciBEYXRhIGl0J3MgYSBtdWNoIHNtYWxsZXIgY29uY2Vybi4N DQoNDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQ0KRmVhdHVyZSAj MTkwMDA6IERhdGE6IEFkZCAiQ29weSB3aXRoIGNoYW5nZXMgbWV0aG9kIiBbRm9sbG93LW9uIHRv ICMxNjEyMiBEYXRhOiBzaW1wbGUgaW1tdXRhYmxlIHZhbHVlIG9iamVjdF0NDQpodHRwczovL2J1 Z3MucnVieS1sYW5nLm9yZy9pc3N1ZXMvMTkwMDAjY2hhbmdlLTEwMDM0MA0NCg0NCiogQXV0aG9y OiBSdWJ5QnVncyAoQSBOb255bW91cykNDQoqIFN0YXR1czogT3Blbg0NCiogUHJpb3JpdHk6IE5v cm1hbA0NCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NDQoqQXMgcmVx dWVzdGVkOiBleHRyYWN0ZWQgYSBmb2xsb3ctdXAgdG8gIzE2MTIyIERhdGE6IHNpbXBsZSBpbW11 dGFibGUgdmFsdWUgb2JqZWN0IGZyb20gW3RoaXMgY29tbWVudF0oaHR0cDovL2JsYWRlLm5hZ2Fv a2F1dC5hYy5qcC9jZ2ktYmluL3NjYXQucmIvcnVieS9ydWJ5LWNvcmUvMTA5ODE1KSoNDQoNDQoN DQojIFByb3Bvc2FsOiBBZGQgYSAiQ29weSB3aXRoIGNoYW5nZXMiIG1ldGhvZCB0byBEYXRhDQ0K DQ0KQXNzdW1lIHRoZSBwcm9wb3NlZCBgRGF0YS5kZWZpbmVgIGV4aXN0cy4NDQpTZWVpbmcgZXhh bXBsZXMgZnJvbSB0aGUgW1tWYWx1ZXMgZ2VtXV0oaHR0cHM6Ly9naXRodWIuY29tL21zLWF0aS9W YWx1ZXMpOg0NCg0NCmBgYHJ1YnkNDQojIEEgbmV3IGNsYXNzDQ0KUG9pbnQgPSBEYXRhLmRlZig6 eCwgOnkpDQ0KDQ0KIyBBbiBpbW11dGFibGUgaW5zdGFuY2UNDQpPcmlnaW4gPSBQb2ludC53aXRo KHg6IDAsIHk6IDApDQ0KDQ0KIyBROiBIb3cgZG8gd2UgbWFrZSBjb3BpZXMgdGhhdCBjaGFuZ2Ug MSBvciBtb3JlIHZhbHVlcz8NDQpyaWdodCA9IE9yaWdpbi53aXRoKHg6IDEuMCkNDQp1cCA9IE9y aWdpbi53aXRoKHk6IDEuMCkNDQp1cF9hbmRfcmlnaHQgPSByaWdodC53aXRoKHk6IHVwLnkpDQ0K DQ0KIyBJbiBsb29wcw0NCm1vdmVtZW50cyA9IFsNDQogIHsgeDogKzAuNSB9LA0NCiAgeyB4OiAr MC41IH0sDQ0KICB7IHk6IC0xLjAgfSwNDQogIHsgeDogKzAuNSB9LA0NCl0NDQoNDQojIHBvc2l0 aW9uID0gUG9pbnQoeDogMS41LCB5OiAtMS4wKQ0NCnBvc2l0aW9uID0gbW92ZW1lbnRzLmluamVj dChPcmlnaW4pIHsgfHAsIG1vdmV8IHAud2l0aCgqKm1vdmUpIH0NDQpgYGANDQoNDQojIyBQcm9w b3NlZCBkZXRhaWw6IENhbGwgdGhpcyBtZXRob2Q6IGAjd2l0aGANDQoNDQpgYGBydWJ5DQ0KTW9u ZXkgPSBEYXRhLmRlZmluZSg6YW1vdW50LCA6Y3VycmVuY3kpDQ0KDQ0KYWNjb3VudCA9IE1vbmV5 Lm5ldyhhbW91bnQ6IDEwMCwgY3VycmVuY3k6ICdVU0QnKQ0NCg0NCnRyYW5zYWN0aW9ucyA9IFsr MTAsIC01LCArMTVdDQ0KDQ0KYWNjb3VudCA9IHRyYW5zYWN0aW9ucy5pbmplY3QoYWNjb3VudCkg eyB8YSwgdHwgYS53aXRoKGFtb3VudDogYS5hbW91bnQgKyB0KSB9DQ0KIz0+IE1vbmV5KGFtb3Vu dDogMTIwLCBjdXJyZW5jeTogIlVTRCIpDQ0KYGBgDQ0KDQ0KIyMgV2h5IGFkZCB0aGlzICJDb3B5 IHdpdGggY2hhbmdlcyIgbWV0aG9kIHRvIHRoZSBEYXRhIHNpbXBsZSBpbW11dGFibGUgdmFsdWUg Y2xhc3M/DQ0KDQ0KQ2FsbGVkIG9uIGFuIGluc3RhbmNlLCBpdCByZXR1cm5zIGEgbmV3IGluc3Rh bmNlIHdpdGggb25seSB0aGUgcHJvdmlkZWQgcGFyYW1ldGVycyBjaGFuZ2VkLg0NCg0NClRoaXMg QVBJIGFmZm9yZGFuY2UgaXMgbm93ICoqd2lkZWx5IGFkb3B0ZWQgYWNyb3NzIG1hbnkgbGFuZ3Vh Z2VzKiogZm9yIGl0cyB1c2VmdWxuZXNzLiBXaHkgaXMgaXQgc28gdXNlZnVsPyBCZWNhdXNlIGNv cHlpbmcgaW1tdXRhYmxlIHZhbHVlIG9iamVjdCBpbnN0YW5jZXMsIHdpdGggMSBvciBtb3JlIGRp c2NyZXRlIGNoYW5nZXMgdG8gc3BlY2lmaWMgZmllbGRzLCBpcyB0aGUgcHJvcGVyIGFuZCB1Ymlx dWl0b3VzIHBhdHRlcm4gdGhhdCB0YWtlcyB0aGUgcGxhY2Ugb2YgbXV0YXRpb24gd2hlbiB3b3Jr aW5nIHdpdGggaW1tdXRhYmxlIHZhbHVlIG9iamVjdHMuDQ0KDQ0KKipPdGhlciBsYW5ndWFnZXMq Kg0NCg0NCkMjIFJlY29yZHM6IOKAnGltbXV0YWJsZSByZWNvcmQgc3RydWN0cyDigJQgTm9uLWRl c3RydWN0aXZlIG11dGF0aW9u4oCdIOKAlCBpcyBjYWxsZWQgYHdpdGggeyAuLi4gfWANDQpodHRw czovL2RvY3MubWljcm9zb2Z0LmNvbS9lbi11cy9kb3RuZXQvY3NoYXJwL2xhbmd1YWdlLXJlZmVy ZW5jZS9idWlsdGluLXR5cGVzL3JlY29yZCNub25kZXN0cnVjdGl2ZS1tdXRhdGlvbg0NCg0NClNj YWxhIENhc2UgQ2xhc3NlcyDigJQgaXMgY2FsbGVkIGAjY29weWANDQpodHRwczovL2RvY3Muc2Nh bGEtbGFuZy5vcmcvdG91ci9jYXNlLWNsYXNzZXMuaHRtbA0NCg0NCkphdmEgMTQrIFJlY29yZHMg 4oCUIEJyaWFuIEdvZXR6IGF0IE9yYWNsZSBpcyB3b3JraW5nIG9uIGFkZGluZyBhIHdpdGggY29w eSBjb25zdHJ1Y3RvciBpbnNwaXJlZCBieSBDIyBhYm92ZSBhcyB3ZSBzcGVhaywgbGlrZWx5IHRv IGJlIGNhbGxlZCBgI3dpdGhgDQ0KaHR0cHM6Ly9tYWlsLm9wZW5qZGsub3JnL3BpcGVybWFpbC9h bWJlci1zcGVjLWV4cGVydHMvMjAyMi1KdW5lLzAwMzQ2MS5odG1sDQ0KDQ0KUnVzdCDigJxTdHJ1 Y3QgVXBkYXRlIFN5bnRheOKAnSB2aWEgYC4uYCBzeW50YXggaW4gY29uc3RydWN0b3INDQpodHRw czovL2RvYy5ydXN0LWxhbmcub3JnL2Jvb2svY2gwNS0wMS1kZWZpbmluZy1zdHJ1Y3RzLmh0bWwj Y3JlYXRpbmctaW5zdGFuY2VzLWZyb20tb3RoZXItaW5zdGFuY2VzLXdpdGgtc3RydWN0LXVwZGF0 ZS1zeW50YXgNDQoNDQojIyBBbHRlcm5hdGl2ZXMNDQoNDQpXaXRob3V0IGEgY29weS13aXRoLWNo YW5nZXMgbWV0aG9kLCBvbmUgbXVzdCBjb25zdHJ1Y3QgZW50aXJlbHkgbmV3IGluc3RhbmNlcyB1 c2luZyB0aGUgY29uc3RydWN0b3IuIFRoaXMgY2FuIGVpdGhlciBiZSAoYSkgZnVsbHkgc3BlbGxl ZCBvdXQgYXMgYm9pbGVycGxhdGUgY29kZSwgb3IgKGIpIHVzZSBhIHN5bW1ldHJpY2FsIGAjdG9f aGAgdG8gZmVlZCB0aGUga2V5d29yZC1hcmdzIGNvbnN0cnVjdG9yLg0NCg0NCioqKGEpIEJvaWxl cnBsYXRlIHVzaW5nIGNvbnN0cnVjdG9yKioNDQoNDQpgYGBydWJ5DQ0KUG9pbnQgPSBEYXRhLmRl ZmluZSg6eCwgOnksIDp6KQ0NCk9yaWdpbiA9IFBvaW50Lm5ldyh4OiAwLjAsIHk6IDAuMCwgejog MC4wKQ0NCg0NCmNoYW5nZSA9IHsgejogLTEuNSB9DQ0KDQ0KIyBIYXZlIHRvIHVzZSBmdWxsIGNv bnN0cnVjdG9yIC0tIGRvZXMgdGhpcyBldmVuIHdvcms/DQ0KcG9pbnQgPSBQb2ludC5uZXcoeDog T3JpZ2luLngsIHk6IE9yaWdpbi55LCAqKmNoYW5nZSkNDQpgYGANDQoNDQoqKihiKSBVc2luZyBh IHNlcGFyYXRlbHkgcHJvcG9zZWQgYCN0b19oYCBtZXRob2QgYW5kIGNvbnN0cnVjdG9yIHN5bW1l dHJ5KioNDQoNDQpgYGBydWJ5DQ0KUG9pbnQgPSBEYXRhLmRlZmluZSg6eCwgOnksIDp6KQ0NCk9y aWdpbiA9IFBvaW50Lm5ldyh4OiAwLjAsIHk6IDAuMCwgejogMC4wKQ0NCg0NCmNoYW5nZSA9IHsg ejogLTEuNSB9DQ0KDQ0KIyBIYXZlIHRvIHVzZSBmdWxsIGNvbnN0cnVjdG9yIC0tIGRvZXMgdGhp cyBldmVuIHdvcms/DQ0KcG9pbnQgPSBQb2ludC5uZXcoKiooT3JpZ2luLnRvX2gubWVyZ2UoY2hh bmdlKSkpDQ0KYGBgDQ0KDQ0KTm90aWNlIHRoYXQgdGhlIGFib3ZlIGFyZSBub3QgZXJnb25vbWlj IC0tIGxlYWRpbmcgc28gbWFueSBvZiBvdXIgcGVlciBsYW5ndWFnZSBjb21tdW5pdGllcyB0byBh ZG9wdCB0aGUgYCN3aXRoYCBtZXRob2QgdG8gY29weSBhbiBpbnN0YW5jZSB3aXRoIGRpc2NyZXRl IGNoYW5nZXMuDQ0KDQ0KDQ0KDQ0KLS0gDQ0KaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvDQ0K IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KIHJ1YnktY29y ZSBtYWlsaW5nIGxpc3QgLS0gcnVieS1jb3JlQG1sLnJ1YnktbGFuZy5vcmcKIFRvIHVuc3Vic2Ny aWJlIHNlbmQgYW4gZW1haWwgdG8gcnVieS1jb3JlLWxlYXZlQG1sLnJ1YnktbGFuZy5vcmcKIHJ1 YnktY29yZSBpbmZvIC0tIGh0dHBzOi8vbWwucnVieS1sYW5nLm9yZy9tYWlsbWFuMy9wb3N0b3Jp dXMvbGlzdHMvcnVieS1jb3JlLm1sLnJ1YnktbGFuZy5vcmcv