TASEmulators / TASEmulators/BizHawk

Migrate to .NET (formerly .NET Core)

Open
#1,415 4 comments 9 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Meta re: Multiplatform
Dominant language
C#
Stars
2.8k
Forks
468
PR merge metrics
No merged PRs in 30d

Description

(Going to call it .NET Core here for clarity.)

.NET Core continues to gain new features, simpler and faster APIs, and better runtime performance. Even if MS hadn't formally ended .NET Framework development (which, 4.8.1 aside, they have), migrating is a no-brainer for any project.
Some features of C# rely on runtime support for certain types and are thus unavailable to us.
Along with a dramatically improved JITter, .NET Core has an AoT compilation mode (#3768), which builds upon trimming/DCE (#3767), which builds upon single-file publishing (see also #2441 and #2654).
Other opportunities that .NET Core would give us are tracked in &21. While a lot of the .NET ecosystem targets .NET Standard 2.0, a few libraries only target .NET Core, so we could make use of those too.

WinForms is the last big roadblock to switching (#4350). If we split Win/Tux and upgrade to modern WinForms, there are a few breaking changes to look out for, and shiny new async APIs.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading the WinForms roadblock in #4350 and the breaking changes cited in the issue comment, then review related issues #3768, #3767, #2441, and #2654. Done would mean migrating BizHawk to modern .NET Core, including the WinForms-related work and the opportunities tracked in milestone 21.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp
Domain
desktop
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.