{"action":"created","issue":{"url":"https://api.github.com/repos/dotnet/orleans/issues/368","labels_url":"https://api.github.com/repos/dotnet/orleans/issues/368/labels{/name}","comments_url":"https://api.github.com/repos/dotnet/orleans/issues/368/comments","events_url":"https://api.github.com/repos/dotnet/orleans/issues/368/events","html_url":"https://github.com/dotnet/orleans/issues/368","id":72289980,"number":368,"title":"Contribution idea: Port Orleans to coreclr","user":{"login":"gabikliot","id":10171207,"avatar_url":"https://avatars.githubusercontent.com/u/10171207?v=3","gravatar_id":"","url":"https://api.github.com/users/gabikliot","html_url":"https://github.com/gabikliot","followers_url":"https://api.github.com/users/gabikliot/followers","following_url":"https://api.github.com/users/gabikliot/following{/other_user}","gists_url":"https://api.github.com/users/gabikliot/gists{/gist_id}","starred_url":"https://api.github.com/users/gabikliot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gabikliot/subscriptions","organizations_url":"https://api.github.com/users/gabikliot/orgs","repos_url":"https://api.github.com/users/gabikliot/repos","events_url":"https://api.github.com/users/gabikliot/events{/privacy}","received_events_url":"https://api.github.com/users/gabikliot/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/dotnet/orleans/labels/enhancement","name":"enhancement","color":"84b6eb"},{"url":"https://api.github.com/repos/dotnet/orleans/labels/help%20wanted","name":"help wanted","color":"159818"},{"url":"https://api.github.com/repos/dotnet/orleans/labels/work-in-progress","name":"work-in-progress","color":"fad8c7"}],"state":"open","locked":false,"assignee":null,"milestone":{"url":"https://api.github.com/repos/dotnet/orleans/milestones/5","html_url":"https://github.com/dotnet/orleans/milestones/CoreCLR","labels_url":"https://api.github.com/repos/dotnet/orleans/milestones/5/labels","id":1201289,"number":5,"title":"CoreCLR","description":null,"creator":{"login":"jthelin","id":10134641,"avatar_url":"https://avatars.githubusercontent.com/u/10134641?v=3","gravatar_id":"","url":"https://api.github.com/users/jthelin","html_url":"https://github.com/jthelin","followers_url":"https://api.github.com/users/jthelin/followers","following_url":"https://api.github.com/users/jthelin/following{/other_user}","gists_url":"https://api.github.com/users/jthelin/gists{/gist_id}","starred_url":"https://api.github.com/users/jthelin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jthelin/subscriptions","organizations_url":"https://api.github.com/users/jthelin/orgs","repos_url":"https://api.github.com/users/jthelin/repos","events_url":"https://api.github.com/users/jthelin/events{/privacy}","received_events_url":"https://api.github.com/users/jthelin/received_events","type":"User","site_admin":false},"open_issues":3,"closed_issues":10,"state":"open","created_at":"2015-07-09T19:24:55Z","updated_at":"2015-10-14T04:03:42Z","due_on":null,"closed_at":null},"comments":44,"created_at":"2015-04-30T21:44:49Z","updated_at":"2015-10-30T15:43:50Z","closed_at":null,"body":"Port the Orleans code to run on [coreclr](https://github.com/dotnet/coreclr).\r\nSome APIs from the full .NET got deprecated in coreclr (aka .NET Core), mainly around files and reflection, but at large the porting effort shouldn't be too big. This will allow to run Orleans efficiently across different platforms.\r\nFirst time raised in https://github.com/dotnet/orleans/issues/29#issuecomment-97694888.\r\n\r\n-------------------------\r\n\r\n**Tools:**\r\n[Coreclr api search](https://packagesearch.azurewebsites.net/)\r\n[.NET API Usage](http://dotnetstatus.azurewebsites.net/usage)\r\n[.NET Portability Analyzer](https://visualstudiogallery.msdn.microsoft.com/1177943e-cfb7-4822-a8a6-e56c7905292b) - download and Install\r\n[.NET Portability Analyzer Usage](http://blogs.msdn.com/b/dotnet/archive/2014/08/06/leveraging-existing-code-across-net-platforms.aspx)\r\n\r\n**Progress so far**: \r\n[CoreCLR milestones](https://github.com/dotnet/orleans/issues?utf8=%E2%9C%93&q=milestone%3ACoreCLR)\r\n[ApiPortabilityAnalysis result file for all projects](https://github.com/dotnet/orleans/blob/master/misc/ApiPortabilityAnalysis-AllProjects-October.08.2015.htm)\r\n\r\n-------------------------\r\nThere are 2 types of issues: \r\n(a) easy, just change an API\r\n(b) deeper profound issues where API was deprecated or changed significantly and we will need to investigate other ways to achieve the same functionality:\r\n\r\n**Up got grabs - easy issues** - just grab one, fix and submit a PR to master branch:\r\n- [ ] `Type.IsInterface`-> `Type.GetTypeInfo.IsInterface` (`IsClass`, `IsGenericType` , `IsAbstract`, `IsPrimitive`, `IsEnum`) (wait until #528 is merged).\r\n- [ ] `System.Data` and `System.Transactions` - used in SQL utils. Create a separate OrleansSQLUtils project and move all [Relational Storage](https://github.com/dotnet/orleans/tree/master/src/Orleans/RelationalStorage) code there.\r\n- [ ] `XmlTextWriter` and `XMLNode.SelectNodes` - not supported in .NET Core. Investigate and propose alternative options to parse xml file (our current config file comes in xml format).\r\n- [ ] `System.Management.ManagementObjectCollection` -  not supported in .NET Core. Investigate and propose alternative options (if `ManagementObject` itself is supported). We use it now in one place, to find TotalPhysicalMemory.\r\n- [ ] ` Dns.GetHostAddresses` - not supported in .NET Core. Investigate and propose alternative options to find DNS name. We only use it for logging now, no logic relies on it.\r\n- [ ] `System.String.ToLower(CultureInfo.InvariantCulture)` -> Use `CultureInfo.TextInfo.ToLower(String)` instead\r\n- [ ] `System.UriTypeConverter` - not supported in .NET Core. Investigate and propose alternative options \r\n- [ ] `System.Diagnostics.Process.Handle` -> `System.Diagnostics.Process.SafeHandle`\r\n\r\n**Need to investigate and consider profound rewrite** - feel to open a GH issue with ideas on how to handle each one of those issues (separate issue for each) : \r\n- [ ] `System.CodeDom.CodeTypeParameter` - should be solved by #528.\r\n- [ ] Remove usage of App Domains https://github.com/dotnet/coreclr/issues/919\r\n- [ ] Revisit Assembly Loading (`LoadFrom` -> `AsemblyLoadContext`, Location,...)\r\n- [ ] `Environment.UserName`\r\n- [ ] `CallContext.LogicalSetData`\r\n- [ ] `PerformanceCounter` - not supported in .NET Core.\r\n- [ ] `SerializationInfo` - not supported in .NET Core.\r\n- [ ] `BinaryFormatter.Serialize`\r\n- [ ] `System.Runtime.Serialization.FormatterServices.GetUninitializedObject`\r\n- [ ] `System.Reflection.Assembly` - not supported in .NET Core.\r\n\r\n-------------------------\r\n\r\n**Already done issues (for progress tracking):**\r\n- [x] `TextReader.Close` -> `TextReader.Dispose`\r\n- [x] `Socket.Close` -> `Socket.Dispose`\r\n- [x] `Delegate.CreateDelegate` -> `MethodInfo.CreateDelegate`\r\n- [x] `ApplicationException(string)`\r\n\r\n"},"comment":{"url":"https://api.github.com/repos/dotnet/orleans/issues/comments/152560487","html_url":"https://github.com/dotnet/orleans/issues/368#issuecomment-152560487","issue_url":"https://api.github.com/repos/dotnet/orleans/issues/368","id":152560487,"user":{"login":"galvesribeiro","id":4714040,"avatar_url":"https://avatars.githubusercontent.com/u/4714040?v=3","gravatar_id":"","url":"https://api.github.com/users/galvesribeiro","html_url":"https://github.com/galvesribeiro","followers_url":"https://api.github.com/users/galvesribeiro/followers","following_url":"https://api.github.com/users/galvesribeiro/following{/other_user}","gists_url":"https://api.github.com/users/galvesribeiro/gists{/gist_id}","starred_url":"https://api.github.com/users/galvesribeiro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/galvesribeiro/subscriptions","organizations_url":"https://api.github.com/users/galvesribeiro/orgs","repos_url":"https://api.github.com/users/galvesribeiro/repos","events_url":"https://api.github.com/users/galvesribeiro/events{/privacy}","received_events_url":"https://api.github.com/users/galvesribeiro/received_events","type":"User","site_admin":false},"created_at":"2015-10-30T15:43:50Z","updated_at":"2015-10-30T15:43:50Z","body":"Just to let every1 know, since there was no progress being made on the Type -> TypeInfo since august, I'm working on it now and will submit a PR soon.\r\n\r\nThanks"}}