{"action":"created","issue":{"url":"https://api.github.com/repos/Microsoft/visualfsharp/issues/688","labels_url":"https://api.github.com/repos/Microsoft/visualfsharp/issues/688/labels{/name}","comments_url":"https://api.github.com/repos/Microsoft/visualfsharp/issues/688/comments","events_url":"https://api.github.com/repos/Microsoft/visualfsharp/issues/688/events","html_url":"https://github.com/Microsoft/visualfsharp/issues/688","id":112045433,"number":688,"title":"How to help with building F# for the CoreCLR","user":{"login":"KevinRansom","id":5175830,"avatar_url":"https://avatars.githubusercontent.com/u/5175830?v=3","gravatar_id":"","url":"https://api.github.com/users/KevinRansom","html_url":"https://github.com/KevinRansom","followers_url":"https://api.github.com/users/KevinRansom/followers","following_url":"https://api.github.com/users/KevinRansom/following{/other_user}","gists_url":"https://api.github.com/users/KevinRansom/gists{/gist_id}","starred_url":"https://api.github.com/users/KevinRansom/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/KevinRansom/subscriptions","organizations_url":"https://api.github.com/users/KevinRansom/orgs","repos_url":"https://api.github.com/users/KevinRansom/repos","events_url":"https://api.github.com/users/KevinRansom/events{/privacy}","received_events_url":"https://api.github.com/users/KevinRansom/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":2,"created_at":"2015-10-18T22:16:10Z","updated_at":"2015-10-19T17:29:58Z","closed_at":null,"body":"Okay now that we have a branch that builds the coreclr version of F# I think it is time that the load can be shared.  @ctaggart  @rojepp have both made a great start.  It's probably going to be more useful if we agree what needs to be done and then work on each item to completion.\r\n\r\nThese are the most immediate items on our agenda.  That means they are the items we believe need to be completed successfully for us to get to the end point which is an OSS project that builds a platform independent F# compiler and REPL that runs on Windows/Mac and Linux.\r\n\r\nThis list is nowhere near complete feel free to open issues with suggestions about what needs to be done, and in what order.  I guess we will manage it, in a similar way to how we managed the F# 4.0 work.  It should be noted that PR's not related to this work are still very welcome and will be gratefully received.\r\n\r\n**Status Page:  https://github.com/Microsoft/visualfsharp/wiki/F%23-for-CoreCLR---Status**\r\n\r\n**About Tooling:**\r\n\r\nWe aim to conforms to the latest development tools standards of the DotNet Foundation OSS projects. _(Please note: that F# is associated with the F# Foundation http://www.fsharp.org and not the .NET Foundation)._\r\nIn general we prefer solutions based on the tools selected by the Roslyn, NetFX and CoreCLR teams.  The benefit of aligning with those teams, is that we can leverage their team resources, staff, contributors and learnings.  It is our preference that where the .NetCore, .NetFX and Roslyn team have picked a tool, we don't use an alternate tool that does a similar Job.\r\n\r\n**About DNX:**\r\n\r\nDNX is a packaging of the CoreCLR.  When Roslyn Compiler ships it too will be a packaging of the CoreCLR as will the F# Compiler.  At any one moment in time, we may all ship with different versions of the CoreCLR and the various managed assemblies that comprise it.  We will not bind the F# compiler to a particular packaging, we will pick which versions of all of the dependencies that we use.  If we download specific versions of DNX or Roslyn it will be a point in time fix to a specific need.\r\n\r\nIn order to ensure that the F# compiler is compatible with a specific build of DNX we need to have some test cases that verify that the F# compiler does the right thing W.R.T. DNX.\r\n\r\n**Things to do:**\r\n\r\n1. Add Unix testing to CI (currently App Veyor)\r\n  + __Note:__ Roslyn and NetFX and CoreCLR use Jenkins, the advantage to us of this is we have a lab of MACS wired up for Jenkins testing.\r\n  + However, the F# community uses other tools, in this case we would consider a non-jenkins alternative.\r\n1. Add FSLEX and FS YACC to OSS build, make them build.\r\n  + port FSLEx and FSYacc to CoreCLR\r\n1. Make a project to build a Nuget package for the current LKG.\r\n  + update the build to use the LKG from Nuget.\r\n1. Make a project to build a Nuget v3.0 FSharp.Core package, for all profiles that we currently support including coreclr.\r\n1. Update the OSS build to use project.json to express FSharp.core project dependencies for all flavours of fsharp.core that we currently build.\r\n1. Port the OSS build to use the CoreClr version of MSBUILD.\r\n1. Merge master changes into update coreclr branch.\r\n1. Port the Nunit tests to XUnit 2.0.  (XUnit is what Roslyn and .NetCore use).\r\n1. Make a Nuget LKG package based on the CoreCLR compiler.\r\n1. Make Visual Studio and Xamarin F# templates use Nuget version of FSharp.Core.\r\n1. Make a Nuget package for the coreclr version of the fsharp compiler.\r\n   + Supports 64 bit Windows/Linux/MAC.\r\n   + Supports 32 bit Windows/Linux/MAC.\r\n1. Make Visual Studio templates and a VSIX that build using the coreclr.\r\n1. Clean up Cambridge (fsharp) test suite, identify cross-platform issues (if any).\r\n   + Refactor cross-platform issues out of suite, design a platform specific test strategy.\r\n   + Port Cambridge suite test cases to XUnit 2.0.\r\n1. Clean up QA suite (fsharpqa), identify cross-platform issues (if any).\r\n   + Refactor cross-platform issues out of suite, design a platform specific test strategy.\r\n   + Port QA suite test cases to XUnit 2.0.\r\n1. Add Support for Cross-Platform portable PDBs.\r\n1. Design a compiler/assembly resolution interface.  Current compiler/FSI have a blended resolution strategy.\r\n   + Implement a file system resolver\r\n   + Implement a nuget resolver\r\n1. Add back to the Compiler support for managed resources / Native Resources\r\n1. Enable FSI on CoreCLR\r\n1. Design TypeProvider interface to support compiler reified types.  Makes it easier for TP authors to reason about what types are available to the generated code.\r\n1. Design implement a lighter ref-emit replacement for generative TP's\r\n1. Debian packaging for compiler / FSI deployment\r\n1. DNX F# test cases, create a set of test cases to ensure that the F# compiler can generate DNX compatible apps. \r\nThis is just a start at the list, I'm sure there are many thousands of items I left off, feel free to start issues discussing the omissions.\r\n\r\nThere will be a status page where the list of items and status of them will be kept up to date and progress is recorded similar to how we did F# 4.0.\r\n\r\n** Status: https://github.com/Microsoft/visualfsharp/wiki/F%23-for-CoreCLR---Status**\r\n\r\nThanks\r\n\r\nKevin"},"comment":{"url":"https://api.github.com/repos/Microsoft/visualfsharp/issues/comments/149289730","html_url":"https://github.com/Microsoft/visualfsharp/issues/688#issuecomment-149289730","issue_url":"https://api.github.com/repos/Microsoft/visualfsharp/issues/688","id":149289730,"user":{"login":"KevinRansom","id":5175830,"avatar_url":"https://avatars.githubusercontent.com/u/5175830?v=3","gravatar_id":"","url":"https://api.github.com/users/KevinRansom","html_url":"https://github.com/KevinRansom","followers_url":"https://api.github.com/users/KevinRansom/followers","following_url":"https://api.github.com/users/KevinRansom/following{/other_user}","gists_url":"https://api.github.com/users/KevinRansom/gists{/gist_id}","starred_url":"https://api.github.com/users/KevinRansom/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/KevinRansom/subscriptions","organizations_url":"https://api.github.com/users/KevinRansom/orgs","repos_url":"https://api.github.com/users/KevinRansom/repos","events_url":"https://api.github.com/users/KevinRansom/events{/privacy}","received_events_url":"https://api.github.com/users/KevinRansom/received_events","type":"User","site_admin":false},"created_at":"2015-10-19T17:29:58Z","updated_at":"2015-10-19T17:29:58Z","body":"Excellent, thanks for the clarification."}}