com presentations: Scotland and Barcelona presentations: deepdive-scotland19.xml jump-bcn19.xml slides/internals/bytecode1.xml slides/internals/exercise-short-open-tag.xml slides/internals/jumps-complex-dot.xml slides/internals/jumps-complex.xml slides/internals/jumps-do-while.xml slides/internals/jumps-for-rewritten.xml slides/internals/jumps-for.xml slides/internals/jumps-foreach.xml slides/internals/jumps-if-else.xml slides/internals/jumps-if.
[email protected] (Derick Rethans) Fri, 01 Nov 2019 13:32:13 +0000
| Newsgroups | php.pres |
|---|---|
| Message-ID | <[email protected]> |
Commit: 7f4495bf35e78ffd1ddc81dea411de583cff67f3 Author: Derick Rethans <[email protected]> Fri, 1 Nov 2019 13:32:13 +0000 Parents: 7b6b435da3606568a707f06ff89ecf1615f0af5a Branches: master Link: http://git.php.net/?p=presentations.git;a=commitdiff;h=7f4495bf35e78ffd1ddc81dea411de583cff67f3 Log: Scotland and Barcelona presentations Changed paths: A deepdive-scotland19.xml A jump-bcn19.xml M slides/internals/bytecode1.xml M slides/internals/exercise-short-open-tag.xml M slides/internals/jumps-complex-dot.xml M slides/internals/jumps-complex.xml M slides/internals/jumps-do-while.xml M slides/internals/jumps-for-rewritten.xml M slides/internals/jumps-for.xml M slides/internals/jumps-foreach.xml M slides/internals/jumps-if-else.xml M slides/internals/jumps-if.xml M slides/internals/jumps-try-catch.xml M slides/internals/jumps-while.xml M slides/internals/parse-tokenization.xml M slides/internals/scanner-ast2.xml M slides/internals/scanner-rules.xml M slides/internals/scanner.xml M slides/internals/switch-followup.xml M slides/internals/switch.xml M slides/xdebug/breakpoint-behaviour.xml M slides/xdebug/breakpoints-2.xml M slides/xdebug/business-support.xml M slides/xdebug/code-reorgnisation.xml M slides/xdebug/config-settings-2.xml M slides/xdebug/config-settings-3.xml M slides/xdebug/config-settings-3b.xml M slides/xdebug/debugger-connection-log.xml M slides/xdebug/donate.xml A slides/xdebug/github-sponsor.png M slides/xdebug/test-with-many-versions.xml M slides/xdebug/vld-path-3-paths.xml M slides/xdebug/vld-path-4-code.xml M slides/xdebug/xdebug-ci.xml A xdebug-scotland19.xml
diff_7f4495bf35e78ffd1ddc81dea411de583cff67f3.txt
(text/plain, 61 KB)
diff --git a/deepdive-scotland19.xml b/deepdive-scotland19.xml new file mode 100644 index 00000000..ae162b17 --- /dev/null +++ b/deepdive-scotland19.xml @@ -0,0 +1,131 @@ +<?xml version="1.0" encoding="utf-8"?> +<presentation css="derick.css"> +<topic>PHP</topic> +<title>PHP Deep Dive</title> +<event>ScotlandPHP</event> +<location>Edinburgh, Scotland, UK</location> +<date>November 8th, 2019</date> +<speaker>Derick Rethans</speaker> +<email>[email protected]</email> +<twitter>derickr</twitter> +<url>https://derickrethans.nl/talks/deepdive-scotland19</url> +<joindin>https://joind.in/XXXXX</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> + +<!-- EXERCISE: STRICT SWITCH --> +<slide>slides/internals/switch-confusion.xml</slide> +<slide>slides/internals/switch.xml</slide> +<slide>slides/internals/exercise-strict-switch.xml</slide> +<slide>slides/internals/switch-followup.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> diff --git a/jump-bcn19.xml b/jump-bcn19.xml new file mode 100644 index 00000000..88ce4aa3 --- /dev/null +++ b/jump-bcn19.xml @@ -0,0 +1,117 @@ +<?xml version="1.0" encoding="utf-8"?> +<presentation css="derick.css"> +<topic>PHP</topic> +<title>It's All About the Goto</title> +<event>PHP.Barcelona</event> +<location>Barcelona, Spain</location> +<date>November 12th, 2019</date> +<speaker>Derick Rethans</speaker> +<email>[email protected]</email> +<twitter>derickr</twitter> +<joindin>https://joind.in/XXXXX</joindin> + +<slide>slides/mongodb/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> +<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> + +<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/mongodb/resources.xml</slide> + +</presentation> diff --git a/slides/internals/bytecode1.xml b/slides/internals/bytecode1.xml index 58fc01cc..dfc56222 100644 --- a/slides/internals/bytecode1.xml +++ b/slides/internals/bytecode1.xml @@ -1,7 +1,7 @@ <slide> <title>AST is converted to bytecode</title> -<example inline="1"> +<example class="medium" inline="1"> 1: AST_METHOD flags: MODIFIER_PUBLIC (256) name: |00dd00|__construct| @@ -18,7 +18,7 @@ name: |0000dd|"name"| </example> <br/> -<example inline="1"> +<example class="medium" inline="1"> compiled vars: |0000dd|!0 = $name| line #* E I O op fetch ext return operands ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- diff --git a/slides/internals/exercise-short-open-tag.xml b/slides/internals/exercise-short-open-tag.xml index 4c1709c1..18f0ea6f 100644 --- a/slides/internals/exercise-short-open-tag.xml +++ b/slides/internals/exercise-short-open-tag.xml @@ -2,14 +2,14 @@ <title>Exercise: Deprecate Short Open Tags</title> <blurb>Compiling PHP:</blurb> -<example> +<example class="medium"> ./buildconf ./configure --disable-all --prefix=/usr/local/php/deep-dive make clean && make -j 4 && make install </example> <blurb>In %Zend/zend_language_scanner.l%, find:</blurb> -<example><![CDATA[<INITIAL>"<?" { +<example class="medium"><![CDATA[<INITIAL>"<?" { if (CG(short_tags)) { BEGIN(ST_IN_SCRIPTING); if (PARSER_MODE()) { @@ -24,6 +24,6 @@ make clean && make -j 4 && make install <blurb>Make it an error with:</blurb> <example> -zend_error(E_COMPILE_ERROR, "Short Open Tags are no more on line %d", CG(zend_lineno)); +zend_error(E_COMPILE_ERROR, "{message} on line %d", CG(zend_lineno)); </example> </slide> diff --git a/slides/internals/jumps-complex-dot.xml b/slides/internals/jumps-complex-dot.xml index 3b4503a1..2f21dd7a 100644 --- a/slides/internals/jumps-complex-dot.xml +++ b/slides/internals/jumps-complex-dot.xml @@ -3,7 +3,7 @@ <image align="right" filename="complex-dot.png"/> -<example inline="1">&lt;?php +<example class="medium" inline="1">&lt;?php $a = [ 2.7, 4.9 ]; |dd0000|foreach ( $a as $key => $value )| { |00dd00|if ( $value &lt; 3 ) {| @@ -16,7 +16,7 @@ $a = [ 2.7, 4.9 ]; } </example> -<example inline="1"> +<example class="medium" inline="1"> line #* E I O op return operands 2 0 E > ASSIGN !0, &lt;array> 3 1 > |dd0000|FE_RESET_R $4 !0, ->12| diff --git a/slides/internals/jumps-complex.xml b/slides/internals/jumps-complex.xml index 816efaaf..f7fa28d6 100644 --- a/slides/internals/jumps-complex.xml +++ b/slides/internals/jumps-complex.xml @@ -1,7 +1,7 @@ <slide> <title>Complex Loops</title> -<example inline="1">&lt;?php +<example class="medium" inline="1">&lt;?php $a = [ 2.7, 4.9 ]; foreach ( $a as $key => $value ) { if ( $value &lt; 3 ) { @@ -14,7 +14,7 @@ foreach ( $a as $key => $value ) { } </example> -<example inline="1">line #* E I O op fetch ext return operands +<example class="medium" inline="1">line #* E I O op fetch ext return operands 2 0 E > ASSIGN !0, &lt;array> 3 1 > FE_RESET_R $4 !0, ->12 2 > > FE_FETCH_R ~5 $4, !1, ->12 diff --git a/slides/internals/jumps-do-while.xml b/slides/internals/jumps-do-while.xml index 9a445e2c..16d39b23 100644 --- a/slides/internals/jumps-do-while.xml +++ b/slides/internals/jumps-do-while.xml @@ -9,14 +9,14 @@ do { </example> <example inline="1">compiled vars: !0 = $i -line #* E I O op fetch ext return operands - 2 0 E > EXT_STMT - 1 |dd0000|ASSIGN !0, 10| - 3 2 NOP - 4 3 > EXT_STMT - 4 |0000dd|ECHO !0| - 5 5 |00dd00|PRE_DEC $2 !0| - 6 > |00dd00|JMPNZ $2, ->3| - 7 > > RETURN 1 +line #* E I O op fetch return operands + 2 0 E > EXT_STMT + 1 |dd0000|ASSIGN !0, 10| + 3 2 NOP + 4 3 > EXT_STMT + 4 |0000dd|ECHO !0| + 5 5 |00dd00|PRE_DEC $2 !0| + 6 > |00dd00|JMPNZ $2, ->3| + 7 > > RETURN 1 </example> </slide> diff --git a/slides/internals/jumps-for-rewritten.xml b/slides/internals/jumps-for-rewritten.xml index 98a3ee0c..90de1e55 100644 --- a/slides/internals/jumps-for-rewritten.xml +++ b/slides/internals/jumps-for-rewritten.xml @@ -1,13 +1,13 @@ <slide> <title>FOR (rewritten)</title> -<example inline="1"> +<example class="medium" inline="1"> for ( |dd0000|$i = 0|; |00dd00|$i &lt; 42|; |0000dd|++$i| ) { |dd00dd|echo $i;| } </example> -<example inline="1"> +<example class="medium" inline="1"> |dd0000|$i = 0;| goto COND; STMT: @@ -20,7 +20,7 @@ COND: |00dd00|}| </example> -<example inline="1">compiled vars: !0 = $i +<example class="medium" inline="1">compiled vars: !0 = $i line #* E I O op fetch ext return operands 2 0 E > EXT_STMT 1 |dd0000|ASSIGN !0, 0| diff --git a/slides/internals/jumps-for.xml b/slides/internals/jumps-for.xml index e51dc1a3..cc55f631 100644 --- a/slides/internals/jumps-for.xml +++ b/slides/internals/jumps-for.xml @@ -5,7 +5,7 @@ <tr> <td> -<example inline="1"> +<example class="medium" inline="1"> &lt;?php for ( |dd0000|$i = 0|; |00dd00|$i &lt; 42|; |0000dd|++$i| ) { |dd00dd|echo $i;| @@ -14,7 +14,7 @@ for ( |dd0000|$i = 0|; |00dd00|$i &lt; 42|; |0000dd|++$i| ) { </td> <td> -<example inline="1"> +<example class="medium" inline="1"> |dd0000|init: AST_EXPR_LIST| 0: AST_ASSIGN var: AST_VAR @@ -34,7 +34,7 @@ for ( |dd0000|$i = 0|; |00dd00|$i &lt; 42|; |0000dd|++$i| ) { </td> </tr></table> -<example inline="1">compiled vars: !0 = $i +<example class="medium" inline="1">compiled vars: !0 = $i line #* E I O op fetch ext return operands 2 0 E > EXT_STMT 1 |dd0000|ASSIGN !0, 0| diff --git a/slides/internals/jumps-foreach.xml b/slides/internals/jumps-foreach.xml index 430a7d02..62e22496 100644 --- a/slides/internals/jumps-foreach.xml +++ b/slides/internals/jumps-foreach.xml @@ -1,8 +1,7 @@ <slide> <title>FOREACH</title> -<example inline="1">&lt;?php -|dd0000|$a = [ 2.7, 4.9 ];| +<example inline="1">|dd0000|$a = [ 2.7, 4.9 ];| |00dd00|foreach ( $a as $key => $value )| { echo $key, $value; } @@ -10,19 +9,19 @@ <example inline="1"> compiled vars: !0 = $a, !1 = $value, !2 = $key -line #* E I O op fetch ext return operands - 2 0 E > EXT_STMT - 1 |dd0000|ASSIGN !0, &lt;array>| - 3 2 EXT_STMT - 3 > |00dd00|FE_RESET_R $4 !0,| |dd00dd|->11| - *4* > > |00dd00|FE_FETCH_R ~5 $4, !1,| |dd00dd|->11| - 5 > |00dd00|ASSIGN !2, ~5| - 4 6 EXT_STMT - 7 ECHO !2 - 8 EXT_STMT - 9 ECHO !1 - 10 > *JMP ->4* - |dd00dd|11 > FE_FREE $4| - 12 > RETURN 1 +line #* E I O op fetch return operands + 2 0 E > EXT_STMT + 1 |dd0000|ASSIGN !0, &lt;array>| + 3 2 EXT_STMT + 3 > |00dd00|FE_RESET_R $4 !0,| |dd00dd|->11| + *4* > > |00dd00|FE_FETCH_R ~5 $4, !1,| |dd00dd|->11| + 5 > |00dd00|ASSIGN !2, ~5| + 4 6 EXT_STMT + 7 ECHO !2 + 8 EXT_STMT + 9 ECHO !1 + 10 > *JMP ->4* + |dd00dd|11 > FE_FREE $4| + 12 > RETURN 1 </example> </slide> diff --git a/slides/internals/jumps-if-else.xml b/slides/internals/jumps-if-else.xml index d2df699d..48e0593c 100644 --- a/slides/internals/jumps-if-else.xml +++ b/slides/internals/jumps-if-else.xml @@ -15,7 +15,7 @@ if ( |0000dd|$a| == |00dd00|3.1415926| ) { </td> <td> -<example inline="1">AST_STMT_LIST +<example class="medium" inline="1">AST_STMT_LIST 0: AST_IF 0: AST_IF_ELEM cond: AST_BINARY_OP @@ -34,7 +34,7 @@ if ( |0000dd|$a| == |00dd00|3.1415926| ) { </td> </tr></table> -<example inline="1"> +<example class="medium" inline="1"> compiled vars: |0000dd|!0 = $a| line #* E I O op return operands ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- diff --git a/slides/internals/jumps-if.xml b/slides/internals/jumps-if.xml index 4e2e8128..6a81f44d 100644 --- a/slides/internals/jumps-if.xml +++ b/slides/internals/jumps-if.xml @@ -1,14 +1,14 @@ <slide> <title>IF</title> -<example inline="1"> +<example class="medium" inline="1"> if ( |0000dd|$a| == |00dd00|42| ) { echo "To life, the universe, and everything.\n"; } </example> -<example inline="1"> +<example class="medium" inline="1"> AST_STMT_LIST 0: AST_IF 0: AST_IF_ELEM @@ -22,7 +22,7 @@ AST_STMT_LIST expr: "To life, the universe, and everything. </example> -<example inline="1"> +<example class="medium" inline="1"> compiled vars: |0000dd|!0 = $a| line #* E I O op return operands ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- diff --git a/slides/internals/jumps-try-catch.xml b/slides/internals/jumps-try-catch.xml index 68c7c849..1b66f40c 100644 --- a/slides/internals/jumps-try-catch.xml +++ b/slides/internals/jumps-try-catch.xml @@ -1,7 +1,7 @@ <slide> <title>TRY … CATCH … FINALLY</title> -<example inline="1">&lt;?php +<example class="medium" inline="1">&lt;?php try { echo "in try"; } *catch* ( Exception1 $e ) { @@ -14,7 +14,7 @@ try { echo "after"; </example> -<example inline="1"> +<example class="medium" inline="1"> line #* E I O op return operands 3 0 E > ECHO 'in+try' 1 > JMP |00dd00|->7| diff --git a/slides/internals/jumps-while.xml b/slides/internals/jumps-while.xml index 3946dde3..f22a23e0 100644 --- a/slides/internals/jumps-while.xml +++ b/slides/internals/jumps-while.xml @@ -9,15 +9,15 @@ </example> <example inline="1">compiled vars: !0 = $i -line #* E I O op fetch ext return operands - 2 0 E > EXT_STMT - 1 |dd0000|ASSIGN !0, 10| - 3 2 EXT_STMT - 3 > *JMP* ->|dd00dd|6| - 4 4 > EXT_STMT - 5 |0000dd|ECHO !0| - 3 |dd00dd|6| > |00dd00|PRE_DEC $2 !0| - 7 > |00dd00|JMPNZ $2, ->4| - 8 > > RETURN 1 +line #* E I O op fetch return operands + 2 0 E > EXT_STMT + 1 |dd0000|ASSIGN !0, 10| + 3 2 EXT_STMT + 3 > *JMP* ->|dd00dd|6| + 4 4 > EXT_STMT + 5 |0000dd|ECHO !0| + 3 |dd00dd|6| > |00dd00|PRE_DEC $2 !0| + 7 > |00dd00|JMPNZ $2, ->4| + 8 > > RETURN 1 </example> </slide> diff --git a/slides/internals/parse-tokenization.xml b/slides/internals/parse-tokenization.xml index 32db5096..7eec2cc2 100644 --- a/slides/internals/parse-tokenization.xml +++ b/slides/internals/parse-tokenization.xml @@ -7,8 +7,6 @@ namespace DramIO; class Whisky { - private $name; - public function __construct( $name ) { $this->name = $name; @@ -28,8 +26,6 @@ class Whisky namespace DramIO; class Whisky { - private $name; - public function __construct($name) { $this->name = $name;␃]]></example> @@ -38,8 +34,6 @@ class Whisky *T_NAMESPACE* |777777|T_WS| *T_STRING* DramIO ; |777777|T_WS| *T_CLASS* |777777|T_WS| *T_STRING* Whisky |777777|T_WS| { |777777|T_WS| - *T_PRIVATE* |777777|T_WS| *T_VARIABLE* $name ; |777777|T_WS| - *T_PUBLIC* |777777|T_WS| *T_FUNCTION* |777777|T_WS| *T_STRING* __construct ( *T_VARIABLE* $name ) |777777|T_WS| { |777777|T_WS| *T_VARIABLE* $this *T_OBJECT_OPERATOR* -> *T_STRING* name |777777|T_WS| = |777777|T_WS| *T_VARIABLE* $name ; diff --git a/slides/internals/scanner-ast2.xml b/slides/internals/scanner-ast2.xml index 1a05cc39..5f366687 100644 --- a/slides/internals/scanner-ast2.xml +++ b/slides/internals/scanner-ast2.xml @@ -63,7 +63,7 @@ <br/> -<example inline="1"> +<example class="medium" inline="1"> 1: AST_METHOD flags: MODIFIER_PUBLIC (256) name: |00dd00|__construct| diff --git a/slides/internals/scanner-rules.xml b/slides/internals/scanner-rules.xml index 21fd79fb..a36f4b5f 100644 --- a/slides/internals/scanner-rules.xml +++ b/slides/internals/scanner-rules.xml @@ -8,9 +8,6 @@ class_modifiers T_CLASS |dd00dd|{ $&lt;num>$ = CG(zend_lineno); }| T_STRING extends_from implements_list backup_doc_comment '{' class_statement_list '}' { $$ = *zend_ast_create_decl*(ZEND_AST_CLASS, $1, $&lt;num>3, $7, *zend_ast_get_str*($4), $5, $6, $9, NULL); } - | -… -; </example> <example inline="1"> case 167: diff --git a/slides/internals/scanner.xml b/slides/internals/scanner.xml index c8982e47..cc9dfa59 100644 --- a/slides/internals/scanner.xml +++ b/slides/internals/scanner.xml @@ -5,9 +5,6 @@ statement { $$ = $1; } | function_declaration_statement { $$ = $1; } | |0000dd|class_declaration_statement| { $$ = $1; } - | trait_declaration_statement { $$ = $1; } -… -; |0000dd|class_declaration_statement|: |dd00dd|class_modifiers| T_CLASS { $&lt;num>$ = CG(zend_lineno); } @@ -16,16 +13,13 @@ | T_CLASS { $&lt;num>$ = CG(zend_lineno); } T_STRING extends_from implements_list backup_doc_comment '{' class_statement_list '}' { $$ = *zend_ast_create_decl*(ZEND_AST_CLASS, 0, $&lt;num>2, $6, *zend_ast_get_str*($3), $4, $5, $8, NULL); } -; |dd00dd|class_modifiers|: |00dddd|class_modifier| { $$ = $1; } | |dd00dd|class_modifiers| |00dddd|class_modifier| { $$ = *zend_add_class_modifier*($1, $2); } -; |00dddd|class_modifier|: T_ABSTRACT { $$ = ZEND_ACC_EXPLICIT_ABSTRACT_CLASS; } | T_FINAL { $$ = ZEND_ACC_FINAL; } -; </example> </slide> diff --git a/slides/internals/switch-followup.xml b/slides/internals/switch-followup.xml index fc3e44ed..80d614b4 100644 --- a/slides/internals/switch-followup.xml +++ b/slides/internals/switch-followup.xml @@ -1,7 +1,7 @@ <slide> <title>Switch follow-up</title> -<example inline="1">&lt;?php +<example class="medium" inline="1">&lt;?php function foo() { return '42'; @@ -19,7 +19,7 @@ switch (foo()) { }</example> <div effect="fade-in"> -<example inline="2"> +<example class="medium" inline="2"> line #* E I O op return operands 2 0 E > NOP 7 1 INIT_FCALL 'foo' diff --git a/slides/internals/switch.xml b/slides/internals/switch.xml index 9fe7c1c0..30b3619c 100644 --- a/slides/internals/switch.xml +++ b/slides/internals/switch.xml @@ -1,7 +1,7 @@ <slide> <title>Switch</title> -<example inline="1">&lt;?php +<example class="medium" inline="1">&lt;?php $variable = '42'; switch ($variable) { @@ -16,7 +16,7 @@ switch ($variable) { } </example> -<example inline="1"> +<example class="medium" inline="1"> compiled vars: !0 = $variable line #* E I O op return operands diff --git a/slides/xdebug/breakpoint-behaviour.xml b/slides/xdebug/breakpoint-behaviour.xml index 0b0b7e45..e71fe2bc 100644 --- a/slides/xdebug/breakpoint-behaviour.xml +++ b/slides/xdebug/breakpoint-behaviour.xml @@ -4,54 +4,48 @@ <div effect="fade-out"> <table class="two"> <tr><td> -<example><![CDATA[ - 1: <?php - 2: function scoped() - 3: { - 4: $func = function() - 5: { - 6: $a = array( // breakpoint - 7: 1 => "first", - 8: 2 => "second", - 9: ); -10: }; -11: -12: $func(); -13: } -14: -15: scoped(); -16: scoped(); -17: ?> +<example inline="2"><![CDATA[ + 1: <?php + 2: function scoped() + 3: { + 4: $func = function() + 5: { +*● 6: $a = array(* + 7: 1 => "first", + 8: 2 => "second", + 9: ); + 10: }; + 11: + 12: $func(); + 13: } + 14: + 15: scoped(); + 16: scoped(); + 17: ?> ]]></example> </td><td> <example> function name: scoped compiled vars: !0 = $func -line #* E I O op return operands - - 2 0 E > EXT_NOP - 4 1 EXT_STMT - 2 DECLARE_LAMBDA_FUNCTION '%00…closure.php0x7f295f0c207e' - - 12 3 EXT_STMT - 4 INIT_DYNAMIC_CALL !0 - 5 EXT_FCALL_BEGIN - 6 DO_FCALL - 7 EXT_FCALL_END - 13 8 EXT_STMT - 9 > RETURN null +line #* op operands + 4 1 EXT_STMT + 2 DECLARE_LAMBDA_FUNCTION '%00…closure.php0x7f2…' + 12 3 EXT_STMT + 4 INIT_DYNAMIC_CALL !0 + 5 EXT_FCALL_BEGIN + 6 DO_FCALL + 7 EXT_FCALL_END + 13 8 EXT_STMT + 9 RETURN null function name: {closure} -line #* E I O op return operands - - 4 0 E > EXT_NOP - 7 1 EXT_STMT - - 10 2 EXT_STMT - 3 > RETURN null +line #* op operands + 7 1 EXT_STMT + 10 2 EXT_STMT + 3 RETURN null </example> </td></tr></table> @@ -59,60 +53,52 @@ line #* E I O op return operands <div effect="fade-in"> <table class="two"> <tr><td> -<example><![CDATA[ - 1: <?php - 2: function scoped() - 3: { - 4: $func = function() - 5: { - 6: $a = array( // breakpoint - 7: 1 => "first", - 8: 2 => "second", - 9: ); -10: }; -11: -12: $func(); -13: } -14: -15: scoped(); -16: scoped(); -17: ?> +<example inline="2"><![CDATA[ + 1: <?php + 2: function scoped() + 3: { + 4: $func = function() + 5: { +*● 6: $a = array(* + 7: 1 => "first", + 8: 2 => "second", + 9: ); + 10: }; + 11: + 12: $func(); + 13: } + 14: + 15: scoped(); + 16: scoped(); + 17: ?> ]]></example> <break/> <blurb>Turned off OPcache's optimiser →</blurb> </td><td> <example inline="2"> function name: scoped -*compiled vars: !0 = $func* -line #* E I O op return operands - - 2 0 E > EXT_NOP - 4 1 EXT_STMT - 2 DECLARE_LAMBDA_FUNCTION '%00…closure.php0x7efeba02b07e' -* 10 3 ASSIGN !0, ~1* - 12 4 EXT_STMT - 5 INIT_DYNAMIC_CALL !0 - 6 EXT_FCALL_BEGIN - 7 DO_FCALL - 8 EXT_FCALL_END - 13 9 EXT_STMT - 10 > RETURN null - +compiled vars: !0 = $func +line #* op operands + 4 1 EXT_STMT + 2 DECLARE_LAMBDA_FUNCTION '%00…closure.php0x7e…' +* 10 3 ASSIGN !0, ~1* + 12 4 EXT_STMT + 5 INIT_DYNAMIC_CALL !0 + 6 EXT_FCALL_BEGIN + 7 DO_FCALL + 8 EXT_FCALL_END + 13 9 EXT_STMT + 10 RETURN null function name: {closure} -compiled vars: !0 = $a -line #* E I O op return operands - - 4 0 E > EXT_NOP - 7 1 EXT_STMT -* 2 ASSIGN !0, &lt;array>* - 10 3 EXT_STMT - 4 > RETURN null +*compiled vars: !0 = $a* +line #* op operands + 7 1 EXT_STMT +* 2 ASSIGN !0, &lt;array>* + 10 3 EXT_STMT + 4 RETURN null </example> </td></tr> </table> </div> -<div effect="fade-in"> -<blurb class="big-centre">demo</blurb> -</div> </slide> diff --git a/slides/xdebug/breakpoints-2.xml b/slides/xdebug/breakpoints-2.xml index 04c932d4..35b39cc4 100644 --- a/slides/xdebug/breakpoints-2.xml +++ b/slides/xdebug/breakpoints-2.xml @@ -27,21 +27,21 @@ function name: demo number of ops: 14 compiled vars: !0 = $a, !1 = $b, !2 = $c, !3 = $d -line #* E I O op return operands - 2 0 E > EXT_NOP - 1 RECV !0 - 2 RECV !1 - 3 RECV !2 - 4 RECV !3 - 5 5 EXT_STMT - 6 > JMPZ !0, ->12 - 6 7 > > JMPZ !1, ->12 - 7 8 > > JMPNZ !2, ->10 - 9 > > JMPZ !3, ->12 - 9 10 > EXT_STMT - 11 ECHO 'It%27s+true%21' - 11 12 > EXT_STMT - 13 > RETURN null +line #* op return operands + 2 0 EXT_NOP + 1 RECV !0 + 2 RECV !1 + 3 RECV !2 + 4 RECV !3 + 5 5 EXT_STMT + 6 JMPZ !0, ->12 + 6 7 JMPZ !1, ->12 + 7 8 JMPNZ !2, ->10 + 9 JMPZ !3, ->12 + 9 10 EXT_STMT + 11 ECHO 'It\%27s+true\%21' + 11 12 EXT_STMT + 13 RETURN null ]]> </example> </div> diff --git a/slides/xdebug/business-support.xml b/slides/xdebug/business-support.xml index 474f8e1b..de2f5e25 100644 --- a/slides/xdebug/business-support.xml +++ b/slides/xdebug/business-support.xml @@ -2,6 +2,18 @@ <title>Business Support</title> <image filename="support-business.png"/> -<blurb class="big-centre">https://xdebug.org/support</blurb> +<break/> + +<blurb class="centre">%https://xdebug.org/support%</blurb> +<break/> + +<blurb class="centre"> +Automattic, +Intracto, +JetBrains, +php[architect], +Tideways, +TYPO3 GmbH, +</blurb> </slide> diff --git a/slides/xdebug/code-reorgnisation.xml b/slides/xdebug/code-reorgnisation.xml index 0c0b46e7..fe234199 100644 --- a/slides/xdebug/code-reorgnisation.xml +++ b/slides/xdebug/code-reorgnisation.xml @@ -4,44 +4,49 @@ <div effect="fade-out"> <example inline="2"> *derick@singlemalt:~/dev/php/xdebug-xdebug$ ls ***.[hc]* -config.h xdebug_filter.c xdebug_monitor.c xdebug_superglobals.h -php_xdebug.h xdebug_filter.h xdebug_monitor.h xdebug_trace_computerized.c -usefulstuff.c xdebug_gc_stats.c xdebug_private.c xdebug_trace_computerized.h -usefulstuff.h xdebug_gc_stats.h xdebug_private.h xdebug_trace_html.c -xdebug_branch_info.c xdebug_handler_dbgp.c xdebug_profiler.c xdebug_trace_html.h -xdebug_branch_info.h xdebug_handler_dbgp.h xdebug_profiler.h xdebug_trace_textual.c -xdebug.c xdebug_handlers.c xdebug_set.c xdebug_trace_textual.h -xdebug_code_coverage.c xdebug_handlers.h xdebug_set.h xdebug_tracing.c -xdebug_code_coverage.h xdebug_hash.c xdebug_stack.c xdebug_tracing.h -xdebug_com.c xdebug_hash.h xdebug_stack.h xdebug_var.c -xdebug_com.h xdebug_llist.c xdebug_str.c xdebug_var.h -xdebug_compat.c xdebug_llist.h xdebug_str.h xdebug_xml.c -xdebug_compat.h xdebug_mm.h xdebug_superglobals.c xdebug_xml.h +config.h xdebug_handler_dbgp.h xdebug_str.c +php_xdebug.h xdebug_handlers.c xdebug_str.h +usefulstuff.c xdebug_handlers.h xdebug_superglobals.c +usefulstuff.h xdebug_hash.c xdebug_superglobals.h +xdebug_branch_info.c xdebug_hash.h xdebug_trace_computerized.c +xdebug_branch_info.h xdebug_llist.c xdebug_trace_computerized.h +xdebug.c xdebug_llist.h xdebug_trace_html.c +xdebug_code_coverage.c xdebug_mm.h xdebug_trace_html.h +xdebug_code_coverage.h xdebug_monitor.c xdebug_trace_textual.c +xdebug_com.c xdebug_monitor.h xdebug_trace_textual.h +xdebug_com.h xdebug_private.c xdebug_tracing.c +xdebug_compat.c xdebug_private.h xdebug_tracing.h +xdebug_compat.h xdebug_profiler.c xdebug_var.c +xdebug_filter.c xdebug_profiler.h xdebug_var.h +xdebug_filter.h xdebug_set.c xdebug_xml.c +xdebug_gc_stats.c xdebug_set.h xdebug_xml.h +xdebug_gc_stats.h xdebug_stack.c +xdebug_handler_dbgp.c xdebug_stack.h </example> </div> <div effect="fade-in"> <example inline="2"> -*derick@gargleblaster:~/dev/php/derickr-xdebug/src$ ls -v ../\*.[ch] \*/\*.[ch]* -../config.h debugger/com.h lib/str.c -../php_xdebug.h debugger/handlers.c lib/str.h -../xdebug.c debugger/handlers.h lib/usefulstuff.c -base/base.c debugger/handler_dbgp.c lib/usefulstuff.h -base/base.h debugger/handler_dbgp.h lib/var.c -base/filter.c gcstats/gc_stats.c lib/var.h -base/filter.h gcstats/gc_stats.h lib/xml.c -base/monitor.c gcstats/gc_stats_private.h lib/xml.h -base/monitor.h lib/compat.c profiler/profiler.c -base/stack.c lib/compat.h profiler/profiler.h -base/stack.h lib/hash.c tracing/trace_computerized.c -base/superglobals.c lib/hash.h tracing/trace_computerized.h -base/superglobals.h lib/llist.c tracing/trace_html.c -coverage/branch_info.c lib/llist.h tracing/trace_html.h -coverage/branch_info.h lib/mm.h tracing/trace_textual.c -coverage/code_coverage.c lib/private.c tracing/trace_textual.h -coverage/code_coverage.h lib/private.h tracing/tracing.c -coverage/code_coverage_private.h lib/set.c tracing/tracing.h -debugger/com.c lib/set.h tracing/tracing_private.h +*derick@gargleblaster:~/src$ ls -v ../\*.[ch] \*/\*.[ch]* +../config.h debugger/com.h lib/str.c +../php_xdebug.h debugger/handlers.c lib/str.h +../xdebug.c debugger/handlers.h lib/usefulstuff.c +base/base.c debugger/handler_dbgp.c lib/usefulstuff.h +base/base.h debugger/handler_dbgp.h lib/var.c +base/filter.c gcstats/gcstats.c lib/var.h +base/filter.h gcstats/gcstats.h lib/xml.c +base/monitor.c gcstats/gc…private.h lib/xml.h +base/monitor.h lib/compat.c profiler/profiler.c +base/stack.c lib/compat.h profiler/profiler.h +base/stack.h lib/hash.c tracing/t…e_computerized.c +base/superglobals.c lib/hash.h tracing/t…e_computerized.h +base/superglobals.h lib/llist.c tracing/t…e_html.c +coverage/branch_info.c lib/llist.h tracing/t…e_html.h +coverage/branch_info.h lib/mm.h tracing/t…e_textual.c +coverage/coverage.c lib/private.c tracing/t…e_textual.h +coverage/coverage.h lib/private.h tracing/tracing.c +coverage/cov…private.h lib/set.c tracing/tracing.h +debugger/com.c lib/set.h tracing/tracing_private.h </example> </div> </slide> diff --git a/slides/xdebug/config-settings-2.xml b/slides/xdebug/config-settings-2.xml index 4bd4263f..bfdc7c43 100644 --- a/slides/xdebug/config-settings-2.xml +++ b/slides/xdebug/config-settings-2.xml @@ -5,72 +5,73 @@ <tr> <td> <example inline="2"> -|aaaaaa|xdebug.|auto_trace -|aaaaaa|xdebug.|cli_color -|aaaaaa|xdebug.|collect_assignments -|aaaaaa|xdebug.|collect_includes -|aaaaaa|xdebug.|collect_params -|aaaaaa|xdebug.|collect_return -|aaaaaa|xdebug.|collect_vars -*|0000ff|xdebug.coverage_enable|* -|aaaaaa|xdebug.|default_enable -|aaaaaa|xdebug.|dump.COOKIE -|aaaaaa|xdebug.|dump.ENV -|aaaaaa|xdebug.|dump.FILES -|aaaaaa|xdebug.|dump.GET -|aaaaaa|xdebug.|dump.POST -|aaaaaa|xdebug.|dump.REQUEST -|aaaaaa|xdebug.|dump.SERVER -|aaaaaa|xdebug.|dump.SESSION -|aaaaaa|xdebug.|dump_globals -|aaaaaa|xdebug.|dump_once -|aaaaaa|xdebug.|dump_undefined -*xdebug.extended_info* -|aaaaaa|xdebug.|file_link_format -|aaaaaa|xdebug.|filename_format -|aaaaaa|xdebug.|force_display_errors -|aaaaaa|xdebug.|force_error_reporting -|aaaaaa|xdebug.|gc_stats_enable -*|00cc00|xdebug.gc_stats_output_dir|* -*|00cc00|xdebug.gc_stats_output_name|* -|aaaaaa|xdebug.|halt_level -|aaaaaa|xdebug.|idekey -|aaaaaa|xdebug.|max_nesting_level -|aaaaaa|xdebug.|max_stack_frames -|aaaaaa|xdebug.|overload_var_dump +|aaaaaa|x.|auto_trace +|aaaaaa|x.|cli_color +|aaaaaa|x.|collect_assignments +|aaaaaa|x.|collect_includes +|aaaaaa|x.|collect_params +|aaaaaa|x.|collect_return +|aaaaaa|x.|collect_vars +*|0000ff|x.coverage_enable|* +|aaaaaa|x.|default_enable +|aaaaaa|x.|dump.COOKIE +|aaaaaa|x.|dump.ENV +|aaaaaa|x.|dump.FILES +|aaaaaa|x.|dump.GET +|aaaaaa|x.|dump.POST +|aaaaaa|x.|dump.REQUEST +|aaaaaa|x.|dump.SERVER +|aaaaaa|x.|dump.SESSION +|aaaaaa|x.|dump_globals +|aaaaaa|x.|dump_once +|aaaaaa|x.|dump_undefined +*x.extended_info* +|aaaaaa|x.|file_link_format </example></td><td><example inline="2"> -|aaaaaa|xdebug.|profiler_aggregate -|aaaaaa|xdebug.|profiler_append -*|0000ff|xdebug.profiler_enable|* -|aaaaaa|xdebug.|profiler_enable_trigger -|aaaaaa|xdebug.|profiler_enable_trigger_value -*|00cc00|xdebug.profiler_output_dir|* -*|00cc00|xdebug.profiler_output_name|* -|aaaaaa|xdebug.|remote_addr_header -|aaaaaa|xdebug.|remote_autostart -|aaaaaa|xdebug.|remote_connect_back -|aaaaaa|xdebug.|remote_cookie_expire_time -*|0000ff|xdebug.remote_enable|* -*xdebug.remote_handler* -|aaaaaa|xdebug.|remote_host -|aaaaaa|xdebug.|remote_log -|aaaaaa|xdebug.|remote_mode -|aaaaaa|xdebug.|remote_port -|aaaaaa|xdebug.|remote_timeout -|aaaaaa|xdebug.|scream -|aaaaaa|xdebug.|show_error_trace -|aaaaaa|xdebug.|show_exception_trace -|aaaaaa|xdebug.|show_local_vars -*xdebug.show_mem_delta* -|aaaaaa|xdebug.|trace_enable_trigger -|aaaaaa|xdebug.|trace_enable_trigger_value -|aaaaaa|xdebug.|trace_format -|aaaaaa|xdebug.|trace_options -*|00cc00|xdebug.trace_output_dir|* -*|00cc00|xdebug.trace_output_name|* -|aaaaaa|xdebug.|var_display_max_children -|aaaaaa|xdebug.|var_display_max_data -|aaaaaa|xdebug.|var_display_max_depth +|aaaaaa|x.|filename_format +|aaaaaa|x.|force_display_errors +|aaaaaa|x.|force_error_reporting +|aaaaaa|x.|gc_stats_enable +*|00cc00|x.gc_stats_output_dir|* +*|00cc00|x.gc_stats_output_name|* +|aaaaaa|x.|halt_level +|aaaaaa|x.|idekey +|aaaaaa|x.|max_nesting_level +|aaaaaa|x.|max_stack_frames +|aaaaaa|x.|overload_var_dump +|aaaaaa|x.|profiler_aggregate +|aaaaaa|x.|profiler_append +*|0000ff|x.profiler_enable|* +|aaaaaa|x.|profiler_enable_trigger +|aaaaaa|x.|profiler_enable_trigger_value +*|00cc00|x.profiler_output_dir|* +*|00cc00|x.profiler_output_name|* +|aaaaaa|x.|remote_addr_header +|aaaaaa|x.|remote_autostart +|aaaaaa|x.|remote_connect_back +|aaaaaa|x.|remote_cookie_expire_time +</example></td><td><example inline="2"> +*|0000ff|x.remote_enable|* +*x.remote_handler* +|aaaaaa|x.|remote_host +|aaaaaa|x.|remote_log +|aaaaaa|x.|remote_mode +|aaaaaa|x.|remote_port +|aaaaaa|x.|remote_timeout +|aaaaaa|x.|scream +|aaaaaa|x.|show_error_trace +|aaaaaa|x.|show_exception_trace +|aaaaaa|x.|show_local_vars +*x.show_mem_delta* +|aaaaaa|x.|trace_enable_trigger +|aaaaaa|x.|trace_enable_trigger_value +|aaaaaa|x.|trace_format +|aaaaaa|x.|trace_options +*|00cc00|x.trace_output_dir|* +*|00cc00|x.trace_output_name|* +|aaaaaa|x.|var_display_max_children +|aaaaaa|x.|var_display_max_data +|aaaaaa|x.|var_display_max_depth </example> </td></tr></table> diff --git a/slides/xdebug/config-settings-3.xml b/slides/xdebug/config-settings-3.xml index 93cd7233..d3a1a74d 100644 --- a/slides/xdebug/config-settings-3.xml +++ b/slides/xdebug/config-settings-3.xml @@ -5,72 +5,73 @@ <tr> <td> <example inline="2"> -|aaaaaa|xdebug.|auto_trace -|aaaaaa|xdebug.|cli_color -|aaaaaa|xdebug.|collect_assignments -|aaaaaa|xdebug.|collect_includes -|aaaaaa|xdebug.|collect_params -|aaaaaa|xdebug.|collect_return -|aaaaaa|xdebug.|collect_vars -|aaaaaa|xdebug.|coverage_enable -|aaaaaa|xdebug.|default_enable -|aaaaaa|xdebug.|dump.COOKIE -|aaaaaa|xdebug.|dump.ENV -|aaaaaa|xdebug.|dump.FILES -|aaaaaa|xdebug.|dump.GET -|aaaaaa|xdebug.|dump.POST -|aaaaaa|xdebug.|dump.REQUEST -|aaaaaa|xdebug.|dump.SERVER -|aaaaaa|xdebug.|dump.SESSION -|aaaaaa|xdebug.|dump_globals -|aaaaaa|xdebug.|dump_once -|aaaaaa|xdebug.|dump_undefined -|aaaaaa|xdebug.|extended_info -|aaaaaa|xdebug.|file_link_format -|aaaaaa|xdebug.|filename_format -|aaaaaa|xdebug.|force_display_errors -|aaaaaa|xdebug.|force_error_reporting -|aaaaaa|xdebug.|gc_stats_enable -|aaaaaa|xdebug.|gc_stats_output_dir -|aaaaaa|xdebug.|gc_stats_output_name -|aaaaaa|xdebug.|halt_level -|aaaaaa|xdebug.|idekey -|aaaaaa|xdebug.|max_nesting_level -|aaaaaa|xdebug.|max_stack_frames -|aaaaaa|xdebug.|overload_var_dump +|aaaaaa|x.|auto_trace +|aaaaaa|x.|cli_color +|aaaaaa|x.|collect_assignments +|aaaaaa|x.|collect_includes +|aaaaaa|x.|collect_params +|aaaaaa|x.|collect_return +|aaaaaa|x.|collect_vars +|aaaaaa|x.|coverage_enable +|aaaaaa|x.|default_enable +|aaaaaa|x.|dump.COOKIE +|aaaaaa|x.|dump.ENV +|aaaaaa|x.|dump.FILES +|aaaaaa|x.|dump.GET +|aaaaaa|x.|dump.POST +|aaaaaa|x.|dump.REQUEST +|aaaaaa|x.|dump.SERVER +|aaaaaa|x.|dump.SESSION +|aaaaaa|x.|dump_globals +|aaaaaa|x.|dump_once +|aaaaaa|x.|dump_undefined +|aaaaaa|x.|extended_info +|aaaaaa|x.|file_link_format </example></td><td><example inline="2"> -|aaaaaa|xdebug.|profiler_aggregate -|aaaaaa|xdebug.|profiler_append -|aaaaaa|xdebug.|pprofiler_enable -|aaaaaa|xdebug.|profiler_enable_trigger -|aaaaaa|xdebug.|profiler_enable_trigger_value -|aaaaaa|xdebug.|profiler_output_dir -|aaaaaa|xdebug.|profiler_output_name -|aaaaaa|xdebug.|remote_addr_header -|aaaaaa|xdebug.|remote_autostart -|aaaaaa|xdebug.|remote_connect_back -|aaaaaa|xdebug.|remote_cookie_expire_time -|aaaaaa|xdebug.|remote_enable -|aaaaaa|xdebug.|remote_handler -|aaaaaa|xdebug.|remote_host -|aaaaaa|xdebug.|remote_log -|aaaaaa|xdebug.|remote_mode -|aaaaaa|xdebug.|remote_port -|aaaaaa|xdebug.|remote_timeout -|aaaaaa|xdebug.|scream -|aaaaaa|xdebug.|show_error_trace -|aaaaaa|xdebug.|show_exception_trace -|aaaaaa|xdebug.|show_local_vars -|aaaaaa|xdebug.|show_mem_delta -|aaaaaa|xdebug.|trace_enable_trigger -|aaaaaa|xdebug.|trace_enable_trigger_value -|aaaaaa|xdebug.|trace_format -|aaaaaa|xdebug.|trace_options -|aaaaaa|xdebug.|trace_output_dir -|aaaaaa|xdebug.|trace_output_name -|aaaaaa|xdebug.|var_display_max_children -|aaaaaa|xdebug.|var_display_max_data -|aaaaaa|xdebug.|var_display_max_depth +|aaaaaa|x.|filename_format +|aaaaaa|x.|force_display_errors +|aaaaaa|x.|force_error_reporting +|aaaaaa|x.|gc_stats_enable +|aaaaaa|x.|gc_stats_output_dir +|aaaaaa|x.|gc_stats_output_name +|aaaaaa|x.|halt_level +|aaaaaa|x.|idekey +|aaaaaa|x.|max_nesting_level +|aaaaaa|x.|max_stack_frames +|aaaaaa|x.|overload_var_dump +|aaaaaa|x.|profiler_aggregate +|aaaaaa|x.|profiler_append +|aaaaaa|x.|pprofiler_enable +|aaaaaa|x.|profiler_enable_trigger +|aaaaaa|x.|profiler_enable_trigger_value +|aaaaaa|x.|profiler_output_dir +|aaaaaa|x.|profiler_output_name +|aaaaaa|x.|remote_addr_header +|aaaaaa|x.|remote_autostart +|aaaaaa|x.|remote_connect_back +|aaaaaa|x.|remote_cookie_expire_time +</example></td><td><example inline="2"> +|aaaaaa|x.|remote_enable +|aaaaaa|x.|remote_handler +|aaaaaa|x.|remote_host +|aaaaaa|x.|remote_log +|aaaaaa|x.|remote_mode +|aaaaaa|x.|remote_port +|aaaaaa|x.|remote_timeout +|aaaaaa|x.|scream +|aaaaaa|x.|show_error_trace +|aaaaaa|x.|show_exception_trace +|aaaaaa|x.|show_local_vars +|aaaaaa|x.|show_mem_delta +|aaaaaa|x.|trace_enable_trigger +|aaaaaa|x.|trace_enable_trigger_value +|aaaaaa|x.|trace_format +|aaaaaa|x.|trace_options +|aaaaaa|x.|trace_output_dir +|aaaaaa|x.|trace_output_name +|aaaaaa|x.|var_display_max_children +|aaaaaa|x.|var_display_max_data +|aaaaaa|x.|var_display_max_depth </example> </td></tr></table> diff --git a/slides/xdebug/config-settings-3b.xml b/slides/xdebug/config-settings-3b.xml index 924a4038..d2315a57 100644 --- a/slides/xdebug/config-settings-3b.xml +++ b/slides/xdebug/config-settings-3b.xml @@ -5,73 +5,77 @@ <tr> <td> <example inline="2"> -*|aaaaaa|xdebug.|auto_trace* ~xdebug.always_start~ -*|aaaaaa|xdebug.|cli_color* -|aaaaaa|xdebug.||0000ff|base|.collect_assignments -|aaaaaa|xdebug.||0000ff|base|.collect_includes -|aaaaaa|xdebug.||0000ff|base|.collect_params -|aaaaaa|xdebug.||0000ff|base|.collect_return -|aaaaaa|xdebug.||0000ff|base|.collect_vars -*|aaaaaa|xdebug.|coverage_enable* ~xdebug.mode~ -*|aaaaaa|xdebug.|default_enable* ~xdebug.mode~ -|aaaaaa|xdebug.||0000ff|display|.dump.COOKIE -|aaaaaa|xdebug.||0000ff|display|.dump.ENV -|aaaaaa|xdebug.||0000ff|display|.dump.FILES -|aaaaaa|xdebug.||0000ff|display|.dump.GET -|aaaaaa|xdebug.||0000ff|display|.dump.POST -|aaaaaa|xdebug.||0000ff|display|.dump.REQUEST -|aaaaaa|xdebug.||0000ff|display|.dump.SERVER -|aaaaaa|xdebug.||0000ff|display|.dump.SESSION -|aaaaaa|xdebug.||0000ff|display|.dump_globals -*|aaaaaa|xdebug.|dump_once* -|aaaaaa|xdebug.||0000ff|display|.dump_undefined ----*|00cc00|xdebug.extended_info|*--- ~removed in Xdebug 2.8~ -|aaaaaa|xdebug.||0000ff|base|.file_link_format -|aaaaaa|xdebug.||0000ff|base|.filename_format -|aaaaaa|xdebug.||0000ff|base|.force_display_errors -|aaaaaa|xdebug.||0000ff|base|.force_error_reporting -|aaaaaa|xdebug.||0000ff|base|.gc_stats_enable -*|aaaaaa|xdebug.|gc_stats_output_dir* ~xdebug.output_dir~ -*|aaaaaa|xdebug.|gc_stats_output_name* ~xdebug.output_name~ -|aaaaaa|xdebug.||0000ff|base|.halt_level -*|aaaaaa|xdebug.|idekey* -|aaaaaa|xdebug.||0000ff|base|.max_nesting_level -|aaaaaa|xdebug.||0000ff|display|.max_stack_frames -|aaaaaa|xdebug.||0000ff|display|.overload_var_dump +*|aaaaaa|x.|auto_trace* ~x.always_start~ +*|aaaaaa|x.|cli_color* +|aaaaaa|x.||0000ff|base|.collect_assignments +|aaaaaa|x.||0000ff|base|.collect_includes +|aaaaaa|x.||0000ff|base|.collect_params +|aaaaaa|x.||0000ff|base|.collect_return +|aaaaaa|x.||0000ff|base|.collect_vars +*|aaaaaa|x.|coverage_enable* ~x.mode~ +*|aaaaaa|x.|default_enable* ~x.mode~ +|aaaaaa|x.||0000ff|display|.dump.COOKIE +|aaaaaa|x.||0000ff|display|.dump.ENV +|aaaaaa|x.||0000ff|display|.dump.FILES +|aaaaaa|x.||0000ff|display|.dump.GET +|aaaaaa|x.||0000ff|display|.dump.POST +|aaaaaa|x.||0000ff|display|.dump.REQUEST +|aaaaaa|x.||0000ff|display|.dump.SERVER +|aaaaaa|x.||0000ff|display|.dump.SESSION +|aaaaaa|x.||0000ff|display|.dump_globals +*|aaaaaa|x.|dump_once* +|aaaaaa|x.||0000ff|display|.dump_undefined +---*|00cc00|x.extended_info|*--- ~gone already~ +|aaaaaa|x.||0000ff|base|.file_link_format </example></td><td><example inline="2"> -*|aaaaaa|xdebug.|profiler_aggregate* -*|aaaaaa|xdebug.|profiler_append* -*|aaaaaa|xdebug.|profiler_enable* ~xdebug.mode~ -*|aaaaaa|xdebug.|profiler_enable_trigger* ~xdebug.enable_trigger~ -*|aaaaaa|xdebug.|profiler_enable_trigger_value* ~xdebug.enable_trigger_value~ -*|aaaaaa|xdebug.|profiler_output_dir* ~xdebug.output_dir~ -*|aaaaaa|xdebug.|profiler_output_name* ~xdebug.output_name~ -|aaaaaa|xdebug.||0000ff|debugger|.addr_header -*|aaaaaa|xdebug.|remote.autostart* ~xdebug.always_start~ -|aaaaaa|xdebug.||0000ff|debugger|.connect_back -|aaaaaa|xdebug.||0000ff|debugger|.cookie_expire_time -*|aaaaaa|xdebug.|remote_enable* ~xdebug.mode~ -*|aaaaaa|xdebug.|remote_handler* -|aaaaaa|xdebug.||0000ff|debugger|.host -|aaaaaa|xdebug.||0000ff|debugger|.log -|aaaaaa|xdebug.||0000ff|debugger|.mode -|aaaaaa|xdebug.||0000ff|debugger|.port -|aaaaaa|xdebug.||0000ff|debugger|.timeout -*|aaaaaa|xdebug.|scream* ~always on ☺~ -|aaaaaa|xdebug.||0000ff|display|.show_error_trace -|aaaaaa|xdebug.||0000ff|display|.show_exception_trace -|aaaaaa|xdebug.||0000ff|display|.show_local_vars -*|aaaaaa|xdebug.|show_mem_delta* ~always on~ -*|aaaaaa|xdebug.|trace_enable_trigger* ~xdebug.enable_trigger~ -*|aaaaaa|xdebug.|trace_enable_trigger_value* ~xdebug.enable_trigger_value~ -|aaaaaa|xdebug.||0000ff|tracing|.format -|aaaaaa|xdebug.||0000ff|tracing|.options -*|aaaaaa|xdebug.|trace_output_dir* ~xdebug.output_dir~ -*|aaaaaa|xdebug.|trace_output_name* ~xdebug.output_name~ -|aaaaaa|xdebug.||0000ff|display|.max_children -|aaaaaa|xdebug.||0000ff|display|.max_data -|aaaaaa|xdebug.||0000ff|display|.max_depth - +|aaaaaa|x.||0000ff|base|.filename_format +|aaaaaa|x.||0000ff|base|.force_display_errors +|aaaaaa|x.||0000ff|base|.force_error_reporting +|aaaaaa|x.||0000ff|base|.gc_stats_enable +*|aaaaaa|x.|gc_stats_output_dir* ~x.output_dir~ +*|aaaaaa|x.|gc_stats_output_name* ~x.output_name~ +|aaaaaa|x.||0000ff|base|.halt_level +*|aaaaaa|x.|idekey* +|aaaaaa|x.||0000ff|base|.max_nesting_level +|aaaaaa|x.||0000ff|display|.max_stack_frames +|aaaaaa|x.||0000ff|display|.overload_var_dump +*|aaaaaa|x.|profiler_aggregate* +*|aaaaaa|x.|profiler_append* +*|aaaaaa|x.|profiler_enable* ~x.mode~ +*|aaaaaa|x.|profiler_enable_trigger* ~x.enable_trigger~ +*|aaaaaa|x.|profiler_enable_trigger_value* ~x.enable_…_value~ +*|aaaaaa|x.|profiler_output_dir* ~x.output_dir~ +*|aaaaaa|x.|profiler_output_name* ~x.output_name~ +|aaaaaa|x.||0000ff|debugger|.addr_header +*|aaaaaa|x.|remote.autostart* ~x.always_start~ +|aaaaaa|x.||0000ff|debugger|.connect_back +|aaaaaa|x.||0000ff|debugger|.cookie_expire_time +</example></td> +<!-- +<td><example inline="2"> +*|aaaaaa|x.|remote_enable* ~x.mode~ +*|aaaaaa|x.|remote_handler* +|aaaaaa|x.||0000ff|debugger|.host +|aaaaaa|x.||0000ff|debugger|.log +|aaaaaa|x.||0000ff|debugger|.mode +|aaaaaa|x.||0000ff|debugger|.port +|aaaaaa|x.||0000ff|debugger|.timeout +*|aaaaaa|x.|scream* ~always on ☺~ +|aaaaaa|x.||0000ff|display|.show_error_trace +|aaaaaa|x.||0000ff|display|.show_exception_trace +|aaaaaa|x.||0000ff|display|.show_local_vars +*|aaaaaa|x.|show_mem_delta* ~always on~ +*|aaaaaa|x.|trace_enable_trigger* ~x.enable_trigger~ +*|aaaaaa|x.|trace_enable_trigger_value* ~x.enable_trigger_value~ +|aaaaaa|x.||0000ff|tracing|.format +|aaaaaa|x.||0000ff|tracing|.options +*|aaaaaa|x.|trace_output_dir* ~x.output_dir~ +*|aaaaaa|x.|trace_output_name* ~x.output_name~ +|aaaaaa|x.||0000ff|display|.max_children +|aaaaaa|x.||0000ff|display|.max_data +|aaaaaa|x.||0000ff|display|.max_depth </example> -</td></tr></table> +</td> +--> +</tr></table> </slide> diff --git a/slides/xdebug/debugger-connection-log.xml b/slides/xdebug/debugger-connection-log.xml index acb22231..69332ad7 100644 --- a/slides/xdebug/debugger-connection-log.xml +++ b/slides/xdebug/debugger-connection-log.xml @@ -4,9 +4,11 @@ <blurb>Logging debugging communication:</blurb> <example>xdebug.remote_log=/tmp/remote.log</example> -<div effect="fade-in"> +<break/> <blurb>Also shows connection attempts and failures:</blurb> +<div effect="fade-out"> + <example inline="2"> xdebug.remote_connect_back=0 xdebug.remote_port=9991 @@ -16,7 +18,7 @@ I: Connected to client. *|009900|:-)|* </example> </div> -<div effect="fade-in"> +<div effect="fade-in-out"> <example inline="2"> xdebug.remote_connect_back=1 |777777|xdebug.remote_host=SomethingEntirelyDifferent| diff --git a/slides/xdebug/donate.xml b/slides/xdebug/donate.xml index 8b404a8f..81b8a0e1 100644 --- a/slides/xdebug/donate.xml +++ b/slides/xdebug/donate.xml @@ -2,16 +2,18 @@ <title>Supporting Xdebug</title> <blurb align="center">It's Open Source and free (as in "free beer")</blurb> -<blurb align="center">Using Xdebug saves you a lot of time</blurb> <blurb align="center">I would like to work more on Xdebug, to help *you*</blurb> -<break lines="2"/> +<break lines="1"/> <blurb align="center">*Features and Bugs*</blurb> <blurb align="center">%https://bugs.xdebug.org%</blurb> -<break lines="2"/> +<break lines="1"/> <image align="center" filename="patreon.png" pdf-scale="0.8" y-offset="4"/> - <blurb align="center">%https://www.patreon.com/derickr%</blurb> +<break lines="1"/> +<image align="center" filename="github-sponsor.png" pdf-scale="0.8" y-offset="4"/> +<blurb align="center">%https://github.com/sponsors/derickr%</blurb> + </slide> diff --git a/slides/xdebug/github-sponsor.png b/slides/xdebug/github-sponsor.png new file mode 100644 index 00000000..ac7d8a5e Binary files /dev/null and b/slides/xdebug/github-sponsor.png differ diff --git a/slides/xdebug/test-with-many-versions.xml b/slides/xdebug/test-with-many-versions.xml index 3d2e5212..7a5e3ddd 100644 --- a/slides/xdebug/test-with-many-versions.xml +++ b/slides/xdebug/test-with-many-versions.xml @@ -1,7 +1,7 @@ <slide> <title>Various Versions</title> -<example inline="2"> +<example class="small" inline="2"> 7.1.15 7.1.23-zts 7.1.32-zts 7.2.10-32bit 7.2.19-zts 7.2.7 7.3.4-zts 7.1.15-32bit 7.1.24 7.1.3-32bit 7.2.10-zts 7.2.1-zts 7.2.7-32bit 7.3.5 7.1.15-zts 7.1.24-32bit 7.1.3-zts 7.2.11 7.2.2 7.2.7-zts 7.3.5-32bit diff --git a/slides/xdebug/vld-path-3-paths.xml b/slides/xdebug/vld-path-3-paths.xml index 7bd1560a..1cfd5590 100644 --- a/slides/xdebug/vld-path-3-paths.xml +++ b/slides/xdebug/vld-path-3-paths.xml @@ -4,7 +4,7 @@ <image align="right" filename="vld-path-3-paths.png"/> <blurb>test.php</blurb> -<example> +<example class="medium"> <![CDATA[ 1 <?php 2 function ifthenelse( $a, $b ) 3 { @@ -19,7 +19,7 @@ </example> <blurb>branch.php</blurb> -<example><![CDATA[… +<example class="medium"><![CDATA[… xdebug_start_code_coverage( XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE | XDEBUG_CC_BRANCH_CHECK ); diff --git a/slides/xdebug/vld-path-4-code.xml b/slides/xdebug/vld-path-4-code.xml index 76f026b4..9a6440a7 100644 --- a/slides/xdebug/vld-path-4-code.xml +++ b/slides/xdebug/vld-path-4-code.xml @@ -1,7 +1,7 @@ <slide> <title>Xdebug code coverage</title> -<example> +<example class="medium"> <![CDATA[<?php function ifthenelse( $a, $b ) { @@ -13,7 +13,7 @@ function ifthenelse( $a, $b ) } }]]> </example> -<example> +<example class="medium"> <![CDATA[<?php require 'vendor/autoload.php'; include 'test.php'; diff --git a/slides/xdebug/xdebug-ci.xml b/slides/xdebug/xdebug-ci.xml index 5e3baf3f..3b44c28d 100644 --- a/slides/xdebug/xdebug-ci.xml +++ b/slides/xdebug/xdebug-ci.xml @@ -8,5 +8,6 @@ <bullet>I have a local machine with plenty of cores and memory</bullet> <bullet>Nightly builds of PHP 7.4 and 8.0</bullet> </list> -<blurb class="big-centre">https://xdebug.org/ci</blurb> +<break/> +<blurb class="big-centre">%https://xdebug.org/ci%</blurb> </slide> diff --git a/xdebug-scotland19.xml b/xdebug-scotland19.xml new file mode 100644 index 00000000..feecb3e8 --- /dev/null +++ b/xdebug-scotland19.xml @@ -0,0 +1,61 @@ +<?xml version="1.0" encoding="utf-8"?> +<presentation css="derick.css"> +<topic>Debugging</topic> +<title>Xdebug 3.0</title> +<event>ScotlandPHP</event> +<location>Edinburgh, Scotland, UK</location> +<date>November 9th, 2019</date> +<speaker>Derick Rethans</speaker> +<email>[email protected]</email> +<twitter>derickr</twitter> +<url>https://derickrethans.nl/talks/xdebug-scotland19</url> +<joindin>https://joind.in/XXXXX</joindin> +<slide>slides/xdebug/title.xml</slide> +<slide>slides/mongodb/me.xml</slide> + +<slide>slides/xdebug/focus-on-xdebug.xml</slide> +The Xdebug Experience +17 years + +<slide>slides/xdebug/config-settings-2.xml</slide> +<slide>slides/xdebug/breakpoints-2.xml</slide> +<slide>slides/xdebug/port9000.xml</slide> +<!-- <slide>slides/xdebug/connect1.xml</slide> --> +<!-- <slide>slides/xdebug/connect2.xml</slide> --> +<slide>slides/xdebug/debugger-activation.xml</slide> +<slide>slides/xdebug/debugger-connection-log.xml</slide> +<slide>slides/xdebug/xdebug-slow.xml</slide> +<slide>slides/xdebug/test-with-many-versions.xml</slide> + +<slide>slides/xdebug/focus-on-xdebug2.xml</slide> + +<slide>slides/xdebug/focus-on-xdebug3.xml</slide> +breakpoint behaviour +New versions (7.4) +CI + +<slide>slides/xdebug/xdebug-2.8.xml</slide> +<slide>slides/xdebug/breakpoint-behaviour.xml</slide> +<slide>slides/xdebug/xdebug-ci.xml</slide> + +<slide>slides/xdebug/xdebug-3.xml</slide> +Code reorganisation +Modes +- only do what is needed +Reduce Configuration Options +Code Improvements (algorithms, memory, etc) +<slide>slides/xdebug/code-reorgnisation.xml</slide> +<slide>slides/xdebug/modes.xml</slide> +<slide>slides/xdebug/config-settings-3.xml</slide> +<slide>slides/xdebug/config-settings-3b.xml</slide> +<slide>slides/xdebug/xdebug-slow.xml</slide> +<slide>slides/xdebug/xdebug-hard.xml</slide> + +<slide>slides/xdebug/donate.xml</slide> +<slide>slides/xdebug/business-support.xml</slide> +<slide>slides/xdebug/transparency.xml</slide> +<slide>slides/xdebug/phpinternalsnews.xml</slide> +<slide>slides/mongodb/questions.xml</slide> +<slide>slides/xdebug/resources.xml</slide> + +</presentation>