CoreCLR, Scripting, and ECS Status Update - March 2026

Hi everyone,

This is my first full update since taking on Product coverage of the Core Engine team at Unity. Our intent is to provide quarterly updates as we get closer to releasing changes towards a full CoreCLR Editor in Unity 6.8. There will be changes to how we leverage the potential performance gains of Entities, how we serialize data, and memory management.

Following our YouTube Product Update Livestream, and a video of @jivalenzuela’s more technical deep dive as a Daily Talk at GDC 2026, we’re excited to open up discussion into the technical evolution of the Unity Engine and our plans regarding CoreCLR.

We’ve started a technical upgrade guide for more specifics.


Unity 6.5: Building the Foundation

Unity 6.5 serves as the bridge to this high-performance future. We are introducing several structural changes to prepare your projects for the CoreCLR era.

Editor Lifecycle API

To handle code more efficiently, we are releasing a new set of Editor Lifecycle APIs. These public C# attributes allow for more granular access to the code reload process as we work towards making Fast Enter Play Mode (FEPM) the default in Unity 6.6.

  • Granularity: Attributes like [OnCodeInitializing] execute before assets are fully loaded, providing a better window for resource pre-allocation than the older [InitializeOnLoad].

  • Symmetry: For every “loading” callback, there is now a corresponding “unloading” one. The new APIs are also available in the Editor and / or the Player where necessary.

  • Future-Proofing: These APIs are agnostic to the reload mechanism, meaning they work seamlessly with both Mono and the upcoming CoreCLR.

The Shift to EntityID

InstanceID is an internal handle used in operations on UnityEngine.Object instances. As part of the work to more deeply integrate Entities into Unity Engine, use of InstanceID is being replaced (in phases) with EntityId.

  • Obsolete Errors: Starting in Unity 6.5, InstanceID methods and fields will generate obsolete errors. These errors should lead you to the EntityId equivalents wherever possible.

  • 8-Byte EntityId Type: In Unity 6.5 we are updating EntityId to be 8 bytes in size. This is to align with the Entity type that contains both a 4 byte index and version. In the future this will identify both UnityObjects and Entities.

New Hierarchy Window

We’re introducing an opt-in new Hierarchy Window in Unity 6.5. This modernized view supports more than just GameObjects; it allows you to visualize Worlds, Entities, and SubScenes directly within the same window. Our goal is to make this the default way you interact with all Unity data in Unity 6.6.

Entities Journaling

Please note that Entities Journaling is deprecated in 6.5. We are currently researching more efficient, general-purpose solutions for both GameObjects and Entities to reduce the performance overhead found in the current implementation.

Samples Update

Our current large set of samples include many that will be going out of date as we align Entities with the rest of the engine. We are focusing on a smaller set that we will be updating at a more rapid pace to match changes in Entities and the engine. To that aim, Megacity, ECS Racing and some of our smaller samples will be archived for use with the 1.x versions of DOTS packages. We will be focusing on HelloCube, GalaxySample and the Character Controller Samples; and introduce new samples in the future.

As part of these ongoing changes, we have updated the Galaxy sample to demonstrate a specific case of cross-platform determinism with Entities and also introduced a custom LOD system that provides significant improvements. These changes have landed in the ECS Galaxy Sample repo already.


Unity 6.6: Workflow Efficiency

We are moving to .NET 10 and C# 14 in Unity 6.8 and are making changes starting in Unity 6.6 to help us get there as smoothly as possible. The move is to provide a modern, performant, and continuously updated foundation to replace our existing reliance on Mono. The most significant change in Unity 6.6 is that Fast Enter Play Mode (FEPM) will finally become the default setting. While many of you using Entities have likely enabled this manually for years, making it the engine standard ensures that every developer benefits from near-instant transitions from Edit to Play mode. Our intent is for all internal packages and code to work with FEPM from this release onward.


Unity 6.7 LTS & 6.8: The CoreCLR Era

We remain committed to the goals promised last fall at Unite 2025 of delivering a CoreCLR-backed player in Unity 6.7 as an experimental release. We are excited to announce that we are also committing to a CoreCLR-backed editor in 6.8. We are working internally to make sure this release meets the quality bar set by our current tooling, and are happy to provide a public timeline for release of our new CoreCLR-backed tools.

Why CoreCLR Matters

  • Iteration Speed: Replacing domain reloads with more granular code reloads based on CoreCLR’s Assembly Load Contexts (ALC). This will allow for less waiting time on incremental changes and entering/exiting play mode.

  • Ecosystem Compatibility: Access to the latest .NET APIs and language features brings Unity in line with the broader modern C# 14 ecosystem.

  • Modern Build System: Support for MSBuild and a customizable csproj-based build with bidirectional IDE support.

When you can get hands on!

  • Unity 6.7 LTS
    • Experimental Release of the CoreCLR Desktop Player
    • Last Unity release built upon Mono
  • Unity 6.8 Alpha
    • CoreCLR Editor without Mono
    • Non-experimental CoreCLR Desktop Player
    • IL2CPP Player with .NET and C#14 support

This is just the beginning of what we can unlock once the engine is fully equipped with CoreCLR. We’ll be hanging out in the comments to answer your questions and hear your thoughts on these changes!

What part of the .NET modernization are you most excited to get your hands on?

85 Likes

We need also [OnCodeCleanup] that will be called before [OnCodeInitializing]
Fro static fields management it is mandatory

First all statics clear to defaults like new empty lists or dictionaries
only then all statics init to new clear state potentially reading and chaching other static lists or dictionaries

5 Likes

Any details about serialization improvements? I’m curious what they actually are.

2 Likes

Hi Eric, thanks for the detailed update! I’m really excited to see how CoreCLR, ECS, and unified transform are coming together.

Quick question: do you know if the video for Joe Valenzuela’s March 10 GDC talk will be made available?

Amazing Job @EricDziurzynski and all the team behind this.
I really hope that in the future, after 6.8, we will see the New Animation System and World building :crossed_fingers:

9 Likes

If not, I can record one separately.

4 Likes

Thanks, Joe! No worries, everything sounds foundational for the future of Unity.

989037

18 Likes

Would we still call it MONOBehaviour? :sweat_smile:

Maybe “GameObjectBehaviour” or “ScriptBehaviour” or “Unitybehaviour”.

Probably this will never change because it will break every code base.

5 Likes

Thank you for the update!
One part that I’ve been concerned with as Entities gets more tightly integrated is Entities’ reliance on Burst.
Ever since the early DOTS implementations down to DOTS 1.1ish, I keep seeing that Burst compilation is a far heavier and longer process than the default editor / domain reload workflows. We’re talking sub-3-seconds domain reload time, 30+ seconds Burst compilation times.
With everything becoming an entity internally, is this planned to get addressed at all? Will we see any performance degradation with Burst disabled in Editor, if not?

In terms of .NET Modernization, everything that is supported and shortens the code needed to author content will be what I’m most excited for. Iteration time improvements, specifically.

2 Likes

This is a valid question.
I don’t have answer, if upcoming changes will affect the burst compilation time.
But you can simply disable burst for coding iterations, testing and debugging.
Then just enable, when need testing with full performance.

2 Likes

Way back in the day (like Unity 1.2 times), what is now Texture2D used to be FileTexture. IIRC, we fixed that by making class hierarchy be Texture -> Texture2D -> FileTexture; moving everything out of FileTexture into the new Texture2D, and FileTexture just deriving from Texture2D without adding anything extra. And then removed that dummy leaf class sometime later, after “the world” has updated.

I think a similar setup could be done for MonoBehaviour. Also, Unity does have a semi-automatic script upgrader tool, unlike in Unity 1.2 :slight_smile:

26 Likes

the pre GDC stream seemed to imply a 6.8 alpha would come sooner than later, like well before the 6.7 LTS release?

Generally the Alpha has been running while the beta for the previous version is going. See currently we have 6.4 Beta and 6.5 Alpha side by side. I expect we would see something similar for 6.7 and 6.8

Journaling is a vital tool. Please make sure there is no interim period without an alternative.

1 Like

an elderly woman with the words it 's been 84 years written on her face

36 Likes

That could be nice indeed, the problem is than people will be here to complain to this, for sure, for whatever reason.
Like: “oh no why are you doing that you will break my game”, “oh I will not work on Unity anymore!, it always changes”. With out even thinking about what is happening into the engine.

4 Likes

We are looking for feedback on how you all are making use of Journaling, so that we can make sure that the replacement is a good fit. Do let us know in which way it is a vital piece of tooling in your workflows.

2 Likes

We are looking for feedback on how you all are making use of Journaling, so that we can make sure that the replacement is a good fit. Do let us know in which way it is a vital piece of tooling in your workflows.

Quite simply as an essential debugging/flow analysis tool. When a DOTS project gets complex, it’s important to see what exactly happened to an entity and in what order. Without it, figuring out obscure ordering bugs etc can be very painful.

2 Likes