mirror of
https://github.com/php/presentations.git
synced 2026-03-23 23:22:22 +01:00
126 lines
3.2 KiB
XML
126 lines
3.2 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<presentation css="derick.css">
|
|
<topic>PHP</topic>
|
|
<title>PHP Deep Dive</title>
|
|
<event>phpDay 2019</event>
|
|
<location>Verona, Italy</location>
|
|
<date>May 11th, 2019</date>
|
|
<speaker>Derick Rethans</speaker>
|
|
<email>derick@php.net</email>
|
|
<twitter>derickr</twitter>
|
|
<url>https://derickrethans.nl/talks/deepdive-phpday19</url>
|
|
<joindin></joindin>
|
|
|
|
<slide>slides/xdebug/title.xml</slide>
|
|
<slide>slides/mongodb/me.xml</slide>
|
|
|
|
<slide>slides/internals/title-agenda.xml</slide>
|
|
|
|
<slide>slides/internals/title-stages.xml</slide>
|
|
<!-- INTRODUCTION
|
|
Compile stages:
|
|
Parse script
|
|
Create AST
|
|
Convert to opcodes
|
|
Run the code
|
|
Opcache for caching
|
|
-->
|
|
<slide>slides/internals/stages.xml</slide>
|
|
|
|
<!-- STAGES
|
|
Parse
|
|
- Show parser rules
|
|
- Show "compiler" rules
|
|
-->
|
|
|
|
<slide>slides/internals/title-parsing.xml</slide>
|
|
<slide>slides/internals/parse-state-machine.xml</slide>
|
|
<slide>slides/internals/parse-tokenization.xml</slide>
|
|
<slide>slides/internals/scanner.xml</slide>
|
|
<slide>slides/internals/scanner-rules.xml</slide>
|
|
|
|
<!-- EXERCISE: SHORT OPEN TAG -->
|
|
<slide>slides/internals/exercise-short-open-tag.xml</slide>
|
|
|
|
<slide>slides/internals/ast.xml</slide>
|
|
<slide>slides/internals/ast1.xml</slide>
|
|
<slide>slides/internals/scanner-ast.xml</slide>
|
|
<slide>slides/internals/scanner-ast2.xml</slide>
|
|
<slide>slides/internals/bytecode0.xml</slide>
|
|
<slide>slides/internals/bytecode½.xml</slide>
|
|
<slide>slides/internals/bytecode1.xml</slide>
|
|
|
|
<!-- EXERCISE: ALWAYS STRICT -->
|
|
<slide>slides/internals/exercise-strict-by-default.xml</slide>
|
|
|
|
<slide>slides/internals/jumps.xml</slide>
|
|
|
|
<!--
|
|
AST
|
|
- Show AST for various control structures
|
|
|
|
Opcodes
|
|
- Show AST for the same control structures
|
|
-->
|
|
|
|
<slide>slides/internals/jumps-if.xml</slide>
|
|
<slide>slides/internals/jumps-if-else.xml</slide>
|
|
|
|
<slide>slides/internals/rings.xml</slide>
|
|
<slide>slides/internals/jumps-for.xml</slide>
|
|
<slide>slides/internals/jumps-for-rewritten.xml</slide>
|
|
<slide>slides/internals/jumps-while.xml</slide>
|
|
<slide>slides/internals/jumps-do-while.xml</slide>
|
|
<slide>slides/internals/jumps-foreach.xml</slide>
|
|
<slide>slides/internals/jumps-complex.xml</slide>
|
|
<slide>slides/internals/loops.xml</slide>
|
|
<slide>slides/internals/jumps-complex-dot.xml</slide>
|
|
|
|
<!--
|
|
Try/Catch nonsense
|
|
- FASTCALL/FASTRET
|
|
-->
|
|
<slide>slides/internals/catch.xml</slide>
|
|
<slide>slides/internals/jumps-try-catch.xml</slide>
|
|
|
|
<!--
|
|
Dead code analysis
|
|
- Show how Xdebug does it through VLD
|
|
-->
|
|
<slide>slides/internals/deadcode.xml</slide>
|
|
<slide>slides/internals/deadcode-vld.xml</slide>
|
|
|
|
<!--
|
|
Path analysis
|
|
- Branch and Path
|
|
-->
|
|
<slide>slides/internals/branches.xml</slide>
|
|
<slide>slides/xdebug/vld-path-2-paths.xml</slide>
|
|
<slide>slides/xdebug/vld-path-4-code.xml</slide>
|
|
<slide>slides/xdebug/vld-path-4-output.xml</slide>
|
|
|
|
<slide>slides/xdebug/vld-path-3-code.xml</slide>
|
|
<slide>slides/xdebug/vld-path-3-output.xml</slide>
|
|
<slide>slides/xdebug/vld-path-3-paths.xml</slide>
|
|
|
|
<!-- Conclusion
|
|
|
|
Code -> Tokens -> AST -> opode
|
|
|
|
Transformation of control structures
|
|
|
|
Useful implementations
|
|
|
|
-->
|
|
<slide>slides/internals/recap.xml</slide>
|
|
<slide>slides/internals/recap-content.xml</slide>
|
|
|
|
|
|
|
|
<slide>slides/mongodb/questions.xml</slide>
|
|
<slide>slides/xdebug/phpinternalsnews.xml</slide>
|
|
|
|
<slide>slides/mongodb/resources.xml</slide>
|
|
|
|
</presentation>
|