{"action":"created","comment":{"url":"https://api.github.com/repos/ethereum/evmc/pulls/comments/205753554","pull_request_review_id":141087853,"id":205753554,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIwNTc1MzU1NA==","diff_hunk":"@@ -0,0 +1,258 @@\n+// EVMC: Ethereum Client-VM Connector API.\n+// Copyright 2018 Pawel Bylica.\n+// Licensed under the MIT License. See the LICENSE file.\n+\n+package evmc\n+\n+/*\n+#cgo CFLAGS:  -I${SRCDIR}/../../../include\n+#cgo LDFLAGS: -ldl\n+\n+#include <evmc/evmc.h>\n+#include <evmc/helpers.h>\n+#include <evmc/loader.h>\n+\n+#include <stdlib.h>\n+#include <string.h>\n+\n+inline int set_option(struct evmc_instance* instance, _GoString_ name, _GoString_ value)\n+{\n+\tif (instance->set_option)\n+\t\treturn instance->set_option(instance, name.p, value.p);\n+\treturn -1;\n+}\n+\n+struct extended_context\n+{\n+    struct evmc_context context;\n+    int64_t index;\n+};\n+\n+extern const struct evmc_context_fn_table fn_table;\n+\n+static struct evmc_result execute_wrapper(struct evmc_instance* instance,\n+                                          int64_t context_index,\n+                                          enum evmc_revision rev,\n+                                          _GoBytes_ destination,\n+                                          _GoBytes_ sender,\n+                                          _GoBytes_ value,\n+                                          _GoBytes_ input,\n+                                          _GoBytes_ code_hash,\n+                                          int64_t gas,\n+                                          int32_t depth,\n+                                          uint32_t flags,\n+                                          _GoBytes_ code)\n+{\n+\tstruct evmc_message msg;\n+\tmsg.input_data = input.p;\n+\tmsg.input_size = input.n;\n+\tmsg.gas = gas;\n+\tmsg.depth = depth;\n+\tmsg.kind = EVMC_CALL;\n+\tmsg.flags = flags;\n+\n+\tmemcpy(msg.destination.bytes, destination.p, sizeof(msg.destination));\n+\tmemcpy(msg.sender.bytes, sender.p, sizeof(msg.sender));\n+\tmemcpy(msg.value.bytes, value.p, sizeof(msg.value));\n+\tmemcpy(msg.code_hash.bytes, code_hash.p, sizeof(msg.code_hash));\n+\n+    struct extended_context ctx = {{&fn_table}, context_index};\n+    return instance->execute(instance, &ctx.context, rev, &msg, code.p, code.n);\n+}\n+*/\n+import \"C\"\n+\n+import (\n+\t\"errors\"\n+\t\"fmt\"\n+\t\"sync\"\n+\t\"unsafe\"\n+\n+\t\"github.com/ethereum/go-ethereum/common\"\n+)\n+\n+type Error int32\n+\n+func (err Error) IsInternalError() bool {\n+\treturn err < 0\n+}\n+\n+func (err Error) Error() string {\n+\tcode := C.enum_evmc_status_code(err)\n+\n+\tswitch code {\n+\tcase C.EVMC_FAILURE:\n+\t\treturn \"evmc: failure\"\n+\tcase C.EVMC_REVERT:\n+\t\treturn \"evmc: revert\"\n+\tcase C.EVMC_OUT_OF_GAS:\n+\t\treturn \"evmc: out of gas\"\n+\tcase C.EVMC_INVALID_INSTRUCTION:\n+\t\treturn \"evmc: invalid instruction\"\n+\tcase C.EVMC_UNDEFINED_INSTRUCTION:\n+\t\treturn \"evmc: undefined instruction\"\n+\tcase C.EVMC_STACK_OVERFLOW:\n+\t\treturn \"evmc: stack overflow\"\n+\tcase C.EVMC_STACK_UNDERFLOW:\n+\t\treturn \"evmc: stack underflow\"\n+\tcase C.EVMC_BAD_JUMP_DESTINATION:\n+\t\treturn \"evmc: bad jump destination\"\n+\tcase C.EVMC_INVALID_MEMORY_ACCESS:\n+\t\treturn \"evmc: invalid memory access\"\n+\tcase C.EVMC_CALL_DEPTH_EXCEEDED:\n+\t\treturn \"evmc: call depth exceeded\"\n+\tcase C.EVMC_STATIC_MODE_VIOLATION:\n+\t\treturn \"evmc: static mode violation\"\n+\tcase C.EVMC_PRECOMPILE_FAILURE:\n+\t\treturn \"evmc: precompile failure\"\n+\tcase C.EVMC_CONTRACT_VALIDATION_FAILURE:\n+\t\treturn \"evmc: contract validation failure\"\n+\tcase C.EVMC_INTERNAL_ERROR:\n+\t\treturn \"evmc: internal error\"\n+\tcase C.EVMC_REJECTED:\n+\t\treturn \"evmc: rejected\"\n+\t}\n+\n+\tif code < 0 {\n+\t\treturn fmt.Sprintf(\"evmc: unknown internal error (%d)\", int32(code))\n+\t}\n+\n+\tpanic(fmt.Sprintf(\"evmc: unknown status code %d\", int32(code)))\n+}\n+\n+const (\n+\tFailure = Error(C.EVMC_FAILURE)\n+\tRevert  = Error(C.EVMC_REVERT)\n+)\n+\n+type Revision int32\n+\n+const (\n+\tFrontier         = C.EVMC_FRONTIER\n+\tHomestead        = C.EVMC_HOMESTEAD\n+\tTangerineWhistle = C.EVMC_TANGERINE_WHISTLE\n+\tSpuriousDragon   = C.EVMC_SPURIOUS_DRAGON\n+\tByzantium        = C.EVMC_BYZANTIUM\n+\tConstantinople   = C.EVMC_CONSTANTINOPLE\n+)\n+\n+type Instance struct {\n+\thandle *C.struct_evmc_instance\n+}\n+\n+func Load(filename string) (instance *Instance, err error) {\n+\tcfilename := C.CString(filename)\n+\tvar loaderErr C.enum_evmc_loader_error_code\n+\thandle := C.evmc_load_and_create(cfilename, &loaderErr)\n+\tC.free(unsafe.Pointer(cfilename))\n+\tswitch loaderErr {\n+\tcase C.EVMC_LOADER_SUCCESS:\n+\t\tinstance = &Instance{handle}\n+\tcase C.EVMC_LOADER_CANNOT_OPEN:\n+\t\terr = fmt.Errorf(\"evmc loader: cannot open %s\", filename)\n+\tcase C.EVMC_LOADER_SYMBOL_NOT_FOUND:\n+\t\terr = fmt.Errorf(\"evmc loader: the EVMC create function not found in %s\", filename)\n+\tcase C.EVMC_LOADER_INVALID_ARGUMENT:\n+\t\tpanic(\"evmc loader: filename argument is empty\")\n+\tcase C.EVMC_LOADER_INSTANCE_CREATION_FAILURE:\n+\t\terr = errors.New(\"evmc loader: VM instance creation failure\")\n+\tcase C.EVMC_LOADER_ABI_VERSION_MISMATCH:\n+\t\terr = errors.New(\"evmc loader: ABI version mismatch\")\n+\tdefault:\n+\t\tpanic(fmt.Sprintf(\"evmc loader: unexpected error (%d)\", loaderErr))\n+\t}\n+\treturn instance, err\n+}\n+\n+func (instance *Instance) Destroy() {\n+\tC.evmc_destroy(instance.handle)\n+}\n+\n+func (instance *Instance) Name() string {\n+\treturn C.GoString(instance.handle.name)\n+}\n+\n+func (instance *Instance) Version() string {\n+\treturn C.GoString(instance.handle.version)\n+}\n+\n+func (instance *Instance) SetOption(name string, value string) (err error) {\n+\tr := C.set_option(instance.handle, name+\"\\x00\", value+\"\\x00\")\n+\tif r == -1 {\n+\t\terr = errors.New(\"evmc: VM does not accept any options\")\n+\t} else if r != 0 {\n+\t\terr = fmt.Errorf(\"evmc: option '%s' not accepted\", name)\n+\t}\n+\treturn err\n+}\n+\n+func (instance *Instance) Execute(ctx HostContext, rev Revision,\n+\tdestination common.Address, sender common.Address, value common.Hash, input []byte, codeHash common.Hash, gas int64, depth int, static bool,\n+\tcode []byte) (output []byte, gasLeft int64, err error) {\n+\n+\tflags := C.uint32_t(0)\n+\tif static {\n+\t\tflags |= C.EVMC_STATIC\n+\t}\n+\n+\tctxId := addHostContext(ctx)\n+\tr := C.execute_wrapper(instance.handle, C.int64_t(ctxId), uint32(rev), destination[:], sender[:], value[:], input,\n+\t\tcodeHash[:], C.int64_t(gas), C.int32_t(depth), flags, code)\n+\tremoveHostContext(ctxId)\n+\n+\toutput = C.GoBytes(unsafe.Pointer(r.output_data), C.int(r.output_size))\n+\tgasLeft = int64(r.gas_left)\n+\tif r.status_code != C.EVMC_SUCCESS {\n+\t\terr = Error(r.status_code)\n+\t}\n+\n+\tif r.release != nil {\n+\t\tC.evmc_release_result(&r)\n+\t}\n+\n+\treturn output, gasLeft, err\n+}\n+\n+var (\n+\thostContextCounter int\n+\thostContextMap     = map[int]HostContext{}\n+\thostContextMapMu   sync.Mutex\n+)\n+\n+func addHostContext(ctx HostContext) int {\n+\thostContextMapMu.Lock()\n+\tid := hostContextCounter\n+\thostContextCounter++\n+\thostContextMap[id] = ctx\n+\thostContextMapMu.Unlock()\n+\treturn id\n+}\n+\n+func removeHostContext(id int) {\n+\thostContextMapMu.Lock()\n+\tdelete(hostContextMap, id)\n+\thostContextMapMu.Unlock()\n+}\n+\n+func getHostContext(idx int) HostContext {\n+\thostContextMapMu.Lock()\n+\tctx := hostContextMap[idx]\n+\thostContextMapMu.Unlock()\n+\treturn ctx\n+}\n+\n+func evmcUint256be(in common.Hash) C.struct_evmc_uint256be {\n+\tout := C.struct_evmc_uint256be{}\n+\tfor i := 0; i < len(in); i++ {\n+\t\tout.bytes[i] = C.uint8_t(in[i])\n+\t}\n+\treturn out\n+}\n+\n+func evmcAddress(address common.Address) C.struct_evmc_address {\n+\tr := C.struct_evmc_address{}\n+\tfor i := 0; i < len(address); i++ {","path":"bindings/go/evmc/evmc.go","position":251,"original_position":254,"commit_id":"53a2613e9cc1b7e06f2d3db5ab0522538238b4d4","original_commit_id":"d52cb9f96b35b5d0bb2c86dbbcb7d96234148819","user":{"login":"axic","id":20340,"node_id":"MDQ6VXNlcjIwMzQw","avatar_url":"https://avatars3.githubusercontent.com/u/20340?v=4","gravatar_id":"","url":"https://api.github.com/users/axic","html_url":"https://github.com/axic","followers_url":"https://api.github.com/users/axic/followers","following_url":"https://api.github.com/users/axic/following{/other_user}","gists_url":"https://api.github.com/users/axic/gists{/gist_id}","starred_url":"https://api.github.com/users/axic/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/axic/subscriptions","organizations_url":"https://api.github.com/users/axic/orgs","repos_url":"https://api.github.com/users/axic/repos","events_url":"https://api.github.com/users/axic/events{/privacy}","received_events_url":"https://api.github.com/users/axic/received_events","type":"User","site_admin":false},"body":"This has been fixed by the assertion commit.","created_at":"2018-07-27T12:12:49Z","updated_at":"2018-07-27T12:12:49Z","html_url":"https://github.com/ethereum/evmc/pull/41#discussion_r205753554","pull_request_url":"https://api.github.com/repos/ethereum/evmc/pulls/41","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/ethereum/evmc/pulls/comments/205753554"},"html":{"href":"https://github.com/ethereum/evmc/pull/41#discussion_r205753554"},"pull_request":{"href":"https://api.github.com/repos/ethereum/evmc/pulls/41"}},"in_reply_to_id":202390634},"pull_request":{"url":"https://api.github.com/repos/ethereum/evmc/pulls/41","id":200988898,"node_id":"MDExOlB1bGxSZXF1ZXN0MjAwOTg4ODk4","html_url":"https://github.com/ethereum/evmc/pull/41","diff_url":"https://github.com/ethereum/evmc/pull/41.diff","patch_url":"https://github.com/ethereum/evmc/pull/41.patch","issue_url":"https://api.github.com/repos/ethereum/evmc/issues/41","number":41,"state":"open","locked":false,"title":"Go bindings","user":{"login":"chfast","id":573380,"node_id":"MDQ6VXNlcjU3MzM4MA==","avatar_url":"https://avatars1.githubusercontent.com/u/573380?v=4","gravatar_id":"","url":"https://api.github.com/users/chfast","html_url":"https://github.com/chfast","followers_url":"https://api.github.com/users/chfast/followers","following_url":"https://api.github.com/users/chfast/following{/other_user}","gists_url":"https://api.github.com/users/chfast/gists{/gist_id}","starred_url":"https://api.github.com/users/chfast/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chfast/subscriptions","organizations_url":"https://api.github.com/users/chfast/orgs","repos_url":"https://api.github.com/users/chfast/repos","events_url":"https://api.github.com/users/chfast/events{/privacy}","received_events_url":"https://api.github.com/users/chfast/received_events","type":"User","site_admin":false},"body":"Can you help with the review @gballet, @fjl?\r\n\r\nAppropriate go-ethereum PR: https://github.com/ethereum/go-ethereum/pull/17050","created_at":"2018-07-12T12:44:36Z","updated_at":"2018-07-27T12:12:49Z","closed_at":null,"merged_at":null,"merge_commit_sha":"51ef4dfe9853f921abc8625df8ee668fca50110f","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/ethereum/evmc/pulls/41/commits","review_comments_url":"https://api.github.com/repos/ethereum/evmc/pulls/41/comments","review_comment_url":"https://api.github.com/repos/ethereum/evmc/pulls/comments{/number}","comments_url":"https://api.github.com/repos/ethereum/evmc/issues/41/comments","statuses_url":"https://api.github.com/repos/ethereum/evmc/statuses/53a2613e9cc1b7e06f2d3db5ab0522538238b4d4","head":{"label":"ethereum:go","ref":"go","sha":"53a2613e9cc1b7e06f2d3db5ab0522538238b4d4","user":{"login":"ethereum","id":6250754,"node_id":"MDEyOk9yZ2FuaXphdGlvbjYyNTA3NTQ=","avatar_url":"https://avatars3.githubusercontent.com/u/6250754?v=4","gravatar_id":"","url":"https://api.github.com/users/ethereum","html_url":"https://github.com/ethereum","followers_url":"https://api.github.com/users/ethereum/followers","following_url":"https://api.github.com/users/ethereum/following{/other_user}","gists_url":"https://api.github.com/users/ethereum/gists{/gist_id}","starred_url":"https://api.github.com/users/ethereum/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ethereum/subscriptions","organizations_url":"https://api.github.com/users/ethereum/orgs","repos_url":"https://api.github.com/users/ethereum/repos","events_url":"https://api.github.com/users/ethereum/events{/privacy}","received_events_url":"https://api.github.com/users/ethereum/received_events","type":"Organization","site_admin":false},"repo":{"id":66214407,"node_id":"MDEwOlJlcG9zaXRvcnk2NjIxNDQwNw==","name":"evmc","full_name":"ethereum/evmc","owner":{"login":"ethereum","id":6250754,"node_id":"MDEyOk9yZ2FuaXphdGlvbjYyNTA3NTQ=","avatar_url":"https://avatars3.githubusercontent.com/u/6250754?v=4","gravatar_id":"","url":"https://api.github.com/users/ethereum","html_url":"https://github.com/ethereum","followers_url":"https://api.github.com/users/ethereum/followers","following_url":"https://api.github.com/users/ethereum/following{/other_user}","gists_url":"https://api.github.com/users/ethereum/gists{/gist_id}","starred_url":"https://api.github.com/users/ethereum/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ethereum/subscriptions","organizations_url":"https://api.github.com/users/ethereum/orgs","repos_url":"https://api.github.com/users/ethereum/repos","events_url":"https://api.github.com/users/ethereum/events{/privacy}","received_events_url":"https://api.github.com/users/ethereum/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ethereum/evmc","description":"EVMC – Ethereum Client-VM Connector API","fork":false,"url":"https://api.github.com/repos/ethereum/evmc","forks_url":"https://api.github.com/repos/ethereum/evmc/forks","keys_url":"https://api.github.com/repos/ethereum/evmc/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ethereum/evmc/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ethereum/evmc/teams","hooks_url":"https://api.github.com/repos/ethereum/evmc/hooks","issue_events_url":"https://api.github.com/repos/ethereum/evmc/issues/events{/number}","events_url":"https://api.github.com/repos/ethereum/evmc/events","assignees_url":"https://api.github.com/repos/ethereum/evmc/assignees{/user}","branches_url":"https://api.github.com/repos/ethereum/evmc/branches{/branch}","tags_url":"https://api.github.com/repos/ethereum/evmc/tags","blobs_url":"https://api.github.com/repos/ethereum/evmc/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ethereum/evmc/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ethereum/evmc/git/refs{/sha}","trees_url":"https://api.github.com/repos/ethereum/evmc/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ethereum/evmc/statuses/{sha}","languages_url":"https://api.github.com/repos/ethereum/evmc/languages","stargazers_url":"https://api.github.com/repos/ethereum/evmc/stargazers","contributors_url":"https://api.github.com/repos/ethereum/evmc/contributors","subscribers_url":"https://api.github.com/repos/ethereum/evmc/subscribers","subscription_url":"https://api.github.com/repos/ethereum/evmc/subscription","commits_url":"https://api.github.com/repos/ethereum/evmc/commits{/sha}","git_commits_url":"https://api.github.com/repos/ethereum/evmc/git/commits{/sha}","comments_url":"https://api.github.com/repos/ethereum/evmc/comments{/number}","issue_comment_url":"https://api.github.com/repos/ethereum/evmc/issues/comments{/number}","contents_url":"https://api.github.com/repos/ethereum/evmc/contents/{+path}","compare_url":"https://api.github.com/repos/ethereum/evmc/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ethereum/evmc/merges","archive_url":"https://api.github.com/repos/ethereum/evmc/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ethereum/evmc/downloads","issues_url":"https://api.github.com/repos/ethereum/evmc/issues{/number}","pulls_url":"https://api.github.com/repos/ethereum/evmc/pulls{/number}","milestones_url":"https://api.github.com/repos/ethereum/evmc/milestones{/number}","notifications_url":"https://api.github.com/repos/ethereum/evmc/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ethereum/evmc/labels{/name}","releases_url":"https://api.github.com/repos/ethereum/evmc/releases{/id}","deployments_url":"https://api.github.com/repos/ethereum/evmc/deployments","created_at":"2016-08-21T18:35:02Z","updated_at":"2018-07-26T11:47:47Z","pushed_at":"2018-07-26T12:22:50Z","git_url":"git://github.com/ethereum/evmc.git","ssh_url":"git@github.com:ethereum/evmc.git","clone_url":"https://github.com/ethereum/evmc.git","svn_url":"https://github.com/ethereum/evmc","homepage":"https://ethereum.github.io/evmc","size":548,"stargazers_count":27,"watchers_count":27,"language":"C","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":true,"forks_count":8,"mirror_url":null,"archived":false,"open_issues_count":5,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":8,"open_issues":5,"watchers":27,"default_branch":"master"}},"base":{"label":"ethereum:master","ref":"master","sha":"a4f7029371961b2ac4727e76eb721b86627a78d3","user":{"login":"ethereum","id":6250754,"node_id":"MDEyOk9yZ2FuaXphdGlvbjYyNTA3NTQ=","avatar_url":"https://avatars3.githubusercontent.com/u/6250754?v=4","gravatar_id":"","url":"https://api.github.com/users/ethereum","html_url":"https://github.com/ethereum","followers_url":"https://api.github.com/users/ethereum/followers","following_url":"https://api.github.com/users/ethereum/following{/other_user}","gists_url":"https://api.github.com/users/ethereum/gists{/gist_id}","starred_url":"https://api.github.com/users/ethereum/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ethereum/subscriptions","organizations_url":"https://api.github.com/users/ethereum/orgs","repos_url":"https://api.github.com/users/ethereum/repos","events_url":"https://api.github.com/users/ethereum/events{/privacy}","received_events_url":"https://api.github.com/users/ethereum/received_events","type":"Organization","site_admin":false},"repo":{"id":66214407,"node_id":"MDEwOlJlcG9zaXRvcnk2NjIxNDQwNw==","name":"evmc","full_name":"ethereum/evmc","owner":{"login":"ethereum","id":6250754,"node_id":"MDEyOk9yZ2FuaXphdGlvbjYyNTA3NTQ=","avatar_url":"https://avatars3.githubusercontent.com/u/6250754?v=4","gravatar_id":"","url":"https://api.github.com/users/ethereum","html_url":"https://github.com/ethereum","followers_url":"https://api.github.com/users/ethereum/followers","following_url":"https://api.github.com/users/ethereum/following{/other_user}","gists_url":"https://api.github.com/users/ethereum/gists{/gist_id}","starred_url":"https://api.github.com/users/ethereum/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ethereum/subscriptions","organizations_url":"https://api.github.com/users/ethereum/orgs","repos_url":"https://api.github.com/users/ethereum/repos","events_url":"https://api.github.com/users/ethereum/events{/privacy}","received_events_url":"https://api.github.com/users/ethereum/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ethereum/evmc","description":"EVMC – Ethereum Client-VM Connector API","fork":false,"url":"https://api.github.com/repos/ethereum/evmc","forks_url":"https://api.github.com/repos/ethereum/evmc/forks","keys_url":"https://api.github.com/repos/ethereum/evmc/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ethereum/evmc/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ethereum/evmc/teams","hooks_url":"https://api.github.com/repos/ethereum/evmc/hooks","issue_events_url":"https://api.github.com/repos/ethereum/evmc/issues/events{/number}","events_url":"https://api.github.com/repos/ethereum/evmc/events","assignees_url":"https://api.github.com/repos/ethereum/evmc/assignees{/user}","branches_url":"https://api.github.com/repos/ethereum/evmc/branches{/branch}","tags_url":"https://api.github.com/repos/ethereum/evmc/tags","blobs_url":"https://api.github.com/repos/ethereum/evmc/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ethereum/evmc/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ethereum/evmc/git/refs{/sha}","trees_url":"https://api.github.com/repos/ethereum/evmc/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ethereum/evmc/statuses/{sha}","languages_url":"https://api.github.com/repos/ethereum/evmc/languages","stargazers_url":"https://api.github.com/repos/ethereum/evmc/stargazers","contributors_url":"https://api.github.com/repos/ethereum/evmc/contributors","subscribers_url":"https://api.github.com/repos/ethereum/evmc/subscribers","subscription_url":"https://api.github.com/repos/ethereum/evmc/subscription","commits_url":"https://api.github.com/repos/ethereum/evmc/commits{/sha}","git_commits_url":"https://api.github.com/repos/ethereum/evmc/git/commits{/sha}","comments_url":"https://api.github.com/repos/ethereum/evmc/comments{/number}","issue_comment_url":"https://api.github.com/repos/ethereum/evmc/issues/comments{/number}","contents_url":"https://api.github.com/repos/ethereum/evmc/contents/{+path}","compare_url":"https://api.github.com/repos/ethereum/evmc/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ethereum/evmc/merges","archive_url":"https://api.github.com/repos/ethereum/evmc/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ethereum/evmc/downloads","issues_url":"https://api.github.com/repos/ethereum/evmc/issues{/number}","pulls_url":"https://api.github.com/repos/ethereum/evmc/pulls{/number}","milestones_url":"https://api.github.com/repos/ethereum/evmc/milestones{/number}","notifications_url":"https://api.github.com/repos/ethereum/evmc/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ethereum/evmc/labels{/name}","releases_url":"https://api.github.com/repos/ethereum/evmc/releases{/id}","deployments_url":"https://api.github.com/repos/ethereum/evmc/deployments","created_at":"2016-08-21T18:35:02Z","updated_at":"2018-07-26T11:47:47Z","pushed_at":"2018-07-26T12:22:50Z","git_url":"git://github.com/ethereum/evmc.git","ssh_url":"git@github.com:ethereum/evmc.git","clone_url":"https://github.com/ethereum/evmc.git","svn_url":"https://github.com/ethereum/evmc","homepage":"https://ethereum.github.io/evmc","size":548,"stargazers_count":27,"watchers_count":27,"language":"C","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":true,"forks_count":8,"mirror_url":null,"archived":false,"open_issues_count":5,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":8,"open_issues":5,"watchers":27,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/ethereum/evmc/pulls/41"},"html":{"href":"https://github.com/ethereum/evmc/pull/41"},"issue":{"href":"https://api.github.com/repos/ethereum/evmc/issues/41"},"comments":{"href":"https://api.github.com/repos/ethereum/evmc/issues/41/comments"},"review_comments":{"href":"https://api.github.com/repos/ethereum/evmc/pulls/41/comments"},"review_comment":{"href":"https://api.github.com/repos/ethereum/evmc/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/ethereum/evmc/pulls/41/commits"},"statuses":{"href":"https://api.github.com/repos/ethereum/evmc/statuses/53a2613e9cc1b7e06f2d3db5ab0522538238b4d4"}},"author_association":"COLLABORATOR"}}
{"actor":{"display_login":"axic"}}