{"action":"created","comment":{"url":"https://api.github.com/repos/porglezomp/scheme-jit/pulls/comments/234464472","pull_request_review_id":176108642,"id":234464472,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIzNDQ2NDQ3Mg==","diff_hunk":"@@ -0,0 +1,251 @@\n+from typing import Dict, List, Optional\n+\n+import bytecode\n+import emit_IR\n+import scheme\n+from bytecode import BasicBlock, Binop, Function, Inst, Var\n+from emit_IR import FunctionEmitter\n+from scheme import Nil, SExp, SFunction, SSym, Value\n+\n+\n+def add_intrinsics(env: Dict[SSym, Value]) -> None:\n+    \"\"\"Add intrinsics to the environment.\"\"\"\n+    def inst_function(\n+            name: SSym, params: List[Var],\n+            return_to: Optional[bytecode.Parameter], *insts: Inst,\n+            ) -> SFunction:\n+        \"\"\"Create a function out of the instructions in insts.\"\"\"\n+        begin = BasicBlock('bb0')\n+        for inst in insts:\n+            begin.add_inst(inst)\n+        if return_to is not None:\n+            begin.add_inst(bytecode.ReturnInst(return_to))\n+        code = Function(params, begin)\n+        param_syms = [SSym(p.name) for p in params]\n+        return SFunction(name, param_syms, Nil, code, False)\n+\n+    def binop(name: SSym, op: Binop) -> SFunction:\n+        return inst_function(\n+            name, [Var('a'), Var('b')], result,\n+            bytecode.BinopInst(result, op, Var('a'), Var('b')))\n+\n+    result = Var('result')\n+    env[SSym('inst/typeof')] = inst_function(\n+        SSym('inst/typeof'), [Var('x')], result,\n+        bytecode.TypeofInst(result, Var('x')))\n+    env[SSym('inst/trap')] = inst_function(\n+        SSym('inst/trap'), [], None,\n+        bytecode.TrapInst(\"(trap)\"))\n+    env[SSym('inst/trace')] = inst_function(\n+        SSym('inst/trace'), [Var('x')], bytecode.NumLit(scheme.SNum(0)),\n+        bytecode.TraceInst(Var('x')))\n+    env[SSym('inst/breakpoint')] = inst_function(\n+        SSym('inst/breakpoint'), [], bytecode.NumLit(scheme.SNum(0)),\n+        bytecode.BreakpointInst())\n+    # Memory operations\n+    env[SSym('inst/alloc')] = inst_function(\n+        SSym('inst/alloc'), [Var('n')], result,\n+        bytecode.AllocInst(result, Var('n')))\n+    env[SSym('inst/load')] = inst_function(\n+        SSym('inst/load'), [Var('v'), Var('n')], result,\n+        bytecode.LoadInst(result, Var('v'), Var('n')))\n+    env[SSym('inst/store')] = inst_function(\n+        SSym('inst/store'), [Var('v'), Var('n'), Var('x')], Var('v'),\n+        bytecode.StoreInst(Var('v'), Var('n'), Var('x')))\n+    env[SSym('inst/length')] = inst_function(\n+        SSym('inst/length'), [Var('v')], result,\n+        bytecode.LengthInst(result, Var('v')))\n+    # Binary operators\n+    env[SSym('inst/+')] = binop(SSym('inst/+'), Binop.ADD)\n+    env[SSym('inst/-')] = binop(SSym('inst/-'), Binop.SUB)\n+    env[SSym('inst/*')] = binop(SSym('inst/*'), Binop.MUL)\n+    env[SSym('inst//')] = binop(SSym('inst//'), Binop.DIV)\n+    env[SSym('inst/%')] = binop(SSym('inst/%'), Binop.MOD)\n+    env[SSym('inst/number=')] = binop(SSym('inst/number='), Binop.NUM_EQ)\n+    env[SSym('inst/symbol=')] = binop(SSym('inst/symbol='), Binop.SYM_EQ)\n+    env[SSym('inst/pointer=')] = binop(SSym('inst/pointer='), Binop.PTR_EQ)\n+    env[SSym('inst/number<')] = binop(SSym('inst/number<'), Binop.NUM_LT)\n+\n+\n+def add_builtins(env: Dict[SSym, Value]) -> None:\n+    \"\"\"Add builtins to the environment.\"\"\"\n+    code = scheme.parse(\"\"\"\n+    (define (trap) (inst/trap))\n+    (define (trace x) (inst/trace x))\n+    (define (breakpoint) (inst/breakpoint))\n+    (define (assert b) (if b 0 (trap)))\n+    (define (typeof x) (inst/typeof x))\n+    (define (not b)\n+      (assert (bool? b))\n+      (if b false true))\n+\n+    (define (number? x) (symbol= (typeof x) 'number))\n+    (define (symbol? x) (symbol= (typeof x) 'symbol))\n+    (define (vector? x) (symbol= (typeof x) 'vector))\n+    (define (function? x) (symbol= (typeof x) 'function))\n+    (define (bool? x) (symbol= (typeof x) 'bool))\n+    (define (pair? x)\n+      (if (vector? x)\n+        (number= (vector-length x) 2)\n+        false))\n+    (define (nil? x)\n+      (if (vector? x)\n+        (number= (vector-length x) 0)\n+        false))\n+\n+    (define (+ a b) (assert (number? a)) (assert (number? b)) (inst/+ a b))\n+    (define (- a b) (assert (number? a)) (assert (number? b)) (inst/- a b))\n+    (define (* a b) (assert (number? a)) (assert (number? b)) (inst/* a b))\n+    (define (/ a b)\n+      (assert (number? a))\n+      (assert (number? b))\n+      (assert (not (number= b 0)))\n+      (inst// a b))\n+    (define (% a b)\n+      (assert (number? a))\n+      (assert (number? b))\n+      (assert (not (number= b 0)))\n+      (inst/% a b))\n+\n+    (define (pointer= a b) (inst/pointer= a b))\n+    (define (symbol= a b)\n+      ; Explicitly use inst/symbol= instead of symbol? because\n+      ; symbol? uses symbol=, so we need to avoid infinite recursion.\n+      (assert (inst/symbol= (typeof a) 'symbol))\n+      (assert (inst/symbol= (typeof b) 'symbol))\n+      (inst/symbol= a b))\n+    (define (number= a b)\n+      (assert (number? a))\n+      (assert (number? b))\n+      (inst/number= a b))\n+\n+    (define (number< a b)\n+      (assert (number? a))\n+      (assert (number? b))\n+      (inst/number< a b))\n+\n+    (define (vector-length v)\n+      (assert (vector? v))\n+      (inst/length v))\n+\n+    (define (vector-index v n)\n+      (assert (vector? v))\n+      (assert (number? n))\n+      (assert (number< -1 n))\n+      (assert (number< n (vector-length v)))\n+      (inst/load v n))\n+\n+    (define (vector-set! v n x)\n+      (assert (vector? v))\n+      (assert (number? n))\n+      (assert (number< -1 n))\n+      (assert (number< n (vector-length v)))\n+      (inst/store v n x))\n+\n+    ;; The loop body for vector-make.\n+    ;; Fills the allocated vector. Not to be used on its own.\n+    (define (vector-make/recur len idx v x)\n+      (vector-set! v idx x)\n+      (if (number= len (+ idx 1))\n+        v\n+        (vector-make/recur len (+ idx 1) v x)))\n+    (define (vector-make n x)\n+      (assert (number? n))\n+      (assert (number< -1 n))\n+      (if (number= n 0)\n+        (inst/alloc 0)\n+        (vector-make/recur n 0 (inst/alloc n) x)))\n+    \"\"\")\n+    emitter = FunctionEmitter(env)\n+    for definition in code:\n+        emitter.visit(definition)\n+\n+\n+def add_prelude(env: Dict[SSym, Value]) -> None:\n+    \"\"\"Add prelude functions to the environment.\"\"\"\n+    code = scheme.parse(\"\"\"\n+    ;; The loop body for vector=, not to be used on its own\n+    (define (vector=/recur x y n end)\n+      (if (= n end)\n+        true\n+        (if (= (vector-index x n) (vector-index y n))\n+          (vector=/recur x y (+ n 1) end)\n+          false)))\n+    (define (vector= x y)\n+      (assert (vector? x))\n+      (assert (vector? y))\n+      (if (pointer= x y)\n+        true\n+        (if (= (vector-length x) (vector-length y))\n+            (vector=/recur x y 0 (vector-length x))\n+            false)))\n+\n+    (define (= x y)\n+      (if (not (symbol= (typeof x) (typeof y)))\n+        false\n+        (if (symbol? x)\n+          (symbol= x y)\n+          (if (number? x)\n+            (number= x y)\n+            (if (vector? x)\n+              (vector= x y)\n+              (pointer= x y))))))\n+\n+    (define (< x y) (number< x y))\n+\n+    (define (!= x y) (not (= x y)))\n+    (define (> x y) (< y x))\n+    (define (<= x y) (if (= x y) true (< x y)))\n+    (define (>= x y) (if (= x y) true (> x y)))\n+\n+    (define (cons x l) [x l])\n+    (define (car l) (vector-index l 0))\n+    (define (cdr l) (vector-index l 1))\n+    \"\"\")\n+    emitter = FunctionEmitter(env)\n+    for definition in code:\n+        emitter.visit(definition)\n+\n+\n+name_counter = 0","path":"runner.py","position":210,"original_position":210,"commit_id":"5da66ac92a3cd7cff317ab33fc8f927c1a078e35","original_commit_id":"5da66ac92a3cd7cff317ab33fc8f927c1a078e35","user":{"login":"james-perretta","id":4098992,"node_id":"MDQ6VXNlcjQwOTg5OTI=","avatar_url":"https://avatars0.githubusercontent.com/u/4098992?v=4","gravatar_id":"","url":"https://api.github.com/users/james-perretta","html_url":"https://github.com/james-perretta","followers_url":"https://api.github.com/users/james-perretta/followers","following_url":"https://api.github.com/users/james-perretta/following{/other_user}","gists_url":"https://api.github.com/users/james-perretta/gists{/gist_id}","starred_url":"https://api.github.com/users/james-perretta/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/james-perretta/subscriptions","organizations_url":"https://api.github.com/users/james-perretta/orgs","repos_url":"https://api.github.com/users/james-perretta/repos","events_url":"https://api.github.com/users/james-perretta/events{/privacy}","received_events_url":"https://api.github.com/users/james-perretta/received_events","type":"User","site_admin":false},"body":"Is this only used in one place?","created_at":"2018-11-18T22:12:24Z","updated_at":"2018-11-18T22:34:49Z","html_url":"https://github.com/porglezomp/scheme-jit/pull/35#discussion_r234464472","pull_request_url":"https://api.github.com/repos/porglezomp/scheme-jit/pulls/35","author_association":"COLLABORATOR","_links":{"self":{"href":"https://api.github.com/repos/porglezomp/scheme-jit/pulls/comments/234464472"},"html":{"href":"https://github.com/porglezomp/scheme-jit/pull/35#discussion_r234464472"},"pull_request":{"href":"https://api.github.com/repos/porglezomp/scheme-jit/pulls/35"}}},"pull_request":{"url":"https://api.github.com/repos/porglezomp/scheme-jit/pulls/35","id":231756169,"node_id":"MDExOlB1bGxSZXF1ZXN0MjMxNzU2MTY5","html_url":"https://github.com/porglezomp/scheme-jit/pull/35","diff_url":"https://github.com/porglezomp/scheme-jit/pull/35.diff","patch_url":"https://github.com/porglezomp/scheme-jit/pull/35.patch","issue_url":"https://api.github.com/repos/porglezomp/scheme-jit/issues/35","number":35,"state":"open","locked":false,"title":"Builtins","user":{"login":"porglezomp","id":1690225,"node_id":"MDQ6VXNlcjE2OTAyMjU=","avatar_url":"https://avatars1.githubusercontent.com/u/1690225?v=4","gravatar_id":"","url":"https://api.github.com/users/porglezomp","html_url":"https://github.com/porglezomp","followers_url":"https://api.github.com/users/porglezomp/followers","following_url":"https://api.github.com/users/porglezomp/following{/other_user}","gists_url":"https://api.github.com/users/porglezomp/gists{/gist_id}","starred_url":"https://api.github.com/users/porglezomp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/porglezomp/subscriptions","organizations_url":"https://api.github.com/users/porglezomp/orgs","repos_url":"https://api.github.com/users/porglezomp/repos","events_url":"https://api.github.com/users/porglezomp/events{/privacy}","received_events_url":"https://api.github.com/users/porglezomp/received_events","type":"User","site_admin":false},"body":"Add builtins!\r\n\r\nThis is WIP pending adding tests for these.\r\nThis also changes the codegen to not require static binding for global variables, and instead have lookup fail at runtime.","created_at":"2018-11-17T22:44:00Z","updated_at":"2018-11-18T22:34:49Z","closed_at":null,"merged_at":null,"merge_commit_sha":"b3f7dfc93bdc40423e8e33d1504132650c761bf8","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/porglezomp/scheme-jit/pulls/35/commits","review_comments_url":"https://api.github.com/repos/porglezomp/scheme-jit/pulls/35/comments","review_comment_url":"https://api.github.com/repos/porglezomp/scheme-jit/pulls/comments{/number}","comments_url":"https://api.github.com/repos/porglezomp/scheme-jit/issues/35/comments","statuses_url":"https://api.github.com/repos/porglezomp/scheme-jit/statuses/5da66ac92a3cd7cff317ab33fc8f927c1a078e35","head":{"label":"porglezomp:builtins","ref":"builtins","sha":"5da66ac92a3cd7cff317ab33fc8f927c1a078e35","user":{"login":"porglezomp","id":1690225,"node_id":"MDQ6VXNlcjE2OTAyMjU=","avatar_url":"https://avatars1.githubusercontent.com/u/1690225?v=4","gravatar_id":"","url":"https://api.github.com/users/porglezomp","html_url":"https://github.com/porglezomp","followers_url":"https://api.github.com/users/porglezomp/followers","following_url":"https://api.github.com/users/porglezomp/following{/other_user}","gists_url":"https://api.github.com/users/porglezomp/gists{/gist_id}","starred_url":"https://api.github.com/users/porglezomp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/porglezomp/subscriptions","organizations_url":"https://api.github.com/users/porglezomp/orgs","repos_url":"https://api.github.com/users/porglezomp/repos","events_url":"https://api.github.com/users/porglezomp/events{/privacy}","received_events_url":"https://api.github.com/users/porglezomp/received_events","type":"User","site_admin":false},"repo":{"id":154361756,"node_id":"MDEwOlJlcG9zaXRvcnkxNTQzNjE3NTY=","name":"scheme-jit","full_name":"porglezomp/scheme-jit","private":false,"owner":{"login":"porglezomp","id":1690225,"node_id":"MDQ6VXNlcjE2OTAyMjU=","avatar_url":"https://avatars1.githubusercontent.com/u/1690225?v=4","gravatar_id":"","url":"https://api.github.com/users/porglezomp","html_url":"https://github.com/porglezomp","followers_url":"https://api.github.com/users/porglezomp/followers","following_url":"https://api.github.com/users/porglezomp/following{/other_user}","gists_url":"https://api.github.com/users/porglezomp/gists{/gist_id}","starred_url":"https://api.github.com/users/porglezomp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/porglezomp/subscriptions","organizations_url":"https://api.github.com/users/porglezomp/orgs","repos_url":"https://api.github.com/users/porglezomp/repos","events_url":"https://api.github.com/users/porglezomp/events{/privacy}","received_events_url":"https://api.github.com/users/porglezomp/received_events","type":"User","site_admin":false},"html_url":"https://github.com/porglezomp/scheme-jit","description":"A JIT compiler for a small scheme dialect, as a project for Advanced Compilers.","fork":false,"url":"https://api.github.com/repos/porglezomp/scheme-jit","forks_url":"https://api.github.com/repos/porglezomp/scheme-jit/forks","keys_url":"https://api.github.com/repos/porglezomp/scheme-jit/keys{/key_id}","collaborators_url":"https://api.github.com/repos/porglezomp/scheme-jit/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/porglezomp/scheme-jit/teams","hooks_url":"https://api.github.com/repos/porglezomp/scheme-jit/hooks","issue_events_url":"https://api.github.com/repos/porglezomp/scheme-jit/issues/events{/number}","events_url":"https://api.github.com/repos/porglezomp/scheme-jit/events","assignees_url":"https://api.github.com/repos/porglezomp/scheme-jit/assignees{/user}","branches_url":"https://api.github.com/repos/porglezomp/scheme-jit/branches{/branch}","tags_url":"https://api.github.com/repos/porglezomp/scheme-jit/tags","blobs_url":"https://api.github.com/repos/porglezomp/scheme-jit/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/porglezomp/scheme-jit/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/porglezomp/scheme-jit/git/refs{/sha}","trees_url":"https://api.github.com/repos/porglezomp/scheme-jit/git/trees{/sha}","statuses_url":"https://api.github.com/repos/porglezomp/scheme-jit/statuses/{sha}","languages_url":"https://api.github.com/repos/porglezomp/scheme-jit/languages","stargazers_url":"https://api.github.com/repos/porglezomp/scheme-jit/stargazers","contributors_url":"https://api.github.com/repos/porglezomp/scheme-jit/contributors","subscribers_url":"https://api.github.com/repos/porglezomp/scheme-jit/subscribers","subscription_url":"https://api.github.com/repos/porglezomp/scheme-jit/subscription","commits_url":"https://api.github.com/repos/porglezomp/scheme-jit/commits{/sha}","git_commits_url":"https://api.github.com/repos/porglezomp/scheme-jit/git/commits{/sha}","comments_url":"https://api.github.com/repos/porglezomp/scheme-jit/comments{/number}","issue_comment_url":"https://api.github.com/repos/porglezomp/scheme-jit/issues/comments{/number}","contents_url":"https://api.github.com/repos/porglezomp/scheme-jit/contents/{+path}","compare_url":"https://api.github.com/repos/porglezomp/scheme-jit/compare/{base}...{head}","merges_url":"https://api.github.com/repos/porglezomp/scheme-jit/merges","archive_url":"https://api.github.com/repos/porglezomp/scheme-jit/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/porglezomp/scheme-jit/downloads","issues_url":"https://api.github.com/repos/porglezomp/scheme-jit/issues{/number}","pulls_url":"https://api.github.com/repos/porglezomp/scheme-jit/pulls{/number}","milestones_url":"https://api.github.com/repos/porglezomp/scheme-jit/milestones{/number}","notifications_url":"https://api.github.com/repos/porglezomp/scheme-jit/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/porglezomp/scheme-jit/labels{/name}","releases_url":"https://api.github.com/repos/porglezomp/scheme-jit/releases{/id}","deployments_url":"https://api.github.com/repos/porglezomp/scheme-jit/deployments","created_at":"2018-10-23T16:31:13Z","updated_at":"2018-11-18T18:27:45Z","pushed_at":"2018-11-18T21:41:10Z","git_url":"git://github.com/porglezomp/scheme-jit.git","ssh_url":"git@github.com:porglezomp/scheme-jit.git","clone_url":"https://github.com/porglezomp/scheme-jit.git","svn_url":"https://github.com/porglezomp/scheme-jit","homepage":null,"size":91,"stargazers_count":1,"watchers_count":1,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":10,"license":null,"forks":0,"open_issues":10,"watchers":1,"default_branch":"develop"}},"base":{"label":"porglezomp:develop","ref":"develop","sha":"8129824cd535cc2f6c3a2c2441af519e1834fb0f","user":{"login":"porglezomp","id":1690225,"node_id":"MDQ6VXNlcjE2OTAyMjU=","avatar_url":"https://avatars1.githubusercontent.com/u/1690225?v=4","gravatar_id":"","url":"https://api.github.com/users/porglezomp","html_url":"https://github.com/porglezomp","followers_url":"https://api.github.com/users/porglezomp/followers","following_url":"https://api.github.com/users/porglezomp/following{/other_user}","gists_url":"https://api.github.com/users/porglezomp/gists{/gist_id}","starred_url":"https://api.github.com/users/porglezomp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/porglezomp/subscriptions","organizations_url":"https://api.github.com/users/porglezomp/orgs","repos_url":"https://api.github.com/users/porglezomp/repos","events_url":"https://api.github.com/users/porglezomp/events{/privacy}","received_events_url":"https://api.github.com/users/porglezomp/received_events","type":"User","site_admin":false},"repo":{"id":154361756,"node_id":"MDEwOlJlcG9zaXRvcnkxNTQzNjE3NTY=","name":"scheme-jit","full_name":"porglezomp/scheme-jit","private":false,"owner":{"login":"porglezomp","id":1690225,"node_id":"MDQ6VXNlcjE2OTAyMjU=","avatar_url":"https://avatars1.githubusercontent.com/u/1690225?v=4","gravatar_id":"","url":"https://api.github.com/users/porglezomp","html_url":"https://github.com/porglezomp","followers_url":"https://api.github.com/users/porglezomp/followers","following_url":"https://api.github.com/users/porglezomp/following{/other_user}","gists_url":"https://api.github.com/users/porglezomp/gists{/gist_id}","starred_url":"https://api.github.com/users/porglezomp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/porglezomp/subscriptions","organizations_url":"https://api.github.com/users/porglezomp/orgs","repos_url":"https://api.github.com/users/porglezomp/repos","events_url":"https://api.github.com/users/porglezomp/events{/privacy}","received_events_url":"https://api.github.com/users/porglezomp/received_events","type":"User","site_admin":false},"html_url":"https://github.com/porglezomp/scheme-jit","description":"A JIT compiler for a small scheme dialect, as a project for Advanced Compilers.","fork":false,"url":"https://api.github.com/repos/porglezomp/scheme-jit","forks_url":"https://api.github.com/repos/porglezomp/scheme-jit/forks","keys_url":"https://api.github.com/repos/porglezomp/scheme-jit/keys{/key_id}","collaborators_url":"https://api.github.com/repos/porglezomp/scheme-jit/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/porglezomp/scheme-jit/teams","hooks_url":"https://api.github.com/repos/porglezomp/scheme-jit/hooks","issue_events_url":"https://api.github.com/repos/porglezomp/scheme-jit/issues/events{/number}","events_url":"https://api.github.com/repos/porglezomp/scheme-jit/events","assignees_url":"https://api.github.com/repos/porglezomp/scheme-jit/assignees{/user}","branches_url":"https://api.github.com/repos/porglezomp/scheme-jit/branches{/branch}","tags_url":"https://api.github.com/repos/porglezomp/scheme-jit/tags","blobs_url":"https://api.github.com/repos/porglezomp/scheme-jit/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/porglezomp/scheme-jit/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/porglezomp/scheme-jit/git/refs{/sha}","trees_url":"https://api.github.com/repos/porglezomp/scheme-jit/git/trees{/sha}","statuses_url":"https://api.github.com/repos/porglezomp/scheme-jit/statuses/{sha}","languages_url":"https://api.github.com/repos/porglezomp/scheme-jit/languages","stargazers_url":"https://api.github.com/repos/porglezomp/scheme-jit/stargazers","contributors_url":"https://api.github.com/repos/porglezomp/scheme-jit/contributors","subscribers_url":"https://api.github.com/repos/porglezomp/scheme-jit/subscribers","subscription_url":"https://api.github.com/repos/porglezomp/scheme-jit/subscription","commits_url":"https://api.github.com/repos/porglezomp/scheme-jit/commits{/sha}","git_commits_url":"https://api.github.com/repos/porglezomp/scheme-jit/git/commits{/sha}","comments_url":"https://api.github.com/repos/porglezomp/scheme-jit/comments{/number}","issue_comment_url":"https://api.github.com/repos/porglezomp/scheme-jit/issues/comments{/number}","contents_url":"https://api.github.com/repos/porglezomp/scheme-jit/contents/{+path}","compare_url":"https://api.github.com/repos/porglezomp/scheme-jit/compare/{base}...{head}","merges_url":"https://api.github.com/repos/porglezomp/scheme-jit/merges","archive_url":"https://api.github.com/repos/porglezomp/scheme-jit/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/porglezomp/scheme-jit/downloads","issues_url":"https://api.github.com/repos/porglezomp/scheme-jit/issues{/number}","pulls_url":"https://api.github.com/repos/porglezomp/scheme-jit/pulls{/number}","milestones_url":"https://api.github.com/repos/porglezomp/scheme-jit/milestones{/number}","notifications_url":"https://api.github.com/repos/porglezomp/scheme-jit/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/porglezomp/scheme-jit/labels{/name}","releases_url":"https://api.github.com/repos/porglezomp/scheme-jit/releases{/id}","deployments_url":"https://api.github.com/repos/porglezomp/scheme-jit/deployments","created_at":"2018-10-23T16:31:13Z","updated_at":"2018-11-18T18:27:45Z","pushed_at":"2018-11-18T21:41:10Z","git_url":"git://github.com/porglezomp/scheme-jit.git","ssh_url":"git@github.com:porglezomp/scheme-jit.git","clone_url":"https://github.com/porglezomp/scheme-jit.git","svn_url":"https://github.com/porglezomp/scheme-jit","homepage":null,"size":91,"stargazers_count":1,"watchers_count":1,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":10,"license":null,"forks":0,"open_issues":10,"watchers":1,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/porglezomp/scheme-jit/pulls/35"},"html":{"href":"https://github.com/porglezomp/scheme-jit/pull/35"},"issue":{"href":"https://api.github.com/repos/porglezomp/scheme-jit/issues/35"},"comments":{"href":"https://api.github.com/repos/porglezomp/scheme-jit/issues/35/comments"},"review_comments":{"href":"https://api.github.com/repos/porglezomp/scheme-jit/pulls/35/comments"},"review_comment":{"href":"https://api.github.com/repos/porglezomp/scheme-jit/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/porglezomp/scheme-jit/pulls/35/commits"},"statuses":{"href":"https://api.github.com/repos/porglezomp/scheme-jit/statuses/5da66ac92a3cd7cff317ab33fc8f927c1a078e35"}},"author_association":"OWNER"}}
{"actor":{"display_login":"james-perretta"}}