com.unity.burst 1.7.0-pre.1
Notes: processedReleased October 28, 2021
Unity Compatibility
Minimum Unity: 2019.4
Package Dependencies
🔧 Bug Fixes
- Fixed an issue where dsym folders would be not be copied across to the DoNotShip folder when building a multi architecture build for mac os.
- Fixed bug that could lead to "Failed to resolve method with name hash X and signature hash Y" compiler error
- Fixed compiler error that occurred when calling `BurstCompiler.CompileFunctionPointer` with a delegate type that was decorated with a custom attribute
- Linking would fail on non-Windows platforms if the project folder contained a single-quote
- Fixed the "could not find path tempburstlibs" error message popping up when building for Android and Burst is disabled
- Fixed bug that could lead to incorrect compiler errors for calls to `GetHashCode` from a generic type
- Incorrect conversions between signed and unsigned vector types
- Detects if the simulator is the target of a player build for iOS/tvOS and disables burst, as at present this configuration is not supported by burst.
- `[SkipLocalsInit]` now correctly doesn't zero-initialize variables in a function (previously it only avoided zero-initialization of `stackalloc` created variables).
- Fixed a bug whereby sometimes some LLVM intrinsics could be incorrectly marked as unused causing invalid codegen with calls to `math.acos`.
- The cache for pdbs was becoming stale. This caused issues with wrong source information being shown in the inspector, and potentially wrong debug information being generated for bursted code in editor sessions.
- Missing output messages from some tools when a failure occurred.
- Fixed a bug with `sqrt_ps` for 128-bit types where it would crash the compiler.
- `ArgumentOutOfRangeException` due to `_renderBlockStart` and `_renderBlockEnd` not being probably initialized when all blocks were above the scroll position.
- Arrows were rendered even though they were not within the current view.
- Made it save the actual line numbers for code blocks in `_blockLine` even when the block is below the view.
- Removed the starting newline character when copying, and when rendering plain assembly kind.
- Fixed a bug where a player build that had multiple assemblies that had structs declared with the same name and same contents but different `[BurstCompile]` methods in them, would wrongly only pick a single struct to Burst-compile.
- Crash in burst module initialization if multiple modules are compiled and then linked in a different order.
- Fixed our platform documentation to accurately reflect the current supported platforms with Burst.
- Inspector menu buttons were seen as available, even though they were not supported, when viewing i.e. .NET IL code.
- Burst will now handle projects special characters in their project-name
- Static constructor sorting didn't account for dependencies within calls' IL
- Static constructor cyclic checks also included method calls when this is not necessary and fails on burst runtime logging code
- Fixed the bug @tertle found when loading a vector from a struct pointer that is marked as `in`.
- Fixed that implicitly casting a scalar half to a vector type would cause the compiler to crash
- Fixed a crash that could occur when loading legacy Burst AOT settings and then entering play mode
- Stack overflow caused by placement of alloca under certain function transforms.
- linker errors on macOS due to long command lines, swapped to using filelists for inputs.
- Fixed issue that could cause bcl.exe to fail with an exit code of 1 but not output any compilation errors
✨ Features
- Added support for DOTS Runtime running / loading .Net Core assemblies.
- Added support for `System.Span` and `System.ReadOnlySpan` within Bursted code. These types are not allowed as entry-point arguments.
- Folding/collapsing code in inspector
- Branch arrows (can be switched off)
- Automatically collapses less important blocks of disasssembly (focuses on code).
- Burst now generates a link.xml automatically to avoid issues with stripping causing missing symbols at runtime from static constructor usage.
⚡ API Changes
- Removed the `Use Platform SDK Linker` option from Burst AOT Settings for desktop platforms.
- Removed the player build `BC1370` exception warnings as users only found them annoying.
📈 Improvements
- Made the cost of initializing Direct Call methods for execution 33x faster during domain reload.
- Upgraded Burst to use LLVM Version 12.0.0 by default, bringing the latest optimization improvements from the LLVM project.
- Change the optimization pipeline to run the loop unroller *exclusively* after the loop vectorizer. This improves codegen in a lot of cases (mostly because the SLP vectorizer is unable to vectorize all the code that the loop unroller could have).
- Intrinsics: Neon vst1 APIs are now fully supported
- Made `fmod` and floating-point modulus use a faster algorithm to improve performance.
- Made the `SharedStatic` initialization cost during static constructor initialization time 13.3x faster.
- Improved iteration time by triggering Burst compilation immediately after .NET assemblies have been compiled
- Upgraded the minimum supported PS4 SDK to 8.00.
- Updated the minimum Xcode required for Burst to compile for the Apple iOS/tvOS plaforms to 12.0.
- Burst now waits for all threads to complete on shutdown, rather than performing a thread abort, as that could lead to a race condition with Dispose.
⚠️ Known Issues
- Burst does not work correctly when a project has a semi-colon in its name
