Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:96882 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 51963 invoked from network); 14 Nov 2016 09:20:22 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 14 Nov 2016 09:20:22 -0000 Authentication-Results: pb1.pair.com header.from=pthreads@pthreads.org; sender-id=unknown Authentication-Results: pb1.pair.com smtp.mail=pthreads@pthreads.org; spf=permerror; sender-id=unknown Received-SPF: error (pb1.pair.com: domain pthreads.org from 74.125.82.49 cause and error) X-PHP-List-Original-Sender: pthreads@pthreads.org X-Host-Fingerprint: 74.125.82.49 mail-wm0-f49.google.com Received: from [74.125.82.49] ([74.125.82.49:38369] helo=mail-wm0-f49.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id AF/51-34859-3D189285 for ; Mon, 14 Nov 2016 04:20:20 -0500 Received: by mail-wm0-f49.google.com with SMTP id f82so86036223wmf.1 for ; Mon, 14 Nov 2016 01:20:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pthreads-org.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=12n4JVfFCGhfbcnsLRS1UeWkW05tYkKmFJ2sm/Mrm9A=; b=LOEFp2UxWxBAbawnioKhe4nfhlWy2Pjw+e7YdijcK35sI1/jnTBaxDS9W0A1sb8gRm +K1IOIByqFD/Y8La5OI7aD3SW9NQsFAOJ6CuUlD/aRusmjWB/ph9m6P6eLP4TZ3DjcGJ 1/QpJxzMXda4MWP/bE4OZNzH47wZbRBVRynR5GdvTNFZ7D1sA8MzBQII3pBwSf+c5I+b J6RGrdQ3XlnspTt1gpjHgZ40F3eeuWHFqBIadto2B4THLxqLjHIvMK7/o3HTrU4IJjAT qVl29HFLui+qkyBa7llUcej1fX5bCIros8NBf2sVXTuAy6nfMZx/AIoVGs21Yngw1dUE dIlg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=12n4JVfFCGhfbcnsLRS1UeWkW05tYkKmFJ2sm/Mrm9A=; b=GH4puqTczcS5c5nkQHdmuvSHm/6XlGgDxNtzBuKjQ1WgBqdfd8eXCsqk9Ii0ZVWT8Y O6+RJi5P6ud1AeOdOMXUDZMQ4vdFGdlZaR6qGMqmcnMNVkGhhk+invigjo35okwZZ9N/ A8NYew5LlE59XrnnT51SBMCtZrAudvrHWRHON6UHaX/xBE7uUKAPEz6J3lPmKIdis5/c YRFsXVCCQ1b3kMdgOlEYIhpuEotSQ69v3bCE6tu3rq/gyvuTxe+WwiJQpZ7t7Unzx5Ws FwDjIgeYShZ8l0RqJ9XLMAABksRBVmUvKs8DAjwVoMNYZVcKL/ymZOD0SLivJ0QAFGpB egdA== X-Gm-Message-State: ABUngveQF5tL3rVA+bYI7m24ojHPvNfKkogc4m9igQRE6Npnu0Un/Yd7FKm9UPWY17gnbYwMazbVIpXZKuITNA== X-Received: by 10.28.9.80 with SMTP id 77mr9851998wmj.68.1479115216830; Mon, 14 Nov 2016 01:20:16 -0800 (PST) MIME-Version: 1.0 Received: by 10.80.142.81 with HTTP; Mon, 14 Nov 2016 01:20:16 -0800 (PST) X-Originating-IP: [109.157.245.230] In-Reply-To: References: <0c171a20-c72d-4157-1117-6628a52dd1f0@gmx.de> Date: Mon, 14 Nov 2016 09:20:16 +0000 Message-ID: To: =?UTF-8?Q?Micha=C5=82_Brzuchalski?= Cc: Levi Morrison , Niklas Keller , "Christoph M. Becker" , PHP Internals List Content-Type: multipart/alternative; boundary=001a11444da814efc305413f59d6 Subject: Re: [PHP-DEV] [RFC][VOTE] Object typehint From: pthreads@pthreads.org (Joe Watkins) --001a11444da814efc305413f59d6 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Sorry people, my fault :( On Mon, Nov 14, 2016 at 9:16 AM, Micha=C5=82 Brzuchalski wrote: > Hi All, > > again with bad news, sorry for the mess, the argument override is allowed > in wrong direction what beaks Liskov's principle so need to stop it again= . > Hold on for a while, don't loose faith. > > regards, > Micha=C5=82 > > 2016-11-14 9:53 GMT+01:00 Micha=C5=82 Brzuchalski : > > > Hi All, > > > > Id' like to anounce voting reset - will end in two weeks on 28.11.2016 = at > > midnight and requires 2/3 majority as previously. > > > > There were improvements suggested by Joe Watkins and earlier by Nikita > > Popov to the patch. > > > > Those improvements are described on RFC under "Covariance" section > > https://wiki.php.net/rfc/object-typehint#covariance > > > > It means any `object` typehint or return type can be narrowed to more > > specified type (class name) similar to `iterable` pseudo-type but behav= es > > covariant (more general type can be raplaced with narrowed one). > > > > P.S. I hope this improvement will bring more positive votes. > > > > regards, > > -- > > Micha=C5=82 > > > > 2016-11-10 13:30 GMT+01:00 Joe Watkins : > > > >> Levi, > >> > >> You are assuming it would *need* to be removed :) > >> > >> Future RFC's must deal with the engine as they find it, as this RF= C > >> has done. > >> > >> If it is true that this would prohibit enums being non-objects, an= d > >> I'm not certain that it does, then enums would have to be objects, if > >> that's how they find the engine. > >> > >> If your only concern is about a non-existent feature, then maybe > >> you're concern can be alleviated by the non-existent JIT (which does > >> partially exist): With a JIT, it doesn't much matter what represents > enums > >> anyway. > >> > >> These are problems for the future, not today. > >> > >> Cheers > >> Joe > >> > >> On Thu, Nov 10, 2016 at 12:20 PM, Levi Morrison wrote: > >> > >>> On Thu, Nov 10, 2016 at 5:18 AM, Joe Watkins > >>> wrote: > >>> > Morning Levi, > >>> > > >>> >> There is a future compatibility issue of this same type with > `object`: > >>> > > >>> > If that is an issue, it is for future RFC's to deal with. > >>> > > >>> > Cheers > >>> > Joe > >>> > > >>> > > >>> > On Thu, Nov 10, 2016 at 12:12 PM, Levi Morrison > wrote: > >>> >> > >>> >> On Thu, Nov 10, 2016 at 2:11 AM, Niklas Keller > >>> wrote: > >>> >> > 2016-11-09 21:53 GMT+01:00 Christoph M. Becker >: > >>> >> > > >>> >> >> On 09.11.2016 at 17:28, Joe Watkins wrote: > >>> >> >> > >>> >> >> > I want to explain why I voted no on this: > >>> >> >> > > >>> >> >> > I think it's significantly less useful without variance, > >>> variance > >>> >> >> > is > >>> >> >> > something that is usually difficult to achieve in PHP, but no= t > >>> for > >>> >> >> > this > >>> >> >> > feature in particular. > >>> >> >> > >>> >> >> Can you please elaborate what you mean with variance? I see so= me > >>> >> >> practical use cases for covariance of a method with return type > >>> object, > >>> >> >> but I don't see how contravariance could be achieved for > >>> parameters of > >>> >> >> type object. > >>> >> >> > >>> >> >> If your suggestion is only about invariance of object return > >>> types, I'm > >>> >> >> not sure if this very special case would make sense (for > >>> consistency > >>> >> >> reasons). > >>> >> >> > >>> >> > > >>> >> > We already have it for iterable -> array. We would have it for a= ll > >>> other > >>> >> > types if there wouldn't be an implementation issue. > >>> >> > > >>> >> > Regards, Niklas > >>> >> > > >>> >> > Cheers, > >>> >> >> Christoph > >>> >> >> > >>> >> >> > I absolutely want it, but I want it to be properly useful= . > >>> >> >> > > >>> >> >> > If the RFC were halted and patched to include variance, I= 'd > >>> +1 > >>> >> >> > it. > >>> >> >> > > >>> >> >> > Cheers > >>> >> >> > Joe > >>> >> >> > > >>> >> >> > On Sun, Nov 6, 2016 at 5:28 PM, Micha=C5=82 Brzuchalski > >>> >> >> > >>> >> >> .com> > >>> >> >> > wrote: > >>> >> >> > > >>> >> >> >> Hi everyone, > >>> >> >> >> > >>> >> >> >> Two weeks have passed since this RFC was put to discussion > here. > >>> >> >> >> > >>> >> >> >> Therefore, I'm going to put it to a vote for inclusion in PH= P > >>> 7.2. > >>> >> >> >> > >>> >> >> >> Voting starts today, 2016-11-06, and will close after two > weeks > >>> on > >>> >> >> >> the > >>> >> >> >> Sunday 2016-11-20 at midnight. > >>> >> >> >> > >>> >> >> >> The RFC and voting widget can be found here: > >>> >> >> >> https://wiki.php.net/rfc/object-typehint > >>> >> >> >> > >>> >> >> >> It's a normal 2/3 majority required vote. > >>> >> >> >> > >>> >> >> >> Thanks! > >>> >> >> >> -- > >>> >> >> >> regards / pozdrawiam, > >>> >> >> >> -- > >>> >> >> >> Micha=C5=82 Brzuchalski > >>> >> >> >> about.me/brzuchal > >>> >> >> >> brzuchalski.com > >>> >> >> >> > >>> >> >> > > >>> >> >> > >>> >> >> > >>> >> >> -- > >>> >> >> PHP Internals - PHP Runtime Development Mailing List > >>> >> >> To unsubscribe, visit: http://www.php.net/unsub.php > >>> >> >> > >>> >> >> > >>> >> > >>> >> In a return type context `iterable` can be changed to `Traversable= ` > or > >>> >> `array`; it cannot be changed to `Collection` as we cannot guarant= ee > >>> >> at compile-time that `Collection` implements Traversable. > >>> >> > >>> >> There is a future compatibility issue of this same type with > `object`: > >>> >> right now the only user-definable types are objects. However, enum= s > >>> >> are an often requested feature and they may not be objects. Thus w= e > >>> >> wouldn't be able to guarantee that `Foo` is an object. There is a > >>> >> draft RFC with a patch for enums and expect it will come to a > >>> >> discussion soon, so I don't think we'll have to wait very long to > know > >>> >> the answer here. > >>> > > >>> > > >>> > >>> I strongly disagree here; once we add `object` return type covariance > >>> it cannot easily be removed. > >>> > >> > >> > > > > > > -- > > regards / pozdrawiam, > > -- > > Micha=C5=82 Brzuchalski > > about.me/brzuchal > > brzuchalski.com > > > > > > -- > regards / pozdrawiam, > -- > Micha=C5=82 Brzuchalski > about.me/brzuchal > brzuchalski.com > --001a11444da814efc305413f59d6--