{"action":"created","comment":{"url":"https://api.github.com/repos/dotnet/coreclr/pulls/comments/37791253","id":37791253,"diff_hunk":"@@ -0,0 +1,335 @@\n+Managed Executables with Native Code\n+===\n+\n+# Motivation\n+\n+Since shipping the .NET Runtime over 10 years ago, there has only been one file format which can be used to distribute and deploy managed code components: the CLI file format. This format expresses all execution as machine independent intermediate language (IL) which must either be interpreted or compiled to native code sometime before the code is run. This lack of an efficient, directly executable file format is a very significant difference between unmanaged and managed code, and has become more and more problematic over time. Problems include\n+\n+- Native code generation takes a relatively long time and consumes power.\n+- For security / tamper-resistance, there is a very strong desire to validate any native code that gets run (e.g. code is signed).\n+- Existing native codegen strategies produce brittle code such that when the runtime or low level framework is updated, all native code is invalidated, which forces the need for recompilation of all that code.\n+  \n+All of these problems and complexity are things that unmanaged code simply avoids. They are avoided because unmanaged code has a format with the following characteristics\n+\n+- The executable format can be efficiently executed directly. Very little needs to be updated at runtime (binding _some_ external references) to prepare for execution. What does need to be updated can be done lazily.\n+- As long as a set of known versioning rules are followed, version compatible changes in one executable do not affect any other executable (you can update your executables independently of one another).\n+- The format is clearly defined, that allows variety of compilers to produce it.","path":"Documentation/botr/readytorun-overview.md","position":16,"original_position":16,"commit_id":"66e07fd8290757db6d5ea508026dceb3355262b2","original_commit_id":"66e07fd8290757db6d5ea508026dceb3355262b2","user":{"login":"adityamandaleeka","id":219224,"avatar_url":"https://avatars.githubusercontent.com/u/219224?v=3","gravatar_id":"","url":"https://api.github.com/users/adityamandaleeka","html_url":"https://github.com/adityamandaleeka","followers_url":"https://api.github.com/users/adityamandaleeka/followers","following_url":"https://api.github.com/users/adityamandaleeka/following{/other_user}","gists_url":"https://api.github.com/users/adityamandaleeka/gists{/gist_id}","starred_url":"https://api.github.com/users/adityamandaleeka/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/adityamandaleeka/subscriptions","organizations_url":"https://api.github.com/users/adityamandaleeka/orgs","repos_url":"https://api.github.com/users/adityamandaleeka/repos","events_url":"https://api.github.com/users/adityamandaleeka/events{/privacy}","received_events_url":"https://api.github.com/users/adityamandaleeka/received_events","type":"User","site_admin":false},"body":"that -> which?","created_at":"2015-08-24T19:08:28Z","updated_at":"2015-08-24T19:08:28Z","html_url":"https://github.com/dotnet/coreclr/pull/1428#discussion_r37791253","pull_request_url":"https://api.github.com/repos/dotnet/coreclr/pulls/1428","_links":{"self":{"href":"https://api.github.com/repos/dotnet/coreclr/pulls/comments/37791253"},"html":{"href":"https://github.com/dotnet/coreclr/pull/1428#discussion_r37791253"},"pull_request":{"href":"https://api.github.com/repos/dotnet/coreclr/pulls/1428"}}},"pull_request":{"url":"https://api.github.com/repos/dotnet/coreclr/pulls/1428","id":43166683,"html_url":"https://github.com/dotnet/coreclr/pull/1428","diff_url":"https://github.com/dotnet/coreclr/pull/1428.diff","patch_url":"https://github.com/dotnet/coreclr/pull/1428.patch","issue_url":"https://api.github.com/repos/dotnet/coreclr/issues/1428","number":1428,"state":"open","locked":false,"title":"Add ReadyToRun overview to documentation","user":{"login":"jkotas","id":6668460,"avatar_url":"https://avatars.githubusercontent.com/u/6668460?v=3","gravatar_id":"","url":"https://api.github.com/users/jkotas","html_url":"https://github.com/jkotas","followers_url":"https://api.github.com/users/jkotas/followers","following_url":"https://api.github.com/users/jkotas/following{/other_user}","gists_url":"https://api.github.com/users/jkotas/gists{/gist_id}","starred_url":"https://api.github.com/users/jkotas/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jkotas/subscriptions","organizations_url":"https://api.github.com/users/jkotas/orgs","repos_url":"https://api.github.com/users/jkotas/repos","events_url":"https://api.github.com/users/jkotas/events{/privacy}","received_events_url":"https://api.github.com/users/jkotas/received_events","type":"User","site_admin":false},"body":"","created_at":"2015-08-24T11:56:49Z","updated_at":"2015-08-24T19:08:28Z","closed_at":null,"merged_at":null,"merge_commit_sha":"3bf2dab269f6dcf0595a62bbdc5fe6bda9255fae","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/dotnet/coreclr/pulls/1428/commits","review_comments_url":"https://api.github.com/repos/dotnet/coreclr/pulls/1428/comments","review_comment_url":"https://api.github.com/repos/dotnet/coreclr/pulls/comments{/number}","comments_url":"https://api.github.com/repos/dotnet/coreclr/issues/1428/comments","statuses_url":"https://api.github.com/repos/dotnet/coreclr/statuses/66e07fd8290757db6d5ea508026dceb3355262b2","head":{"label":"jkotas:readytorun-doc","ref":"readytorun-doc","sha":"66e07fd8290757db6d5ea508026dceb3355262b2","user":{"login":"jkotas","id":6668460,"avatar_url":"https://avatars.githubusercontent.com/u/6668460?v=3","gravatar_id":"","url":"https://api.github.com/users/jkotas","html_url":"https://github.com/jkotas","followers_url":"https://api.github.com/users/jkotas/followers","following_url":"https://api.github.com/users/jkotas/following{/other_user}","gists_url":"https://api.github.com/users/jkotas/gists{/gist_id}","starred_url":"https://api.github.com/users/jkotas/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jkotas/subscriptions","organizations_url":"https://api.github.com/users/jkotas/orgs","repos_url":"https://api.github.com/users/jkotas/repos","events_url":"https://api.github.com/users/jkotas/events{/privacy}","received_events_url":"https://api.github.com/users/jkotas/received_events","type":"User","site_admin":false},"repo":{"id":30278571,"name":"coreclr","full_name":"jkotas/coreclr","owner":{"login":"jkotas","id":6668460,"avatar_url":"https://avatars.githubusercontent.com/u/6668460?v=3","gravatar_id":"","url":"https://api.github.com/users/jkotas","html_url":"https://github.com/jkotas","followers_url":"https://api.github.com/users/jkotas/followers","following_url":"https://api.github.com/users/jkotas/following{/other_user}","gists_url":"https://api.github.com/users/jkotas/gists{/gist_id}","starred_url":"https://api.github.com/users/jkotas/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jkotas/subscriptions","organizations_url":"https://api.github.com/users/jkotas/orgs","repos_url":"https://api.github.com/users/jkotas/repos","events_url":"https://api.github.com/users/jkotas/events{/privacy}","received_events_url":"https://api.github.com/users/jkotas/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/jkotas/coreclr","description":"This repo contains the .NET Core runtime, called CoreCLR. It is an execution engine for .NET apps, performing functions such as IL byte code loading, compilation to machine code and garbage collection. The repo contains the complete up-to-date CoreCLR codebase.","fork":true,"url":"https://api.github.com/repos/jkotas/coreclr","forks_url":"https://api.github.com/repos/jkotas/coreclr/forks","keys_url":"https://api.github.com/repos/jkotas/coreclr/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jkotas/coreclr/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jkotas/coreclr/teams","hooks_url":"https://api.github.com/repos/jkotas/coreclr/hooks","issue_events_url":"https://api.github.com/repos/jkotas/coreclr/issues/events{/number}","events_url":"https://api.github.com/repos/jkotas/coreclr/events","assignees_url":"https://api.github.com/repos/jkotas/coreclr/assignees{/user}","branches_url":"https://api.github.com/repos/jkotas/coreclr/branches{/branch}","tags_url":"https://api.github.com/repos/jkotas/coreclr/tags","blobs_url":"https://api.github.com/repos/jkotas/coreclr/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jkotas/coreclr/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jkotas/coreclr/git/refs{/sha}","trees_url":"https://api.github.com/repos/jkotas/coreclr/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jkotas/coreclr/statuses/{sha}","languages_url":"https://api.github.com/repos/jkotas/coreclr/languages","stargazers_url":"https://api.github.com/repos/jkotas/coreclr/stargazers","contributors_url":"https://api.github.com/repos/jkotas/coreclr/contributors","subscribers_url":"https://api.github.com/repos/jkotas/coreclr/subscribers","subscription_url":"https://api.github.com/repos/jkotas/coreclr/subscription","commits_url":"https://api.github.com/repos/jkotas/coreclr/commits{/sha}","git_commits_url":"https://api.github.com/repos/jkotas/coreclr/git/commits{/sha}","comments_url":"https://api.github.com/repos/jkotas/coreclr/comments{/number}","issue_comment_url":"https://api.github.com/repos/jkotas/coreclr/issues/comments{/number}","contents_url":"https://api.github.com/repos/jkotas/coreclr/contents/{+path}","compare_url":"https://api.github.com/repos/jkotas/coreclr/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jkotas/coreclr/merges","archive_url":"https://api.github.com/repos/jkotas/coreclr/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jkotas/coreclr/downloads","issues_url":"https://api.github.com/repos/jkotas/coreclr/issues{/number}","pulls_url":"https://api.github.com/repos/jkotas/coreclr/pulls{/number}","milestones_url":"https://api.github.com/repos/jkotas/coreclr/milestones{/number}","notifications_url":"https://api.github.com/repos/jkotas/coreclr/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jkotas/coreclr/labels{/name}","releases_url":"https://api.github.com/repos/jkotas/coreclr/releases{/id}","created_at":"2015-02-04T03:09:04Z","updated_at":"2015-05-07T21:47:54Z","pushed_at":"2015-08-24T15:39:36Z","git_url":"git://github.com/jkotas/coreclr.git","ssh_url":"git@github.com:jkotas/coreclr.git","clone_url":"https://github.com/jkotas/coreclr.git","svn_url":"https://github.com/jkotas/coreclr","homepage":"","size":37009,"stargazers_count":0,"watchers_count":0,"language":"C#","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"dotnet:master","ref":"master","sha":"5d8b6c70296a4433745e81eaaff44238abb468bf","user":{"login":"dotnet","id":9141961,"avatar_url":"https://avatars.githubusercontent.com/u/9141961?v=3","gravatar_id":"","url":"https://api.github.com/users/dotnet","html_url":"https://github.com/dotnet","followers_url":"https://api.github.com/users/dotnet/followers","following_url":"https://api.github.com/users/dotnet/following{/other_user}","gists_url":"https://api.github.com/users/dotnet/gists{/gist_id}","starred_url":"https://api.github.com/users/dotnet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dotnet/subscriptions","organizations_url":"https://api.github.com/users/dotnet/orgs","repos_url":"https://api.github.com/users/dotnet/repos","events_url":"https://api.github.com/users/dotnet/events{/privacy}","received_events_url":"https://api.github.com/users/dotnet/received_events","type":"Organization","site_admin":false},"repo":{"id":30092893,"name":"coreclr","full_name":"dotnet/coreclr","owner":{"login":"dotnet","id":9141961,"avatar_url":"https://avatars.githubusercontent.com/u/9141961?v=3","gravatar_id":"","url":"https://api.github.com/users/dotnet","html_url":"https://github.com/dotnet","followers_url":"https://api.github.com/users/dotnet/followers","following_url":"https://api.github.com/users/dotnet/following{/other_user}","gists_url":"https://api.github.com/users/dotnet/gists{/gist_id}","starred_url":"https://api.github.com/users/dotnet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dotnet/subscriptions","organizations_url":"https://api.github.com/users/dotnet/orgs","repos_url":"https://api.github.com/users/dotnet/repos","events_url":"https://api.github.com/users/dotnet/events{/privacy}","received_events_url":"https://api.github.com/users/dotnet/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/dotnet/coreclr","description":"This repo contains the .NET Core runtime, called CoreCLR, and the base library, called mscorlib. It includes the garbage collector, JIT compiler, base .NET data types and many low-level classes.","fork":false,"url":"https://api.github.com/repos/dotnet/coreclr","forks_url":"https://api.github.com/repos/dotnet/coreclr/forks","keys_url":"https://api.github.com/repos/dotnet/coreclr/keys{/key_id}","collaborators_url":"https://api.github.com/repos/dotnet/coreclr/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/dotnet/coreclr/teams","hooks_url":"https://api.github.com/repos/dotnet/coreclr/hooks","issue_events_url":"https://api.github.com/repos/dotnet/coreclr/issues/events{/number}","events_url":"https://api.github.com/repos/dotnet/coreclr/events","assignees_url":"https://api.github.com/repos/dotnet/coreclr/assignees{/user}","branches_url":"https://api.github.com/repos/dotnet/coreclr/branches{/branch}","tags_url":"https://api.github.com/repos/dotnet/coreclr/tags","blobs_url":"https://api.github.com/repos/dotnet/coreclr/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/dotnet/coreclr/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/dotnet/coreclr/git/refs{/sha}","trees_url":"https://api.github.com/repos/dotnet/coreclr/git/trees{/sha}","statuses_url":"https://api.github.com/repos/dotnet/coreclr/statuses/{sha}","languages_url":"https://api.github.com/repos/dotnet/coreclr/languages","stargazers_url":"https://api.github.com/repos/dotnet/coreclr/stargazers","contributors_url":"https://api.github.com/repos/dotnet/coreclr/contributors","subscribers_url":"https://api.github.com/repos/dotnet/coreclr/subscribers","subscription_url":"https://api.github.com/repos/dotnet/coreclr/subscription","commits_url":"https://api.github.com/repos/dotnet/coreclr/commits{/sha}","git_commits_url":"https://api.github.com/repos/dotnet/coreclr/git/commits{/sha}","comments_url":"https://api.github.com/repos/dotnet/coreclr/comments{/number}","issue_comment_url":"https://api.github.com/repos/dotnet/coreclr/issues/comments{/number}","contents_url":"https://api.github.com/repos/dotnet/coreclr/contents/{+path}","compare_url":"https://api.github.com/repos/dotnet/coreclr/compare/{base}...{head}","merges_url":"https://api.github.com/repos/dotnet/coreclr/merges","archive_url":"https://api.github.com/repos/dotnet/coreclr/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/dotnet/coreclr/downloads","issues_url":"https://api.github.com/repos/dotnet/coreclr/issues{/number}","pulls_url":"https://api.github.com/repos/dotnet/coreclr/pulls{/number}","milestones_url":"https://api.github.com/repos/dotnet/coreclr/milestones{/number}","notifications_url":"https://api.github.com/repos/dotnet/coreclr/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/dotnet/coreclr/labels{/name}","releases_url":"https://api.github.com/repos/dotnet/coreclr/releases{/id}","created_at":"2015-01-30T22:10:02Z","updated_at":"2015-08-24T18:48:46Z","pushed_at":"2015-08-24T18:57:32Z","git_url":"git://github.com/dotnet/coreclr.git","ssh_url":"git@github.com:dotnet/coreclr.git","clone_url":"https://github.com/dotnet/coreclr.git","svn_url":"https://github.com/dotnet/coreclr","homepage":"http://dotnet.github.io/core/","size":52683,"stargazers_count":5074,"watchers_count":5074,"language":"C#","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1010,"mirror_url":null,"open_issues_count":243,"forks":1010,"open_issues":243,"watchers":5074,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/dotnet/coreclr/pulls/1428"},"html":{"href":"https://github.com/dotnet/coreclr/pull/1428"},"issue":{"href":"https://api.github.com/repos/dotnet/coreclr/issues/1428"},"comments":{"href":"https://api.github.com/repos/dotnet/coreclr/issues/1428/comments"},"review_comments":{"href":"https://api.github.com/repos/dotnet/coreclr/pulls/1428/comments"},"review_comment":{"href":"https://api.github.com/repos/dotnet/coreclr/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/dotnet/coreclr/pulls/1428/commits"},"statuses":{"href":"https://api.github.com/repos/dotnet/coreclr/statuses/66e07fd8290757db6d5ea508026dceb3355262b2"}}}}