Skip to content

1.10

Compare
Choose a tag to compare
@landelare landelare released this 25 Oct 15:41
· 14 commits to master since this release

This is the last release that supports C++17.

Due to issues with the engine's Android/Linux toolchain, some C++20-only features are not available on these platforms even if C++20 is used. #16

UE5Coro

  • New threading primitives were added: FAwaitableSemaphore and FAwaitableEvent. They can be co_awaited directly.
  • (C++20 only) WhenAny and WhenAll have received new overloads taking TArray<TCoroutine<>>.
  • Async::MoveToSimilarThread was added for returning to a thread that was previously known at runtime.
  • Async::PlatformSeconds, PlatformSecondsAnyThread, UntilPlatformTime, and UntilPlatformTimeAnyThread were added for Delay-like functionality on any thread at any time, even without a world.
  • 4 new latent awaiters (UntilTime, UntilUnpausedTime, UntilRealTime, UntilAudioTime) were added for waiting until a point in time instead of an amount of time.
  • Http::ProcessAsync supports Unreal 5.3 HTTP request delegate thread policies. If the request is configured to complete on the HTTP thread, the coroutine will resume on the HTTP thread.
    • This feature is affected by engine bugs related to the HTTP thread not processing everything that it should. Please don't open bugs if the equivalent callback-based code doesn't work either.
  • TCoroutine::ContinueWithWeak now supports UObjects even if the coroutine finishes off the game thread. This used to ensure().
  • Improved performance in some high-contention multithreaded scenarios.

Fixes/breaking changes:

  • Using FForceLatentCoroutine to run a coroutine in latent mode with no FLatentActionInfo now uses heuristics to find an object with an appropriate lifetime instead of tying execution to the world's lifetime. In practice, this will be usually this or the world itself. See the documentation for more details. #19
  • co_awaiting a TCoroutine from a coroutine running in async mode no longer marshals back to the original thread. The coroutine will resume immediately on the thread where the awaited coroutine finished.
    • This improves responsiveness when coroutines co_await each other, and the T in TCoroutine<T> no longer needs to have a thread-safe copy constructor in this case.
    • Async::MoveToSimilarThread may be used to restore this behavior if it's required.
  • Fixed a minor memory leak when co_awaiting Async::MoveToNewThread.
  • Fixed use-after-free bugs in debug builds.

UE5CoroAI

New, optional and highly experimental plugin targeting AIModule and NavigationSystem. It has awaiters for various "Move To" methods and async pathfinding for now.

  • UE5CoroAI does not support C++17.

UE5CoroGAS

  • Fixed a check caused by GAS attempting to cancel non-instanced abilities with an invalid prediction key. Abilities being started with invalid prediction keys will now check, this does not happen normally.