{"action":"created","comment":{"url":"https://api.github.com/repos/rust-lang/rust/pulls/comments/48974708","id":48974708,"diff_hunk":"@@ -468,6 +468,18 @@ fn test_is_utf8() {\n     assert!(from_utf8(&[0xEF, 0xBF, 0xBF]).is_ok());\n     assert!(from_utf8(&[0xF0, 0x90, 0x80, 0x80]).is_ok());\n     assert!(from_utf8(&[0xF4, 0x8F, 0xBF, 0xBF]).is_ok());\n+\n+    // deny embedded in long stretches of ascii\n+    let mut data = [0; 128];\n+    for i in 32..64 {\n+        for elt in data.iter_mut() {\n+            *elt = 0;\n+        }","path":"src/libcollectionstest/str.rs","position":10,"original_position":10,"commit_id":"7ddcac2942d8d291e334785d8142c9dac4f6f76b","original_commit_id":"7ddcac2942d8d291e334785d8142c9dac4f6f76b","user":{"login":"shepmaster","id":174509,"avatar_url":"https://avatars.githubusercontent.com/u/174509?v=3","gravatar_id":"","url":"https://api.github.com/users/shepmaster","html_url":"https://github.com/shepmaster","followers_url":"https://api.github.com/users/shepmaster/followers","following_url":"https://api.github.com/users/shepmaster/following{/other_user}","gists_url":"https://api.github.com/users/shepmaster/gists{/gist_id}","starred_url":"https://api.github.com/users/shepmaster/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/shepmaster/subscriptions","organizations_url":"https://api.github.com/users/shepmaster/orgs","repos_url":"https://api.github.com/users/shepmaster/repos","events_url":"https://api.github.com/users/shepmaster/events{/privacy}","received_events_url":"https://api.github.com/users/shepmaster/received_events","type":"User","site_admin":false},"body":"Just move the array into here, instead of rezeroing it?\r\n\r\n```rust\r\nfor i in 32..64 {\r\n    let mut data = [0; 128];\r\n    // ...\r\n}\r\n```","created_at":"2016-01-06T16:16:11Z","updated_at":"2016-01-06T16:16:11Z","html_url":"https://github.com/rust-lang/rust/pull/30740#discussion_r48974708","pull_request_url":"https://api.github.com/repos/rust-lang/rust/pulls/30740","_links":{"self":{"href":"https://api.github.com/repos/rust-lang/rust/pulls/comments/48974708"},"html":{"href":"https://github.com/rust-lang/rust/pull/30740#discussion_r48974708"},"pull_request":{"href":"https://api.github.com/repos/rust-lang/rust/pulls/30740"}}},"pull_request":{"url":"https://api.github.com/repos/rust-lang/rust/pulls/30740","id":55223294,"html_url":"https://github.com/rust-lang/rust/pull/30740","diff_url":"https://github.com/rust-lang/rust/pull/30740.diff","patch_url":"https://github.com/rust-lang/rust/pull/30740.patch","issue_url":"https://api.github.com/repos/rust-lang/rust/issues/30740","number":30740,"state":"open","locked":false,"title":"Add fast path for ascii in UTF-8 validation","user":{"login":"bluss","id":3209739,"avatar_url":"https://avatars.githubusercontent.com/u/3209739?v=3","gravatar_id":"","url":"https://api.github.com/users/bluss","html_url":"https://github.com/bluss","followers_url":"https://api.github.com/users/bluss/followers","following_url":"https://api.github.com/users/bluss/following{/other_user}","gists_url":"https://api.github.com/users/bluss/gists{/gist_id}","starred_url":"https://api.github.com/users/bluss/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bluss/subscriptions","organizations_url":"https://api.github.com/users/bluss/orgs","repos_url":"https://api.github.com/users/bluss/repos","events_url":"https://api.github.com/users/bluss/events{/privacy}","received_events_url":"https://api.github.com/users/bluss/received_events","type":"User","site_admin":false},"body":"Add fast path for ascii in UTF-8 validation\r\n\r\nThis speeds up the ascii case (and long stretches of ascii in otherwise\r\nmixed UTF-8 data) when checking UTF-8 validity.\r\n\r\nBenchmark results suggest that on predominantly non-ascii input, we\r\nregress performance just slightly (2-3 %) while for the best case of\r\nonly ascii input we can improve throughput (bytes / second) up to\r\n9 times by reading 16 bytes at a time in the ascii case.\r\n\r\nThis solution does not autovectorize, it seems to compile to simple\r\nloads of 8 byte words on x86-64, but it's a good improvement anyway.\r\nUnrolling factor can be chosen arbitrarily from 1 and upwards words\r\nper iteration. This commit uses 2, resulting in 16 bytes per iteration\r\non 64-bit.\r\n\r\nThe PR discussion has more information.","created_at":"2016-01-06T15:16:27Z","updated_at":"2016-01-06T16:16:11Z","closed_at":null,"merged_at":null,"merge_commit_sha":"273cdb046fa6fb9c47cce9f8aca3b01d98a4552a","assignee":{"login":"brson","id":147214,"avatar_url":"https://avatars.githubusercontent.com/u/147214?v=3","gravatar_id":"","url":"https://api.github.com/users/brson","html_url":"https://github.com/brson","followers_url":"https://api.github.com/users/brson/followers","following_url":"https://api.github.com/users/brson/following{/other_user}","gists_url":"https://api.github.com/users/brson/gists{/gist_id}","starred_url":"https://api.github.com/users/brson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/brson/subscriptions","organizations_url":"https://api.github.com/users/brson/orgs","repos_url":"https://api.github.com/users/brson/repos","events_url":"https://api.github.com/users/brson/events{/privacy}","received_events_url":"https://api.github.com/users/brson/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/rust-lang/rust/pulls/30740/commits","review_comments_url":"https://api.github.com/repos/rust-lang/rust/pulls/30740/comments","review_comment_url":"https://api.github.com/repos/rust-lang/rust/pulls/comments{/number}","comments_url":"https://api.github.com/repos/rust-lang/rust/issues/30740/comments","statuses_url":"https://api.github.com/repos/rust-lang/rust/statuses/7ddcac2942d8d291e334785d8142c9dac4f6f76b","head":{"label":"bluss:ascii-is-the-best","ref":"ascii-is-the-best","sha":"7ddcac2942d8d291e334785d8142c9dac4f6f76b","user":{"login":"bluss","id":3209739,"avatar_url":"https://avatars.githubusercontent.com/u/3209739?v=3","gravatar_id":"","url":"https://api.github.com/users/bluss","html_url":"https://github.com/bluss","followers_url":"https://api.github.com/users/bluss/followers","following_url":"https://api.github.com/users/bluss/following{/other_user}","gists_url":"https://api.github.com/users/bluss/gists{/gist_id}","starred_url":"https://api.github.com/users/bluss/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bluss/subscriptions","organizations_url":"https://api.github.com/users/bluss/orgs","repos_url":"https://api.github.com/users/bluss/repos","events_url":"https://api.github.com/users/bluss/events{/privacy}","received_events_url":"https://api.github.com/users/bluss/received_events","type":"User","site_admin":false},"repo":{"id":27685739,"name":"rust","full_name":"bluss/rust","owner":{"login":"bluss","id":3209739,"avatar_url":"https://avatars.githubusercontent.com/u/3209739?v=3","gravatar_id":"","url":"https://api.github.com/users/bluss","html_url":"https://github.com/bluss","followers_url":"https://api.github.com/users/bluss/followers","following_url":"https://api.github.com/users/bluss/following{/other_user}","gists_url":"https://api.github.com/users/bluss/gists{/gist_id}","starred_url":"https://api.github.com/users/bluss/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bluss/subscriptions","organizations_url":"https://api.github.com/users/bluss/orgs","repos_url":"https://api.github.com/users/bluss/repos","events_url":"https://api.github.com/users/bluss/events{/privacy}","received_events_url":"https://api.github.com/users/bluss/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/bluss/rust","description":"a safe, concurrent, practical language","fork":true,"url":"https://api.github.com/repos/bluss/rust","forks_url":"https://api.github.com/repos/bluss/rust/forks","keys_url":"https://api.github.com/repos/bluss/rust/keys{/key_id}","collaborators_url":"https://api.github.com/repos/bluss/rust/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/bluss/rust/teams","hooks_url":"https://api.github.com/repos/bluss/rust/hooks","issue_events_url":"https://api.github.com/repos/bluss/rust/issues/events{/number}","events_url":"https://api.github.com/repos/bluss/rust/events","assignees_url":"https://api.github.com/repos/bluss/rust/assignees{/user}","branches_url":"https://api.github.com/repos/bluss/rust/branches{/branch}","tags_url":"https://api.github.com/repos/bluss/rust/tags","blobs_url":"https://api.github.com/repos/bluss/rust/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/bluss/rust/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/bluss/rust/git/refs{/sha}","trees_url":"https://api.github.com/repos/bluss/rust/git/trees{/sha}","statuses_url":"https://api.github.com/repos/bluss/rust/statuses/{sha}","languages_url":"https://api.github.com/repos/bluss/rust/languages","stargazers_url":"https://api.github.com/repos/bluss/rust/stargazers","contributors_url":"https://api.github.com/repos/bluss/rust/contributors","subscribers_url":"https://api.github.com/repos/bluss/rust/subscribers","subscription_url":"https://api.github.com/repos/bluss/rust/subscription","commits_url":"https://api.github.com/repos/bluss/rust/commits{/sha}","git_commits_url":"https://api.github.com/repos/bluss/rust/git/commits{/sha}","comments_url":"https://api.github.com/repos/bluss/rust/comments{/number}","issue_comment_url":"https://api.github.com/repos/bluss/rust/issues/comments{/number}","contents_url":"https://api.github.com/repos/bluss/rust/contents/{+path}","compare_url":"https://api.github.com/repos/bluss/rust/compare/{base}...{head}","merges_url":"https://api.github.com/repos/bluss/rust/merges","archive_url":"https://api.github.com/repos/bluss/rust/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/bluss/rust/downloads","issues_url":"https://api.github.com/repos/bluss/rust/issues{/number}","pulls_url":"https://api.github.com/repos/bluss/rust/pulls{/number}","milestones_url":"https://api.github.com/repos/bluss/rust/milestones{/number}","notifications_url":"https://api.github.com/repos/bluss/rust/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/bluss/rust/labels{/name}","releases_url":"https://api.github.com/repos/bluss/rust/releases{/id}","created_at":"2014-12-07T21:37:14Z","updated_at":"2014-12-07T21:37:24Z","pushed_at":"2016-01-06T14:47:29Z","git_url":"git://github.com/bluss/rust.git","ssh_url":"git@github.com:bluss/rust.git","clone_url":"https://github.com/bluss/rust.git","svn_url":"https://github.com/bluss/rust","homepage":"http://www.rust-lang.org","size":274322,"stargazers_count":0,"watchers_count":0,"language":"Rust","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"rust-lang:master","ref":"master","sha":"d5ac1a1da327f22bb865f23963f1070d4fd40c0c","user":{"login":"rust-lang","id":5430905,"avatar_url":"https://avatars.githubusercontent.com/u/5430905?v=3","gravatar_id":"","url":"https://api.github.com/users/rust-lang","html_url":"https://github.com/rust-lang","followers_url":"https://api.github.com/users/rust-lang/followers","following_url":"https://api.github.com/users/rust-lang/following{/other_user}","gists_url":"https://api.github.com/users/rust-lang/gists{/gist_id}","starred_url":"https://api.github.com/users/rust-lang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rust-lang/subscriptions","organizations_url":"https://api.github.com/users/rust-lang/orgs","repos_url":"https://api.github.com/users/rust-lang/repos","events_url":"https://api.github.com/users/rust-lang/events{/privacy}","received_events_url":"https://api.github.com/users/rust-lang/received_events","type":"Organization","site_admin":false},"repo":{"id":724712,"name":"rust","full_name":"rust-lang/rust","owner":{"login":"rust-lang","id":5430905,"avatar_url":"https://avatars.githubusercontent.com/u/5430905?v=3","gravatar_id":"","url":"https://api.github.com/users/rust-lang","html_url":"https://github.com/rust-lang","followers_url":"https://api.github.com/users/rust-lang/followers","following_url":"https://api.github.com/users/rust-lang/following{/other_user}","gists_url":"https://api.github.com/users/rust-lang/gists{/gist_id}","starred_url":"https://api.github.com/users/rust-lang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rust-lang/subscriptions","organizations_url":"https://api.github.com/users/rust-lang/orgs","repos_url":"https://api.github.com/users/rust-lang/repos","events_url":"https://api.github.com/users/rust-lang/events{/privacy}","received_events_url":"https://api.github.com/users/rust-lang/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/rust-lang/rust","description":"A safe, concurrent, practical language.","fork":false,"url":"https://api.github.com/repos/rust-lang/rust","forks_url":"https://api.github.com/repos/rust-lang/rust/forks","keys_url":"https://api.github.com/repos/rust-lang/rust/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rust-lang/rust/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rust-lang/rust/teams","hooks_url":"https://api.github.com/repos/rust-lang/rust/hooks","issue_events_url":"https://api.github.com/repos/rust-lang/rust/issues/events{/number}","events_url":"https://api.github.com/repos/rust-lang/rust/events","assignees_url":"https://api.github.com/repos/rust-lang/rust/assignees{/user}","branches_url":"https://api.github.com/repos/rust-lang/rust/branches{/branch}","tags_url":"https://api.github.com/repos/rust-lang/rust/tags","blobs_url":"https://api.github.com/repos/rust-lang/rust/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rust-lang/rust/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rust-lang/rust/git/refs{/sha}","trees_url":"https://api.github.com/repos/rust-lang/rust/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rust-lang/rust/statuses/{sha}","languages_url":"https://api.github.com/repos/rust-lang/rust/languages","stargazers_url":"https://api.github.com/repos/rust-lang/rust/stargazers","contributors_url":"https://api.github.com/repos/rust-lang/rust/contributors","subscribers_url":"https://api.github.com/repos/rust-lang/rust/subscribers","subscription_url":"https://api.github.com/repos/rust-lang/rust/subscription","commits_url":"https://api.github.com/repos/rust-lang/rust/commits{/sha}","git_commits_url":"https://api.github.com/repos/rust-lang/rust/git/commits{/sha}","comments_url":"https://api.github.com/repos/rust-lang/rust/comments{/number}","issue_comment_url":"https://api.github.com/repos/rust-lang/rust/issues/comments{/number}","contents_url":"https://api.github.com/repos/rust-lang/rust/contents/{+path}","compare_url":"https://api.github.com/repos/rust-lang/rust/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rust-lang/rust/merges","archive_url":"https://api.github.com/repos/rust-lang/rust/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rust-lang/rust/downloads","issues_url":"https://api.github.com/repos/rust-lang/rust/issues{/number}","pulls_url":"https://api.github.com/repos/rust-lang/rust/pulls{/number}","milestones_url":"https://api.github.com/repos/rust-lang/rust/milestones{/number}","notifications_url":"https://api.github.com/repos/rust-lang/rust/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rust-lang/rust/labels{/name}","releases_url":"https://api.github.com/repos/rust-lang/rust/releases{/id}","created_at":"2010-06-16T20:39:03Z","updated_at":"2016-01-06T14:16:49Z","pushed_at":"2016-01-06T15:56:57Z","git_url":"git://github.com/rust-lang/rust.git","ssh_url":"git@github.com:rust-lang/rust.git","clone_url":"https://github.com/rust-lang/rust.git","svn_url":"https://github.com/rust-lang/rust","homepage":"http://www.rust-lang.org","size":468029,"stargazers_count":14814,"watchers_count":14814,"language":"Rust","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":2888,"mirror_url":null,"open_issues_count":2375,"forks":2888,"open_issues":2375,"watchers":14814,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/rust-lang/rust/pulls/30740"},"html":{"href":"https://github.com/rust-lang/rust/pull/30740"},"issue":{"href":"https://api.github.com/repos/rust-lang/rust/issues/30740"},"comments":{"href":"https://api.github.com/repos/rust-lang/rust/issues/30740/comments"},"review_comments":{"href":"https://api.github.com/repos/rust-lang/rust/pulls/30740/comments"},"review_comment":{"href":"https://api.github.com/repos/rust-lang/rust/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/rust-lang/rust/pulls/30740/commits"},"statuses":{"href":"https://api.github.com/repos/rust-lang/rust/statuses/7ddcac2942d8d291e334785d8142c9dac4f6f76b"}}}}