[VOTE] Exceptions in the engine

php.internals

Nikita Popov

11 years ago
Hi internals! Voting on the engine exceptions RFC, which proposes to convert existing fatal and recoverable fatal errors into exceptions, has opened: https://wiki.php.net/rfc/engine_exceptions_for_php7#vote The primary vote requires a 2/3 majority, as this is a language change. A second vote will decide whether to use a BaseException based inheritance hierarchy. This vote uses a simple majority. Voting is open until 2015-03-08. Nikita

Yasuo Ohgaki

11 years ago
Hi Nikita, On Tue, Feb 24, 2015 at 3:15 AM, Nikita Popov <nikita.ppv@gmail.com> wrote:
> Voting on the engine exceptions RFC, which proposes to convert existing > fatal and recoverable fatal errors into exceptions, has opened: > > https://wiki.php.net/rfc/engine_exceptions_for_php7#vote > > The primary vote requires a 2/3 majority, as this is a language change. > > A second vote will decide whether to use a BaseException based inheritance > hierarchy. This vote uses a simple majority. >
Although, AbstractException sounds better to me. I voted "yes" for it now. We probably need more specific coding standard for class/interface names for internal classes/interfaces. Regards,
-- Yasuo Ohgaki yohgaki@ohgaki.net

Pavel Kouřil

11 years ago
On Tue, Feb 24, 2015 at 12:03 AM, Yasuo Ohgaki <yohgaki@ohgaki.net> wrote:
> Hi Nikita, > > On Tue, Feb 24, 2015 at 3:15 AM, Nikita Popov <nikita.ppv@gmail.com> wrote: > >> Voting on the engine exceptions RFC, which proposes to convert existing >> fatal and recoverable fatal errors into exceptions, has opened: >> >> https://wiki.php.net/rfc/engine_exceptions_for_php7#vote >> >> The primary vote requires a 2/3 majority, as this is a language change. >> >> A second vote will decide whether to use a BaseException based inheritance >> hierarchy. This vote uses a simple majority. >> > > Although, AbstractException sounds better to me. I voted "yes" for it now. > > We probably need more specific coding standard for class/interface names > for internal > classes/interfaces. > > Regards, > > -- > Yasuo Ohgaki > yohgaki@ohgaki.net
Hello, I personally find both BaseException and AbstractException ugly. The "Throwable" is IMHO much better. Regards Pavel Kouril

Yasuo Ohgaki

11 years ago
Hi all, On Tue, Feb 24, 2015 at 4:28 PM, Pavel Kouřil <pajousek@gmail.com> wrote:
> I personally find both BaseException and AbstractException ugly. The > "Throwable" is IMHO much better. >
We definitely need coding(naming) standard :) We may have coding standard before PHP7 release and cleanup all. For people dislike BaseException, please do not vote "no" only for this. It may be changed later. Regards,
-- Yasuo Ohgaki yohgaki@ohgaki.net

Dennis Birkholz

11 years ago
Hi, Am 23.02.2015 um 19:15 schrieb Nikita Popov:
> A second vote will decide whether to use a BaseException based inheritance > hierarchy. This vote uses a simple majority.
I like this RFC and hope it passes. I am a little concerned about littering the global namespace. It would be preferable to have a single namespace that is reserved for all build in classes (like \PHP) that contains all classes like exceptions. The name BaseException seems to be a very common one: https://github.com/search?l=php&q=baseexception&type=Code finds about 14k matches, so this may be a huge BC break if the actual class name is not changed. Thanks Dennis

Yasuo Ohgaki

11 years ago
Hi all, On Tue, Feb 24, 2015 at 8:04 PM, Dennis Birkholz <dennis@birkholz.biz> wrote:
> Am 23.02.2015 um 19:15 schrieb Nikita Popov: > > A second vote will decide whether to use a BaseException based > inheritance > > hierarchy. This vote uses a simple majority. > > I like this RFC and hope it passes. I am a little concerned about > littering the global namespace. It would be preferable to have a single > namespace that is reserved for all build in classes (like \PHP) that > contains all classes like exceptions. The name BaseException seems to be > a very common one: > https://github.com/search?l=php&q=baseexception&type=Code finds about > 14k matches, so this may be a huge BC break if the actual class name is > not changed. >
It seems AbstractException is better choice for BC. https://github.com/search?l=php&q=abstractexception&ref=searchresults&type=Code There are 661 matches, but most of them are using namespace unlike BaseException. Someone proposed to use namespace for all PHP functions/classes and clean global namespace up. This gives us flexibility also. e.g Providing compatibility to older functions/classes to mitigate BC impact. Use of namespace is BC by itself, but it may be better to consider namespace use for internal features. We don't have much time, so it may be for PHP8... Regards,
-- Yasuo Ohgaki yohgaki@ohgaki.net

Martin Keckeis

11 years ago
2015-02-24 13:29 GMT+01:00 Yasuo Ohgaki <yohgaki@ohgaki.net>:
> Hi all, > > On Tue, Feb 24, 2015 at 8:04 PM, Dennis Birkholz <dennis@birkholz.biz> > wrote: > > > Am 23.02.2015 um 19:15 schrieb Nikita Popov: > > > A second vote will decide whether to use a BaseException based > > inheritance > > > hierarchy. This vote uses a simple majority. > > > > I like this RFC and hope it passes. I am a little concerned about > > littering the global namespace. It would be preferable to have a single > > namespace that is reserved for all build in classes (like \PHP) that > > contains all classes like exceptions. The name BaseException seems to be > > a very common one: > > https://github.com/search?l=php&q=baseexception&type=Code finds about > > 14k matches, so this may be a huge BC break if the actual class name is > > not changed. > > > > It seems AbstractException is better choice for BC. > > > https://github.com/search?l=php&q=abstractexception&ref=searchresults&type=Code > > There are 661 matches, but most of them are using namespace unlike > BaseException. > > > Someone proposed to use namespace for all PHP functions/classes and > clean global namespace up. This gives us flexibility also. e.g Providing > compatibility to older functions/classes to mitigate BC impact. > > Use of namespace is BC by itself, but it may be better to consider > namespace > use for internal features. We don't have much time, so it may be for > PHP8... > >
All "none" namespaced classnames are IMO reserved for PHP.... So if you develop an application/classes you (should) always prefix a vendor/project namesapce. But +1 for PHP8+ for a PHP namespace. For PHP7 please do not do too much at once.

Sebastian Bergmann

11 years ago
Am 23.02.2015 um 19:15 schrieb Nikita Popov:
> Voting on the engine exceptions RFC, which proposes to convert existing > fatal and recoverable fatal errors into exceptions, has opened: > > https://wiki.php.net/rfc/engine_exceptions_for_php7#vote > > The primary vote requires a 2/3 majority, as this is a language change. > > A second vote will decide whether to use a BaseException based inheritance > hierarchy. This vote uses a simple majority.
I have voted yes on "Allow exceptions in the engine and conversion of existing fatals?" and no on "Introduce and use BaseException?" and would like to elaborate on the latter. I am sorry that I was unable to raise this concern earlier (did not really become aware of the RFC before it was put to the vote), but I would prefer the following: * Introduce a Throwable interface * Let Exception implement the Throwable interface * Introduce an Error class that implements the Throwable interface * Use Error class as base class for exceptions raised by the engine This would be along the lines of what Java does.

Jordi Boggiano

11 years ago
On 27/02/2015 14:31, Sebastian Bergmann wrote:
> Am 23.02.2015 um 19:15 schrieb Nikita Popov: >> Voting on the engine exceptions RFC, which proposes to convert existing >> fatal and recoverable fatal errors into exceptions, has opened: >> >> https://wiki.php.net/rfc/engine_exceptions_for_php7#vote >> >> The primary vote requires a 2/3 majority, as this is a language change. >> >> A second vote will decide whether to use a BaseException based inheritance >> hierarchy. This vote uses a simple majority. > > I have voted yes on "Allow exceptions in the engine and conversion of > existing fatals?" and no on "Introduce and use BaseException?" and > would like to elaborate on the latter. > > I am sorry that I was unable to raise this concern earlier (did not > really become aware of the RFC before it was put to the vote), but I > would prefer the following: > > * Introduce a Throwable interface > * Let Exception implement the Throwable interface > * Introduce an Error class that implements the Throwable interface > * Use Error class as base class for exceptions raised by the engine > > This would be along the lines of what Java does.
+1 on that, and as it seems the BaseException is going to pass, it might be good to quickly draft another RFC to amend that part. It seems people in general favor the fact that catch(Exception $e) does not catch those new engine exceptions, but there hopefully would not be much resistance against a cleaner scheme than a BaseException class. Also the Error (and possibly Throwable) class/interface might be put in a PHP namespace and then we avoid any potential BC issues, but that's perhaps another voting point :) Cheers

Guilherme Blanco

11 years ago
+1 on Sebastian's suggestion. =) I volunteer to either update the RFC or create a new one to resolve this once "Exceptions in the engine" passes (which looks like a reality already to me). Just tell me which approach I should take and I'll happily write the RFC. []s, On Fri, Feb 27, 2015 at 9:47 AM, Jordi Boggiano <j.boggiano@seld.be> wrote:
> On 27/02/2015 14:31, Sebastian Bergmann wrote: > >> Am 23.02.2015 um 19:15 schrieb Nikita Popov: >> >>> Voting on the engine exceptions RFC, which proposes to convert existing >>> fatal and recoverable fatal errors into exceptions, has opened: >>> >>> https://wiki.php.net/rfc/engine_exceptions_for_php7#vote >>> >>> The primary vote requires a 2/3 majority, as this is a language change. >>> >>> A second vote will decide whether to use a BaseException based >>> inheritance >>> hierarchy. This vote uses a simple majority. >>> >> >> I have voted yes on "Allow exceptions in the engine and conversion of >> existing fatals?" and no on "Introduce and use BaseException?" and >> would like to elaborate on the latter. >> >> I am sorry that I was unable to raise this concern earlier (did not >> really become aware of the RFC before it was put to the vote), but I >> would prefer the following: >> >> * Introduce a Throwable interface >> * Let Exception implement the Throwable interface >> * Introduce an Error class that implements the Throwable interface >> * Use Error class as base class for exceptions raised by the engine >> >> This would be along the lines of what Java does. >> > > +1 on that, and as it seems the BaseException is going to pass, it might > be good to quickly draft another RFC to amend that part. > > It seems people in general favor the fact that catch(Exception $e) does > not catch those new engine exceptions, but there hopefully would not be > much resistance against a cleaner scheme than a BaseException class. > > Also the Error (and possibly Throwable) class/interface might be put in a > PHP namespace and then we avoid any potential BC issues, but that's perhaps > another voting point :) > > Cheers > > > > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php > >
-- Guilherme Blanco MSN: guilhermeblanco@hotmail.com GTalk: guilhermeblanco Toronto - ON/Canada

Larry Garfield

11 years ago
On 2/27/15 9:28 AM, guilhermeblanco@gmail.com wrote:
> +1 on Sebastian's suggestion. =) > > I volunteer to either update the RFC or create a new one to resolve this > once "Exceptions in the engine" passes (which looks like a reality already > to me). > > Just tell me which approach I should take and I'll happily write the RFC. > > []s,
The RFC is currently in voting, so editing it directly is a no-no. A new, short RFC, please. (Exception implements Throwable, Error implements Throwable sounds good to me. Should we ask about SomeUserspaceClass implements Throwable, or will someone hit me for that?) --Larry Garfield

Sebastian Bergmann

11 years ago
Am 28.02.2015 um 01:57 schrieb Larry Garfield:
> The RFC is currently in voting, so editing it directly is a no-no. A new, > short RFC, please. (Exception implements Throwable, Error implements > Throwable sounds good to me. Should we ask about SomeUserspaceClass > implements Throwable, or will someone hit me for that?)
I don't think Throwable should be implementable by userland classes.

Dmitry Stogov

11 years ago
Please, write additional RFC if you are ready to work on it and provide implementation. The class hierarchy is definitely not the main part of this one. The idea was just to make difference between Exception, EngineException and ParseException. Thanks. Dmirty. On Fri, Feb 27, 2015 at 5:47 PM, Jordi Boggiano <j.boggiano@seld.be> wrote:

Sebastian Bergmann

11 years ago
Am 27.02.2015 um 15:47 schrieb Jordi Boggiano:
> quickly draft another RFC to amend that part
So who will draft the RFC for * Introduce a Throwable interface * Let Exception implement the Throwable interface * Introduce an Error class that implements the Throwable interface * Use Error class as base class for exceptions raised by the engine ?

Sebastian Bergmann

11 years ago
Am 15.03.2015 um 08:07 schrieb Sebastian Bergmann:
> So who will draft the RFC for > > * Introduce a Throwable interface > * Let Exception implement the Throwable interface > * Introduce an Error class that implements the Throwable interface > * Use Error class as base class for exceptions raised by the engine > > ?
It was my idea, after all, only fair that I invest the time to make it into an RFC: https://wiki.php.net/rfc/throwable Please let me know if there is anything missing.

Pavel Kouřil

11 years ago
On Sun, Mar 15, 2015 at 8:27 AM, Sebastian Bergmann <sebastian@php.net> wrote:
> Am 15.03.2015 um 08:07 schrieb Sebastian Bergmann: >> So who will draft the RFC for >> >> * Introduce a Throwable interface >> * Let Exception implement the Throwable interface >> * Introduce an Error class that implements the Throwable interface >> * Use Error class as base class for exceptions raised by the engine >> >> ? > > It was my idea, after all, only fair that I invest the time to make > it into an RFC: https://wiki.php.net/rfc/throwable > > Please let me know if there is anything missing. > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php >
Hello, why global namespace? Why not just starting using namespaces for PHP stuff? The global namespace gets more and more polluted by this IMHO. Regards Pavel Kouril

Sebastian Bergmann

11 years ago
Am 15.03.2015 um 09:24 schrieb Pavel Kouřil:
> why global namespace?
Because that is where, as of today, built-in classes, interfaces, functions, etc. go. The introduction of a PHP namespace, for instance, would be the topic of a separate RFC.

Sebastian Bergmann

11 years ago
Am 15.03.2015 um 08:27 schrieb Sebastian Bergmann:
> It was my idea, after all, only fair that I invest the time to make > it into an RFC: https://wiki.php.net/rfc/throwable
The vote for this missed the boat for the PHP 7 deadline. However, if we really want to do this we should do it in PHP 7 or not at all (at least not for a long time) due to BC breaks. Thoughts?

Yasuo Ohgaki

11 years ago
Hi Sebastian, On Sun, Mar 22, 2015 at 2:05 AM, Sebastian Bergmann <sebastian@php.net> wrote:
> Am 15.03.2015 um 08:27 schrieb Sebastian Bergmann: > >> It was my idea, after all, only fair that I invest the time to make >> it into an RFC: https://wiki.php.net/rfc/throwable >> > > The vote for this missed the boat for the PHP 7 deadline. However, if > we really want to do this we should do it in PHP 7 or not at all (at > least not for a long time) due to BC breaks. > > Thoughts? >
It seems "BaseException" breaks many apps compare to proposed classes. We need to adjust how/which exception is raised. I'm +1 for this change. Regards,
-- Yasuo Ohgaki yohgaki@ohgaki.net

Sebastian Bergmann

11 years ago
Am 21.03.2015 um 18:05 schrieb Sebastian Bergmann:
> The vote for this missed the boat for the PHP 7 deadline. However, if > we really want to do this we should do it in PHP 7 or not at all (at > least not for a long time) due to BC breaks. > > Thoughts?
ping

Stas Malyshev

11 years ago
Hi!
>> The vote for this missed the boat for the PHP 7 deadline. However, if >> we really want to do this we should do it in PHP 7 or not at all (at >> least not for a long time) due to BC breaks. >> >> Thoughts?
It's kind of hard to recover the context here, but I assume it's https://wiki.php.net/rfc/throwable and replacing BaseException with Throwable. I like the idea, however we do have the deadline and the deadline has been passed. So I wonder if we can't keep it for 7.1 with the following modification (assuming the RFC passes): - BaseException implements Throwable - BaseException is deprecated in 7.1 - BaseException is removed in 7.2 or 8.0 Also I don't see Error class though it was mentioned in the previous discussion. Was it dropped for a reason?
-- Stas Malyshev smalyshev@gmail.com

Sebastian Bergmann

11 years ago
Am 30.04.2015 um 02:50 schrieb Stanislav Malyshev:
> I like the idea, however we do have the deadline and the > deadline has been passed. So I wonder if we can't keep it for 7.1
That means introducing a change in 7.0, changing it and deprecating part of it in 7.1, and removing said part in 7.2/8.0. Makes no sense to me. Either do it now for 7.0 or don't do it.

Julien Pauli

11 years ago
On Thu, Apr 30, 2015 at 6:51 AM, Sebastian Bergmann <sebastian@php.net> wrote:
> Am 30.04.2015 um 02:50 schrieb Stanislav Malyshev: > > I like the idea, however we do have the deadline and the > > deadline has been passed. So I wonder if we can't keep it for 7.1 > > That means introducing a change in 7.0, changing it and deprecating > part of it in 7.1, and removing said part in 7.2/8.0. Makes no sense > to me. Either do it now for 7.0 or don't do it. >
I tend to agree here. If we introduce BaseException, deprecating it one year later (probably) is a bad idea IMO. We could make an exception (sic !) and add the Throwable interface to PHP7, even after feature freeze, because it is an easy pick and having a clear Exception model for 7.0 is to my opinion very important. Julien.Pauli

Christoph Becker

11 years ago
Sebastian Bergmann wrote:
> I am sorry that I was unable to raise this concern earlier (did not > really become aware of the RFC before it was put to the vote), but I > would prefer the following: > > * Introduce a Throwable interface > * Let Exception implement the Throwable interface > * Introduce an Error class that implements the Throwable interface > * Use Error class as base class for exceptions raised by the engine > > This would be along the lines of what Java does.
Note, that a Throwable interface has been already brought up a while ago[1]. [1] <http://news.php.net/php.internals/83207>
-- Christoph M. Becker

David Zuelke

11 years ago
+1000 on this; so much better than the BaseException stuff!

Pascal MARTIN

11 years ago
Le 23/02/2015 19:15, Nikita Popov a écrit :
> Voting on the engine exceptions RFC, which proposes to convert existing > fatal and recoverable fatal errors into exceptions, has opened: > > https://wiki.php.net/rfc/engine_exceptions_for_php7#vote
Hi, After discussing the main proposition of this RFC with other people at AFUP, it appears we would be +1 (by a large margin !). Thanks for your work!
-- Pascal MARTIN, AFUP - French UG http://php-internals.afup.org/

Sebastian Bergmann

11 years ago
Am 23.02.2015 um 19:15 schrieb Nikita Popov:
> Voting is open until 2015-03-08.
Voting ends today and it looks like the RFC will be accepted. How should we proceed with regards to the comments I made in Message-ID: <54F07FC7.8050901@php.net> Date: Fri, 27 Feb 2015 15:31:35 +0100 Guilherme volunteered to create a new RFC for the Throwable interface immediately after this RFC is accepted. Sounds good to me :-)

Stas Malyshev

11 years ago
Hi!
> Message-ID: <54F07FC7.8050901@php.net> > Date: Fri, 27 Feb 2015 15:31:35 +0100 > > Guilherme volunteered to create a new RFC for the Throwable interface > immediately after this RFC is accepted. Sounds good to me :-)
I would say create the RFC :) Nothing says we should immediately rush with implementing it in exactly the same form as the RFC says and can't modify it - if throwable looks better, and there's a better solution using it, we could hold a bit for this one to be accepted I think.
-- Stas Malyshev smalyshev@gmail.com

Nikita Popov

11 years ago
On Mon, Feb 23, 2015 at 7:15 PM, Nikita Popov <nikita.ppv@gmail.com> wrote:
> Hi internals! > > Voting on the engine exceptions RFC, which proposes to convert existing > fatal and recoverable fatal errors into exceptions, has opened: > > https://wiki.php.net/rfc/engine_exceptions_for_php7#vote > > The primary vote requires a 2/3 majority, as this is a language change. > > A second vote will decide whether to use a BaseException based inheritance > hierarchy. This vote uses a simple majority. > > Voting is open until 2015-03-08. >
This RFC has been accepted with 60 votes in favor and 2 against. The BaseException hierarchy has been accepted with 39 in favor and 19 against. During voting some concerns about the naming of the BaseException class have been raised. This detail can be sorted out in a follow-up discussion - changing this (assuming only the name is changed) is simple and only a couple of tests need to be adjusted. Dmitry, do you want to merge your current patch? Nikita

David Zuelke

11 years ago
Why not wait with the merge until a consensus emerges regarding Throwable?

Bob Weinand

11 years ago
> Am 09.03.2015 um 12:04 schrieb David Zuelke <dz@heroku.com>: > > Why not wait with the merge until a consensus emerges regarding Throwable? > > >> On 09.03.2015, at 05:26, Nikita Popov <nikita.ppv@gmail.com> wrote: >> >> On Mon, Feb 23, 2015 at 7:15 PM, Nikita Popov <nikita.ppv@gmail.com> wrote: >> >>> Hi internals! >>> >>> Voting on the engine exceptions RFC, which proposes to convert existing >>> fatal and recoverable fatal errors into exceptions, has opened: >>> >>> https://wiki.php.net/rfc/engine_exceptions_for_php7#vote >>> >>> The primary vote requires a 2/3 majority, as this is a language change. >>> >>> A second vote will decide whether to use a BaseException based inheritance >>> hierarchy. This vote uses a simple majority. >>> >>> Voting is open until 2015-03-08. >>> >> >> This RFC has been accepted with 60 votes in favor and 2 against. The >> BaseException hierarchy has been accepted with 39 in favor and 19 against. >> >> During voting some concerns about the naming of the BaseException class >> have been raised. This detail can be sorted out in a follow-up discussion - >> changing this (assuming only the name is changed) is simple and only a >> couple of tests need to be adjusted. >> >> Dmitry, do you want to merge your current patch? >> >> Nikita
I'd like to merge master in and finish my patches to use the EngineException too. Also, what's the reason to delay it? The RFC only should be a tiny commit to rename and change from abstract class to interface. Whose voting will finish not before beginning of April... Nothing significant will be changed (simple find&replace, that's probably all), but it's easier to adapt, when the changes are in earlier. I just can repeat Nikita: Please merge it, Dmitry. Thanks, Bob

Dan Ackroyd

11 years ago
On 9 March 2015 at 11:04, David Zuelke <dz@heroku.com> wrote:
> Why not wait with the merge until a consensus emerges regarding Throwable?
The patch for engine exceptions is large - the longer that it is left unmerged, the more difficult it will be to do and people's time is valuable. It also delays finding bugs or other issues in the engine exception patch by at least two weeks, which is about 15% of the time until we're meant to be having an RC. Any change in the exception hierarchy or use of interfaces should be a small patch. Holding off on merging the engine exception patch doesn't make it significantly easier to do. So even though I hope we can clean up the exception hierarchy, merging the engine exceptions is the right choice imo. cheers Dan

Sebastian Bergmann

11 years ago
Am 09.03.2015 um 12:40 schrieb Dan Ackroyd:
> So even though I hope we can clean up the exception hierarchy, merging > the engine exceptions is the right choice imo.
Sounds reasonable to me. I'm wondering, though, whether we really need an additional RFC for the change I suggested as nobody spoke out against it and several were in favor.

Dmitry Stogov

11 years ago
On Mar 8, 2015 9:26 PM, "Nikita Popov" <nikita.ppv@gmail.com> wrote:
> > On Mon, Feb 23, 2015 at 7:15 PM, Nikita Popov <nikita.ppv@gmail.com>
wrote:
>> >> Hi internals! >> >> Voting on the engine exceptions RFC, which proposes to convert existing
fatal and recoverable fatal errors into exceptions, has opened:
>> >> https://wiki.php.net/rfc/engine_exceptions_for_php7#vote >> >> The primary vote requires a 2/3 majority, as this is a language change. >> >> A second vote will decide whether to use a BaseException based
inheritance hierarchy. This vote uses a simple majority.
>> >> Voting is open until 2015-03-08. > > > This RFC has been accepted with 60 votes in favor and 2 against. The
BaseException hierarchy has been accepted with 39 in favor and 19 against.
> > During voting some concerns about the naming of the BaseException class
have been raised. This detail can be sorted out in a follow-up discussion - changing this (assuming only the name is changed) is simple and only a couple of tests need to be adjusted.
> > Dmitry, do you want to merge your current patch?
Hi, Yes, I would prefer to merge it, because the patch is big and keeping it in synch with master is additional overhead. Also we will able to start converting more errors to exceptions. Please merge (I don't work today). On the other hand, I'm agree that using Throwable interface may make sense. If we have implementation and short RFC, I think we may start voting immediately, because it was already discussed together with this RFC. Thanks. Dmitry.