Porting Microsoft's CoreCLR, CoreFX, and PowerShell to FreeBSD
Student: Mateus de Morais (mateus@mateus.tech)
- Mentors:
David Naylor (dbn@freebsd.org)
David Chisnall (theraven@freebsd.org)
Project title
Porting the .NET Core SDK & Runtime and PowerShell to the FreeBSD operating system.
Project description & Approach to solving the problem
The idea is to ultimately port PowerShell to FreeBSD. But, in order to achieve that, porting the CoreCLR and CoreFX libraries -- as well as other .NET Core SDK dependencies -- is necessary for they are vital components for PowerShell to build and function. There’s already work in progress related to porting CoreCLR and CoreFX to FreeBSD, so this should represent a starting point for this effort. After that, with all the .NET Core SDK toolchain ported, the effort will be focused on building PowerShell. With those completed, the aim will be towards packaging the utilities to make them available in the ports tree.
There are already Linux PowerShell binaries ready for use and some ideas or implementations should be derived from there. PowerShell, as well as the CoreCLR and CoreFX projects, are open-sourced, therefore working with their teams at Microsoft isn’t a barrier, should some work on their side render necessary, or some code upstreaming need to be done, for this project to be successful.
The first step towards solving the problem will be to understand the components needed to build the .NET Core runtime and the SDK -- since they are developed individually with their own GitHub repositories. After that, the efforts will be directed towards actually building these components on FreeBSD in order to get a functional runtime and SDK. Once this is done, all the efforts will be directed towards getting PowerShell to build and function on the FreeBSD platform.
Deliverables
.NET Core Runtime Port
.NET Core SDK Port
PowerShell Port
Milestones
- May 14th: Start of coding
Gather information on necessary components for runtime and SDK
- May 21st - June 11th
Build these components on FreeBSD to get a functional runtime and SDK
Document process to build the port later
- June 11th - June 15th: Mid-term Evaluations #1
- June 16th - July 9th
Test built components along the way for runtime and SDK and fine-tuning
Start working on the PowerShell build
Document the process to build the port later
- July 9th - July 13th: Mid-term Evaluations #2
- July 13th - August 6th:
Test results for PowerShell on FreeBSD and fine-tuning
Work on the ports for the runtime, SDK, and PowerShell
- August 6th: End of coding (soft)
Debug and finish code and complete documentation
- August 14th: End of coding (hard)
Test Plan
This test plan is initial and may change later
- Building CoreCLR, CoreFX, CLI (.NET Core SDK)
- Run tests that come with the code
Building PowerShell
- Run tests that come with the code
- Gather a list of most common commands, can they be run successfully?
- Writing the Ports
- Are they functional on freshly-installed FreeBSD systems?
The Code
- Forks
PowerShell-Native: https://github.com/mateusrodrigues/PowerShell-Native
- FreeBSD Review
Notes
- Experimental Runtime/SDK builds:
- Progress tracking and build documentation