{"action":"created","comment":{"url":"https://api.github.com/repos/tc39/proposal-bigint/pulls/comments/201307637","pull_request_review_id":135781172,"id":201307637,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIwMTMwNzYzNw==","diff_hunk":"@@ -4,128 +4,361 @@ Daniel Ehrenberg, Igalia. Stage 3\n \n Thanks for help and feedback on this effort from Brendan Eich, Waldemar Horwat, Jaro Sevcik, Benedikt Meurer, Michael Saboff, Adam Klein and others.\n \n-## Code samples:\n-\n-Find the nth prime:\n-\n-```js\n-// Takes a BigInt as an argument and returns a BigInt\n-function nthPrime(nth) {\n-  function isPrime(p) {\n-    for (let i = 2n; i < p; i++) {\n-      if (p % i === 0n) return false;\n-    }\n-    return true;\n-  }\n-  for (let i = 2n; ; i++) {\n-    if (isPrime(i)) {\n-      if (--nth === 0n) return i;\n-    }\n-  }\n-}\n+## Contents\n+1. [What Is It?](#what-is-it)\n+2. [How Does It Work?](#how-does-it-work)\n+\t- [Syntax](#syntax)\n+\t- [Example: Calculating Primes](#example-calculating-primes)\n+\t- [Operators](#operators)\n+\t- [Comparisons](#comparisons)\n+\t- [Conditionals](#conditionals)\n+\t- [Other API Notes](#other-api-notes)\n+3. [Gotchas & Exceptions](#gotchas--exceptions)\n+\t- [Interoperation with `Number` and `String`](#interoperation-with-number-and-string)\n+\t- [Rounding](#rounding)\n+\t- [Other Exceptions](#other-exceptions)\n+\t- [Usage Recommendation](#usage-recommendation)\n+4. [About the Proposal](#about-the-proposal)\n+\t- [Motivation, Or Why Do We Need Such Big Numbers?](#motivation-why-do-we-need-such-big-numbers)\n+\t- [Design Philosophy, Or Why Is This Like This?](#design-goals-or-why-is-this-like-this)\n+\t- [State of the Proposal](#state-of-the-proposal)\n+\n+\n+## What Is It?\n+\n+`BigInt` is a new primitive that provides a way to represent whole numbers larger than 2<sup>53</sup>, which is the largest number Javascript can reliably represent with the `Number` primitive.\n+\n+```js\n+const x = Number.MAX_SAFE_INTEGER;\n+// ↪ 9007199254740991, this is 1 less than 2^53\n+\n+const y = x + 1;\n+// ↪ 9007199254740992, ok, checks out\n+\n+const z = x + 2\n+// ↪ 9007199254740992, wait, that’s the same as above!\n+```\n+\n+[Learn more about how numbers are represented in Javascript in the slides from Daniel's talk at JSConfEU.](https://docs.google.com/presentation/d/1apPbAiv_-mJF35P31IjaII8UA6TwSynCA_zhfDEmgOE/edit#slide=id.g38a1897a56_0_97) \n+\n+## How Does It Work?\n+\n+The following sections show `BigInt` in action. A number have been influenced by or taken outright from [Mathias Bynens's Big int v8 update, which incudes more detail that this page.](https://developers.google.com/web/updates/2018/05/bigint)\n+\n+### Syntax\n+\n+A `BigInt` is created by appending `n` to the end of the integer or by calling the constructor.\n+\n+```js\n+\n+const theBiggestInt = 9007199254740991n;\n+\n+const alsoHuge = BigInt(9007199254740991);\n+// ↪ 9007199254740991n\n+\n+const hugeButString = BigInt('9007199254740991');\n+// ↪ 9007199254740991n\n+\n+```\n+\n+### Example: Calculating Primes\n+\n+```js\n+// I think we can add a slightly simpler version of the primes example here\n+```\n+\n+### Operators\n+\n+You can use `+`, `*`, `-`, `**` and `%` with `BigInt`s, just like with `Number`s.\n+\n+```js\n+\n+const previousMaxSafe = BigInt(Number.MAX_SAFE_INTEGER);\n+// ↪ 9007199254740991\n+\n+const maxPlusOne = previousMaxSafe + 1n;\n+// ↪ 9007199254740992n\n+ \n+const theFuture = previousMaxSafe + 2n;\n+// ↪ 9007199254740993n, this works now!\n+\n+const multi = previousMaxSafe * 2n;\n+// ↪ 18014398509481982n\n+\n+const subtr = multi – 10n;\n+// ↪ 18014398509481972n\n+\n+const mod = multi % 10n;\n+// ↪ 2n\n+\n+const bigN = 2n ** 54n;\n+// ↪ 18014398509481984n\n+\n+bigN * -1n\n+// ↪ –18014398509481984n\n+\n+```\n+\n+The `/` operator also work as expected with whole numbers. However, since these are `BigInt`s and not `BigDecimal`s, this operation will round towards 0, which is to say, it will not return any fractional digits.\n+\n+```js\n+\n+const expected = 4n / 2n;\n+// ↪ 2n\n+\n+const rounded = 5n / 2n;\n+// ↪ 2n, not 2.5n\n+\n+```\n+\n+[See the advanced documentation for use with bitwise operators.](/ADVANCED.md)\n+\n+### Comparisons\n+\n+A `BigInt` is not strictly equal to a `Number`, but it is loosely so.\n+\n+```js\n+\n+0n === 0\n+// ↪ false\n+\n+0n == 0\n+// ↪ true\n+\n ```\n \n-Read and add two unsigned 64-bit integers in asm.js on the heap:\n+`Number`s and `BigInt`s may be compared as usual.\n \n ```js\n-function Add64Module(stdlib, foreign, buffer) {\n-  \"use asm\";\n-  var cast = stdlib.BigInt.asUintN;\n-  var values = new stdlib.BigUint64Array(buffer);\n-  function add64(aIndex, bIndex) {\n-    aIndex = aIndex|0;\n-    bIndex = bIndex|0;\n-    var aValue = values[aIndex>>3];\n-    var bValue = values[bIndex>>3];\n-    return cast(64, aValue + bValue);\n-  }\n-  return { add64: add64 };\n+1n < 2\n+// ↪ true\n+\n+2n > 1\n+// ↪ true\n+\n+2 > 2\n+// ↪ false\n+\n+2n > 2\n+// ↪ false\n+\n+2n >= 2\n+// ↪ true\n+```\n+\n+They may be mixed in arrays and sorted.\n+\n+```js\n+\n+const mixed = [4n, 6, -12n, 10, 4, 0, 0n];\n+// ↪  [4n, 6, -12n, 10, 4, 0, 0n]\n+\n+mixed.sort();\n+// ↪ [-12n, 0, 0n, 10, 4n, 4, 6]\n+```\n+\n+### Conditionals\n+\n+A `BigInt` behaves like a `Number` in cases where it is converted to a `Boolean`: `if`, `||`, `&&`, `Boolean`, `!`.\n+\n+```js\n+\n+if (0n) {\n+  console.log('Hello from the if!');\n+} else {\n+\tconsole.log('Hello from the else!');\n }\n+\n+// ↪ \"Hello from the else!\"\n+\n+0n || 12n\n+// ↪ 12n\n+\n+0n && 12n\n+// ↪ 0n\n+\n+Boolean(0n)\n+// ↪ false\n+\n+Boolean(12n)\n+// ↪ true\n+\n+!12n\n+// ↪ false\n+\n+!0n\n+// ↪ true\n+\n+```\n+\n+### Other API Notes\n+\n+`BigInt`s may also be used in `BigInt64Array` and `BigUint64Array` [typed arrays](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray) for 64-bit integers.\n+\n+```js\n+const view = new BigInt64Array(4);\n+// ↪ [0n, 0n, 0n, 0n]\n+view.length;\n+// ↪ 4\n+view[0];\n+// ↪ 0n\n+view[0] = 42n;\n+view[0];\n+// ↪ 42n\n+\n+// Highest possible BigInt value that can be represented as a\n+// signed 64-bit integer.\n+const max = 2n ** (64n - 1n) - 1n;\n+view[0] = max;\n+view[0];\n+// ↪ 9_223_372_036_854_775_807n\n+view[0] = max + 1n;\n+view[0];\n+// ↪ -9_223_372_036_854_775_808n\n+//   ^ negative because of overflow\n+\n ```\n \n-## Use cases\n+[For more about `BigInt` library functions, see the advanced section.](/ADVANCED.md)\n \n-In many cases in JavaScript coding, integers larger than 2<sup>53</sup> come up, where casting to a double-precision float would lose real, relevant data:\n-- Cases which would fit in a signed or unsigned 64-bit integer\n-  - Reading certain machine registers, wire protocols\n-  - Protobufs or JSON documents that have GUIDs in them\n-  - `stat` may give some data as 64-bit integers\n-  - Accurate timestamps\n-- Bigger than 64-bit int cases\n-  - Generally meeting a reasonable user expectation of a high-level language that integer arithmetic will be \"correct\" and not suddenly overflow\n-  - Basis for implementing BigDecimal; perhaps some applications would be happy with fixpoint calculations based on a BigInt\n-  - Any mathematical calculation with larger integers, e.g., solving Project Euler problems\n-  - Exact geometric calculations\n \n-This proposal provides a new, second primitive numeric type, `BigInt`, to meet those use cases.\n+## Gotchas & Exceptions\n \n-## API outline\n+### Interoperation with `Number` and `String`\n \n-BigInts are a new numerical type supporting literals (`1234n`) and arithmetic with operator overloading (`1n + 2n` makes `3n`).\n+The biggest surprise may be that `BigInt`s cannot be operated on interchangeably with `Number`s. Instead a `TypeError` will be thrown. ([Read the design philosophy for more about why this decision was made.]())\n \n-### Literals, operators and their meanings\n \n-BigInts are, logically, arbitrary mathematic integers, with operator definitions which fall out naturally:\n-- Binary `+`, `-`, `*` and `**` find their mathematical answer when applied to two BigInts\n-- `/` and `%` round towards 0\n-- Bitwise operations `|`, `&`, `<<`, `>>`, `^` operate logically\n-  - Negative numbers to be interpreted as infinite-length two's complement (see [discussion](https://github.com/tc39/proposal-bigint/issues/3)).\n-- When applied to two BigInts, comparison operators `==`, `===`, `<`, `>`, `>=`, and `<=` perform a mathematical comparison\n-- Missing operators\n-  - `>>>` is not supported, as all BigInts are signed; to get an unsigned shift, pass in a positive BigInt to `>>` ([discussion](https://github.com/tc39/proposal-bigint/issues/6))\n-  - Unary `+` is unsupported on BigInts due to asm.js requirements; details explained below\n-- In a conditional, `if (0n)` executes the `else` branch.\n+```js\n \n-Literals for BigInts are similar to Number literals, but followed by `n`. They can be written with binary, octal or hexadecimal notation, e.g., `0x100n`. Legacy octal syntax (`0640`) is not allowed, only new-style (`0o064n`).\n+1n + 2\n+// ↪ TypeError: Cannot mix BigInt and other types, use explicit conversions\n \n-The choice of `BigInt` comes from an attempt to preserve user intuition about the lack of compatibility of `BigInt` with things that are currently based on `Number`s. Because implicit coercions lead to TypeErrors, the guidance is that existing users of Numbers should stay with Numbers if it works for the application, and only large usages need to upgrade to `BigInt`. The name `BigInt` is hoped to emphasize this not-by-default usage. The suffix `n` is basically arbitrary.\n+1n * 2\n+// ↪ TypeError: Cannot mix BigInt and other types, use explicit conversions\n \n-### The BigInt constructor\n+```\n \n-BigInts are a primitive type, and `BigInt` forms a constructor which can be used analogously to `Number`--to convert various types to BigInt values, as well as to be an object wrapper for BigInt values when used with property access.\n+`BigInt`s also cannot be converted to `Number`s using the unary `+`. `Number` must be used.\n \n-When called as a function, it is similar to the `Number` constructor: It converts strings, Numbers, etc into BigInts.\n+```js\n \n-#### Library functions\n++1n\n+// ↪ TypeError: Cannot convert a BigInt value to a number\n \n-- `BigInt.asUintN(width, BigInt)`: Wrap a BigInt between 0 and 2<sup>width</sup>-1\n-- `BigInt.asIntN(width, BigInt)`: Wrap a BigInt between -2<sup>width-1</sup> and 2<sup>width-1</sup>-1\n+Number(1n)\n+// ↪ 1\n \n-### TypedArrays and DataViews\n+```\n \n-BigInts give JavaScript the ability to accurately represent 64-bit signed and unsigned integers:\n-- BigUint64Array and BigInt64Array, whose elements read from property access are BigInts\n-- DataView.prototype.getBigInt64/getBigUint64, returning a BigInt\n+The `BigInt` *can* however be concatenated with a `String`.\n \n-Similarly, BigInts may be used by the WebAssembly FFI for 64-bit arguments and return values to functions.\n+```js\n+\n+1n + '2'\n+// ↪ \"12\"\n \n-### No implicit conversions or mixed operands\n+'2' + 1n\n+// ↪ \"21\"\n \n-A key design decision is to disallow mixed operations between BigInts and Numbers. The driving factor: Any implicit coercions would lose information.\n+```\n \n-When adding two values of different numeric types, between large integers and floating point numbers, the mathematical value of the result may be outside of the domain of either. For example, `(2n**53n + 1n) + 0.5` has a value which cannot be accurately represented in either range. Floating point arithmetic is not the exact mathematical value, but at least it is well-defined by IEEE 754. The entire aim of introducing BigInt is, on the other hand, to make a way to preserve integer precision of larger values.\n+### Rounding\n \n-Many (all?) other dynamically typed programming languages which have multiple numeric types implement a *numeric tower*. This forms an ordering between types--on the built-in numeric types, when an operator is used with operands from two types, the greater type is chosen as the domain, and the \"less general\" operand is cast to the \"more general\" type. Unfortunately, as the previous example shows, there is no \"more general\" type between arbitrary integers and double-precision floats. The typical resolution, then, is to take floats as the \"more general\" type.\n+As noted above, the `BigInt` only represents whole numbers. `Number` only reliably represents integers up to 2<sup>53</sup>. That means both dividing and converting to a `Number` can lead to rounding.\n \n-Silently losing precision sometimes may be a problem, but in most dynamically typed programming languages which provide integers and floats, integers are written like `1` and floats are written like `1.0`. It's possible to scan code for operations which may introduce floating point precision by looking for a decimal point. JavaScript exacerbates the scope of losing precision by making the unfortunate decision that a simple literal like `1` is a float. So, if mixed-precision were allowed, an innocent calculation such as `2n ** 53n + 1` would produce the float `2**53`--defeating the core functionality of this feature.\n+```js\n \n-To avoid this problem, this proposal bans implicit coercions between Numbers and BigInts, including operations which are mixed type. `1n + 1` throws a TypeError. So does passing `1n` as an argument into any JavaScript standard library function or Web API which expects a Number. Instead, to convert between types, an explicit call to `Number()` or `BigInt()` needs to be made to decide which domain to operate in. `0 === 0n` returns `false`.\n+5n / 2n\n+// ↪ 2n\n \n-Comparisons form an exception to this rule: It's mathematically well-defined to allow comparison operators such as `<` and `==` compare between Numbers and BigInts. Unlike operators like `+`, there is no loss of precision, since the output is just a Boolean. Further, `==` is extended in comparisons with strings in analogous ways, such as `0n == \"\"` is `true`. Although we may not be able to extend this support to user-defined types, it seems sufficiently important for meeting user expectations that this proposal adds them as a one-off.\n+Number(151851850485185185047n)\n+// ↪ 151851850485185200000\n+\n+```\n+\n+### Other Exceptions\n+\n+Attempting to convert a fractional value to a `BigInt` throws an exception both when the value is represented as an `Number` and a `String`.\n+\n+```js\n+BigInt(1.5)\n+// ↪ RangeError: The number 1.5 is not a safe integer and thus cannot be converted to a BigInt\n+\n+BigInt('1.5')\n+// ↪ SyntaxError: Cannot convert 1.5 to a BigInt\n+\n+```\n+\n+`Math.round`, `Math.fround` and `|` throw exceptions when called with a `BigInt` since these functions are defined as returning a `Number`.","path":"README.md","position":406,"original_position":368,"commit_id":"3406bf6c01fd2ee3ce0fe786bde7a410b157c352","original_commit_id":"b73ad5c98f485570cf606fc6b93c5b4903c83dcb","user":{"login":"littledan","id":189835,"node_id":"MDQ6VXNlcjE4OTgzNQ==","avatar_url":"https://avatars3.githubusercontent.com/u/189835?v=4","gravatar_id":"","url":"https://api.github.com/users/littledan","html_url":"https://github.com/littledan","followers_url":"https://api.github.com/users/littledan/followers","following_url":"https://api.github.com/users/littledan/following{/other_user}","gists_url":"https://api.github.com/users/littledan/gists{/gist_id}","starred_url":"https://api.github.com/users/littledan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/littledan/subscriptions","organizations_url":"https://api.github.com/users/littledan/orgs","repos_url":"https://api.github.com/users/littledan/repos","events_url":"https://api.github.com/users/littledan/events{/privacy}","received_events_url":"https://api.github.com/users/littledan/received_events","type":"User","site_admin":false},"body":"Note, parseInt and parseFloat ignore trailing garbage, so `parseInt(\"123n\")` returns the Number 123, just like `parseInt(\"123khasdflkjahfda\")` does. It would be difficult to change these functions due to web-compatibility concerns. I think the most relevant thing to say about them is, they are weird legacy functions that do a bunch of rounding/slicing/ignoring and output Numbers; they have no relation to BigInt. I don't think this has much bearing on the semantics of `Math.round`.\r\n\r\nHappy to chat about this somehow, on whatever thread, but I don't anticipate that we'll make changes to the BigInt proposal at this point unless the issue is very serious, given how it's shipping in Chrome and Node.js.","created_at":"2018-07-10T11:28:53Z","updated_at":"2018-07-10T11:28:53Z","html_url":"https://github.com/tc39/proposal-bigint/pull/158#discussion_r201307637","pull_request_url":"https://api.github.com/repos/tc39/proposal-bigint/pulls/158","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/tc39/proposal-bigint/pulls/comments/201307637"},"html":{"href":"https://github.com/tc39/proposal-bigint/pull/158#discussion_r201307637"},"pull_request":{"href":"https://api.github.com/repos/tc39/proposal-bigint/pulls/158"}},"in_reply_to_id":198944294},"pull_request":{"url":"https://api.github.com/repos/tc39/proposal-bigint/pulls/158","id":195105709,"node_id":"MDExOlB1bGxSZXF1ZXN0MTk1MTA1NzA5","html_url":"https://github.com/tc39/proposal-bigint/pull/158","diff_url":"https://github.com/tc39/proposal-bigint/pull/158.diff","patch_url":"https://github.com/tc39/proposal-bigint/pull/158.patch","issue_url":"https://api.github.com/repos/tc39/proposal-bigint/issues/158","number":158,"state":"open","locked":false,"title":"[WIP] Intro documentation","user":{"login":"sarahgp","id":1477362,"node_id":"MDQ6VXNlcjE0NzczNjI=","avatar_url":"https://avatars1.githubusercontent.com/u/1477362?v=4","gravatar_id":"","url":"https://api.github.com/users/sarahgp","html_url":"https://github.com/sarahgp","followers_url":"https://api.github.com/users/sarahgp/followers","following_url":"https://api.github.com/users/sarahgp/following{/other_user}","gists_url":"https://api.github.com/users/sarahgp/gists{/gist_id}","starred_url":"https://api.github.com/users/sarahgp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sarahgp/subscriptions","organizations_url":"https://api.github.com/users/sarahgp/orgs","repos_url":"https://api.github.com/users/sarahgp/repos","events_url":"https://api.github.com/users/sarahgp/events{/privacy}","received_events_url":"https://api.github.com/users/sarahgp/received_events","type":"User","site_admin":false},"body":"This is a work in progress PR for #156. Let's discuss and refine!","created_at":"2018-06-15T08:16:21Z","updated_at":"2018-07-10T11:28:53Z","closed_at":null,"merged_at":null,"merge_commit_sha":"96340c496baa318cf242b275b3487bac25be942c","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/tc39/proposal-bigint/pulls/158/commits","review_comments_url":"https://api.github.com/repos/tc39/proposal-bigint/pulls/158/comments","review_comment_url":"https://api.github.com/repos/tc39/proposal-bigint/pulls/comments{/number}","comments_url":"https://api.github.com/repos/tc39/proposal-bigint/issues/158/comments","statuses_url":"https://api.github.com/repos/tc39/proposal-bigint/statuses/3406bf6c01fd2ee3ce0fe786bde7a410b157c352","head":{"label":"sarahgp:intro-documentation","ref":"intro-documentation","sha":"3406bf6c01fd2ee3ce0fe786bde7a410b157c352","user":{"login":"sarahgp","id":1477362,"node_id":"MDQ6VXNlcjE0NzczNjI=","avatar_url":"https://avatars1.githubusercontent.com/u/1477362?v=4","gravatar_id":"","url":"https://api.github.com/users/sarahgp","html_url":"https://github.com/sarahgp","followers_url":"https://api.github.com/users/sarahgp/followers","following_url":"https://api.github.com/users/sarahgp/following{/other_user}","gists_url":"https://api.github.com/users/sarahgp/gists{/gist_id}","starred_url":"https://api.github.com/users/sarahgp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sarahgp/subscriptions","organizations_url":"https://api.github.com/users/sarahgp/orgs","repos_url":"https://api.github.com/users/sarahgp/repos","events_url":"https://api.github.com/users/sarahgp/events{/privacy}","received_events_url":"https://api.github.com/users/sarahgp/received_events","type":"User","site_admin":false},"repo":{"id":137240989,"node_id":"MDEwOlJlcG9zaXRvcnkxMzcyNDA5ODk=","name":"proposal-bigint","full_name":"sarahgp/proposal-bigint","owner":{"login":"sarahgp","id":1477362,"node_id":"MDQ6VXNlcjE0NzczNjI=","avatar_url":"https://avatars1.githubusercontent.com/u/1477362?v=4","gravatar_id":"","url":"https://api.github.com/users/sarahgp","html_url":"https://github.com/sarahgp","followers_url":"https://api.github.com/users/sarahgp/followers","following_url":"https://api.github.com/users/sarahgp/following{/other_user}","gists_url":"https://api.github.com/users/sarahgp/gists{/gist_id}","starred_url":"https://api.github.com/users/sarahgp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sarahgp/subscriptions","organizations_url":"https://api.github.com/users/sarahgp/orgs","repos_url":"https://api.github.com/users/sarahgp/repos","events_url":"https://api.github.com/users/sarahgp/events{/privacy}","received_events_url":"https://api.github.com/users/sarahgp/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/sarahgp/proposal-bigint","description":"Arbitrary precision integers in JavaScript","fork":true,"url":"https://api.github.com/repos/sarahgp/proposal-bigint","forks_url":"https://api.github.com/repos/sarahgp/proposal-bigint/forks","keys_url":"https://api.github.com/repos/sarahgp/proposal-bigint/keys{/key_id}","collaborators_url":"https://api.github.com/repos/sarahgp/proposal-bigint/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/sarahgp/proposal-bigint/teams","hooks_url":"https://api.github.com/repos/sarahgp/proposal-bigint/hooks","issue_events_url":"https://api.github.com/repos/sarahgp/proposal-bigint/issues/events{/number}","events_url":"https://api.github.com/repos/sarahgp/proposal-bigint/events","assignees_url":"https://api.github.com/repos/sarahgp/proposal-bigint/assignees{/user}","branches_url":"https://api.github.com/repos/sarahgp/proposal-bigint/branches{/branch}","tags_url":"https://api.github.com/repos/sarahgp/proposal-bigint/tags","blobs_url":"https://api.github.com/repos/sarahgp/proposal-bigint/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/sarahgp/proposal-bigint/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/sarahgp/proposal-bigint/git/refs{/sha}","trees_url":"https://api.github.com/repos/sarahgp/proposal-bigint/git/trees{/sha}","statuses_url":"https://api.github.com/repos/sarahgp/proposal-bigint/statuses/{sha}","languages_url":"https://api.github.com/repos/sarahgp/proposal-bigint/languages","stargazers_url":"https://api.github.com/repos/sarahgp/proposal-bigint/stargazers","contributors_url":"https://api.github.com/repos/sarahgp/proposal-bigint/contributors","subscribers_url":"https://api.github.com/repos/sarahgp/proposal-bigint/subscribers","subscription_url":"https://api.github.com/repos/sarahgp/proposal-bigint/subscription","commits_url":"https://api.github.com/repos/sarahgp/proposal-bigint/commits{/sha}","git_commits_url":"https://api.github.com/repos/sarahgp/proposal-bigint/git/commits{/sha}","comments_url":"https://api.github.com/repos/sarahgp/proposal-bigint/comments{/number}","issue_comment_url":"https://api.github.com/repos/sarahgp/proposal-bigint/issues/comments{/number}","contents_url":"https://api.github.com/repos/sarahgp/proposal-bigint/contents/{+path}","compare_url":"https://api.github.com/repos/sarahgp/proposal-bigint/compare/{base}...{head}","merges_url":"https://api.github.com/repos/sarahgp/proposal-bigint/merges","archive_url":"https://api.github.com/repos/sarahgp/proposal-bigint/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/sarahgp/proposal-bigint/downloads","issues_url":"https://api.github.com/repos/sarahgp/proposal-bigint/issues{/number}","pulls_url":"https://api.github.com/repos/sarahgp/proposal-bigint/pulls{/number}","milestones_url":"https://api.github.com/repos/sarahgp/proposal-bigint/milestones{/number}","notifications_url":"https://api.github.com/repos/sarahgp/proposal-bigint/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/sarahgp/proposal-bigint/labels{/name}","releases_url":"https://api.github.com/repos/sarahgp/proposal-bigint/releases{/id}","deployments_url":"https://api.github.com/repos/sarahgp/proposal-bigint/deployments","created_at":"2018-06-13T16:17:47Z","updated_at":"2018-06-13T16:17:49Z","pushed_at":"2018-06-29T16:13:21Z","git_url":"git://github.com/sarahgp/proposal-bigint.git","ssh_url":"git@github.com:sarahgp/proposal-bigint.git","clone_url":"https://github.com/sarahgp/proposal-bigint.git","svn_url":"https://github.com/sarahgp/proposal-bigint","homepage":"https://tc39.github.io/proposal-bigint","size":301,"stargazers_count":0,"watchers_count":0,"language":"HTML","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":null,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"tc39:master","ref":"master","sha":"97e84fd2dca3fe776c240c5be7b192f59b9b35ad","user":{"login":"tc39","id":1725583,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE3MjU1ODM=","avatar_url":"https://avatars2.githubusercontent.com/u/1725583?v=4","gravatar_id":"","url":"https://api.github.com/users/tc39","html_url":"https://github.com/tc39","followers_url":"https://api.github.com/users/tc39/followers","following_url":"https://api.github.com/users/tc39/following{/other_user}","gists_url":"https://api.github.com/users/tc39/gists{/gist_id}","starred_url":"https://api.github.com/users/tc39/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tc39/subscriptions","organizations_url":"https://api.github.com/users/tc39/orgs","repos_url":"https://api.github.com/users/tc39/repos","events_url":"https://api.github.com/users/tc39/events{/privacy}","received_events_url":"https://api.github.com/users/tc39/received_events","type":"Organization","site_admin":false},"repo":{"id":80252584,"node_id":"MDEwOlJlcG9zaXRvcnk4MDI1MjU4NA==","name":"proposal-bigint","full_name":"tc39/proposal-bigint","owner":{"login":"tc39","id":1725583,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE3MjU1ODM=","avatar_url":"https://avatars2.githubusercontent.com/u/1725583?v=4","gravatar_id":"","url":"https://api.github.com/users/tc39","html_url":"https://github.com/tc39","followers_url":"https://api.github.com/users/tc39/followers","following_url":"https://api.github.com/users/tc39/following{/other_user}","gists_url":"https://api.github.com/users/tc39/gists{/gist_id}","starred_url":"https://api.github.com/users/tc39/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tc39/subscriptions","organizations_url":"https://api.github.com/users/tc39/orgs","repos_url":"https://api.github.com/users/tc39/repos","events_url":"https://api.github.com/users/tc39/events{/privacy}","received_events_url":"https://api.github.com/users/tc39/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/tc39/proposal-bigint","description":"Arbitrary precision integers in JavaScript","fork":false,"url":"https://api.github.com/repos/tc39/proposal-bigint","forks_url":"https://api.github.com/repos/tc39/proposal-bigint/forks","keys_url":"https://api.github.com/repos/tc39/proposal-bigint/keys{/key_id}","collaborators_url":"https://api.github.com/repos/tc39/proposal-bigint/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/tc39/proposal-bigint/teams","hooks_url":"https://api.github.com/repos/tc39/proposal-bigint/hooks","issue_events_url":"https://api.github.com/repos/tc39/proposal-bigint/issues/events{/number}","events_url":"https://api.github.com/repos/tc39/proposal-bigint/events","assignees_url":"https://api.github.com/repos/tc39/proposal-bigint/assignees{/user}","branches_url":"https://api.github.com/repos/tc39/proposal-bigint/branches{/branch}","tags_url":"https://api.github.com/repos/tc39/proposal-bigint/tags","blobs_url":"https://api.github.com/repos/tc39/proposal-bigint/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/tc39/proposal-bigint/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/tc39/proposal-bigint/git/refs{/sha}","trees_url":"https://api.github.com/repos/tc39/proposal-bigint/git/trees{/sha}","statuses_url":"https://api.github.com/repos/tc39/proposal-bigint/statuses/{sha}","languages_url":"https://api.github.com/repos/tc39/proposal-bigint/languages","stargazers_url":"https://api.github.com/repos/tc39/proposal-bigint/stargazers","contributors_url":"https://api.github.com/repos/tc39/proposal-bigint/contributors","subscribers_url":"https://api.github.com/repos/tc39/proposal-bigint/subscribers","subscription_url":"https://api.github.com/repos/tc39/proposal-bigint/subscription","commits_url":"https://api.github.com/repos/tc39/proposal-bigint/commits{/sha}","git_commits_url":"https://api.github.com/repos/tc39/proposal-bigint/git/commits{/sha}","comments_url":"https://api.github.com/repos/tc39/proposal-bigint/comments{/number}","issue_comment_url":"https://api.github.com/repos/tc39/proposal-bigint/issues/comments{/number}","contents_url":"https://api.github.com/repos/tc39/proposal-bigint/contents/{+path}","compare_url":"https://api.github.com/repos/tc39/proposal-bigint/compare/{base}...{head}","merges_url":"https://api.github.com/repos/tc39/proposal-bigint/merges","archive_url":"https://api.github.com/repos/tc39/proposal-bigint/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/tc39/proposal-bigint/downloads","issues_url":"https://api.github.com/repos/tc39/proposal-bigint/issues{/number}","pulls_url":"https://api.github.com/repos/tc39/proposal-bigint/pulls{/number}","milestones_url":"https://api.github.com/repos/tc39/proposal-bigint/milestones{/number}","notifications_url":"https://api.github.com/repos/tc39/proposal-bigint/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/tc39/proposal-bigint/labels{/name}","releases_url":"https://api.github.com/repos/tc39/proposal-bigint/releases{/id}","deployments_url":"https://api.github.com/repos/tc39/proposal-bigint/deployments","created_at":"2017-01-27T22:46:46Z","updated_at":"2018-07-10T09:44:23Z","pushed_at":"2018-06-29T16:13:23Z","git_url":"git://github.com/tc39/proposal-bigint.git","ssh_url":"git@github.com:tc39/proposal-bigint.git","clone_url":"https://github.com/tc39/proposal-bigint.git","svn_url":"https://github.com/tc39/proposal-bigint","homepage":"https://tc39.github.io/proposal-bigint","size":263,"stargazers_count":308,"watchers_count":308,"language":"HTML","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":23,"mirror_url":null,"archived":false,"open_issues_count":11,"license":null,"forks":23,"open_issues":11,"watchers":308,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/tc39/proposal-bigint/pulls/158"},"html":{"href":"https://github.com/tc39/proposal-bigint/pull/158"},"issue":{"href":"https://api.github.com/repos/tc39/proposal-bigint/issues/158"},"comments":{"href":"https://api.github.com/repos/tc39/proposal-bigint/issues/158/comments"},"review_comments":{"href":"https://api.github.com/repos/tc39/proposal-bigint/pulls/158/comments"},"review_comment":{"href":"https://api.github.com/repos/tc39/proposal-bigint/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/tc39/proposal-bigint/pulls/158/commits"},"statuses":{"href":"https://api.github.com/repos/tc39/proposal-bigint/statuses/3406bf6c01fd2ee3ce0fe786bde7a410b157c352"}},"author_association":"NONE"}}
{"actor":{"display_login":"littledan"}}