Hi! > Please could someone anyone who understands the implications for what > this means for the internals of the PHP engine provide some detailed > reasons for why this shouldn't be approved, if there are any reasons. > > Otherwise voters might 'irresponsibly' vote yes, without being aware of them.
This is the tricky one because it gets into one of the corner cases of the engine that has never worked perfectly. We have a bunch of places where we can get some code executed in the middle of other code executed, and it never worked particularly well. One of such places is (un)serialization, another is error and exception handling. Generally, running code from the guts of the engine is dangerous, because there might be stale pointers, race conditions (not the parallel kind but the kind "we checked it above, but below it may no longer be the case because we run code in between"), shared mutable state, etc. and it's nigh impossible to ensure nothing gets broken by it. That said, the work done on the patch is super impressive. I am reasonably sure that Nikita caught as many instances of something going wrong when string conversion fails as humanly possible. And I agree that banning exceptions didn't actually solve the problem anyway, because error handlers present the same exactly issue - exceptions are just much more prominent and immediate in their effects, but with some hostile coding - or even some inadvertently convoluted one - you'd run into the same issues again. Some extensions will probably have some trouble - though with high likelyhood they already do anyway. I think since the reason why it was banned is largely gone with this patch it's a good step forward. There are probably still some corner cases that would not work properly - I am especially worried about variables left un-initialized in places where they are expected to be initialized - like internal classes - but I think the awesome job done on this patch is a good step forward and unless we discover some critical issue blocking it, it makes sense to do it. I plan to try and review the patch in my copious free time, but so far I do not have any objections beyond "yet another place where things could go wrong". Since that place effectively already existed, I think this RFC is good. -- Stas Malyshev smalys...@gmail.com -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php