{"action":"created","issue":{"url":"https://api.github.com/repos/whatwg/html/issues/994","repository_url":"https://api.github.com/repos/whatwg/html","labels_url":"https://api.github.com/repos/whatwg/html/issues/994/labels{/name}","comments_url":"https://api.github.com/repos/whatwg/html/issues/994/comments","events_url":"https://api.github.com/repos/whatwg/html/issues/994/events","html_url":"https://github.com/whatwg/html/pull/994","id":146016293,"number":994,"title":"Refactor tag states and actions","user":{"login":"RReverser","id":557590,"avatar_url":"https://avatars.githubusercontent.com/u/557590?v=3","gravatar_id":"","url":"https://api.github.com/users/RReverser","html_url":"https://github.com/RReverser","followers_url":"https://api.github.com/users/RReverser/followers","following_url":"https://api.github.com/users/RReverser/following{/other_user}","gists_url":"https://api.github.com/users/RReverser/gists{/gist_id}","starred_url":"https://api.github.com/users/RReverser/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/RReverser/subscriptions","organizations_url":"https://api.github.com/users/RReverser/orgs","repos_url":"https://api.github.com/users/RReverser/repos","events_url":"https://api.github.com/users/RReverser/events{/privacy}","received_events_url":"https://api.github.com/users/RReverser/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":4,"created_at":"2016-04-05T14:59:51Z","updated_at":"2016-04-05T15:33:48Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/whatwg/html/pulls/994","html_url":"https://github.com/whatwg/html/pull/994","diff_url":"https://github.com/whatwg/html/pull/994.diff","patch_url":"https://github.com/whatwg/html/pull/994.patch"},"body":"This refactors state machines describing reading of tag names, attributes and DOCTYPE tokens in order to simplify understanding of states described in the specification and corresponding state machine implementation by reducing number of duplicative actions.\r\n\r\nEach commit contains changes to a particular subject, and contains link to relevant commit in fork of [parse5](https://github.com/RReverser/parse5/tree/html-patch) HTML parser that contains suggested changes in tokenizer code in order to prove that changes work as intended and to show off code simplifications on a real-world well-tested implementation."},"comment":{"url":"https://api.github.com/repos/whatwg/html/issues/comments/205860285","html_url":"https://github.com/whatwg/html/pull/994#issuecomment-205860285","issue_url":"https://api.github.com/repos/whatwg/html/issues/994","id":205860285,"user":{"login":"RReverser","id":557590,"avatar_url":"https://avatars.githubusercontent.com/u/557590?v=3","gravatar_id":"","url":"https://api.github.com/users/RReverser","html_url":"https://github.com/RReverser","followers_url":"https://api.github.com/users/RReverser/followers","following_url":"https://api.github.com/users/RReverser/following{/other_user}","gists_url":"https://api.github.com/users/RReverser/gists{/gist_id}","starred_url":"https://api.github.com/users/RReverser/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/RReverser/subscriptions","organizations_url":"https://api.github.com/users/RReverser/orgs","repos_url":"https://api.github.com/users/RReverser/repos","events_url":"https://api.github.com/users/RReverser/events{/privacy}","received_events_url":"https://api.github.com/users/RReverser/received_events","type":"User","site_admin":false},"created_at":"2016-04-05T15:33:48Z","updated_at":"2016-04-05T15:33:48Z","body":"> But my main concern currently is that most modifications introduce additional reconsumption and thus increasing computational complexity (within constant factors).\r\n\r\nHere are the parse5 results on my branch:\r\n\r\n> [16:30:44] Starting 'benchmark'...\r\n[16:30:44]   Running 'parse5 regression benchmark - HUGE' from ~/Documents/Web/parse5/test/benchmark/bench-huge.js ...\r\n[16:30:51]     Working copy x 7.34 ops/sec ±7.99% (23 runs sampled)\r\n[16:30:57]     Upstream x 7.27 ops/sec ±9.05% (23 runs sampled)\r\n[16:30:57]   'parse5 regression benchmark - HUGE' from ~/Documents/Web/parse5/test/benchmark/bench-huge.js (passed: 2, failed: 0)\r\n[16:30:57]     Passed:\r\n[16:30:57]       'Working copy' at 1.01x faster\r\n[16:30:57]       'Upstream' is etalon\r\n[16:30:57]   Running 'parse5 regression benchmark - MICRO' from ~/Documents/Web/parse5/test/benchmark/bench-micro.js ...\r\n[16:31:03]     Working copy x 53.82 ops/sec ±6.81% (60 runs sampled)\r\n[16:31:09]     Upstream x 46.92 ops/sec ±15.61% (56 runs sampled)\r\n[16:31:09]   'parse5 regression benchmark - MICRO' from ~/Documents/Web/parse5/test/benchmark/bench-micro.js (passed: 2, failed: 0)\r\n[16:31:09]     Passed:\r\n[16:31:09]       'Working copy' at 1.15x faster\r\n[16:31:09]       'Upstream' is etalon\r\n[16:31:09]   Running 'parse5 regression benchmark - PAGES' from ~/Documents/Web/parse5/test/benchmark/bench-pages.js ...\r\n[16:31:14]     Working copy x 147 ops/sec ±6.09% (53 runs sampled)\r\n[16:31:20]     Upstream x 144 ops/sec ±6.96% (52 runs sampled)\r\n[16:31:20]   'parse5 regression benchmark - PAGES' from ~/Documents/Web/parse5/test/benchmark/bench-pages.js (passed: 2, failed: 0)\r\n[16:31:20]     Passed:\r\n[16:31:20]       'Working copy' at 1.02x faster\r\n[16:31:20]       'Upstream' is etalon\r\n[16:31:20]   Running 'parse5 regression benchmark - STREAM' from ~/Documents/Web/parse5/test/benchmark/bench-stream.js ...\r\n[16:31:26]     Working copy x 108 ops/sec ±3.81% (73 runs sampled)\r\n[16:31:32]     Upstream x 115 ops/sec ±3.52% (65 runs sampled)\r\n[16:31:32]   'parse5 regression benchmark - STREAM' from ~/Documents/Web/parse5/test/benchmark/bench-stream.js (passed: 2, failed: 0)\r\n[16:31:32]     Passed:\r\n[16:31:32]       'Upstream' is etalon\r\n[16:31:32]       'Working copy' at 1.06x slower\r\n\r\nIf taking ± into account, I'd say that speed didn't change (sometimes a little bit faster, sometimes a little bit slower)."}}