{"action":"created","comment":{"url":"https://api.github.com/repos/dotnet/coreclr/pulls/comments/219331544","pull_request_review_id":157483982,"id":219331544,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIxOTMzMTU0NA==","diff_hunk":"@@ -0,0 +1,450 @@\n+// Licensed to the .NET Foundation under one or more agreements.\n+// The .NET Foundation licenses this file to you under the MIT license.\n+// See the LICENSE file in the project root for more information.\n+\n+using System.Diagnostics;\n+\n+namespace System\n+{\n+    internal unsafe partial class Number\n+    {\n+        // precomputed tables with powers of 10. These allows us to do at most\n+        // two Mul64 during the conversion. This is important not only\n+        // for speed, but also for precision because of Mul64 computes with 1 bit error.\n+\n+        private static readonly ulong[] rgval64Power10 = new ulong[]\n+        {\n+            // powers of 10\n+            0XA000000000000000,     // 1\n+            0XC800000000000000,     // 2\n+            0XFA00000000000000,     // 3\n+            0X9C40000000000000,     // 4\n+            0XC350000000000000,     // 5\n+            0XF424000000000000,     // 6\n+            0X9896800000000000,     // 7\n+            0XBEBC200000000000,     // 8\n+            0XEE6B280000000000,     // 9\n+            0X9502F90000000000,     // 10\n+            0XBA43B74000000000,     // 11\n+            0XE8D4A51000000000,     // 12\n+            0X9184E72A00000000,     // 13\n+            0XB5E620F480000000,     // 14\n+            0XE35FA931A0000000,     // 15\n+\n+            // powers of 0.1\n+            0xCCCCCCCCCCCCCCCD,     // 1\n+            0xA3D70A3D70A3D70B,     // 2\n+            0x83126E978D4FDF3C,     // 3\n+            0xD1B71758E219652E,     // 4\n+            0xA7C5AC471B478425,     // 5\n+            0x8637BD05AF6C69B7,     // 6\n+            0xD6BF94D5E57A42BE,     // 7\n+            0xABCC77118461CEFF,     // 8\n+            0x89705F4136B4A599,     // 9\n+            0xDBE6FECEBDEDD5C2,     // 10\n+            0xAFEBFF0BCB24AB02,     // 11\n+            0x8CBCCC096F5088CF,     // 12\n+            0xE12E13424BB40E18,     // 13\n+            0xB424DC35095CD813,     // 14\n+            0x901D7CF73AB0ACDC,     // 15\n+        };\n+\n+        private static readonly short[] rgexp64Power10 = new short[]\n+        {\n+            // exponents for both powers of 10 and 0.1\n+            4,      // 1\n+            7,      // 2\n+            10,     // 3\n+            14,     // 4\n+            17,     // 5\n+            20,     // 6\n+            24,     // 7\n+            27,     // 8\n+            30,     // 9\n+            34,     // 10\n+            37,     // 11\n+            40,     // 12\n+            44,     // 13\n+            47,     // 14\n+            50,     // 15\n+        };\n+\n+        private static readonly ulong[] rgval64Power10By16 = new ulong[]\n+        {\n+            // powers of 10^16\n+            0x8E1BC9BF04000000,     // 1\n+            0x9DC5ADA82B70B59E,     // 2\n+            0xAF298D050E4395D6,     // 3\n+            0xC2781F49FFCFA6D4,     // 4\n+            0xD7E77A8F87DAF7FA,     // 5\n+            0xEFB3AB16C59B14A0,     // 6\n+            0x850FADC09923329C,     // 7\n+            0x93BA47C980E98CDE,     // 8\n+            0xA402B9C5A8D3A6E6,     // 9\n+            0xB616A12B7FE617A8,     // 10\n+            0xCA28A291859BBF90,     // 11\n+            0xE070F78D39275566,     // 12\n+            0xF92E0C3537826140,     // 13\n+            0x8A5296FFE33CC92C,     // 14\n+            0x9991A6F3D6BF1762,     // 15\n+            0xAA7EEBFB9DF9DE8A,     // 16\n+            0xBD49D14AA79DBC7E,     // 17\n+            0xD226FC195C6A2F88,     // 18\n+            0xE950DF20247C83F8,     // 19\n+            0x81842F29F2CCE373,     // 20\n+            0x8FCAC257558EE4E2,     // 21\n+\n+            // powers of 0.1^16\n+            0xE69594BEC44DE160,     // 1\n+            0xCFB11EAD453994C3,     // 2\n+            0xBB127C53B17EC165,     // 3\n+            0xA87FEA27A539E9B3,     // 4\n+            0x97C560BA6B0919B5,     // 5\n+            0x88B402F7FD7553AB,     // 6\n+            0xF64335BCF065D3A0,     // 7\n+            0xDDD0467C64BCE4C4,     // 8\n+            0xC7CABA6E7C5382ED,     // 9\n+            0xB3F4E093DB73A0B7,     // 10\n+            0xA21727DB38CB0053,     // 11\n+            0x91FF83775423CC29,     // 12\n+            0x8380DEA93DA4BC82,     // 13\n+            0xECE53CEC4A314F00,     // 14\n+            0xD5605FCDCF32E217,     // 15\n+            0xC0314325637A1978,     // 16\n+            0xAD1C8EAB5EE43BA2,     // 17\n+            0x9BECCE62836AC5B0,     // 18\n+            0x8C71DCD9BA0B495C,     // 19\n+            0xFD00B89747823938,     // 20\n+            0xE3E27A444D8D991A,     // 21\n+        };\n+\n+        private static readonly short[] rgexp64Power10By16 = new short[]\n+        {\n+            // exponents for both powers of 10^16 and 0.1^16\n+            54,     // 1\n+            107,    // 2\n+            160,    // 3\n+            213,    // 4\n+            266,    // 5\n+            319,    // 6\n+            373,    // 7\n+            426,    // 8\n+            479,    // 9\n+            532,    // 10\n+            585,    // 11\n+            638,    // 12\n+            691,    // 13\n+            745,    // 14\n+            798,    // 15\n+            851,    // 16\n+            904,    // 17\n+            957,    // 18\n+            1010,   // 19\n+            1064,   // 20\n+            1117,   // 21\n+        };\n+\n+#if DEBUG\n+        private static bool s_CheckedTables = false;\n+\n+        private static void CheckTables()\n+        {\n+            ulong val;\n+            int exp;\n+\n+            val = 0xa000000000000000;\n+            exp = 4; // 10\n+\n+            CheckPow10MantissaTable(val, exp, new Span<ulong>(rgval64Power10, 0, 15), \"rgval64Power10\");\n+            CheckPow10ExponentTable(val, exp, new Span<short>(rgexp64Power10, 0, 15), \"rgexp64Power10\");\n+\n+            val = 0x8E1BC9BF04000000;\n+            exp = 54; //10^16\n+\n+            CheckPow10MantissaTable(val, exp, new Span<ulong>(rgval64Power10By16, 0, 21), \"rgval64Power10By16\");\n+            CheckPow10ExponentTable(val, exp, new Span<short>(rgexp64Power10By16, 0, 21), \"rgexp64Power10By16\");\n+\n+            val = 0xCCCCCCCCCCCCCCCD;\n+            exp = -3; // 0.1\n+\n+            CheckPow10MantissaTable(val, exp, new Span<ulong>(rgval64Power10, 15, 15), \"rgval64Power10 - inv\");\n+\n+            val = 0xE69594BEC44DE160;\n+            exp = -53; // 0.1^16\n+\n+            CheckPow10MantissaTable(val, exp, new Span<ulong>(rgval64Power10By16, 21, 21), \"rgval64Power10By16 - inv\");\n+        }\n+\n+        // debug-only verification of the precomputed tables\n+        private static void CheckPow10MantissaTable(ulong val, int exp, Span<ulong> table, string name)\n+        {\n+            ulong multval = val;\n+            int mulexp = exp;\n+            bool isBad = false;\n+\n+            for (int i = 0; i < table.Length; i++)\n+            {\n+                if (table[i] != val)\n+                {\n+                    if (!isBad)\n+                    {\n+                        Debug.WriteLine(name);\n+                        isBad = true;\n+                    }\n+                    Debug.WriteLine($\"0x{val:X16},     // {i + 1}\");\n+                }\n+\n+                exp += mulexp;\n+                val = Mul64Precise(val, multval, ref exp);\n+            }\n+\n+            Debug.Assert(!isBad, \"NumberToDouble table not correct. Correct version dumped to debug output.\");\n+        }\n+\n+        // debug-only verification of the precomputed tables\n+        private static void CheckPow10ExponentTable(ulong val, int exp, Span<short> table, string name)\n+        {\n+            ulong multval = val;\n+            int mulexp = exp;\n+            bool isBad = false;\n+\n+            for (int i = 0; i < table.Length; i++)\n+            {\n+                if (table[i] != exp)\n+                {\n+                    if (!isBad)\n+                    {\n+                        Debug.WriteLine(name);\n+                        isBad = true;\n+                    }\n+                    Debug.WriteLine($\"{val}, // {i + 1}\");\n+                }\n+\n+                exp += mulexp;\n+                val = Mul64Precise(val, multval, ref exp);\n+            }\n+\n+            Debug.Assert(!isBad, \"NumberToDouble table not correct. Correct version dumped to debug output.\");\n+        }\n+#endif\n+\n+        // get 32-bit integer from at most 9 digits\n+        private static uint DigitsToInt(char* p, int count)\n+        {\n+            Debug.Assert((1 <= count) && (count <= 9));\n+\n+            char* end = (p + count);\n+            uint res = (uint)(p[0] - '0');\n+\n+            for (p++; p < end; p++)\n+            {\n+                res = (10 * res) + p[0] - '0';\n+            }\n+\n+            return res;\n+        }\n+\n+        private static int GetLength(char* src)\n+        {\n+            int length = 0;\n+\n+            while (src[length] != '\\0')\n+            {\n+                length++;\n+            }\n+\n+            return length;\n+        }\n+\n+        // helper function to multiply two 32-bit uints\n+        private static ulong Mul32x32To64(uint a, uint b)\n+        {\n+            return (ulong)(a) * b;\n+        }\n+\n+        // multiply two numbers in the internal integer representation\n+        private static ulong Mul64Lossy(ulong a, ulong b, ref int exp)\n+        {\n+            // it's ok to lose some precision here - Mul64 will be called\n+            // at most twice during the conversion, so the error won't propagate\n+            // to any of the 53 significant bits of the result\n+            ulong val = Mul32x32To64((uint)(a >> 32), (uint)(b >> 32))\n+                      + (Mul32x32To64((uint)(a >> 32), (uint)(b)) >> 32)\n+                      + (Mul32x32To64((uint)(a), (uint)(b >> 32)) >> 32);\n+\n+            // normalize\n+            if ((val & 0x8000000000000000) == 0)\n+            {\n+                val <<= 1;\n+                exp--;\n+            }\n+\n+            return val;\n+        }\n+\n+        // slower high precision version of Mul64 for computation of the tables\n+        private static ulong Mul64Precise(ulong a, ulong b, ref int exp)\n+        {\n+            ulong hilo = ((Mul32x32To64((uint)(a >> 32), (uint)(b)) >> 1)\n+                       + (Mul32x32To64((uint)(a), (uint)(b >> 32)) >> 1)\n+                       + (Mul32x32To64((uint)(a), (uint)(b)) >> 33)) >> 30;\n+\n+            ulong val = Mul32x32To64((uint)(a >> 32), (uint)(b >> 32))\n+                      + (hilo >> 1)\n+                      + (hilo & 1);\n+\n+            // normalize\n+            if ((val & 0x8000000000000000) == 0)\n+            {\n+                val <<= 1;\n+                exp--;\n+            }\n+\n+            return val;\n+        }\n+\n+        private static double NumberToDouble(ref NumberBuffer number)\n+        {\n+#if DEBUG\n+            \n+            if (!s_CheckedTables)\n+            {\n+                CheckTables();\n+                s_CheckedTables = true;\n+            }\n+#endif\n+\n+            char* src = number.digits;\n+            int total = GetLength(src);\n+            int remaining = total;\n+\n+            // skip the leading zeros\n+            while (src[0] == '0')","path":"src/System.Private.CoreLib/shared/System/Number.NumberToDouble.cs","position":322,"original_position":322,"commit_id":"d5820a76ba884847ffb4a57882a0cb8b3dc7fc9e","original_commit_id":"95d9ff9fab1ca0b49a8b477a8d63264cacaaa951","user":{"login":"krwq","id":660048,"node_id":"MDQ6VXNlcjY2MDA0OA==","avatar_url":"https://avatars1.githubusercontent.com/u/660048?v=4","gravatar_id":"","url":"https://api.github.com/users/krwq","html_url":"https://github.com/krwq","followers_url":"https://api.github.com/users/krwq/followers","following_url":"https://api.github.com/users/krwq/following{/other_user}","gists_url":"https://api.github.com/users/krwq/gists{/gist_id}","starred_url":"https://api.github.com/users/krwq/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/krwq/subscriptions","organizations_url":"https://api.github.com/users/krwq/orgs","repos_url":"https://api.github.com/users/krwq/repos","events_url":"https://api.github.com/users/krwq/events{/privacy}","received_events_url":"https://api.github.com/users/krwq/received_events","type":"User","site_admin":false},"body":"Are we guaranteed that the string at least 1 character long?","created_at":"2018-09-20T22:03:21Z","updated_at":"2018-09-20T22:03:21Z","html_url":"https://github.com/dotnet/coreclr/pull/20080#discussion_r219331544","pull_request_url":"https://api.github.com/repos/dotnet/coreclr/pulls/20080","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/dotnet/coreclr/pulls/comments/219331544"},"html":{"href":"https://github.com/dotnet/coreclr/pull/20080#discussion_r219331544"},"pull_request":{"href":"https://api.github.com/repos/dotnet/coreclr/pulls/20080"}}},"pull_request":{"url":"https://api.github.com/repos/dotnet/coreclr/pulls/20080","id":217094999,"node_id":"MDExOlB1bGxSZXF1ZXN0MjE3MDk0OTk5","html_url":"https://github.com/dotnet/coreclr/pull/20080","diff_url":"https://github.com/dotnet/coreclr/pull/20080.diff","patch_url":"https://github.com/dotnet/coreclr/pull/20080.patch","issue_url":"https://api.github.com/repos/dotnet/coreclr/issues/20080","number":20080,"state":"open","locked":false,"title":"Porting NumberToDouble to managed code.","user":{"login":"tannergooding","id":10487869,"node_id":"MDQ6VXNlcjEwNDg3ODY5","avatar_url":"https://avatars3.githubusercontent.com/u/10487869?v=4","gravatar_id":"","url":"https://api.github.com/users/tannergooding","html_url":"https://github.com/tannergooding","followers_url":"https://api.github.com/users/tannergooding/followers","following_url":"https://api.github.com/users/tannergooding/following{/other_user}","gists_url":"https://api.github.com/users/tannergooding/gists{/gist_id}","starred_url":"https://api.github.com/users/tannergooding/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tannergooding/subscriptions","organizations_url":"https://api.github.com/users/tannergooding/orgs","repos_url":"https://api.github.com/users/tannergooding/repos","events_url":"https://api.github.com/users/tannergooding/events{/privacy}","received_events_url":"https://api.github.com/users/tannergooding/received_events","type":"User","site_admin":false},"body":"This ports the double/single parsing code to be implemented in managed.","created_at":"2018-09-20T20:20:46Z","updated_at":"2018-09-20T22:03:21Z","closed_at":null,"merged_at":null,"merge_commit_sha":"bfb13e25f5b0e9810bcb4b00e1ef6bba8acca58e","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/dotnet/coreclr/pulls/20080/commits","review_comments_url":"https://api.github.com/repos/dotnet/coreclr/pulls/20080/comments","review_comment_url":"https://api.github.com/repos/dotnet/coreclr/pulls/comments{/number}","comments_url":"https://api.github.com/repos/dotnet/coreclr/issues/20080/comments","statuses_url":"https://api.github.com/repos/dotnet/coreclr/statuses/d5820a76ba884847ffb4a57882a0cb8b3dc7fc9e","head":{"label":"tannergooding:numbertodouble-managed","ref":"numbertodouble-managed","sha":"d5820a76ba884847ffb4a57882a0cb8b3dc7fc9e","user":{"login":"tannergooding","id":10487869,"node_id":"MDQ6VXNlcjEwNDg3ODY5","avatar_url":"https://avatars3.githubusercontent.com/u/10487869?v=4","gravatar_id":"","url":"https://api.github.com/users/tannergooding","html_url":"https://github.com/tannergooding","followers_url":"https://api.github.com/users/tannergooding/followers","following_url":"https://api.github.com/users/tannergooding/following{/other_user}","gists_url":"https://api.github.com/users/tannergooding/gists{/gist_id}","starred_url":"https://api.github.com/users/tannergooding/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tannergooding/subscriptions","organizations_url":"https://api.github.com/users/tannergooding/orgs","repos_url":"https://api.github.com/users/tannergooding/repos","events_url":"https://api.github.com/users/tannergooding/events{/privacy}","received_events_url":"https://api.github.com/users/tannergooding/received_events","type":"User","site_admin":false},"repo":{"id":32194373,"node_id":"MDEwOlJlcG9zaXRvcnkzMjE5NDM3Mw==","name":"coreclr","full_name":"tannergooding/coreclr","private":false,"owner":{"login":"tannergooding","id":10487869,"node_id":"MDQ6VXNlcjEwNDg3ODY5","avatar_url":"https://avatars3.githubusercontent.com/u/10487869?v=4","gravatar_id":"","url":"https://api.github.com/users/tannergooding","html_url":"https://github.com/tannergooding","followers_url":"https://api.github.com/users/tannergooding/followers","following_url":"https://api.github.com/users/tannergooding/following{/other_user}","gists_url":"https://api.github.com/users/tannergooding/gists{/gist_id}","starred_url":"https://api.github.com/users/tannergooding/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tannergooding/subscriptions","organizations_url":"https://api.github.com/users/tannergooding/orgs","repos_url":"https://api.github.com/users/tannergooding/repos","events_url":"https://api.github.com/users/tannergooding/events{/privacy}","received_events_url":"https://api.github.com/users/tannergooding/received_events","type":"User","site_admin":false},"html_url":"https://github.com/tannergooding/coreclr","description":"This repo contains the .NET Core runtime, called CoreCLR, and the base library, called mscorlib. It includes the garbage collector, JIT compiler, base .NET data types and many low-level classes.","fork":true,"url":"https://api.github.com/repos/tannergooding/coreclr","forks_url":"https://api.github.com/repos/tannergooding/coreclr/forks","keys_url":"https://api.github.com/repos/tannergooding/coreclr/keys{/key_id}","collaborators_url":"https://api.github.com/repos/tannergooding/coreclr/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/tannergooding/coreclr/teams","hooks_url":"https://api.github.com/repos/tannergooding/coreclr/hooks","issue_events_url":"https://api.github.com/repos/tannergooding/coreclr/issues/events{/number}","events_url":"https://api.github.com/repos/tannergooding/coreclr/events","assignees_url":"https://api.github.com/repos/tannergooding/coreclr/assignees{/user}","branches_url":"https://api.github.com/repos/tannergooding/coreclr/branches{/branch}","tags_url":"https://api.github.com/repos/tannergooding/coreclr/tags","blobs_url":"https://api.github.com/repos/tannergooding/coreclr/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/tannergooding/coreclr/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/tannergooding/coreclr/git/refs{/sha}","trees_url":"https://api.github.com/repos/tannergooding/coreclr/git/trees{/sha}","statuses_url":"https://api.github.com/repos/tannergooding/coreclr/statuses/{sha}","languages_url":"https://api.github.com/repos/tannergooding/coreclr/languages","stargazers_url":"https://api.github.com/repos/tannergooding/coreclr/stargazers","contributors_url":"https://api.github.com/repos/tannergooding/coreclr/contributors","subscribers_url":"https://api.github.com/repos/tannergooding/coreclr/subscribers","subscription_url":"https://api.github.com/repos/tannergooding/coreclr/subscription","commits_url":"https://api.github.com/repos/tannergooding/coreclr/commits{/sha}","git_commits_url":"https://api.github.com/repos/tannergooding/coreclr/git/commits{/sha}","comments_url":"https://api.github.com/repos/tannergooding/coreclr/comments{/number}","issue_comment_url":"https://api.github.com/repos/tannergooding/coreclr/issues/comments{/number}","contents_url":"https://api.github.com/repos/tannergooding/coreclr/contents/{+path}","compare_url":"https://api.github.com/repos/tannergooding/coreclr/compare/{base}...{head}","merges_url":"https://api.github.com/repos/tannergooding/coreclr/merges","archive_url":"https://api.github.com/repos/tannergooding/coreclr/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/tannergooding/coreclr/downloads","issues_url":"https://api.github.com/repos/tannergooding/coreclr/issues{/number}","pulls_url":"https://api.github.com/repos/tannergooding/coreclr/pulls{/number}","milestones_url":"https://api.github.com/repos/tannergooding/coreclr/milestones{/number}","notifications_url":"https://api.github.com/repos/tannergooding/coreclr/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/tannergooding/coreclr/labels{/name}","releases_url":"https://api.github.com/repos/tannergooding/coreclr/releases{/id}","deployments_url":"https://api.github.com/repos/tannergooding/coreclr/deployments","created_at":"2015-03-14T03:37:19Z","updated_at":"2018-08-25T15:15:11Z","pushed_at":"2018-09-20T22:03:03Z","git_url":"git://github.com/tannergooding/coreclr.git","ssh_url":"git@github.com:tannergooding/coreclr.git","clone_url":"https://github.com/tannergooding/coreclr.git","svn_url":"https://github.com/tannergooding/coreclr","homepage":"","size":240246,"stargazers_count":0,"watchers_count":0,"language":"C#","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":1,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"dotnet:master","ref":"master","sha":"97e8b443d7da613e211659743dafe4dec870b4db","user":{"login":"dotnet","id":9141961,"node_id":"MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=","avatar_url":"https://avatars0.githubusercontent.com/u/9141961?v=4","gravatar_id":"","url":"https://api.github.com/users/dotnet","html_url":"https://github.com/dotnet","followers_url":"https://api.github.com/users/dotnet/followers","following_url":"https://api.github.com/users/dotnet/following{/other_user}","gists_url":"https://api.github.com/users/dotnet/gists{/gist_id}","starred_url":"https://api.github.com/users/dotnet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dotnet/subscriptions","organizations_url":"https://api.github.com/users/dotnet/orgs","repos_url":"https://api.github.com/users/dotnet/repos","events_url":"https://api.github.com/users/dotnet/events{/privacy}","received_events_url":"https://api.github.com/users/dotnet/received_events","type":"Organization","site_admin":false},"repo":{"id":30092893,"node_id":"MDEwOlJlcG9zaXRvcnkzMDA5Mjg5Mw==","name":"coreclr","full_name":"dotnet/coreclr","private":false,"owner":{"login":"dotnet","id":9141961,"node_id":"MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=","avatar_url":"https://avatars0.githubusercontent.com/u/9141961?v=4","gravatar_id":"","url":"https://api.github.com/users/dotnet","html_url":"https://github.com/dotnet","followers_url":"https://api.github.com/users/dotnet/followers","following_url":"https://api.github.com/users/dotnet/following{/other_user}","gists_url":"https://api.github.com/users/dotnet/gists{/gist_id}","starred_url":"https://api.github.com/users/dotnet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dotnet/subscriptions","organizations_url":"https://api.github.com/users/dotnet/orgs","repos_url":"https://api.github.com/users/dotnet/repos","events_url":"https://api.github.com/users/dotnet/events{/privacy}","received_events_url":"https://api.github.com/users/dotnet/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/dotnet/coreclr","description":"This repo contains the .NET Core runtime, called CoreCLR, and the base library, called System.Private.Corelib (or mscorlib). It includes the garbage collector, JIT compiler, base .NET data types and many low-level classes. We welcome contributions.","fork":false,"url":"https://api.github.com/repos/dotnet/coreclr","forks_url":"https://api.github.com/repos/dotnet/coreclr/forks","keys_url":"https://api.github.com/repos/dotnet/coreclr/keys{/key_id}","collaborators_url":"https://api.github.com/repos/dotnet/coreclr/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/dotnet/coreclr/teams","hooks_url":"https://api.github.com/repos/dotnet/coreclr/hooks","issue_events_url":"https://api.github.com/repos/dotnet/coreclr/issues/events{/number}","events_url":"https://api.github.com/repos/dotnet/coreclr/events","assignees_url":"https://api.github.com/repos/dotnet/coreclr/assignees{/user}","branches_url":"https://api.github.com/repos/dotnet/coreclr/branches{/branch}","tags_url":"https://api.github.com/repos/dotnet/coreclr/tags","blobs_url":"https://api.github.com/repos/dotnet/coreclr/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/dotnet/coreclr/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/dotnet/coreclr/git/refs{/sha}","trees_url":"https://api.github.com/repos/dotnet/coreclr/git/trees{/sha}","statuses_url":"https://api.github.com/repos/dotnet/coreclr/statuses/{sha}","languages_url":"https://api.github.com/repos/dotnet/coreclr/languages","stargazers_url":"https://api.github.com/repos/dotnet/coreclr/stargazers","contributors_url":"https://api.github.com/repos/dotnet/coreclr/contributors","subscribers_url":"https://api.github.com/repos/dotnet/coreclr/subscribers","subscription_url":"https://api.github.com/repos/dotnet/coreclr/subscription","commits_url":"https://api.github.com/repos/dotnet/coreclr/commits{/sha}","git_commits_url":"https://api.github.com/repos/dotnet/coreclr/git/commits{/sha}","comments_url":"https://api.github.com/repos/dotnet/coreclr/comments{/number}","issue_comment_url":"https://api.github.com/repos/dotnet/coreclr/issues/comments{/number}","contents_url":"https://api.github.com/repos/dotnet/coreclr/contents/{+path}","compare_url":"https://api.github.com/repos/dotnet/coreclr/compare/{base}...{head}","merges_url":"https://api.github.com/repos/dotnet/coreclr/merges","archive_url":"https://api.github.com/repos/dotnet/coreclr/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/dotnet/coreclr/downloads","issues_url":"https://api.github.com/repos/dotnet/coreclr/issues{/number}","pulls_url":"https://api.github.com/repos/dotnet/coreclr/pulls{/number}","milestones_url":"https://api.github.com/repos/dotnet/coreclr/milestones{/number}","notifications_url":"https://api.github.com/repos/dotnet/coreclr/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/dotnet/coreclr/labels{/name}","releases_url":"https://api.github.com/repos/dotnet/coreclr/releases{/id}","deployments_url":"https://api.github.com/repos/dotnet/coreclr/deployments","created_at":"2015-01-30T22:10:02Z","updated_at":"2018-09-20T22:03:17Z","pushed_at":"2018-09-20T22:03:06Z","git_url":"git://github.com/dotnet/coreclr.git","ssh_url":"git@github.com:dotnet/coreclr.git","clone_url":"https://github.com/dotnet/coreclr.git","svn_url":"https://github.com/dotnet/coreclr","homepage":"https://github.com/dotnet/core","size":243800,"stargazers_count":9963,"watchers_count":9963,"language":"C#","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":2442,"mirror_url":null,"archived":false,"open_issues_count":1877,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":2442,"open_issues":1877,"watchers":9963,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/dotnet/coreclr/pulls/20080"},"html":{"href":"https://github.com/dotnet/coreclr/pull/20080"},"issue":{"href":"https://api.github.com/repos/dotnet/coreclr/issues/20080"},"comments":{"href":"https://api.github.com/repos/dotnet/coreclr/issues/20080/comments"},"review_comments":{"href":"https://api.github.com/repos/dotnet/coreclr/pulls/20080/comments"},"review_comment":{"href":"https://api.github.com/repos/dotnet/coreclr/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/dotnet/coreclr/pulls/20080/commits"},"statuses":{"href":"https://api.github.com/repos/dotnet/coreclr/statuses/d5820a76ba884847ffb4a57882a0cb8b3dc7fc9e"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"krwq"}}