Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:88223 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 17559 invoked from network); 16 Sep 2015 01:08:19 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 16 Sep 2015 01:08:19 -0000 Authentication-Results: pb1.pair.com header.from=adam@adamharvey.name; sender-id=pass Authentication-Results: pb1.pair.com smtp.mail=adam@adamharvey.name; spf=pass; sender-id=pass Received-SPF: pass (pb1.pair.com: domain adamharvey.name designates 209.85.215.53 as permitted sender) X-PHP-List-Original-Sender: adam@adamharvey.name X-Host-Fingerprint: 209.85.215.53 mail-la0-f53.google.com Received: from [209.85.215.53] ([209.85.215.53:35207] helo=mail-la0-f53.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 02/12-30198-101C8F55 for ; Tue, 15 Sep 2015 21:08:17 -0400 Received: by lagj9 with SMTP id j9so120770215lag.2 for ; Tue, 15 Sep 2015 18:08:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adamharvey.name; s=google; h=mime-version:sender:from:date:message-id:subject:to:cc:content-type :content-transfer-encoding; bh=JOrvsgMLB+d2b53sD92ZrGY4YenQ73tB2hC8lKOwTWU=; b=AaSb+Ab1fzYjjmBpl/hg3mEhKvPCJ3XS/XI7ORKvwm/9pVDRRTo4jOsufLkW8RJG/k eWVMt5ND1xSugl5NdoF+af5DglAoLa4+5Hoitaf6JqIadX7/Mb9bCB39BnP1gcfzy4Iv GHfK9wGpd3DG3n66ipZvN3ldHJHZuJ3ttDVxk= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:sender:from:date:message-id:subject :to:cc:content-type:content-transfer-encoding; bh=JOrvsgMLB+d2b53sD92ZrGY4YenQ73tB2hC8lKOwTWU=; b=TLHDTETc8pUNZ0kXgaqo/qt4sWla72quxe7oa/8oXcFZcE2ovw+enMxqbUVF9On5+F v3/CirSiXR9BoeTXgOTwLe/2/ugYMV1H58PWHS5kB9b9Sn9qagYMBTkWwkeDQapGzw7m gQtS4x0pwO4fivKKWRyAzOJMxcWS3ww8xs3vDuwUVVP8SrFZVhUstuxjhoi63IM3OODu kxFgfUh/g/jAxrocZOhByOkmrX4m90aH9ycHkkP6fYuLziUcxAgYG2fcBSU8ik7y/pdD JwCWyafxy7C490fvZOeA4jnw/jNJ+K6c+8pX6L05fPESXS3alT7SKlnfqEbjC9u8VFUT S2WA== X-Gm-Message-State: ALoCoQnac7CNCy6ve84SEwVkk7cd3HCYbWQn6KtEdtVt56fL5VGL93bpR5/nMYvybd3/FkrPemXm X-Received: by 10.152.8.169 with SMTP id s9mr25708491laa.3.1442365693827; Tue, 15 Sep 2015 18:08:13 -0700 (PDT) MIME-Version: 1.0 Sender: adam@adamharvey.name Received: by 10.25.154.139 with HTTP; Tue, 15 Sep 2015 18:07:54 -0700 (PDT) Date: Tue, 15 Sep 2015 18:07:54 -0700 X-Google-Sender-Auth: kyRv54QRPd20QsOKcNOpILx6koI Message-ID: To: Dmitry Stogov Cc: PHP internals , Anatoliy Belsky , Kalle Sommer Nielsen , Ferenc Kovacs Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: ABI break? (was: [PHP-CVS] com php-src: Don't inline "slow" and rarely used functions.: Zend/zend_alloc.c Zend/zend_alloc.h) From: aharvey@php.net (Adam Harvey) On 9 September 2015 at 03:42, Dmitry Stogov wrote: > Commit: ac83eaef1097552065395872c69b77dcab2919b1 > Author: Dmitry Stogov Wed, 9 Sep 2015 13:42:= 35 +0300 > Parents: 6d885e395ca33fef28c5b84b7cfd59885aaa6e2d > Branches: master > > Link: http://git.php.net/?p=3Dphp-src.git;a=3Dcommitdiff;h=3Dac83ea= ef1097552065395872c69b77dcab2919b1 > > Log: > Don't inline "slow" and rarely used functions. This commit appears to have broken binary compatibility for extensions that make persistent memory allocations, since __zend_malloc is now a real function and not inlined: such an extension compiled against php-src after this commit can no longer be loaded into earlier builds due to the missing __zend_malloc symbol. Most current extensions with PHP 7 compatibility aren't affected, but the one relatively common case where a persistent allocation occurs is when defining classes: INIT_CLASS_ENTRY() ultimately expands to INIT_OVERLOADED_CLASS_ENTRY_EX(), which calls zend_string_init() with the persistent flag enabled to create the class name string. It's awkward, since PHP 7.0 hasn't officially been released yet, but it sucks that some extensions won't be binary compatible between RC2 and RC3 (as things stand today). Options, as I see it: 1. Revert this commit. 2. Bump the extension API number. 3. Document that binary compatibility was broken in RC3, and that we don't guarantee binary compatibility before a stable release is made. I personally don't think option 3 is viable (yes, it's not a stable release, but it's still crappy =E2=80=94 avoiding this kind of thing is _wh= y_ we have API versioning!). Dmitry, RMs: what are your thoughts? Adam