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=-2.8 required=3.0 tests=AWL,BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_BL_SPAMCOP_NET, RCVD_IN_DNSWL_MED,SPF_HELO_NONE,T_SPF_PERMERROR,UNPARSEABLE_RELAY, URIBL_GREY shortcircuit=no autolearn=no autolearn_force=no version=3.4.2 Received: from neon.ruby-lang.org (neon.ruby-lang.org [221.186.184.75]) by dcvr.yhbt.net (Postfix) with ESMTP id 25C501F506 for ; Fri, 23 Sep 2022 00:45:07 +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="zpXLAZID"; dkim-atps=neutral Received: from neon.ruby-lang.org (localhost [IPv6:::1]) by neon.ruby-lang.org (Postfix) with ESMTP id B6C90120C48; Fri, 23 Sep 2022 09:44:58 +0900 (JST) Received: from xtrwkhkc.outbound-mail.sendgrid.net (xtrwkhkc.outbound-mail.sendgrid.net [167.89.16.28]) by neon.ruby-lang.org (Postfix) with ESMTPS id CF000120C48 for ; Fri, 23 Sep 2022 09:44:56 +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=CLnN//UbeSCeMyF3LlYG+mvgLq3nOcf82bFDPcZCR2w=; b=zpXLAZID+KbyyTlp6uvelvtcWn5v2hBbyVKb0llU3GpbvwnBDY/4Cp0bScl5R63+pP+y cO2iKmoLOYrPwGhnR+ZPHqz43IeY11PThc60PqLB95nGn7D2JbyjKElE9uRFiQ1nO+yRQZ VQNZaFnCndP4f7B1zouEe0q9azv8tm0Kg= Received: by filterdrecv-ff6f45c49-27jk2 with SMTP id filterdrecv-ff6f45c49-27jk2-1-632D0182-77 2022-09-23 00:44:50.744754147 +0000 UTC m=+267869.852842895 Received: from herokuapp.com (unknown) by geopod-ismtpd-2-2 (SG) with ESMTP id WPaVTSK4RG6aaNFepPvkiQ for ; Fri, 23 Sep 2022 00:44:50.506 +0000 (UTC) Date: Fri, 23 Sep 2022 00:44:50 +0000 (UTC) From: "matz (Yukihiro Matsumoto)" 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: matz 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: 86461 X-SG-EID: =?us-ascii?Q?SqOeWfVKFgkgw8cVgc6MYslIG5ZBbSbWU3opJ5u4yBsU3yWoizgPd1Pss4ZMTd?= =?us-ascii?Q?OLBRodnvQO26=2FFyqng1x72rdTkbmTHg5l1+yKA9?= =?us-ascii?Q?AQWjb5lkA5Ry2uNvKkKMqgWbczA6uXLaODA9VdS?= =?us-ascii?Q?3SSf1j7kXBr4Qo2Y=2FYWwtafJ0IWZWO0uKAeaUGD?= =?us-ascii?Q?bDv9Hk5EX5RpJIvtgAAd810za4T8lBGC=2FWJa8uK?= =?us-ascii?Q?3JHiUUjqiXyPixtF89GSYYmqpoUlHnn2P32G2vS?= =?us-ascii?Q?S7o75vpLmjFy73VI=2FhWlw=3D=3D?= To: ruby-core@ruby-lang.org X-Entity-ID: b/2+PoftWZ6GuOu3b0IycA== X-ML-Name: ruby-core X-Mail-Count: 110020 Subject: [ruby-core:110020] [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" SXNzdWUgIzE2MTIyIGhhcyBiZWVuIHVwZGF0ZWQgYnkgbWF0eiAoWXVraWhpcm8gTWF0c3Vtb3Rv KS4KCkRlc2NyaXB0aW9uIHVwZGF0ZWQKCkNvdWxkIHlvdSBzdW1tYXJpemUgdGhlIHVwLXRvLWRh dGUgcHJvcG9zZWQgc3BlY2lmaWNhdGlvbiBvZiBEYXRhIGNsYXNzLCBwbGVhc2U/CkZvciB0aGUg cmVjb3JkLCBJIGFjY2VwdCBgZGVmaW5lYCBpbnN0ZWFkIG9mIGBkZWZgLgoKTWF0ei4KCgotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkZlYXR1cmUgIzE2MTIyOiBEYXRh OiBzaW1wbGUgaW1tdXRhYmxlIHZhbHVlIG9iamVjdApodHRwczovL2J1Z3MucnVieS1sYW5nLm9y Zy9pc3N1ZXMvMTYxMjIjY2hhbmdlLTk5MjcxCgoqIEF1dGhvcjogenZlcm9rIChWaWN0b3IgU2hl cGVsZXYpCiogU3RhdHVzOiBBc3NpZ25lZAoqIFByaW9yaXR5OiBOb3JtYWwKKiBBc3NpZ25lZTog enZlcm9rIChWaWN0b3IgU2hlcGVsZXYpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKipWYWx1ZSBPYmplY3QqKiBpcyBhIHVzZWZ1bCBjb25jZXB0LCBpbnRyb2R1Y2Vk IGJ5IE1hcnRpbiBGb3dsZXIgKFtoaXMgcG9zdF0oaHR0cHM6Ly9tYXJ0aW5mb3dsZXIuY29tL2Js aWtpL1ZhbHVlT2JqZWN0Lmh0bWwpLCBbV2lraXBlZGlhIEVudHJ5XShodHRwczovL2VuLndpa2lw ZWRpYS5vcmcvd2lraS9WYWx1ZV9vYmplY3QpKSB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGll cyAoc2ltcGxpZnlpbmcgdGhlIGlkZWEpOgoKKiByZXByZXNlbnRpbmcgc29tZSByZWxhdGl2ZWx5 IHNpbXBsZSBkYXRhOwoqIGltbXV0YWJsZTsKKiBjb21wYXJlZCBieSB0eXBlICYgdmFsdWU7Ciog bmljZWx5IHJlcHJlc2VudGVkLgoKVmFsdWUgb2JqZWN0cyBhcmUgc3VwZXItdXNlZnVsIGVzcGVj aWFsbHkgZm9yIGRlZmluaW5nIEFQSXMsIHRoZWlyIGlucHV0L3JldHVybiB2YWx1ZXMuIFJlY2Vu dGx5LCB0aGVyZSB3ZXJlIHNvbWUgbW92ZW1lbnQgdG93YXJkcyB1c2luZyBtb3JlIGltbXV0YWJp bGl0eS1mcmllbmRseSBhcHByb2FjaCBpbiBSdWJ5IHByb2dyYW1taW5nLCBsZWFkaW5nIHRvIGNy ZWF0aW5nIHNldmVyYWwgZGlzY3Vzc2lvbnMvbGlicmFyaWVzIHdpdGggdmFsdWUgb2JqZWN0cy4g Rm9yIGV4YW1wbGUsIFtUb20gRGFsbGluZydzIGdlbV0oaHR0cHM6Ly9naXRodWIuY29tL3RvbWRh bGxpbmcvdmFsdWVfc2VtYW50aWNzKSwgW0dvb2QgUnVieSBWYWx1ZSBvYmplY3QgY29udmVudGlv bl0oaHR0cHM6Ly9naXRodWIuY29tL3p2ZXJvay9nb29kLXZhbHVlLW9iamVjdCkgKGRpc2NsYWlt ZXI6IHRoZSBsYXR0ZXIgaXMgbWFpbnRhaW5lZCBieSB5b3VycyB0cnVseSkuCgpJIHByb3Bvc2Ug dG8gaW50cm9kdWNlICoqbmF0aXZlIHZhbHVlIG9iamVjdHMqKiB0byBSdWJ5IGFzIGEgY29yZSBj bGFzcy4KCioqV2h5IG5vdCBhIGdlbT8qKgoKKiBJIGJlbGlldmUgdGhhdCBjb25jZXB0IGlzIHRo YXQgc2ltcGxlLCB0aGF0IG5vYm9keSAqd2lsbCBldmVuIHRyeSogdG8gdXNlIGEgZ2VtIGZvciBy ZXByZXNlbnRpbmcgaXQgd2l0aCwgdW5sZXNzIHRoZSBmcmFtZXdvcmsvbGlicmFyeSB1c2VkIGFs cmVhZHkgcHJvdmlkZXMgb25lLgoqIFBvdGVudGlhbGx5LCBhIGxvdCBvZiBzdGFuZGFyZCBsaWJy YXJ5IChhbmQgcHJvYmFibHkgZXZlbiBjb3JlKSBBUElzIGNvdWxkIGJlbmVmaXQgZnJvbSB0aGUg Y29uY2VwdC4KCioqV2h5IGBTdHJ1Y3RgIGlzIG5vdCBlbm91Z2gqKgoKQ29yZSBgU3RydWN0YCBj bGFzcyBpcyAic29tZXdoYXQgYWxpa2UiIHZhbHVlLW9iamVjdCwgYW5kIGZyZXF1ZW50bHkgdXNl ZCBpbnN0ZWFkIG9mIG9uZTogaXQgaXMgY29tcGFyZWQgYnkgdmFsdWUgYW5kIGNvbnNpc3RzIG9m IHNpbXBsZSBhdHRyaWJ1dGVzLiBPbiB0aGUgb3RoZXIgaGFuZCwgYFN0cnVjdGAgaXM6CiogbXV0 YWJsZTsKKiBjb2xsZWN0aW9uLWFsaWtlIChkZWZpbmVzIGB0b19hYCBhbmQgaXMgYEVudW1lcmFi bGVgKTsKKiBkaWN0aW9uYXJ5LWFsaWtlIChoYXMgYFtdYCBhbmQgYC52YWx1ZXNgIG1ldGhvZHMp LgoKVGhlIGFib3ZlIHRyYWl0cyBzb21laG93IGVyb2RlcyB0aGUgc2VtYW50aWNzLCBtYWtpbmcg Y29kZSBsZXNzIGNsZWFyLCBlc3BlY2lhbGx5IHdoZW4gZHVjay10eXBpbmcgaXMgdXNlZC4KCkZv ciBleGFtcGxlLCB0aGlzIGNvZGUgc25pcHBldCBzaG93cyB3aHkgYHRvX2FgIGlzIHByb2JsZW1h dGljOgoKYGBgcnVieQpSZXN1bHQgPSBTdHJ1Y3QubmV3KDpzdWNjZXNzLCA6Y29udGVudCkKCiMg Tm93LCBpbWFnaW5lIHRoYXQgb3RoZXIgY29kZSBhc3N1bWVzIGBkYXRhYCBjb3VsZCBiZSBlaXRo ZXIgUmVzdWx0LCBvciBbUmVzdWx0LCBSZXN1bHQsIFJlc3VsdF0KIyBTbywgLi4uCgpkYXRhID0g UmVzdWx0Lm5ldyh0cnVlLCAnaXQgaXMgYXdlc29tZScpCgpBcnJheShkYXRhKSAjID0+IGV4cGVj dGVkIFtSZXN1bHQodHJ1ZSwgJ2l0IGlzIGF3ZXNvbWUnKV0sIGdvdCBbdHJ1ZSwgJ2l0IGlzIGF3 ZXNvbWUnXQoKIyBvci4uLgpkZWYgZm9vKGFyZzEsIGFyZzIgPSBuaWwpCnAgYXJnMSwgYXJnMgpl bmQKCmZvbygqZGF0YSkgIyA9PiBleHBlY3RlZCBbUmVzdWx0KHRydWUsICdpdCBpcyBhd2Vzb21l JyksIG5pbF0sIGdvdCBbdHJ1ZSwgJ2l0IGlzIGF3ZXNvbWUnXQpgYGAKCkhhdmluZyBgW11gIGFu ZCBgZWFjaGAgZGVmaW5lZCBvbiBzb21ldGhpbmcgdGhhdCBpcyB0aG91Z2h0IGFzICJqdXN0IHZh bHVlIiBjYW4gYWxzbyBsZWFkIHRvIHN1YnRsZSBidWdzLCB3aGVuIHNvbWUgbWV0aG9kIGNoZWNr cyAiaWYgdGhlIHJlY2VpdmVkIGFyZ3VtZW50IGlzIGNvbGxlY3Rpb24tYWxpa2UiLCBhbmQgdmFs dWUgb2JqZWN0J3MgYXV0aG9yIGRvZXNuJ3QgdGhvdWdodCBvZiBpdCBhcyBhIGNvbGxlY3Rpb24u CgoqKkNvbmNyZXRlIHByb3Bvc2FsKioKCiogQ2xhc3MgbmFtZTogYFN0cnVjdDo6VmFsdWVgOiBs b3Qgb2YgUnVieWlzdHMgYXJlIHVzZWQgdG8gaGF2ZSBgU3RydWN0YCBhcyBhIHF1aWNrICJzb21l dGhpbmctbGlrZS12YWx1ZSIgZHJvcC1pbiwgc28gYWx0ZXJuYXRpdmUsIG1vcmUgc3RyaWN0IGlt cGxlbWVudGF0aW9uLCBiZWluZyBwYXJ0IG9mIGBTdHJ1Y3RgIEFQSSwgd2lsbCBiZSBxdWl0ZSBk aXNjb3ZlcmFibGU7ICphbHRlcm5hdGl2ZToganVzdCBgVmFsdWVgKgoqIENsYXNzIEFQSSBpcyBj b3B5aW5nIGBTdHJ1Y3RgcyBvbmUgKG1vc3Qgb2YgdGhlIHRpbWUgLS0gZXZlbiByZXVzZXMgdGhl IGltcGxlbWVudGF0aW9uKSwgd2l0aCB0aGUgZm9sbG93aW5nIGV4Y2VwdGlvbnMgKihub3RlOiB0 aGUgaW1tdXRhYmlsaXR5IGlzICoqbm90KiogdGhlIG9ubHkgZGlmZmVyZW5jZSkqOgogICogTm90 IGBFbnVtZXJhYmxlYDsKICAqIEltbXV0YWJsZTsKICAqIERvZXNuJ3QgdGhpbmsgb2YgaXRzZWxm IGFzICJhbG1vc3QgaGFzaCIgKGRvZXNuJ3QgaGF2ZSBgdG9fYWAsIGB2YWx1ZXNgIGFuZCBgW11g IG1ldGhvZHMpOwogICogQ2FuIGhhdmUgZW1wdHkgbWVtYmVycyBsaXN0IChmdW4gZmFjdDogYFN0 cnVjdC5uZXcoJ0ZvbycpYCBjcmVhdGluZyBtZW1iZXItbGVzcyBgU3RydWN0OjpGb29gLCBpcyBh bGxvd2VkLCBidXQgYFN0cnVjdC5uZXcoKWAgaXMgbm90KSB0byBhbGxvdyB1c2FnZSBwYXR0ZXJu cyBsaWtlOgoKYGBgcnVieQpjbGFzcyBNeVNlcnZpY2UKICBTdWNjZXNzID0gU3RydWN0OjpWYWx1 ZS5uZXcoOnJlc3VsdHMpCiAgTm90Rm91bmQgPSBTdHJ1Y3Q6OlZhbHVlLm5ldwplbmQKYGBgCgpg Tm90Rm91bmRgIGhlcmUsIHVubGlrZSwgc2F5LCBgT2JqZWN0Lm5ldy5mcmVlemVgIChhbm90aGVy IHBhdHRlcm4gZm9yIGNyZWF0aW5nICJlbXB0eSB0eXBlZCB2YWx1ZSBvYmplY3QiKSwgaGFzIG5p Y2UgaW5zcGVjdCBgIzx2YWx1ZSBOb3RGb3VuZD5gLCBhbmQgY3JlYXRlZCBjb25zaXN0ZW50bHkg d2l0aCB0aGUgYFN1Y2Nlc3NgLCBtYWtpbmcgdGhlIGNvZGUgbW9yZSByZWFkYWJsZS4gQW5kIGlm IGl0IHdpbGwgZXZvbHZlIHRvIGhhdmUgc29tZSBhdHRyaWJ1dGVzLCB0aGUgY29kZSBjaGFuZ2Ug d291bGQgYmUgZWFzeS4KCioqUGF0Y2ggaXMgcHJvdmlkZWQqKgoKW1NhbXBsZSByZW5kZXJlZCBS RG9jIGRvY3VtZW50YXRpb25dKGh0dHBzOi8venZlcm9rLmdpdGh1Yi5pby9ydWJ5LXJkb2MvU3Ry dWN0LVZhbHVlLmh0bWwpCgotLS1GaWxlcy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CnN0cnVjdF92YWx1ZS5wYXRjaCAoMTguNiBLQikKCgotLSAKaHR0cHM6Ly9idWdzLnJ1YnktbGFu Zy5vcmcvCg==