Slide 1

Slide 1 text

TrufflePHP JJUG 2019/2/27 LINE Fukuoka

Slide 2

Slide 2 text

• • LINE Fukuoka • • @kis

Slide 3

Slide 3 text

Truffle •

Slide 4

Slide 4 text

Truffle • ()

Slide 5

Slide 5 text

Truffle

Slide 6

Slide 6 text

PHP • jparsec( ) • https://github.com/jparsec/jparsec/ • • +-<>.( ) • • • if • echo https://github.com/kishida/phpparser

Slide 7

Slide 7 text

Slide 8

Slide 8 text

(1/6) • Node

Slide 9

Slide 9 text

(2/6) • • (Specialization)

Slide 10

Slide 10 text

(3/6) • CallNode

Slide 11

Slide 11 text

(4/6) •

Slide 12

Slide 12 text

(5/6) • NodeDirectCallNodeCompilerAssertsGraal • Java

Slide 13

Slide 13 text

(6/6) • 5; • 0:, 4 %)5210:, 69; • return=-2/ goto(JVM%)) jmp(*!' +) ReturnException #+&"$(87 resultObject <3.

Slide 14

Slide 14 text

Slide 15

Slide 15 text

• (interpreter) on JDK 11 • Truffle JDK 11 • Truffle GraalVM CE • Truffle GraalVM CE • Truffle GraalVM EE • Truffle GraalVM EE • PHP 5.6 • PHP 7.3

Slide 16

Slide 16 text

(JIT) • PHP 7.3PHP5.63 • PHP7.37 • Truffle+GraalVM CEPHP7.3 • Truffle+GraalVM EEPHP7.32 • GraalVM CE PHP7.32 • GraalVM EE PHP7.34

Slide 17

Slide 17 text

• JIT • • • EEPHP7.3 • CEPHP7.3

Slide 18

Slide 18 text

• PHP #&!"' • % • • EE$CE%

Slide 19

Slide 19 text

• Real$)"UserCPU!" • JVMUser" ' • ( CPU" ' • GraalVMRealUser & • Graal#% ( CPU"

Slide 20

Slide 20 text

• PHPPHP3PHP4PHP5PHP7 '5# !"(PHP6&8) • (0, +*:% PHP7941 • "$!(03 • . '5#(0,6 -2 • 5/$7)#(Specialization)

Slide 21

Slide 21 text

• GraalVM • Truffle • " #SimpleLanguage • Writing a Language in Truffle • gitter!% • Graal&$