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: AS4713 221.184.0.0/13 X-Spam-Status: No, score=-3.1 required=3.0 tests=AWL,BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RDNS_NONE, SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE,T_SPF_PERMERROR,UNPARSEABLE_RELAY, URIBL_GREY shortcircuit=no autolearn=no autolearn_force=no version=3.4.2 Received: from neon.ruby-lang.org (unknown [221.186.184.75]) by dcvr.yhbt.net (Postfix) with ESMTP id 7136E1F54E for ; Thu, 25 Aug 2022 20:03:03 +0000 (UTC) Authentication-Results: dcvr.yhbt.net; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=sendgrid.me header.i=@sendgrid.me header.b="dYCoZB4H"; dkim-atps=neutral Received: from neon.ruby-lang.org (localhost [IPv6:::1]) by neon.ruby-lang.org (Postfix) with ESMTP id 22B96120F99; Fri, 26 Aug 2022 05:02:58 +0900 (JST) Received: from o1678948x4.outbound-mail.sendgrid.net (o1678948x4.outbound-mail.sendgrid.net [167.89.48.4]) by neon.ruby-lang.org (Postfix) with ESMTPS id 77AF9120DCA for ; Fri, 26 Aug 2022 05:02:55 +0900 (JST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sendgrid.me; h=from:references:subject:mime-version:content-type: content-transfer-encoding:list-id:to:cc; s=smtpapi; bh=Wws5GQQJSccix7EzIVw5UiKDzsxbggbXlLrIy7PP26Y=; b=dYCoZB4H46ysn1hU4gy5ZEHp/x83LkNXrXNiAP8+Q3a1ZMv9JJu5ldPQtS6af0KgSCTT D+R3A8YmClzZpCS4LJBfxsi9P+w/LTLCQLSI2v8Bsioj+dW+zS36/LpvlkUtOjyT3/HPuu PVf8gMlSRrT8v2/g4gPuLWuBZ8xGEhaWg= Received: by filterdrecv-84db9978db-2nlk2 with SMTP id filterdrecv-84db9978db-2nlk2-1-6307D56D-24 2022-08-25 20:02:53.273371316 +0000 UTC m=+9929.448926417 Received: from herokuapp.com (unknown) by geopod-ismtpd-1-3 (SG) with ESMTP id xchpzLc3QEqtlZLHeVMLsg for ; Thu, 25 Aug 2022 20:02:53.133 +0000 (UTC) Date: Thu, 25 Aug 2022 20:02:53 +0000 (UTC) From: "k0kubun (Takashi Kokubun)" Message-ID: References: Mime-Version: 1.0 X-Redmine-Project: ruby-master X-Redmine-Issue-Tracker: Feature X-Redmine-Issue-Id: 16122 X-Redmine-Issue-Author: zverok X-Redmine-Issue-Assignee: zverok X-Redmine-Sender: k0kubun 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: 86138 X-SG-EID: =?us-ascii?Q?t0D3sbhpROchi4BCuPVXqTpK3rt2KNaj742hH2WmldAZhbYTXHcxL3aNog=2FXJV?= =?us-ascii?Q?48jLsQYcdN2Xkz3pb0Rh3BnDYdGPOB2DsVjWM+S?= =?us-ascii?Q?DG3HwzU34LyDpBWGQBwiCUoR0kn6c6daf2ZUGne?= =?us-ascii?Q?1OO5svDeoYg=2F1zBr48y4IF2MpX5FkJNvoVkOx96?= =?us-ascii?Q?kYtDJ2pjMohL0BchrKtDZJNBY84rsQupA0w9wfb?= =?us-ascii?Q?nd+QYUGvWparpx6SvsCbd4Lv6rQugxSwbmNQiyg?= =?us-ascii?Q?x3TPthulYE8g30nK=2FRSgA=3D=3D?= To: ruby-core@ruby-lang.org X-Entity-ID: b/2+PoftWZ6GuOu3b0IycA== X-ML-Name: ruby-core X-Mail-Count: 109697 Subject: [ruby-core:109697] [Ruby master Feature#16122] Data: simple immutable value object X-BeenThere: ruby-core@ruby-lang.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Ruby developers List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Reply-To: Ruby developers Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ruby-core-bounces@ruby-lang.org Sender: "ruby-core" SXNzdWUgIzE2MTIyIGhhcyBiZWVuIHVwZGF0ZWQgYnkgazBrdWJ1biAoVGFrYXNoaSBLb2t1YnVu KS4KClN1YmplY3QgY2hhbmdlZCBmcm9tIFN0cnVjdDo6VmFsdWU6IHNpbXBsZSBpbW11dGFibGUg dmFsdWUgb2JqZWN0IHRvIERhdGE6IHNpbXBsZSBpbW11dGFibGUgdmFsdWUgb2JqZWN0ClN0YXR1 cyBjaGFuZ2VkIGZyb20gRmVlZGJhY2sgdG8gQXNzaWduZWQKQXNzaWduZWUgc2V0IHRvIHp2ZXJv ayAoVmljdG9yIFNoZXBlbGV2KQoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQpGZWF0dXJlICMxNjEyMjogRGF0YTogc2ltcGxlIGltbXV0YWJsZSB2YWx1ZSBvYmplY3QK aHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvaXNzdWVzLzE2MTIyI2NoYW5nZS05ODkyMgoKKiBB dXRob3I6IHp2ZXJvayAoVmljdG9yIFNoZXBlbGV2KQoqIFN0YXR1czogQXNzaWduZWQKKiBQcmlv cml0eTogTm9ybWFsCiogQXNzaWduZWU6IHp2ZXJvayAoVmljdG9yIFNoZXBlbGV2KQotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCioqVmFsdWUgT2JqZWN0KiogaXMgYSB1 c2VmdWwgY29uY2VwdCwgaW50cm9kdWNlZCBieSBNYXJ0aW4gRm93bGVyIChbaGlzIHBvc3RdKGh0 dHBzOi8vbWFydGluZm93bGVyLmNvbS9ibGlraS9WYWx1ZU9iamVjdC5odG1sKSwgW1dpa2lwZWRp YSBFbnRyeV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVmFsdWVfb2JqZWN0KSkgd2l0 aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXMgKHNpbXBsaWZ5aW5nIHRoZSBpZGVhKToKCiogcmVw cmVzZW50aW5nIHNvbWUgcmVsYXRpdmVseSBzaW1wbGUgZGF0YTsKKiBpbW11dGFibGU7CiogY29t cGFyZWQgYnkgdHlwZSAmIHZhbHVlOwoqIG5pY2VseSByZXByZXNlbnRlZC4KClZhbHVlIG9iamVj dHMgYXJlIHN1cGVyLXVzZWZ1bCBlc3BlY2lhbGx5IGZvciBkZWZpbmluZyBBUElzLCB0aGVpciBp bnB1dC9yZXR1cm4gdmFsdWVzLiBSZWNlbnRseSwgdGhlcmUgd2VyZSBzb21lIG1vdmVtZW50IHRv d2FyZHMgdXNpbmcgbW9yZSBpbW11dGFiaWxpdHktZnJpZW5kbHkgYXBwcm9hY2ggaW4gUnVieSBw cm9ncmFtbWluZywgbGVhZGluZyB0byBjcmVhdGluZyBzZXZlcmFsIGRpc2N1c3Npb25zL2xpYnJh cmllcyB3aXRoIHZhbHVlIG9iamVjdHMuIEZvciBleGFtcGxlLCBbVG9tIERhbGxpbmcncyBnZW1d KGh0dHBzOi8vZ2l0aHViLmNvbS90b21kYWxsaW5nL3ZhbHVlX3NlbWFudGljcyksIFtHb29kIFJ1 YnkgVmFsdWUgb2JqZWN0IGNvbnZlbnRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS96dmVyb2svZ29v ZC12YWx1ZS1vYmplY3QpIChkaXNjbGFpbWVyOiB0aGUgbGF0dGVyIGlzIG1haW50YWluZWQgYnkg eW91cnMgdHJ1bHkpLgoKSSBwcm9wb3NlIHRvIGludHJvZHVjZSAqKm5hdGl2ZSB2YWx1ZSBvYmpl Y3RzKiogdG8gUnVieSBhcyBhIGNvcmUgY2xhc3MuCgoqKldoeSBub3QgYSBnZW0/KioKCiogSSBi ZWxpZXZlIHRoYXQgY29uY2VwdCBpcyB0aGF0IHNpbXBsZSwgdGhhdCBub2JvZHkgKndpbGwgZXZl biB0cnkqIHRvIHVzZSBhIGdlbSBmb3IgcmVwcmVzZW50aW5nIGl0IHdpdGgsIHVubGVzcyB0aGUg ZnJhbWV3b3JrL2xpYnJhcnkgdXNlZCBhbHJlYWR5IHByb3ZpZGVzIG9uZS4KKiBQb3RlbnRpYWxs eSwgYSBsb3Qgb2Ygc3RhbmRhcmQgbGlicmFyeSAoYW5kIHByb2JhYmx5IGV2ZW4gY29yZSkgQVBJ cyBjb3VsZCBiZW5lZml0IGZyb20gdGhlIGNvbmNlcHQuCgoqKldoeSBgU3RydWN0YCBpcyBub3Qg ZW5vdWdoKioKCkNvcmUgYFN0cnVjdGAgY2xhc3MgaXMgInNvbWV3aGF0IGFsaWtlIiB2YWx1ZS1v YmplY3QsIGFuZCBmcmVxdWVudGx5IHVzZWQgaW5zdGVhZCBvZiBvbmU6IGl0IGlzIGNvbXBhcmVk IGJ5IHZhbHVlIGFuZCBjb25zaXN0cyBvZiBzaW1wbGUgYXR0cmlidXRlcy4gT24gdGhlIG90aGVy IGhhbmQsIGBTdHJ1Y3RgIGlzOgoqIG11dGFibGU7CiogY29sbGVjdGlvbi1hbGlrZSAoZGVmaW5l cyBgdG9fYWAgYW5kIGlzIGBFbnVtZXJhYmxlYCk7CiogZGljdGlvbmFyeS1hbGlrZSAoaGFzIGBb XWAgYW5kIGAudmFsdWVzYCBtZXRob2RzKS4KClRoZSBhYm92ZSB0cmFpdHMgc29tZWhvdyBlcm9k ZXMgdGhlIHNlbWFudGljcywgbWFraW5nIGNvZGUgbGVzcyBjbGVhciwgZXNwZWNpYWxseSB3aGVu IGR1Y2stdHlwaW5nIGlzIHVzZWQuCgpGb3IgZXhhbXBsZSwgdGhpcyBjb2RlIHNuaXBwZXQgc2hv d3Mgd2h5IGB0b19hYCBpcyBwcm9ibGVtYXRpYzoKCmBgYHJ1YnkKUmVzdWx0ID0gU3RydWN0Lm5l dyg6c3VjY2VzcywgOmNvbnRlbnQpCgojIE5vdywgaW1hZ2luZSB0aGF0IG90aGVyIGNvZGUgYXNz dW1lcyBgZGF0YWAgY291bGQgYmUgZWl0aGVyIFJlc3VsdCwgb3IgW1Jlc3VsdCwgUmVzdWx0LCBS ZXN1bHRdCiMgU28sIC4uLgoKZGF0YSA9IFJlc3VsdC5uZXcodHJ1ZSwgJ2l0IGlzIGF3ZXNvbWUn KQoKQXJyYXkoZGF0YSkgIyA9PiBleHBlY3RlZCBbUmVzdWx0KHRydWUsICdpdCBpcyBhd2Vzb21l JyldLCBnb3QgW3RydWUsICdpdCBpcyBhd2Vzb21lJ10KCiMgb3IuLi4KZGVmIGZvbyhhcmcxLCBh cmcyID0gbmlsKQpwIGFyZzEsIGFyZzIKZW5kCgpmb28oKmRhdGEpICMgPT4gZXhwZWN0ZWQgW1Jl c3VsdCh0cnVlLCAnaXQgaXMgYXdlc29tZScpLCBuaWxdLCBnb3QgW3RydWUsICdpdCBpcyBhd2Vz b21lJ10KYGBgCgpIYXZpbmcgYFtdYCBhbmQgYGVhY2hgIGRlZmluZWQgb24gc29tZXRoaW5nIHRo YXQgaXMgdGhvdWdodCBhcyAianVzdCB2YWx1ZSIgY2FuIGFsc28gbGVhZCB0byBzdWJ0bGUgYnVn cywgd2hlbiBzb21lIG1ldGhvZCBjaGVja3MgImlmIHRoZSByZWNlaXZlZCBhcmd1bWVudCBpcyBj b2xsZWN0aW9uLWFsaWtlIiwgYW5kIHZhbHVlIG9iamVjdCdzIGF1dGhvciBkb2Vzbid0IHRob3Vn aHQgb2YgaXQgYXMgYSBjb2xsZWN0aW9uLgoKKipDb25jcmV0ZSBwcm9wb3NhbCoqCgoqIENsYXNz IG5hbWU6IGBTdHJ1Y3Q6OlZhbHVlYDogbG90IG9mIFJ1Ynlpc3RzIGFyZSB1c2VkIHRvIGhhdmUg YFN0cnVjdGAgYXMgYSBxdWljayAic29tZXRoaW5nLWxpa2UtdmFsdWUiIGRyb3AtaW4sIHNvIGFs dGVybmF0aXZlLCBtb3JlIHN0cmljdCBpbXBsZW1lbnRhdGlvbiwgYmVpbmcgcGFydCBvZiBgU3Ry dWN0YCBBUEksIHdpbGwgYmUgcXVpdGUgZGlzY292ZXJhYmxlOyAqYWx0ZXJuYXRpdmU6IGp1c3Qg YFZhbHVlYCoKKiBDbGFzcyBBUEkgaXMgY29weWluZyBgU3RydWN0YHMgb25lIChtb3N0IG9mIHRo ZSB0aW1lIC0tIGV2ZW4gcmV1c2VzIHRoZSBpbXBsZW1lbnRhdGlvbiksIHdpdGggdGhlIGZvbGxv d2luZyBleGNlcHRpb25zICoobm90ZTogdGhlIGltbXV0YWJpbGl0eSBpcyAqKm5vdCoqIHRoZSBv bmx5IGRpZmZlcmVuY2UpKjoKICAqIE5vdCBgRW51bWVyYWJsZWA7CiAgKiBJbW11dGFibGU7CiAg KiBEb2Vzbid0IHRoaW5rIG9mIGl0c2VsZiBhcyAiYWxtb3N0IGhhc2giIChkb2Vzbid0IGhhdmUg YHRvX2FgLCBgdmFsdWVzYCBhbmQgYFtdYCBtZXRob2RzKTsKICAqIENhbiBoYXZlIGVtcHR5IG1l bWJlcnMgbGlzdCAoZnVuIGZhY3Q6IGBTdHJ1Y3QubmV3KCdGb28nKWAgY3JlYXRpbmcgbWVtYmVy LWxlc3MgYFN0cnVjdDo6Rm9vYCwgaXMgYWxsb3dlZCwgYnV0IGBTdHJ1Y3QubmV3KClgIGlzIG5v dCkgdG8gYWxsb3cgdXNhZ2UgcGF0dGVybnMgbGlrZToKCmBgYHJ1YnkKY2xhc3MgTXlTZXJ2aWNl CiAgU3VjY2VzcyA9IFN0cnVjdDo6VmFsdWUubmV3KDpyZXN1bHRzKQogIE5vdEZvdW5kID0gU3Ry dWN0OjpWYWx1ZS5uZXcKZW5kCmBgYAoKYE5vdEZvdW5kYCBoZXJlLCB1bmxpa2UsIHNheSwgYE9i amVjdC5uZXcuZnJlZXplYCAoYW5vdGhlciBwYXR0ZXJuIGZvciBjcmVhdGluZyAiZW1wdHkgdHlw ZWQgdmFsdWUgb2JqZWN0IiksIGhhcyBuaWNlIGluc3BlY3QgYCM8dmFsdWUgTm90Rm91bmQ+YCwg YW5kIGNyZWF0ZWQgY29uc2lzdGVudGx5IHdpdGggdGhlIGBTdWNjZXNzYCwgbWFraW5nIHRoZSBj b2RlIG1vcmUgcmVhZGFibGUuIEFuZCBpZiBpdCB3aWxsIGV2b2x2ZSB0byBoYXZlIHNvbWUgYXR0 cmlidXRlcywgdGhlIGNvZGUgY2hhbmdlIHdvdWxkIGJlIGVhc3kuCgoqKlBhdGNoIGlzIHByb3Zp ZGVkKioKCltTYW1wbGUgcmVuZGVyZWQgUkRvYyBkb2N1bWVudGF0aW9uXShodHRwczovL3p2ZXJv ay5naXRodWIuaW8vcnVieS1yZG9jL1N0cnVjdC1WYWx1ZS5odG1sKQoKLS0tRmlsZXMtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdHJ1Y3RfdmFsdWUucGF0Y2ggKDE4LjYgS0IpCgoK LS0gCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnLwo=