{"action":"created","comment":{"url":"https://api.github.com/repos/gradle/kotlin-dsl/pulls/comments/193206468","pull_request_review_id":126133728,"id":193206468,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDE5MzIwNjQ2OA==","diff_hunk":"@@ -207,4 +128,108 @@ class StandardKotlinScriptEvaluator(\n             classPathProvider,\n             embeddedKotlinProvider,\n             classPathModeExceptionCollector)\n+\n+    private\n+    val interpreter by lazy {\n+        Interpreter(InterpreterHost())\n+    }\n+\n+    private\n+    inner class InterpreterHost : Interpreter.Host {","path":"subprojects/provider/src/main/kotlin/org/gradle/kotlin/dsl/provider/KotlinScriptEvaluator.kt","position":144,"original_position":160,"commit_id":"80aaf39a33b277d4f23b86114c172a64cbf04827","original_commit_id":"c6108faa3737a74e40aa86e4374e53f85c1cfa22","user":{"login":"bamboo","id":51689,"node_id":"MDQ6VXNlcjUxNjg5","avatar_url":"https://avatars1.githubusercontent.com/u/51689?v=4","gravatar_id":"","url":"https://api.github.com/users/bamboo","html_url":"https://github.com/bamboo","followers_url":"https://api.github.com/users/bamboo/followers","following_url":"https://api.github.com/users/bamboo/following{/other_user}","gists_url":"https://api.github.com/users/bamboo/gists{/gist_id}","starred_url":"https://api.github.com/users/bamboo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bamboo/subscriptions","organizations_url":"https://api.github.com/users/bamboo/orgs","repos_url":"https://api.github.com/users/bamboo/repos","events_url":"https://api.github.com/users/bamboo/events{/privacy}","received_events_url":"https://api.github.com/users/bamboo/received_events","type":"User","site_admin":false},"body":"The `Host` represents the set of services required by the `Interpreter` from its environment.","created_at":"2018-06-05T20:13:36Z","updated_at":"2018-06-05T20:13:37Z","html_url":"https://github.com/gradle/kotlin-dsl/pull/887#discussion_r193206468","pull_request_url":"https://api.github.com/repos/gradle/kotlin-dsl/pulls/887","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/gradle/kotlin-dsl/pulls/comments/193206468"},"html":{"href":"https://github.com/gradle/kotlin-dsl/pull/887#discussion_r193206468"},"pull_request":{"href":"https://api.github.com/repos/gradle/kotlin-dsl/pulls/887"}},"in_reply_to_id":191039343},"pull_request":{"url":"https://api.github.com/repos/gradle/kotlin-dsl/pulls/887","id":189253960,"node_id":"MDExOlB1bGxSZXF1ZXN0MTg5MjUzOTYw","html_url":"https://github.com/gradle/kotlin-dsl/pull/887","diff_url":"https://github.com/gradle/kotlin-dsl/pull/887.diff","patch_url":"https://github.com/gradle/kotlin-dsl/pull/887.patch","issue_url":"https://api.github.com/repos/gradle/kotlin-dsl/issues/887","number":887,"state":"open","locked":false,"title":" WIP: Optimise script execution via partial evaluation techniques","user":{"login":"bamboo","id":51689,"node_id":"MDQ6VXNlcjUxNjg5","avatar_url":"https://avatars1.githubusercontent.com/u/51689?v=4","gravatar_id":"","url":"https://api.github.com/users/bamboo","html_url":"https://github.com/bamboo","followers_url":"https://api.github.com/users/bamboo/followers","following_url":"https://api.github.com/users/bamboo/following{/other_user}","gists_url":"https://api.github.com/users/bamboo/gists{/gist_id}","starred_url":"https://api.github.com/users/bamboo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bamboo/subscriptions","organizations_url":"https://api.github.com/users/bamboo/orgs","repos_url":"https://api.github.com/users/bamboo/repos","events_url":"https://api.github.com/users/bamboo/events{/privacy}","received_events_url":"https://api.github.com/users/bamboo/received_events","type":"User","site_admin":false},"body":"# A new Kotlin DSL interpreter\r\n\r\nAn optimised interpreter for the Kotlin DSL based on the idea of [partial evaluation](https://en.wikipedia.org/wiki/Partial_evaluation).\r\n\r\nInstead of interpreting a given Kotlin DSL script directly, the interpreter emits a specialized program that captures the optimal execution procedure for the particular combination of script structure (does it contain a `buildscript` block? a `plugins` block? a script body? etc), target object and script kind (top-level or plugin).\r\n\r\nThe specialized program is then cached via a cheap cache key based on the original, unprocessed contents of the script, target context and parent `ClassLoader`.\r\n\r\nBecause each program is specialized to a given script structure, a lot of work is avoided. For example, a top-level script containing a `plugins` block but no body can be compiled down to a specialized program that instantiates the precompiled `plugins` block class directly - without reflection - and does nothing else. The same strategy can be used for a **script plugin** (a non top-level script) with a body but no `buildscript` block since the classpath is completely determined at the time the specialized program is emitted.\r\n\r\n\r\n## Must\r\n- [x] evaluator for empty settings\r\n- [x] evaluator for stage2 settings\r\n- [x] evaluator for stage1 settings\r\n- [x] serialize HashCode in the bytecode\r\n- [x] keep preprocessed file in disk\r\n- [x] evaluator for staged settings script\r\n- [x] make sure there are no dependencies from execution into provider\r\n- [x] replace main evaluator for settings scripts\r\n  - [x] fix location aware handling for settings script\r\n- [x] stage 2 only non-top level scripts (script plugins) can be executed as precompiled scripts\r\n- [x] introduce ProgramType.{TopLevel,ScriptPlugin}\r\n- [x] introduce ProgramTarget.{Project,Settings}\r\n- [x] replace main evaluator for project script plugins\r\n- [x] measure\r\n  - [x] create bamboo/release/partial-evaluator-snapshot branch\r\n  - [x] publish 0.18.x snapshot from that branch\r\n  - [x] update kotlin-dsl-snapshto branch\r\n  - [x] run adhoc target on that branch\r\n- [x] evaluator for project scripts with only stage1 plugins\r\n- [x] evaluator for top-level project scripts with stage1 buildscript block (accessors classpath)\r\n- [x] pass `accessorsClassPath` through\r\n- [x] evaluator for project scripts with both a buildscript and a plugins block as a single script\r\n- [x] evaluator for top-level project script with stage2 (accessor classpath)\r\n- [x] replace main evaluator for project scripts\r\n- [x] measure\r\n- [ ] Introduce `prepareScriptHandler` (for `setupEmbeddedKotlinRepository`)\r\n- [ ] measure\r\n- [x] Refactor `ResidualProgramCompiler` into two steps with a reified `SpecializedProgram` representation in between for simpler code and tests\r\n- [x] preserve line numbers on `plugins` blocks\r\n- [x] replace main evaluator for init scripts\r\n- [ ] measure\r\n- [ ] precompute stage 2 `childClassLoaderScopeId`\r\n- [ ] introduce SpecializedProgramCache with an optimised cache key representing the tuple (programTarget, programKind, sourceHash, accessorsClassPathHash, weakParentClassLoader)\r\n  - [ ] synthesize cache key at compilation time? a single `Long` could replace `scriptTemplateId`\r\n  - [ ] consider introducing separate SpecializedProgramCache for stage 2\r\n- [ ] measure\r\n- [x] single Lexer pass over the whole script collecting comments and top-level blocks by name\r\n- [ ] measure\r\n- [x] use a `ProgramHost` implementation that ignores errors for classpath mode\r\n- [ ] reconsider whether a top-level `Program.Script` for `Settings` should reduce to `Dynamic` \r\n\r\n## Open Questions\r\n\r\n- Does a ProgramKind.ScriptPlugin without a Stage2 need to `closeTargetScopeOf` ?\r\n\r\n## Could\r\n\r\n- [x] simplify KotlinScriptClassloadingCache::loadScriptClass\r\n  - [x] remove ClassLoaderScope references\r\n  - [x] replace ClassPath by HashCode and precompute HashCode\r\n","created_at":"2018-05-20T21:35:11Z","updated_at":"2018-06-05T20:13:37Z","closed_at":null,"merged_at":null,"merge_commit_sha":"27b85f40f5016bbed22c3da671e95d68c65e8b6c","assignee":{"login":"bamboo","id":51689,"node_id":"MDQ6VXNlcjUxNjg5","avatar_url":"https://avatars1.githubusercontent.com/u/51689?v=4","gravatar_id":"","url":"https://api.github.com/users/bamboo","html_url":"https://github.com/bamboo","followers_url":"https://api.github.com/users/bamboo/followers","following_url":"https://api.github.com/users/bamboo/following{/other_user}","gists_url":"https://api.github.com/users/bamboo/gists{/gist_id}","starred_url":"https://api.github.com/users/bamboo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bamboo/subscriptions","organizations_url":"https://api.github.com/users/bamboo/orgs","repos_url":"https://api.github.com/users/bamboo/repos","events_url":"https://api.github.com/users/bamboo/events{/privacy}","received_events_url":"https://api.github.com/users/bamboo/received_events","type":"User","site_admin":false},"assignees":[{"login":"bamboo","id":51689,"node_id":"MDQ6VXNlcjUxNjg5","avatar_url":"https://avatars1.githubusercontent.com/u/51689?v=4","gravatar_id":"","url":"https://api.github.com/users/bamboo","html_url":"https://github.com/bamboo","followers_url":"https://api.github.com/users/bamboo/followers","following_url":"https://api.github.com/users/bamboo/following{/other_user}","gists_url":"https://api.github.com/users/bamboo/gists{/gist_id}","starred_url":"https://api.github.com/users/bamboo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bamboo/subscriptions","organizations_url":"https://api.github.com/users/bamboo/orgs","repos_url":"https://api.github.com/users/bamboo/repos","events_url":"https://api.github.com/users/bamboo/events{/privacy}","received_events_url":"https://api.github.com/users/bamboo/received_events","type":"User","site_admin":false}],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":385108493,"node_id":"MDU6TGFiZWwzODUxMDg0OTM=","url":"https://api.github.com/repos/gradle/kotlin-dsl/labels/a:feature","name":"a:feature","color":"0e8a16","default":false},{"id":385196192,"node_id":"MDU6TGFiZWwzODUxOTYxOTI=","url":"https://api.github.com/repos/gradle/kotlin-dsl/labels/in:kotlin-dsl-runtime","name":"in:kotlin-dsl-runtime","color":"c5def5","default":false},{"id":383980240,"node_id":"MDU6TGFiZWwzODM5ODAyNDA=","url":"https://api.github.com/repos/gradle/kotlin-dsl/labels/re:performance","name":"re:performance","color":"ffffff","default":false}],"milestone":{"url":"https://api.github.com/repos/gradle/kotlin-dsl/milestones/34","html_url":"https://github.com/gradle/kotlin-dsl/milestone/34","labels_url":"https://api.github.com/repos/gradle/kotlin-dsl/milestones/34/labels","id":3339977,"node_id":"MDk6TWlsZXN0b25lMzMzOTk3Nw==","number":34,"title":"0.18.x","description":"","creator":{"login":"eskatos","id":132773,"node_id":"MDQ6VXNlcjEzMjc3Mw==","avatar_url":"https://avatars3.githubusercontent.com/u/132773?v=4","gravatar_id":"","url":"https://api.github.com/users/eskatos","html_url":"https://github.com/eskatos","followers_url":"https://api.github.com/users/eskatos/followers","following_url":"https://api.github.com/users/eskatos/following{/other_user}","gists_url":"https://api.github.com/users/eskatos/gists{/gist_id}","starred_url":"https://api.github.com/users/eskatos/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eskatos/subscriptions","organizations_url":"https://api.github.com/users/eskatos/orgs","repos_url":"https://api.github.com/users/eskatos/repos","events_url":"https://api.github.com/users/eskatos/events{/privacy}","received_events_url":"https://api.github.com/users/eskatos/received_events","type":"User","site_admin":false},"open_issues":7,"closed_issues":13,"state":"open","created_at":"2018-05-11T19:09:59Z","updated_at":"2018-06-04T13:53:37Z","due_on":"2018-06-20T07:00:00Z","closed_at":null},"commits_url":"https://api.github.com/repos/gradle/kotlin-dsl/pulls/887/commits","review_comments_url":"https://api.github.com/repos/gradle/kotlin-dsl/pulls/887/comments","review_comment_url":"https://api.github.com/repos/gradle/kotlin-dsl/pulls/comments{/number}","comments_url":"https://api.github.com/repos/gradle/kotlin-dsl/issues/887/comments","statuses_url":"https://api.github.com/repos/gradle/kotlin-dsl/statuses/80aaf39a33b277d4f23b86114c172a64cbf04827","head":{"label":"gradle:bamboo/wip/partial-evaluator","ref":"bamboo/wip/partial-evaluator","sha":"80aaf39a33b277d4f23b86114c172a64cbf04827","user":{"login":"gradle","id":124156,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEyNDE1Ng==","avatar_url":"https://avatars2.githubusercontent.com/u/124156?v=4","gravatar_id":"","url":"https://api.github.com/users/gradle","html_url":"https://github.com/gradle","followers_url":"https://api.github.com/users/gradle/followers","following_url":"https://api.github.com/users/gradle/following{/other_user}","gists_url":"https://api.github.com/users/gradle/gists{/gist_id}","starred_url":"https://api.github.com/users/gradle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gradle/subscriptions","organizations_url":"https://api.github.com/users/gradle/orgs","repos_url":"https://api.github.com/users/gradle/repos","events_url":"https://api.github.com/users/gradle/events{/privacy}","received_events_url":"https://api.github.com/users/gradle/received_events","type":"Organization","site_admin":false},"repo":{"id":57252451,"node_id":"MDEwOlJlcG9zaXRvcnk1NzI1MjQ1MQ==","name":"kotlin-dsl","full_name":"gradle/kotlin-dsl","owner":{"login":"gradle","id":124156,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEyNDE1Ng==","avatar_url":"https://avatars2.githubusercontent.com/u/124156?v=4","gravatar_id":"","url":"https://api.github.com/users/gradle","html_url":"https://github.com/gradle","followers_url":"https://api.github.com/users/gradle/followers","following_url":"https://api.github.com/users/gradle/following{/other_user}","gists_url":"https://api.github.com/users/gradle/gists{/gist_id}","starred_url":"https://api.github.com/users/gradle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gradle/subscriptions","organizations_url":"https://api.github.com/users/gradle/orgs","repos_url":"https://api.github.com/users/gradle/repos","events_url":"https://api.github.com/users/gradle/events{/privacy}","received_events_url":"https://api.github.com/users/gradle/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/gradle/kotlin-dsl","description":"Kotlin language support for Gradle build scripts","fork":false,"url":"https://api.github.com/repos/gradle/kotlin-dsl","forks_url":"https://api.github.com/repos/gradle/kotlin-dsl/forks","keys_url":"https://api.github.com/repos/gradle/kotlin-dsl/keys{/key_id}","collaborators_url":"https://api.github.com/repos/gradle/kotlin-dsl/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/gradle/kotlin-dsl/teams","hooks_url":"https://api.github.com/repos/gradle/kotlin-dsl/hooks","issue_events_url":"https://api.github.com/repos/gradle/kotlin-dsl/issues/events{/number}","events_url":"https://api.github.com/repos/gradle/kotlin-dsl/events","assignees_url":"https://api.github.com/repos/gradle/kotlin-dsl/assignees{/user}","branches_url":"https://api.github.com/repos/gradle/kotlin-dsl/branches{/branch}","tags_url":"https://api.github.com/repos/gradle/kotlin-dsl/tags","blobs_url":"https://api.github.com/repos/gradle/kotlin-dsl/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/gradle/kotlin-dsl/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/gradle/kotlin-dsl/git/refs{/sha}","trees_url":"https://api.github.com/repos/gradle/kotlin-dsl/git/trees{/sha}","statuses_url":"https://api.github.com/repos/gradle/kotlin-dsl/statuses/{sha}","languages_url":"https://api.github.com/repos/gradle/kotlin-dsl/languages","stargazers_url":"https://api.github.com/repos/gradle/kotlin-dsl/stargazers","contributors_url":"https://api.github.com/repos/gradle/kotlin-dsl/contributors","subscribers_url":"https://api.github.com/repos/gradle/kotlin-dsl/subscribers","subscription_url":"https://api.github.com/repos/gradle/kotlin-dsl/subscription","commits_url":"https://api.github.com/repos/gradle/kotlin-dsl/commits{/sha}","git_commits_url":"https://api.github.com/repos/gradle/kotlin-dsl/git/commits{/sha}","comments_url":"https://api.github.com/repos/gradle/kotlin-dsl/comments{/number}","issue_comment_url":"https://api.github.com/repos/gradle/kotlin-dsl/issues/comments{/number}","contents_url":"https://api.github.com/repos/gradle/kotlin-dsl/contents/{+path}","compare_url":"https://api.github.com/repos/gradle/kotlin-dsl/compare/{base}...{head}","merges_url":"https://api.github.com/repos/gradle/kotlin-dsl/merges","archive_url":"https://api.github.com/repos/gradle/kotlin-dsl/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/gradle/kotlin-dsl/downloads","issues_url":"https://api.github.com/repos/gradle/kotlin-dsl/issues{/number}","pulls_url":"https://api.github.com/repos/gradle/kotlin-dsl/pulls{/number}","milestones_url":"https://api.github.com/repos/gradle/kotlin-dsl/milestones{/number}","notifications_url":"https://api.github.com/repos/gradle/kotlin-dsl/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/gradle/kotlin-dsl/labels{/name}","releases_url":"https://api.github.com/repos/gradle/kotlin-dsl/releases{/id}","deployments_url":"https://api.github.com/repos/gradle/kotlin-dsl/deployments","created_at":"2016-04-27T22:16:07Z","updated_at":"2018-06-05T17:47:31Z","pushed_at":"2018-06-05T20:06:06Z","git_url":"git://github.com/gradle/kotlin-dsl.git","ssh_url":"git@github.com:gradle/kotlin-dsl.git","clone_url":"https://github.com/gradle/kotlin-dsl.git","svn_url":"https://github.com/gradle/kotlin-dsl","homepage":"http://gradle.org/blog/kotlin-meets-gradle","size":5228,"stargazers_count":1566,"watchers_count":1566,"language":"Kotlin","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":160,"mirror_url":null,"archived":false,"open_issues_count":151,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":160,"open_issues":151,"watchers":1566,"default_branch":"master"}},"base":{"label":"gradle:develop","ref":"develop","sha":"b2882db35f4612e31366cb3e712142471ad326fc","user":{"login":"gradle","id":124156,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEyNDE1Ng==","avatar_url":"https://avatars2.githubusercontent.com/u/124156?v=4","gravatar_id":"","url":"https://api.github.com/users/gradle","html_url":"https://github.com/gradle","followers_url":"https://api.github.com/users/gradle/followers","following_url":"https://api.github.com/users/gradle/following{/other_user}","gists_url":"https://api.github.com/users/gradle/gists{/gist_id}","starred_url":"https://api.github.com/users/gradle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gradle/subscriptions","organizations_url":"https://api.github.com/users/gradle/orgs","repos_url":"https://api.github.com/users/gradle/repos","events_url":"https://api.github.com/users/gradle/events{/privacy}","received_events_url":"https://api.github.com/users/gradle/received_events","type":"Organization","site_admin":false},"repo":{"id":57252451,"node_id":"MDEwOlJlcG9zaXRvcnk1NzI1MjQ1MQ==","name":"kotlin-dsl","full_name":"gradle/kotlin-dsl","owner":{"login":"gradle","id":124156,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEyNDE1Ng==","avatar_url":"https://avatars2.githubusercontent.com/u/124156?v=4","gravatar_id":"","url":"https://api.github.com/users/gradle","html_url":"https://github.com/gradle","followers_url":"https://api.github.com/users/gradle/followers","following_url":"https://api.github.com/users/gradle/following{/other_user}","gists_url":"https://api.github.com/users/gradle/gists{/gist_id}","starred_url":"https://api.github.com/users/gradle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gradle/subscriptions","organizations_url":"https://api.github.com/users/gradle/orgs","repos_url":"https://api.github.com/users/gradle/repos","events_url":"https://api.github.com/users/gradle/events{/privacy}","received_events_url":"https://api.github.com/users/gradle/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/gradle/kotlin-dsl","description":"Kotlin language support for Gradle build scripts","fork":false,"url":"https://api.github.com/repos/gradle/kotlin-dsl","forks_url":"https://api.github.com/repos/gradle/kotlin-dsl/forks","keys_url":"https://api.github.com/repos/gradle/kotlin-dsl/keys{/key_id}","collaborators_url":"https://api.github.com/repos/gradle/kotlin-dsl/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/gradle/kotlin-dsl/teams","hooks_url":"https://api.github.com/repos/gradle/kotlin-dsl/hooks","issue_events_url":"https://api.github.com/repos/gradle/kotlin-dsl/issues/events{/number}","events_url":"https://api.github.com/repos/gradle/kotlin-dsl/events","assignees_url":"https://api.github.com/repos/gradle/kotlin-dsl/assignees{/user}","branches_url":"https://api.github.com/repos/gradle/kotlin-dsl/branches{/branch}","tags_url":"https://api.github.com/repos/gradle/kotlin-dsl/tags","blobs_url":"https://api.github.com/repos/gradle/kotlin-dsl/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/gradle/kotlin-dsl/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/gradle/kotlin-dsl/git/refs{/sha}","trees_url":"https://api.github.com/repos/gradle/kotlin-dsl/git/trees{/sha}","statuses_url":"https://api.github.com/repos/gradle/kotlin-dsl/statuses/{sha}","languages_url":"https://api.github.com/repos/gradle/kotlin-dsl/languages","stargazers_url":"https://api.github.com/repos/gradle/kotlin-dsl/stargazers","contributors_url":"https://api.github.com/repos/gradle/kotlin-dsl/contributors","subscribers_url":"https://api.github.com/repos/gradle/kotlin-dsl/subscribers","subscription_url":"https://api.github.com/repos/gradle/kotlin-dsl/subscription","commits_url":"https://api.github.com/repos/gradle/kotlin-dsl/commits{/sha}","git_commits_url":"https://api.github.com/repos/gradle/kotlin-dsl/git/commits{/sha}","comments_url":"https://api.github.com/repos/gradle/kotlin-dsl/comments{/number}","issue_comment_url":"https://api.github.com/repos/gradle/kotlin-dsl/issues/comments{/number}","contents_url":"https://api.github.com/repos/gradle/kotlin-dsl/contents/{+path}","compare_url":"https://api.github.com/repos/gradle/kotlin-dsl/compare/{base}...{head}","merges_url":"https://api.github.com/repos/gradle/kotlin-dsl/merges","archive_url":"https://api.github.com/repos/gradle/kotlin-dsl/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/gradle/kotlin-dsl/downloads","issues_url":"https://api.github.com/repos/gradle/kotlin-dsl/issues{/number}","pulls_url":"https://api.github.com/repos/gradle/kotlin-dsl/pulls{/number}","milestones_url":"https://api.github.com/repos/gradle/kotlin-dsl/milestones{/number}","notifications_url":"https://api.github.com/repos/gradle/kotlin-dsl/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/gradle/kotlin-dsl/labels{/name}","releases_url":"https://api.github.com/repos/gradle/kotlin-dsl/releases{/id}","deployments_url":"https://api.github.com/repos/gradle/kotlin-dsl/deployments","created_at":"2016-04-27T22:16:07Z","updated_at":"2018-06-05T17:47:31Z","pushed_at":"2018-06-05T20:06:06Z","git_url":"git://github.com/gradle/kotlin-dsl.git","ssh_url":"git@github.com:gradle/kotlin-dsl.git","clone_url":"https://github.com/gradle/kotlin-dsl.git","svn_url":"https://github.com/gradle/kotlin-dsl","homepage":"http://gradle.org/blog/kotlin-meets-gradle","size":5228,"stargazers_count":1566,"watchers_count":1566,"language":"Kotlin","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":160,"mirror_url":null,"archived":false,"open_issues_count":151,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":160,"open_issues":151,"watchers":1566,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/gradle/kotlin-dsl/pulls/887"},"html":{"href":"https://github.com/gradle/kotlin-dsl/pull/887"},"issue":{"href":"https://api.github.com/repos/gradle/kotlin-dsl/issues/887"},"comments":{"href":"https://api.github.com/repos/gradle/kotlin-dsl/issues/887/comments"},"review_comments":{"href":"https://api.github.com/repos/gradle/kotlin-dsl/pulls/887/comments"},"review_comment":{"href":"https://api.github.com/repos/gradle/kotlin-dsl/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/gradle/kotlin-dsl/pulls/887/commits"},"statuses":{"href":"https://api.github.com/repos/gradle/kotlin-dsl/statuses/80aaf39a33b277d4f23b86114c172a64cbf04827"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"bamboo"}}