Slide 1

Slide 1 text

PHP 7, HHVM & CO 14 – 15 NOVEMBER, 2015 #WebConfRiga @Webconfriga Riga Pierre Joye

Slide 2

Slide 2 text

PHP7, hhvm & co Pierre Joye @pierrejoye [email protected] http://www.slideshare.net/pierrej PHP Core developer Contributors to numerous OSS projects Portability fan

Slide 3

Slide 3 text

PHP7, hhvm & co Stats

Slide 4

Slide 4 text

PHP7, hhvm & co Contribute.

Slide 5

Slide 5 text

PHP7, hhvm & co What‘s going in the php world?

Slide 6

Slide 6 text

PHP7, hhvm & co Awesome new extension installer https://github.com/FriendsOfPHP/pickle

Slide 7

Slide 7 text

PHP7, hhvm & co RFCs http://wiki.php.net/rfc

Slide 8

Slide 8 text

PHP7, hhvm & co Release Process https://wiki.php.net/rfc/releaseprocess

Slide 9

Slide 9 text

PHP7, hhvm & co Supported Releases http://php.net/supported-versions.php

Slide 10

Slide 10 text

PHP7, hhvm & co PHP 5.3 2009 - 2014

Slide 11

Slide 11 text

PHP7, hhvm & co PHP 5.4 2012 - 2015

Slide 12

Slide 12 text

PHP7, hhvm & co PHP 5.5 Security fixes only

Slide 13

Slide 13 text

PHP7, hhvm & co PHP 5.5 2013 - 2016

Slide 14

Slide 14 text

PHP7, hhvm & co PHP 5.6.15 is out!

Slide 15

Slide 15 text

PHP7, hhvm & co 5 + 1 = 7

Slide 16

Slide 16 text

PHP7, hhvm & co 6.6.6

Slide 17

Slide 17 text

PHP7, hhvm & co

Slide 18

Slide 18 text

PHP7, hhvm & co PHP 7.0.0RC3 last week!

Slide 19

Slide 19 text

PHP7, hhvm & co PHP 7.0 – Future is now

Slide 20

Slide 20 text

PHP7, hhvm & co PHP 7.0 – speed++

Slide 21

Slide 21 text

PHP7, hhvm & co LIES, DAMN LIES AND BENCHMARKS

Slide 22

Slide 22 text

PHP7, hhvm & co

Slide 23

Slide 23 text

PHP7, hhvm & co

Slide 24

Slide 24 text

PHP7, hhvm & co Features • Rewamped Engine • True 64bit support • Large string and LFS (Large file support) • Consistent variables syntax • Error exception instead of fatal error • Scalar type declarations • Zero cost asserts

Slide 25

Slide 25 text

PHP7, hhvm & co Features • Secure RNG • PHP4 constructors deprecated • JIT enabled PCRE • Removed ext/mysql, ext/ereg and more • New ?? and spaceship operators • New JSON parser • Many other features, a lot already target 7.1

Slide 26

Slide 26 text

PHP7, hhvm & co Error exception instead of fatal error

Slide 27

Slide 27 text

PHP7, hhvm & co Error exception https://wiki.php.net/rfc/catchable-call-to-member-of-non-object method()); // The exception class name is EngineException // in alpha1 } catch (Error $e) { // pass } echo "Alive\n";

Slide 28

Slide 28 text

PHP7, hhvm & co Scalar Type Declarations

Slide 29

Slide 29 text

PHP7, hhvm & co Scalar Type Declarations

Slide 30

Slide 30 text

PHP7, hhvm & co Null Coalesce Operator (??)

Slide 31

Slide 31 text

PHP7, hhvm & co Null Coalesce Operator (??)

Slide 32

Slide 32 text

PHP7, hhvm & co PHP Language Specification https://github.com/php/php-langspec

Slide 33

Slide 33 text

PHP7, hhvm & co Open & Public Specifications Competions++

Slide 34

Slide 34 text

PHP7, hhvm & co

Slide 35

Slide 35 text

PHP7, hhvm & co

Slide 36

Slide 36 text

PHP7, hhvm & co (Most) Focus on Speed

Slide 37

Slide 37 text

PHP7, hhvm & co

Slide 38

Slide 38 text

PHP7, hhvm & co SPEED is NOT SCALE

Slide 39

Slide 39 text

PHP7, hhvm & co SPEED is UX

Slide 40

Slide 40 text

PHP7, hhvm & co Scale is Server Side Architecture (Apps, Ops, Net, …)

Slide 41

Slide 41 text

PHP7, hhvm & co My code sucks.

Slide 42

Slide 42 text

PHP7, hhvm & co Yours too.

Slide 43

Slide 43 text

PHP7, hhvm & co Steroids++

Slide 44

Slide 44 text

PHP7, hhvm & co So?

Slide 45

Slide 45 text

PHP7, hhvm & co

Slide 46

Slide 46 text

PHP7, hhvm & co

Slide 47

Slide 47 text

PHP7, hhvm & co QB

Slide 48

Slide 48 text

PHP7, hhvm & co QB

Slide 49

Slide 49 text

PHP7, hhvm & co QB Source: http://php-qb.net/index.php/2-uncategorised/27-comparing-performance-in-qb-with-hhvm See http://benchmarksgame.alioth.debian.org/u32/performance.php?test=spectralnorm or other

Slide 50

Slide 50 text

PHP7, hhvm & co Zephir

Slide 51

Slide 51 text

PHP7, hhvm & co Zephir Optimization & code generation Compilation + optimization Native execution

Slide 52

Slide 52 text

PHP7, hhvm & co Zephir namespace MyLibrary; class Filter { public function alpha(string str) { char ch; string filtered = ""; for ch in str { if (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') { let filtered .= ch; } } return filtered; } }

Slide 53

Slide 53 text

PHP7, hhvm & co Zephir alpha("01he#l.lo?/1");

Slide 54

Slide 54 text

PHP7, hhvm & co PHP Alternative Implementations

Slide 55

Slide 55 text

PHP7, hhvm & co PHP Alternative Implementations • HHVM (native code) • Recki-ct (native code) • Phalanger (.net engine)

Slide 56

Slide 56 text

PHP7, hhvm & co

Slide 57

Slide 57 text

PHP7, hhvm & co PHP

Slide 58

Slide 58 text

PHP7, hhvm & co

Slide 59

Slide 59 text

PHP7, hhvm & co HHVM

Slide 60

Slide 60 text

PHP7, hhvm & co Recki-ct

Slide 61

Slide 61 text

PHP7, hhvm & co Recki-CT

Slide 62

Slide 62 text

PHP7, hhvm & co Recki-ct php 5.5 Recki-CT hhvm 3.2 hippy-c qb simple() 139.63357 1.00000 8.30447 7.65693 8.35018 simplecall() 38.99476 FAIL 1.32552 1.00000 FAIL simpleucall() 54.02041 1.00000 3.52439 1.51072 47.91090 simpleudcall () 52.14534 1.00000 3.75936 1.41614 47.55259 mandel() 21.26249 1.00000 2.03372 2.11208 FAIL mandel_typ ed() 23.16553 1.00000 2.11128 2.09212 3.00061 mandel2() 24.43275 1.00000 2.57704 1.87802 FAIL mandel2_ty ped() 23.79989 1.00000 2.90105 1.57193 7.11054

Slide 63

Slide 63 text

PHP7, hhvm & co Recki-ct php 5.5 Recki-CT hhvm 3.2 hippy-c qb ary(50000) 1.39338 FAIL 1.00000 4.47888 FAIL ary2(50000) 1.26952 FAIL 1.00000 2.28231 FAIL ary3(2000) 5.96015 FAIL 1.70997 1.00000 FAIL fibo(30) 39.48440 1.00000 1.60647 16.40883 FAIL hash1(50000) 1.70014 FAIL 1.00000 3.27314 FAIL hash2(500) 2.23648 FAIL 1.00000 1.30044 FAIL heapsort(2000 0) 3.67800 FAIL 1.00000 4.96699 FAIL

Slide 64

Slide 64 text

PHP7, hhvm & co Future • Extend PHP in php (a la hhvm) • Go, Rust, .net extensions

Slide 65

Slide 65 text

PHP7, hhvm & co Resources • http://wiki.php.net/rfc/ • http://zephir-lang.com/ • http:// www.slideshare.net/ircmaxell/high-performance-php -phpnw • http://talks.php.net/fluent15#/ • https://github.com/google/recki-ct • http:// blog.ircmaxell.com/2014/08/introducing-recki-ct.html • https://github.com/chung-leong/qb/wiki/Introduction

Slide 66

Slide 66 text

PHP7, hhvm & co Resources • https://edit.php.net/ • https://wiki.php.net/rfc/phpng • https://wiki.php.net/rfc/abstract_syntax_tree • http:// hhvm.com/blog/6323/the-journey-of-a-thousand-b ytecodes • https:// github.com/php/php-src/blob/master/UPGRADING • https:// github.com/php/php-src/blob/master/UPGRADING .INTERNALS

Slide 67

Slide 67 text

PHP7, hhvm & co Resources • http://phpdbg.com/ • http://windows.php.net/qa/ • http://qa.php.net/ • http://ongr.io • http://aka.ms/AzureCodeManiac2015