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.6 required=3.0 tests=AWL,BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,SPF_HELO_NONE, T_SPF_PERMERROR,UNPARSEABLE_RELAY,URIBL_BLACK,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 99E0C1F506 for ; Tue, 20 Sep 2022 21:08:33 +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="dRFASjee"; dkim-atps=neutral Received: from neon.ruby-lang.org (localhost [IPv6:::1]) by neon.ruby-lang.org (Postfix) with ESMTP id C3B33120BA7; Wed, 21 Sep 2022 06:08:29 +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 5C6E9120B7C for ; Wed, 21 Sep 2022 06:08:26 +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=zR1bQITKKdbpk82UgMACBWdPLIzHm4GZoBlPT/jyxlI=; b=dRFASjeeb+S5f2iQ4tAzTG68fgVmGGeVNP5VAk6IPVmlNUIHIC2AfNnmGZd7qOUoEBqB syWlgqPxeL3YNjrmIVhWGpc7O3E6uo1zrEoEzyVtISFjxTaXHllLtY2H09HkHMawWy+RRC /sWx5OnFg/QJu//xWrNtAchS/tCL5vOfQ= Received: by filterdrecv-55cf8496dd-lfbk7 with SMTP id filterdrecv-55cf8496dd-lfbk7-1-632A2BC8-1F 2022-09-20 21:08:24.445636582 +0000 UTC m=+82570.420986288 Received: from herokuapp.com (unknown) by geopod-ismtpd-4-2 (SG) with ESMTP id WUbXjoFSTBCS9GahB3U6jA for ; Tue, 20 Sep 2022 21:08:24.430 +0000 (UTC) Date: Tue, 20 Sep 2022 21:08:24 +0000 (UTC) From: "ufuk (Ufuk Kayserilioglu)" 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: ufuk 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: 86405 X-SG-EID: =?us-ascii?Q?A6EJP4KLXcX9WmZWzaMfQY1Pp4YiBmBZQqgK4wKj+c0EHbWcqLGUU5UAVPY3wI?= =?us-ascii?Q?3L3xfYIeb84bKpiSNVXcuiTpsWPZaMIhuzUV8h=2F?= =?us-ascii?Q?=2FjtR3G5ypqDV5hkxDgHTEcC+5adljl36xS7xnSo?= =?us-ascii?Q?SO2J5hEoowkh90xJresduswW7yEmiQtYP5C9FYC?= =?us-ascii?Q?XXXnfjGINlfQhckQXU9wThThoX=2FLjpcnpB7biYj?= =?us-ascii?Q?Thw41VYFLmGeN6tq39pohBl784oOybNFJ=2FLErrG?= =?us-ascii?Q?hkIH5oRXFPmRFZg3gm84w=3D=3D?= To: ruby-core@ruby-lang.org X-Entity-ID: b/2+PoftWZ6GuOu3b0IycA== X-ML-Name: ruby-core X-Mail-Count: 109964 Subject: [ruby-core:109964] [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" SXNzdWUgIzE2MTIyIGhhcyBiZWVuIHVwZGF0ZWQgYnkgdWZ1ayAoVWZ1ayBLYXlzZXJpbGlvZ2x1 KS4KCgp6dmVyb2sgKFZpY3RvciBTaGVwZWxldikgd3JvdGUgaW4gI25vdGUtNzU6Cj4gKiBJIGFt IG5vdCBzdXJlIHRoYXQgIm5hbWluZyBhcyBhIGZpcnN0IGFyZ3VtZW50IiBpcyBhIHdpZGVseSB1 c2VkIGZlYXR1cmUsIGJ1dCBpdCBzZWVtcyBuaWNlLCBzbyBJIGxlZnQgaXQgZm9yIGBEYXRhYCB0 b28gKGFuZCB0ZXN0cyBjb25maXJtaW5nIGl0cyBleGlzdGVuY2UpOyBJIGltYWdpbmUgdGhhdCBp biBzb21lIHN5c3RlbXMsIGRvaW5nIGBEYXRhLmRlZmluZSgnTXlUeXBlJywgOm1lbWJlcnMpYCBt aWdodCBiZSBwcmVmZXJyZWQgd2F5OwoKSW4gbXkgb3BpbmlvbiwgdGhpcyBpcyBhIGdvb2QgdGlt ZSB0byBicmVhayBmcmVlIGZyb20gdGhpcyBvbGQgQVBJIGFuZCBzdGFydCB3aXRoIGEgYmV0dGVy IGRlc2lnbi4gVGhlIGZhY3QgdGhhdCB0aGUgYGNsYXNzX25hbWVgIGFyZ3VtZW50IGRlZmluZXMg YSBjb25zdGFudCB1bmRlciBgU3RydWN0YCBpcyBhIGxpdHRsZSB0b28gbWFnaWNhbCwgbmVlZGxl c3NseSBwb2xsdXRlcyB0aGUgbmFtZXNwYWNlLCBhbmQgbGVhZHMgdG8gbmFtZSBjbGFzaGVzLiBJ IHdvdWxkIHByZWZlciBpdCBpZiBgRGF0YWAgZGlkbid0IGluaGVyaXQgdGhlIHNhbWUgdGhpbmcg ZnJvbSBgU3RydWN0YCBhbmQgaGFkIGEgbW9yZSBwdXJwb3NlIGRlc2lnbmVkIEFQSSBmcm9tIHRo ZSBzdGFydC4KCkkgY2FuIGFsc28gc2VlIGZyb20gQG1hdHogJ3MgcHJldmlvdXMgbWVzc2FnZSBp biB0aGlzIHRocmVhZCB0aGF0IGhlIGNvbnNpZGVycyB0aGF0IHN5bnRheCBhcyAib2xkLXN0eWxl Ii4gTW9yZW92ZXIsIHRoZSBleGlzdGVuY2Ugb2YgdGhlIGBjbGFzc19uYW1lYCBwYXJhbWV0ZXIg d2FzIG9uZSBvZiBoaXMgcmVhc29ucyBhZ2FpbnN0IHRoZSBuYW1lIGBTdHJ1Y3Q6OlZhbHVlYC4g SXQgd291bGQgaGF2ZSBiZWVuIGhvcnJpYmxlIHRvIG5vdCBiZSBhYmxlIHRvIHVzZSBpdCBpZiBp dCB3YXMgdGhlIGJlc3QgbmFtZSBmb3IgdGhlIGNvbmNlcHQsIGp1c3QgYmVjYXVzZSBpdCBjb3Vs ZCBjbGFzaCB3aXRoIHNvbWVvbmUgZWxzZSdzIG1hZ2ljYWwgc3RydWN0IGNsYXNzLiBMdWNraWx5 IGBEYXRhYCB3YXMgYSBiZXR0ZXIgbmFtZSBmb3IgaXQuIEknZCByYXRoZXIgdGhhdCB3ZSBkb24n dCBwYWludCBvdXJzZWx2ZXMgaW50byBzaW1pbGFyIGNvcm5lcnMgaW4gdGhlIGZ1dHVyZS4KCm1h dHogKFl1a2loaXJvIE1hdHN1bW90bykgd3JvdGUgaW4gI25vdGUtNDU6Cj4gU3RydWN0OjpWYWx1 ZSBjYW4gY2F1c2UgY29uZmxpY3Qgd2hlbiBzb21lb25lIGlzIHVzaW5nIGBTdHJ1Y3QubmV3KCJW YWx1ZSIsIDpmb28sIDpiYXIpYCAodGhpcyBvbGQtc3R5bGUgY29kZSBjcmVhdGVzIFN0cnVjdDo6 VmFsdWUgY2xhc3MpLgoKCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CkZlYXR1cmUgIzE2MTIyOiBEYXRhOiBzaW1wbGUgaW1tdXRhYmxlIHZhbHVlIG9iamVjdApodHRw czovL2J1Z3MucnVieS1sYW5nLm9yZy9pc3N1ZXMvMTYxMjIjY2hhbmdlLTk5MjE0CgoqIEF1dGhv cjogenZlcm9rIChWaWN0b3IgU2hlcGVsZXYpCiogU3RhdHVzOiBBc3NpZ25lZAoqIFByaW9yaXR5 OiBOb3JtYWwKKiBBc3NpZ25lZTogenZlcm9rIChWaWN0b3IgU2hlcGVsZXYpCi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKipWYWx1ZSBPYmplY3QqKiBpcyBhIHVzZWZ1 bCBjb25jZXB0LCBpbnRyb2R1Y2VkIGJ5IE1hcnRpbiBGb3dsZXIgKFtoaXMgcG9zdF0oaHR0cHM6 Ly9tYXJ0aW5mb3dsZXIuY29tL2JsaWtpL1ZhbHVlT2JqZWN0Lmh0bWwpLCBbV2lraXBlZGlhIEVu dHJ5XShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9WYWx1ZV9vYmplY3QpKSB3aXRoIHRo ZSBmb2xsb3dpbmcgcHJvcGVydGllcyAoc2ltcGxpZnlpbmcgdGhlIGlkZWEpOgoKKiByZXByZXNl bnRpbmcgc29tZSByZWxhdGl2ZWx5IHNpbXBsZSBkYXRhOwoqIGltbXV0YWJsZTsKKiBjb21wYXJl ZCBieSB0eXBlICYgdmFsdWU7CiogbmljZWx5IHJlcHJlc2VudGVkLgoKVmFsdWUgb2JqZWN0cyBh cmUgc3VwZXItdXNlZnVsIGVzcGVjaWFsbHkgZm9yIGRlZmluaW5nIEFQSXMsIHRoZWlyIGlucHV0 L3JldHVybiB2YWx1ZXMuIFJlY2VudGx5LCB0aGVyZSB3ZXJlIHNvbWUgbW92ZW1lbnQgdG93YXJk cyB1c2luZyBtb3JlIGltbXV0YWJpbGl0eS1mcmllbmRseSBhcHByb2FjaCBpbiBSdWJ5IHByb2dy YW1taW5nLCBsZWFkaW5nIHRvIGNyZWF0aW5nIHNldmVyYWwgZGlzY3Vzc2lvbnMvbGlicmFyaWVz IHdpdGggdmFsdWUgb2JqZWN0cy4gRm9yIGV4YW1wbGUsIFtUb20gRGFsbGluZydzIGdlbV0oaHR0 cHM6Ly9naXRodWIuY29tL3RvbWRhbGxpbmcvdmFsdWVfc2VtYW50aWNzKSwgW0dvb2QgUnVieSBW YWx1ZSBvYmplY3QgY29udmVudGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL3p2ZXJvay9nb29kLXZh bHVlLW9iamVjdCkgKGRpc2NsYWltZXI6IHRoZSBsYXR0ZXIgaXMgbWFpbnRhaW5lZCBieSB5b3Vy cyB0cnVseSkuCgpJIHByb3Bvc2UgdG8gaW50cm9kdWNlICoqbmF0aXZlIHZhbHVlIG9iamVjdHMq KiB0byBSdWJ5IGFzIGEgY29yZSBjbGFzcy4KCioqV2h5IG5vdCBhIGdlbT8qKgoKKiBJIGJlbGll dmUgdGhhdCBjb25jZXB0IGlzIHRoYXQgc2ltcGxlLCB0aGF0IG5vYm9keSAqd2lsbCBldmVuIHRy eSogdG8gdXNlIGEgZ2VtIGZvciByZXByZXNlbnRpbmcgaXQgd2l0aCwgdW5sZXNzIHRoZSBmcmFt ZXdvcmsvbGlicmFyeSB1c2VkIGFscmVhZHkgcHJvdmlkZXMgb25lLgoqIFBvdGVudGlhbGx5LCBh IGxvdCBvZiBzdGFuZGFyZCBsaWJyYXJ5IChhbmQgcHJvYmFibHkgZXZlbiBjb3JlKSBBUElzIGNv dWxkIGJlbmVmaXQgZnJvbSB0aGUgY29uY2VwdC4KCioqV2h5IGBTdHJ1Y3RgIGlzIG5vdCBlbm91 Z2gqKgoKQ29yZSBgU3RydWN0YCBjbGFzcyBpcyAic29tZXdoYXQgYWxpa2UiIHZhbHVlLW9iamVj dCwgYW5kIGZyZXF1ZW50bHkgdXNlZCBpbnN0ZWFkIG9mIG9uZTogaXQgaXMgY29tcGFyZWQgYnkg dmFsdWUgYW5kIGNvbnNpc3RzIG9mIHNpbXBsZSBhdHRyaWJ1dGVzLiBPbiB0aGUgb3RoZXIgaGFu ZCwgYFN0cnVjdGAgaXM6CiogbXV0YWJsZTsKKiBjb2xsZWN0aW9uLWFsaWtlIChkZWZpbmVzIGB0 b19hYCBhbmQgaXMgYEVudW1lcmFibGVgKTsKKiBkaWN0aW9uYXJ5LWFsaWtlIChoYXMgYFtdYCBh bmQgYC52YWx1ZXNgIG1ldGhvZHMpLgoKVGhlIGFib3ZlIHRyYWl0cyBzb21laG93IGVyb2RlcyB0 aGUgc2VtYW50aWNzLCBtYWtpbmcgY29kZSBsZXNzIGNsZWFyLCBlc3BlY2lhbGx5IHdoZW4gZHVj ay10eXBpbmcgaXMgdXNlZC4KCkZvciBleGFtcGxlLCB0aGlzIGNvZGUgc25pcHBldCBzaG93cyB3 aHkgYHRvX2FgIGlzIHByb2JsZW1hdGljOgoKYGBgcnVieQpSZXN1bHQgPSBTdHJ1Y3QubmV3KDpz dWNjZXNzLCA6Y29udGVudCkKCiMgTm93LCBpbWFnaW5lIHRoYXQgb3RoZXIgY29kZSBhc3N1bWVz IGBkYXRhYCBjb3VsZCBiZSBlaXRoZXIgUmVzdWx0LCBvciBbUmVzdWx0LCBSZXN1bHQsIFJlc3Vs dF0KIyBTbywgLi4uCgpkYXRhID0gUmVzdWx0Lm5ldyh0cnVlLCAnaXQgaXMgYXdlc29tZScpCgpB cnJheShkYXRhKSAjID0+IGV4cGVjdGVkIFtSZXN1bHQodHJ1ZSwgJ2l0IGlzIGF3ZXNvbWUnKV0s IGdvdCBbdHJ1ZSwgJ2l0IGlzIGF3ZXNvbWUnXQoKIyBvci4uLgpkZWYgZm9vKGFyZzEsIGFyZzIg PSBuaWwpCnAgYXJnMSwgYXJnMgplbmQKCmZvbygqZGF0YSkgIyA9PiBleHBlY3RlZCBbUmVzdWx0 KHRydWUsICdpdCBpcyBhd2Vzb21lJyksIG5pbF0sIGdvdCBbdHJ1ZSwgJ2l0IGlzIGF3ZXNvbWUn XQpgYGAKCkhhdmluZyBgW11gIGFuZCBgZWFjaGAgZGVmaW5lZCBvbiBzb21ldGhpbmcgdGhhdCBp cyB0aG91Z2h0IGFzICJqdXN0IHZhbHVlIiBjYW4gYWxzbyBsZWFkIHRvIHN1YnRsZSBidWdzLCB3 aGVuIHNvbWUgbWV0aG9kIGNoZWNrcyAiaWYgdGhlIHJlY2VpdmVkIGFyZ3VtZW50IGlzIGNvbGxl Y3Rpb24tYWxpa2UiLCBhbmQgdmFsdWUgb2JqZWN0J3MgYXV0aG9yIGRvZXNuJ3QgdGhvdWdodCBv ZiBpdCBhcyBhIGNvbGxlY3Rpb24uCgoqKkNvbmNyZXRlIHByb3Bvc2FsKioKCiogQ2xhc3MgbmFt ZTogYFN0cnVjdDo6VmFsdWVgOiBsb3Qgb2YgUnVieWlzdHMgYXJlIHVzZWQgdG8gaGF2ZSBgU3Ry dWN0YCBhcyBhIHF1aWNrICJzb21ldGhpbmctbGlrZS12YWx1ZSIgZHJvcC1pbiwgc28gYWx0ZXJu YXRpdmUsIG1vcmUgc3RyaWN0IGltcGxlbWVudGF0aW9uLCBiZWluZyBwYXJ0IG9mIGBTdHJ1Y3Rg IEFQSSwgd2lsbCBiZSBxdWl0ZSBkaXNjb3ZlcmFibGU7ICphbHRlcm5hdGl2ZToganVzdCBgVmFs dWVgKgoqIENsYXNzIEFQSSBpcyBjb3B5aW5nIGBTdHJ1Y3RgcyBvbmUgKG1vc3Qgb2YgdGhlIHRp bWUgLS0gZXZlbiByZXVzZXMgdGhlIGltcGxlbWVudGF0aW9uKSwgd2l0aCB0aGUgZm9sbG93aW5n IGV4Y2VwdGlvbnMgKihub3RlOiB0aGUgaW1tdXRhYmlsaXR5IGlzICoqbm90KiogdGhlIG9ubHkg ZGlmZmVyZW5jZSkqOgogICogTm90IGBFbnVtZXJhYmxlYDsKICAqIEltbXV0YWJsZTsKICAqIERv ZXNuJ3QgdGhpbmsgb2YgaXRzZWxmIGFzICJhbG1vc3QgaGFzaCIgKGRvZXNuJ3QgaGF2ZSBgdG9f YWAsIGB2YWx1ZXNgIGFuZCBgW11gIG1ldGhvZHMpOwogICogQ2FuIGhhdmUgZW1wdHkgbWVtYmVy cyBsaXN0IChmdW4gZmFjdDogYFN0cnVjdC5uZXcoJ0ZvbycpYCBjcmVhdGluZyBtZW1iZXItbGVz cyBgU3RydWN0OjpGb29gLCBpcyBhbGxvd2VkLCBidXQgYFN0cnVjdC5uZXcoKWAgaXMgbm90KSB0 byBhbGxvdyB1c2FnZSBwYXR0ZXJucyBsaWtlOgoKYGBgcnVieQpjbGFzcyBNeVNlcnZpY2UKICBT dWNjZXNzID0gU3RydWN0OjpWYWx1ZS5uZXcoOnJlc3VsdHMpCiAgTm90Rm91bmQgPSBTdHJ1Y3Q6 OlZhbHVlLm5ldwplbmQKYGBgCgpgTm90Rm91bmRgIGhlcmUsIHVubGlrZSwgc2F5LCBgT2JqZWN0 Lm5ldy5mcmVlemVgIChhbm90aGVyIHBhdHRlcm4gZm9yIGNyZWF0aW5nICJlbXB0eSB0eXBlZCB2 YWx1ZSBvYmplY3QiKSwgaGFzIG5pY2UgaW5zcGVjdCBgIzx2YWx1ZSBOb3RGb3VuZD5gLCBhbmQg Y3JlYXRlZCBjb25zaXN0ZW50bHkgd2l0aCB0aGUgYFN1Y2Nlc3NgLCBtYWtpbmcgdGhlIGNvZGUg bW9yZSByZWFkYWJsZS4gQW5kIGlmIGl0IHdpbGwgZXZvbHZlIHRvIGhhdmUgc29tZSBhdHRyaWJ1 dGVzLCB0aGUgY29kZSBjaGFuZ2Ugd291bGQgYmUgZWFzeS4KCioqUGF0Y2ggaXMgcHJvdmlkZWQq KgoKW1NhbXBsZSByZW5kZXJlZCBSRG9jIGRvY3VtZW50YXRpb25dKGh0dHBzOi8venZlcm9rLmdp dGh1Yi5pby9ydWJ5LXJkb2MvU3RydWN0LVZhbHVlLmh0bWwpCgotLS1GaWxlcy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN0cnVjdF92YWx1ZS5wYXRjaCAoMTguNiBLQikKCgotLSAK aHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvCg==