{"action":"created","comment":{"url":"https://api.github.com/repos/JuliaLang/julia/pulls/comments/31697251","id":31697251,"diff_hunk":"@@ -0,0 +1,187 @@\n+# This file is a part of Julia. License is MIT: http://julialang.org/license\n+\n+# Functions to check validity of UTF-8, UTF-16, and UTF-32 encoded strings,\n+# and also to return information necessary to convert to other encodings\n+\n+is_surrogate_lead(c::Unsigned) = ((c & ~0x003ff) == 0xd800)\n+is_surrogate_trail(c::Unsigned) = ((c & ~0x003ff) == 0xdc00)\n+is_surrogate_codeunit(c::Unsigned) = ((c & ~0x007ff) == 0xd800)\n+is_valid_continuation(c) = ((c & 0xc0) == 0x80)\n+\n+# Options for check_string_* functions\n+\n+const UTF_NO_LONG_NULL = 1      # don't accept 0xc0 0x80 for '\\0'\n+const UTF_NO_SURROGATES = 2     # don't accept surrogate pairs in UTF-8/UTF-32\n+const UTF_ACCEPT_LONG = 4       # accept long encodings (other than long null in UTF-8)\n+\n+const UTF_LONG = 1              # Long encodings are present\n+const UTF_LATIN1 = 2            # characters in range 0x80-0xFF present\n+const UTF_UNICODE2 = 4          # characters in range 0x100-0x7ff present\n+const UTF_UNICODE3 = 8          # characters in range 0x800-0xd7ff, 0xe000-0xffff\n+const UTF_UNICODE4 = 16         # non-BMP characters present\n+const UTF_SURROGATE = 32        # surrogate pairs present\n+\n+# Get a UTF-8 continuation byte, give error if invalid, and update position and character value\n+@inline function get_continuation(ch::UInt32, byt::UInt8, pos)\n+    !is_valid_continuation(byt) && utf_errfunc(UTF_ERR_CONT, pos, byt)\n+    (ch << 6) | (byt & 0x3f)\n+end\n+\n+#=\n+@doc \"\"\"\n+@brief      Validates and calculates number of characters in a UTF-8 encoded vector of UInt8\n+\n+@param[in]  str     Vector of UInt8\n+@param[in]  optional length\n+@param[in]  optional start position\n+@param[in]  options flags to determine error handling (default 0)\n+\n+@return     (total characters, flags, 4-byte, 3-byte, 2-byte)\n+@throws     ArgumentError\n+\"\"\" ->\n+=#\n+function check_string(dat::Vector{UInt8}, len::Int = sizeof(dat), pos::Int = 0 ; options::Integer=0)\n+    local byt::UInt8, ch::UInt32, surr::UInt32\n+    flags::UInt = 0\n+    totalchar = num2byte = num3byte = num4byte = 0\n+    @inbounds while pos < len\n+        ch = dat[pos += 1]\n+        totalchar += 1\n+        if ch > 0x7f\n+            # Check UTF-8 encoding\n+            if ch < 0xe0\n+                # 2-byte UTF-8 sequence (i.e. characters 0x80-0x7ff)\n+                (pos == len) && utf_errfunc(UTF_ERR_SHORT, pos, ch)\n+                ch = get_continuation(ch & 0x3f, dat[pos += 1], pos)\n+                if ch > 0x7f\n+                    num2byte += 1\n+                    flags |= (ch > 0xff) ? UTF_UNICODE2 : UTF_LATIN1\n+                elseif (options & UTF_ACCEPT_LONG) != 0\n+                    flags |= UTF_LONG\n+                elseif (ch == 0) && ((options & UTF_NO_LONG_NULL) == 0)\n+                    flags |= UTF_LONG\n+                else\n+                    utf_errfunc(UTF_ERR_LONG, pos, ch)\n+                end\n+             elseif ch < 0xf0\n+                # 3-byte UTF-8 sequence (i.e. characters 0x800-0xffff)\n+                (pos + 2 > len) && utf_errfunc(UTF_ERR_SHORT, pos, ch)\n+                ch = get_continuation(ch & 0x0f, dat[pos += 1], pos)\n+                ch = get_continuation(ch, dat[pos += 1], pos)\n+                # check for surrogate pairs, make sure correct\n+                if is_surrogate_codeunit(ch)\n+                    !is_surrogate_lead(ch) && utf_errfunc(UTF_ERR_NOT_LEAD, pos-2, ch)\n+                    # next character *must* be a trailing surrogate character\n+                    (pos + 3 > len) && utf_errfunc(UTF_ERR_MISSING_SURROGATE, pos-2, ch)\n+                    byt = dat[pos += 1]\n+                    (byt != 0xed) && utf_errfunc(UTF_ERR_NOT_TRAIL, pos, byt)\n+                    surr = get_continuation(0x0000d, dat[pos += 1], pos)\n+                    surr = get_continuation(surr, dat[pos += 1], pos)\n+                    !is_surrogate_trail(surr) && utf_errfunc(UTF_ERR_NOT_TRAIL, pos-2, surr)\n+                    (options & UTF_NO_SURROGATES) != 0 && utf_errfunc(UTF_ERR_SURROGATE, pos-2, surr)\n+                    flags |= UTF_SURROGATE\n+                    num4byte += 1\n+                elseif ch > 0x07ff\n+                    num3byte += 1\n+                elseif (options & UTF_ACCEPT_LONG) != 0\n+                    flags |= UTF_LONG\n+                    num2byte += 1\n+                else\n+                    utf_errfunc(UTF_ERR_LONG, pos-2, ch)\n+                end\n+            elseif ch < 0xf5\n+                # 4-byte UTF-8 sequence (i.e. characters > 0xffff)\n+                (pos + 3 > len) && utf_errfunc(UTF_ERR_SHORT, pos, ch)\n+                ch = get_continuation(ch & 0x07, dat[pos += 1], pos)\n+                ch = get_continuation(ch, dat[pos += 1], pos)\n+                ch = get_continuation(ch, dat[pos += 1], pos)\n+                if ch > 0x10ffff\n+                    utf_errfunc(UTF_ERR_INVALID, pos-3, ch)\n+                elseif ch > 0xffff\n+                    num4byte += 1\n+                elseif is_surrogate_codeunit(ch)\n+                    utf_errfunc(UTF_ERR_SURROGATE, pos-3, ch)\n+                elseif (options & UTF_ACCEPT_LONG) != 0\n+                    # This is an overly long encode character\n+                    flags |= UTF_LONG\n+                    if ch > 0x7ff\n+                        num3byte += 1\n+                    elseif ch > 0x7f\n+                        num2byte += 1\n+                    end\n+                else\n+                    utf_errfunc(UTF_ERR_LONG, pos-2, ch)\n+                end\n+            else\n+                utf_errfunc(UTF_ERR_INVALID, pos, ch)\n+            end\n+        end\n+    end\n+    num3byte != 0 && (flags |= UTF_UNICODE3)\n+    num4byte != 0 && (flags |= UTF_UNICODE4)\n+    return totalchar, flags, num4byte, num3byte, num2byte\n+end\n+\n+#=\n+@doc \"\"\"\n+@brief      Validates and calculates number of characters in a UTF-16 encoded vector of UInt16\n+\n+@param[in]  dat::Union(Vector{UInt16}, Vector{UInt32}, AbstractString)\n+@param[in]  optional length\n+@param[in]  optional start position\n+@param[in]  keyword parameter options flags to determine error handling (default 0)\n+\n+@return     (total characters, flags, 4-byte, 3-byte, 2-byte)\n+@throws     ArgumentError\n+\"\"\" ->\n+=#\n+function check_string{T <: Union(Vector{UInt16}, Vector{UInt32}, AbstractString)}(\n+                      dat::T,\n+                      len::Int = (T == AbstractString ? endof(dat) : (sizeof(dat)>>>(T==Vector{UInt16}?1:2))),\n+                      pos::Int = (T == AbstractString ? start(dat) : 0)\n+                      ; options::Integer = 0)\n+    local ch::UInt32\n+    flags::UInt = 0\n+    totalchar = num2byte = num3byte = num4byte = 0\n+    @inbounds while pos < len\n+        if T == AbstractString\n+             ch, pos = next(dat, pos)","path":"base/utfcheck.jl","position":148,"original_position":148,"commit_id":"2dc86e66eee5b00dc4fd6a7c911dabaf39e9d7a6","original_commit_id":"2dc86e66eee5b00dc4fd6a7c911dabaf39e9d7a6","user":{"login":"tkelman","id":5934628,"avatar_url":"https://avatars.githubusercontent.com/u/5934628?v=3","gravatar_id":"","url":"https://api.github.com/users/tkelman","html_url":"https://github.com/tkelman","followers_url":"https://api.github.com/users/tkelman/followers","following_url":"https://api.github.com/users/tkelman/following{/other_user}","gists_url":"https://api.github.com/users/tkelman/gists{/gist_id}","starred_url":"https://api.github.com/users/tkelman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tkelman/subscriptions","organizations_url":"https://api.github.com/users/tkelman/orgs","repos_url":"https://api.github.com/users/tkelman/repos","events_url":"https://api.github.com/users/tkelman/events{/privacy}","received_events_url":"https://api.github.com/users/tkelman/received_events","type":"User","site_admin":false},"body":"`ch, pos = nex(dat, pos)`, you might not need this `if T == AbstractString` at all","created_at":"2015-06-04T07:01:31Z","updated_at":"2015-06-04T07:01:31Z","html_url":"https://github.com/JuliaLang/julia/pull/11551#discussion_r31697251","pull_request_url":"https://api.github.com/repos/JuliaLang/julia/pulls/11551","_links":{"self":{"href":"https://api.github.com/repos/JuliaLang/julia/pulls/comments/31697251"},"html":{"href":"https://github.com/JuliaLang/julia/pull/11551#discussion_r31697251"},"pull_request":{"href":"https://api.github.com/repos/JuliaLang/julia/pulls/11551"}}},"pull_request":{"url":"https://api.github.com/repos/JuliaLang/julia/pulls/11551","id":36790807,"html_url":"https://github.com/JuliaLang/julia/pull/11551","diff_url":"https://github.com/JuliaLang/julia/pull/11551.diff","patch_url":"https://github.com/JuliaLang/julia/pull/11551.patch","issue_url":"https://api.github.com/repos/JuliaLang/julia/issues/11551","number":11551,"state":"open","locked":false,"title":"Fix #10959 bugs with UTF-16/UTF-32 conversions","user":{"login":"ScottPJones","id":11798751,"avatar_url":"https://avatars.githubusercontent.com/u/11798751?v=3","gravatar_id":"","url":"https://api.github.com/users/ScottPJones","html_url":"https://github.com/ScottPJones","followers_url":"https://api.github.com/users/ScottPJones/followers","following_url":"https://api.github.com/users/ScottPJones/following{/other_user}","gists_url":"https://api.github.com/users/ScottPJones/gists{/gist_id}","starred_url":"https://api.github.com/users/ScottPJones/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ScottPJones/subscriptions","organizations_url":"https://api.github.com/users/ScottPJones/orgs","repos_url":"https://api.github.com/users/ScottPJones/repos","events_url":"https://api.github.com/users/ScottPJones/events{/privacy}","received_events_url":"https://api.github.com/users/ScottPJones/received_events","type":"User","site_admin":false},"body":"Rewrote a number of the conversions between ASCIIString, UTF8String,\r\nUTF16String, and UTF32String, and also rewrote length() for\r\nUTF16String().\r\n\r\nAdded validation functions that can be used in many other places, which also fix a number of Unicode handling bugs, such as detecting overlong encodings, out of range characters, singleton surrogate characters, and missing continuation characters, among other problems.\r\n\r\nAdded over 150 lines of testing code to detect the above conversion problems\r\n\r\nAdded (in a gist) code to show other conversion problems not yet fixed:\r\nhttps://gist.github.com/ScottPJones/4e6e8938f0559998f9fc\r\n\r\nAdded (in a gist) code to benchmark the performance, to ensure that adding the extra validity\r\nchecking did not adversely affect performance (in fact, performance was greatly improved).\r\nhttps://gist.github.com/ScottPJones/79ed895f05f85f333d84","created_at":"2015-06-03T01:22:27Z","updated_at":"2015-06-04T07:01:31Z","closed_at":null,"merged_at":null,"merge_commit_sha":"d5fbc4bde51cf0d14666b7e7c6b1e13e6eafc640","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/JuliaLang/julia/pulls/11551/commits","review_comments_url":"https://api.github.com/repos/JuliaLang/julia/pulls/11551/comments","review_comment_url":"https://api.github.com/repos/JuliaLang/julia/pulls/comments{/number}","comments_url":"https://api.github.com/repos/JuliaLang/julia/issues/11551/comments","statuses_url":"https://api.github.com/repos/JuliaLang/julia/statuses/2dc86e66eee5b00dc4fd6a7c911dabaf39e9d7a6","head":{"label":"ScottPJones:spj/fixutf","ref":"spj/fixutf","sha":"2dc86e66eee5b00dc4fd6a7c911dabaf39e9d7a6","user":{"login":"ScottPJones","id":11798751,"avatar_url":"https://avatars.githubusercontent.com/u/11798751?v=3","gravatar_id":"","url":"https://api.github.com/users/ScottPJones","html_url":"https://github.com/ScottPJones","followers_url":"https://api.github.com/users/ScottPJones/followers","following_url":"https://api.github.com/users/ScottPJones/following{/other_user}","gists_url":"https://api.github.com/users/ScottPJones/gists{/gist_id}","starred_url":"https://api.github.com/users/ScottPJones/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ScottPJones/subscriptions","organizations_url":"https://api.github.com/users/ScottPJones/orgs","repos_url":"https://api.github.com/users/ScottPJones/repos","events_url":"https://api.github.com/users/ScottPJones/events{/privacy}","received_events_url":"https://api.github.com/users/ScottPJones/received_events","type":"User","site_admin":false},"repo":{"id":34334720,"name":"julia","full_name":"ScottPJones/julia","owner":{"login":"ScottPJones","id":11798751,"avatar_url":"https://avatars.githubusercontent.com/u/11798751?v=3","gravatar_id":"","url":"https://api.github.com/users/ScottPJones","html_url":"https://github.com/ScottPJones","followers_url":"https://api.github.com/users/ScottPJones/followers","following_url":"https://api.github.com/users/ScottPJones/following{/other_user}","gists_url":"https://api.github.com/users/ScottPJones/gists{/gist_id}","starred_url":"https://api.github.com/users/ScottPJones/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ScottPJones/subscriptions","organizations_url":"https://api.github.com/users/ScottPJones/orgs","repos_url":"https://api.github.com/users/ScottPJones/repos","events_url":"https://api.github.com/users/ScottPJones/events{/privacy}","received_events_url":"https://api.github.com/users/ScottPJones/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/ScottPJones/julia","description":"The Julia Language: A fresh approach to technical computing.","fork":true,"url":"https://api.github.com/repos/ScottPJones/julia","forks_url":"https://api.github.com/repos/ScottPJones/julia/forks","keys_url":"https://api.github.com/repos/ScottPJones/julia/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ScottPJones/julia/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ScottPJones/julia/teams","hooks_url":"https://api.github.com/repos/ScottPJones/julia/hooks","issue_events_url":"https://api.github.com/repos/ScottPJones/julia/issues/events{/number}","events_url":"https://api.github.com/repos/ScottPJones/julia/events","assignees_url":"https://api.github.com/repos/ScottPJones/julia/assignees{/user}","branches_url":"https://api.github.com/repos/ScottPJones/julia/branches{/branch}","tags_url":"https://api.github.com/repos/ScottPJones/julia/tags","blobs_url":"https://api.github.com/repos/ScottPJones/julia/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ScottPJones/julia/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ScottPJones/julia/git/refs{/sha}","trees_url":"https://api.github.com/repos/ScottPJones/julia/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ScottPJones/julia/statuses/{sha}","languages_url":"https://api.github.com/repos/ScottPJones/julia/languages","stargazers_url":"https://api.github.com/repos/ScottPJones/julia/stargazers","contributors_url":"https://api.github.com/repos/ScottPJones/julia/contributors","subscribers_url":"https://api.github.com/repos/ScottPJones/julia/subscribers","subscription_url":"https://api.github.com/repos/ScottPJones/julia/subscription","commits_url":"https://api.github.com/repos/ScottPJones/julia/commits{/sha}","git_commits_url":"https://api.github.com/repos/ScottPJones/julia/git/commits{/sha}","comments_url":"https://api.github.com/repos/ScottPJones/julia/comments{/number}","issue_comment_url":"https://api.github.com/repos/ScottPJones/julia/issues/comments{/number}","contents_url":"https://api.github.com/repos/ScottPJones/julia/contents/{+path}","compare_url":"https://api.github.com/repos/ScottPJones/julia/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ScottPJones/julia/merges","archive_url":"https://api.github.com/repos/ScottPJones/julia/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ScottPJones/julia/downloads","issues_url":"https://api.github.com/repos/ScottPJones/julia/issues{/number}","pulls_url":"https://api.github.com/repos/ScottPJones/julia/pulls{/number}","milestones_url":"https://api.github.com/repos/ScottPJones/julia/milestones{/number}","notifications_url":"https://api.github.com/repos/ScottPJones/julia/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ScottPJones/julia/labels{/name}","releases_url":"https://api.github.com/repos/ScottPJones/julia/releases{/id}","created_at":"2015-04-21T15:12:29Z","updated_at":"2015-05-08T00:23:59Z","pushed_at":"2015-06-03T17:41:20Z","git_url":"git://github.com/ScottPJones/julia.git","ssh_url":"git@github.com:ScottPJones/julia.git","clone_url":"https://github.com/ScottPJones/julia.git","svn_url":"https://github.com/ScottPJones/julia","homepage":"http://julialang.org/","size":73496,"stargazers_count":0,"watchers_count":0,"language":"Julia","has_issues":false,"has_downloads":true,"has_wiki":false,"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":"JuliaLang:master","ref":"master","sha":"98c144b6aea6880d1ef0f4dc5ece40c5dbbd940c","user":{"login":"JuliaLang","id":743164,"avatar_url":"https://avatars.githubusercontent.com/u/743164?v=3","gravatar_id":"","url":"https://api.github.com/users/JuliaLang","html_url":"https://github.com/JuliaLang","followers_url":"https://api.github.com/users/JuliaLang/followers","following_url":"https://api.github.com/users/JuliaLang/following{/other_user}","gists_url":"https://api.github.com/users/JuliaLang/gists{/gist_id}","starred_url":"https://api.github.com/users/JuliaLang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JuliaLang/subscriptions","organizations_url":"https://api.github.com/users/JuliaLang/orgs","repos_url":"https://api.github.com/users/JuliaLang/repos","events_url":"https://api.github.com/users/JuliaLang/events{/privacy}","received_events_url":"https://api.github.com/users/JuliaLang/received_events","type":"Organization","site_admin":false},"repo":{"id":1644196,"name":"julia","full_name":"JuliaLang/julia","owner":{"login":"JuliaLang","id":743164,"avatar_url":"https://avatars.githubusercontent.com/u/743164?v=3","gravatar_id":"","url":"https://api.github.com/users/JuliaLang","html_url":"https://github.com/JuliaLang","followers_url":"https://api.github.com/users/JuliaLang/followers","following_url":"https://api.github.com/users/JuliaLang/following{/other_user}","gists_url":"https://api.github.com/users/JuliaLang/gists{/gist_id}","starred_url":"https://api.github.com/users/JuliaLang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JuliaLang/subscriptions","organizations_url":"https://api.github.com/users/JuliaLang/orgs","repos_url":"https://api.github.com/users/JuliaLang/repos","events_url":"https://api.github.com/users/JuliaLang/events{/privacy}","received_events_url":"https://api.github.com/users/JuliaLang/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/JuliaLang/julia","description":"The Julia Language: A fresh approach to technical computing.","fork":false,"url":"https://api.github.com/repos/JuliaLang/julia","forks_url":"https://api.github.com/repos/JuliaLang/julia/forks","keys_url":"https://api.github.com/repos/JuliaLang/julia/keys{/key_id}","collaborators_url":"https://api.github.com/repos/JuliaLang/julia/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/JuliaLang/julia/teams","hooks_url":"https://api.github.com/repos/JuliaLang/julia/hooks","issue_events_url":"https://api.github.com/repos/JuliaLang/julia/issues/events{/number}","events_url":"https://api.github.com/repos/JuliaLang/julia/events","assignees_url":"https://api.github.com/repos/JuliaLang/julia/assignees{/user}","branches_url":"https://api.github.com/repos/JuliaLang/julia/branches{/branch}","tags_url":"https://api.github.com/repos/JuliaLang/julia/tags","blobs_url":"https://api.github.com/repos/JuliaLang/julia/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/JuliaLang/julia/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/JuliaLang/julia/git/refs{/sha}","trees_url":"https://api.github.com/repos/JuliaLang/julia/git/trees{/sha}","statuses_url":"https://api.github.com/repos/JuliaLang/julia/statuses/{sha}","languages_url":"https://api.github.com/repos/JuliaLang/julia/languages","stargazers_url":"https://api.github.com/repos/JuliaLang/julia/stargazers","contributors_url":"https://api.github.com/repos/JuliaLang/julia/contributors","subscribers_url":"https://api.github.com/repos/JuliaLang/julia/subscribers","subscription_url":"https://api.github.com/repos/JuliaLang/julia/subscription","commits_url":"https://api.github.com/repos/JuliaLang/julia/commits{/sha}","git_commits_url":"https://api.github.com/repos/JuliaLang/julia/git/commits{/sha}","comments_url":"https://api.github.com/repos/JuliaLang/julia/comments{/number}","issue_comment_url":"https://api.github.com/repos/JuliaLang/julia/issues/comments{/number}","contents_url":"https://api.github.com/repos/JuliaLang/julia/contents/{+path}","compare_url":"https://api.github.com/repos/JuliaLang/julia/compare/{base}...{head}","merges_url":"https://api.github.com/repos/JuliaLang/julia/merges","archive_url":"https://api.github.com/repos/JuliaLang/julia/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/JuliaLang/julia/downloads","issues_url":"https://api.github.com/repos/JuliaLang/julia/issues{/number}","pulls_url":"https://api.github.com/repos/JuliaLang/julia/pulls{/number}","milestones_url":"https://api.github.com/repos/JuliaLang/julia/milestones{/number}","notifications_url":"https://api.github.com/repos/JuliaLang/julia/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/JuliaLang/julia/labels{/name}","releases_url":"https://api.github.com/repos/JuliaLang/julia/releases{/id}","created_at":"2011-04-21T07:01:50Z","updated_at":"2015-06-04T05:51:02Z","pushed_at":"2015-06-04T06:56:46Z","git_url":"git://github.com/JuliaLang/julia.git","ssh_url":"git@github.com:JuliaLang/julia.git","clone_url":"https://github.com/JuliaLang/julia.git","svn_url":"https://github.com/JuliaLang/julia","homepage":"http://julialang.org/","size":217683,"stargazers_count":5628,"watchers_count":5628,"language":"Julia","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":1179,"mirror_url":null,"open_issues_count":1278,"forks":1179,"open_issues":1278,"watchers":5628,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/JuliaLang/julia/pulls/11551"},"html":{"href":"https://github.com/JuliaLang/julia/pull/11551"},"issue":{"href":"https://api.github.com/repos/JuliaLang/julia/issues/11551"},"comments":{"href":"https://api.github.com/repos/JuliaLang/julia/issues/11551/comments"},"review_comments":{"href":"https://api.github.com/repos/JuliaLang/julia/pulls/11551/comments"},"review_comment":{"href":"https://api.github.com/repos/JuliaLang/julia/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/JuliaLang/julia/pulls/11551/commits"},"statuses":{"href":"https://api.github.com/repos/JuliaLang/julia/statuses/2dc86e66eee5b00dc4fd6a7c911dabaf39e9d7a6"}}}}