Search Unity

Official Burst Release Announcements and Notes

Discussion in 'Burst' started by fabrizio_unity, Feb 25, 2021.

Thread Status:
Not open for further replies.
  1. fabrizio_unity

    fabrizio_unity

    Unity Technologies

    Joined:
    May 3, 2018
    Posts:
    47
    Hello all,

    we will be using this thread to announce new version releases, with related notes.

    As you have issues/comments/concerns about the release, please create new threads, as this one will be locked for just release announcements.

    Our current verified version is 1.8.11
    Our current verified version for 2022.3 is 1.8.11
    1.8.X releases are intended for Unity 2021.3 and above

    Release notes are available at:
    https://docs.unity3d.com/Packages/com.unity.burst@1.8/changelog/CHANGELOG.html


    Please, make sure to read the Documentation
     
    Last edited by a moderator: Jun 14, 2023
  2. fabrizio_unity

    fabrizio_unity

    Unity Technologies

    Joined:
    May 3, 2018
    Posts:
    47
    Hello,
    version 1.4.6 is now available.

    • Fixed a bug where eager-compilation could pick up out-of-date global Burst menu options for compiling

    The Burst Team
     
  3. fabrizio_unity

    fabrizio_unity

    Unity Technologies

    Joined:
    May 3, 2018
    Posts:
    47
    Hello,
    version 1.5.0 is now available
    ### Fixed
    - Fixed some intrinsics not checking target CPU against required CPU, so it was possible to use some intrinsics without an IsXXXSupported check
    - Fixed a bug where having any [DllImport] in a class that used the Direct Call mechanism could result in an illegal CompileFunctionPointer call being produced by our post processor.
    - PDB debug information for instance methods that also used struct return were incorrect.
    - When generating Line Table only debug information, an unreachable could occur due to a missing check.
    - Internal Compiler Error if a call was discarded (via BurstDiscard for example), but the callsites required an ABI transform e.g. struct return.
    - Broken link restored for known issues with debugging and profiling.

    ### Changed
    - Tweaked how the IL Post Processed 'direct call' Burst function pointers are compiled so that the compilation is deferred until they are needed (previously we'd enqueue them all for compilation on a domain reload).

    ### Known Issues
    - Direct Call methods only execute using Burst after an initial execution of them on the main-thread.

    ### Added
    - Known issue with Windows Native Debuggers and Dll numbers + workarounds in docs.
     
    Ashkan_gc and sheredom like this.
  4. fabrizio_unity

    fabrizio_unity

    Unity Technologies

    Joined:
    May 3, 2018
    Posts:
    47
    Hello,
    version 1.6.0-pre.2 is now available

    Changed
    • Start 1.6 release cycle
    • Changed how we resolve function references in the compiler to improve resolving an existing function reference by 3x.
    • Improve how we handle generic resolution in Cecil to cache the strictly resolved generic types and save a bunch of time in the compiler.
    • Exception strings no longer contain the entry-point name of the job/function-pointer that caused the throw. This change was required because the Burst compiler has to produce deterministic results from any given compile, which is fundamentally opposed to per-entry-point function derivations.
    • Changed how SLEEF global variables for trig functions are pulled into Burst to reduce duplications.
    • Changed how exceptions throw types and messages are stored in our Burst binaries to reduce binary size.
    • Constant array data is now named after the static field it belongs to in assembly
    • Upgraded Burst to use LLVM Version 11.0.1 by default, bringing the latest optimization improvements from the LLVM project.
    • The Unity.Burst.Intrinsics.Common.Pause intrinsic is no longer experimental.
    • DOTS Runtime shares the logging code path with the general case
    • Armv8.2 Neon intrinsics are now fully supported
    • Disable threading within the lld linker instances we use for in-editor and desktop cross compilation, because we're already threading seperate process instances of lld and it results in lot of OS context switching.
    • Tweaked how the IL Post Processed 'direct call' Burst function pointers are compiled so that the compilation is deferred until they are needed (previously we'd enqueue them all for compilation on a domain reload).
    • Changed Burst minimum editor version to 2019.4
    • Use rpmalloc as our native allocator on Windows to speed up concurrently executing LLVM work.
    • When Burst has previously compiled a method, and neither the assembly containing that method nor any of that assembly's dependencies have changed, it was possible after a domain reload for the Mono version of the method to be used for a short time before being replaced by the Burst version. This has now been improved such that the Burst version will be used immediately.
    • Improved iteration speed by reducing the time it takes for Burst to check if any Burst-compilable code has changed
    • Change our link step to not use response files if the command line was smaller enough, saving the cost of the round-trip to the disk.
    • Made half <-> float / double conversions use native hardware where possible (Arm or AVX2 targets).
    • In order to prevent conflicts with the main Unity process, Burst is now inactive in secondary Unity processes, including the asset import worker and out-of-process profiler. This means that in those secondary processes, code that would normally be Burst-compiled will now run under Mono. In a future release of Burst, we hope to lift this restriction and allow Burst-compiled code to run in secondary Unity processes.
    Fixed
    • Fixed a bug in LLVM that it would incorrectly convert some memset -> memcpy if both pointers derived from the same memory address, and where one indexed into the 0th element of the pointer.
    • Fixed namespace issue triggering a warning in the editor.
    • Made math.shuffle compile correctly when non-constant ShuffleComponent's are used.
    • Fixed alignment issues associated with xxHash3 on ArmV7 (case 1288992)
    • Fixed managed implementation of sub_ss intrinsic
    • Fixed a bug that occurred when an explicitly laid out struct was used by a dup instruction, which caused an internal compiler error.
    • Fixes DOTS Runtime JobProducer Bursting code to support JobProducers with multiple generic arguments, complex job wrapper and generic jobs.
    • Fixed a bug where if a user had defined multiple implicit or explicit casts, the compiler could resolve to the wrong cast.
    • Fixed a bug where explicitly casting from an int to IntPtr would not sign extend the value.
    • String interpolation issues when using Dots / Tiny runtime.
    • Fixed managed implementations of blend_epi32 and mm256_blend_epi32 intrinsics on Mono
    • Fixed a bug where loading from a vector within a struct, that was got from a NativeArray using an indexer, would cause the compiler to crash.
    • Fixed an issue where Burst would erroneously error on BurstCompile.CompileFunctionPointer calls when building for the DOTS Runtime.
    • clang segmentation fault on iOS when member function debug information was emitted, it is disabled for this platform now.
    • Intrinsics: Neon - fixed vget_low and vget_high producing suboptimal code
    • Private [BurstCompile] methods no longer throw MethodAccessException
    • Fixed a bug where the Burst post-processing for direct call would cause duplicate function pointers to be compiled, wasting compile time in the editor and caused an Editor launch stall.
    • Corrected 'Enable safety checks tooltip`.
    • Fixed a minor debug information bug where built-in types with methods (like System.Int32) would generate incorrect debug information.
    • Fixed a very obscure bug where if you had a function-pointer that was called from another function-pointer of job, and that function-pointer happened to be compiled in a player build in the same bucket as the caller, and the no-alias cloning analysis identified that it could clone the original function-pointer to enable more aliasing optimizations, it could create a duplicate symbol error.
    • Revert to internal linkage for Android X86 (32bit) to ensure ABI compliance.
    • Fixed compilation errors when targeting Arm CPUs and using some of the Intel intrinsics
    • Added PreserveAttribute to prevent the internal log from being stripped in il2cpp builds.
    • IL Function Pointer Invoke Transformation updated to handle transforms that affect instructions that are the destination of a branch.
    • IL Function Pointer Invoke Transformation now uses correct runtime library for dots runtime.
    • Fixed compilation errors when targeting Intel CPUs and using some of the Arm Neon intrinsics
    • Fixed a bug where eager-compilation could pick up out-of-date global Burst menu options for compiling.
    • Fixed a bug where the progress bar would report double the amount of pending compile jobs if a user changed the Burst options while background compilation was going on.
    • Fixed some intrinsics not checking target CPU against required CPU, so it was possible to use some intrinsics without an IsXXXSupported check
    • Fixed a bug where having any [DllImport] in a class that used the Direct Call mechanism could result in an illegal CompileFunctionPointer call being produced by our post processor.
    • Fixed an issue where if a user used a math function (like cos, sin, etc) then LLVM would preserve both the scalar and vector implementations even if they were trivially dead, causing us to inject otherwise dead functions into the resulting binary.
    • PDB debug information for instance methods that also used struct return were incorrect.
    • When generating Line Table only debug information, an unreachable could occur due to a missing check.
    • Fixed the 1.5 restriction that Direct Call methods can only be called from the main thread, now they work when called from any thread.
    • Internal Compiler Error if a call was discarded (via BurstDiscard for example), but the callsites required an ABI transform e.g. struct return.
    • Fixed a bug with using multiple IsXXXSupported intrinsics in the same boolean condition would fail.
    • Broken link restored for known issues with debugging and profiling.
    • The Direct Call injected delegate now has a unique suffix to avoid type-name clashes.
    • Dots runtime function pointer transform has been simplified, making it less brittle and fixing some bad IL generation.
    • Fixed crashes on 32 bit windows when calling function pointers from managed code and using IL2CPP.
    • Fixed a possible DivideByZeroException due to race condition in TermInfoDriver initialization code.
    • Fixed a bug where the multi-CPU dispatcher (used for player builds targetting multiple CPU architectures) could end up generating invalid instructions.
    • Gracefully handle failing to find a particular assembly in the ILPP to prevent an ICE.
    • function calls using in modifiers on blittable structs where being treated as non blittable.
    • crash when extracting sequence point information for error reporting/debug information generation.
    • Direct Call extension methods that only differ on argument types are now supported (previously Burst's AssemblyLoader would complain about multiple matches).
    • Fixed a regression where managed static fields, in static constructors that would also be compiled with Burst, could cause a compile time failure for mixing managed and unmanaged state.
    Added
    • Added links to blog posts from the burst team to the Burst documentation.
    • Intrinsics: Neon - Added support for basic vld1 APIs
    • Can now call BurstCompiler.CompileFunctionPointer() in Burst code
    • Add support for the C# 8.0 construct default(T) is null to Burst by transforming the generated Box + 'is the box non-null?' at compile time.
    • Make it possible to get a pointer to UTF-8 encoded string literal data in HPC# code via StringLiteral.UTF8()
    • Add an OptimizeFor option to [BurstCompile], allowing users to say they want fast code, small code, or fastly compiled code.
    • Known issue with Windows Native Debuggers and Dll numbers + workarounds.
    • Assemblies are now allowed to have an [assembly: BurstCompile()] attribute to let users specify compile options that should apply assembly wide (for instance [assembly: BurstCompile(OptimizeFor = OptimizeFor.FastCompilation)]).
    • Automatically add [UnmanagedFunctionPointer(CallingConvention.Cdecl)] to any delegates that are used for BurstCompiler.CompileFunctionPointer<>() or error if the delegate has the attribute and it is not Cdecl.
    • Source location metadata into hash cache.
    • Added support for having [return: MarshalAs(UnmanagedType.U1)] or [return: MarshalAs(UnmanagedType.I1)] on a bool return external function.
    • An additional warning about delegates being used by BurstCompiler.CompileFunctionPointer that are not decorated as expected. In most cases, Burst will automatically add the C-declaration attribute in IL Post Processing, but if the usage of CompileFunctionPointer is abstracted away behind an open generic implementation, then Burst will not be able to automatically correct the delegate declaration, and thus this warning will fire.
    • new burst_TargetPlatform_EmbeddedLinux
    • new AotNativeLinkEmbeddedLinux for EmbeddedLinux
    • Added a new OptimizeFor mode Balanced. This becomes the default optimization mode, and trades off slightly lower maximum performance for much faster compile times.
    • Added experimental half precision floating point type f16
    • Added experimental support for half precision floating point Arm Neon intrinsics
    Removed
    Known Issues

    • Direct Call methods only execute using Burst after an initial execution of them on the main-thread.
    Notes
    • BurstAotCompiler integration done using reflection and raw values, since the platform will only be officially available for 2021.2+ and we special customer versions (shadow branches) for 2019.4 & 2020.3.
    • AotNativeLinkEmbeddedLinux implementation gets the toolchain from environment vars
     
  5. fabrizio_unity

    fabrizio_unity

    Unity Technologies

    Joined:
    May 3, 2018
    Posts:
    47
    Hello,
    version 1.5.2 is now available
    ### Added
    - Added support for having `[return: MarshalAs(UnmanagedType.U1)]` or `[return: MarshalAs(UnmanagedType.I1)]` on a `bool` return external function.

    ### Changed
    - In order to prevent conflicts with the main Unity process, Burst is now inactive in secondary Unity processes, including the asset import worker and out-of-process profiler. This means that in those secondary processes, code that would normally be Burst-compiled will now run under Mono. In a future release of Burst, we hope to lift this restriction and allow Burst-compiled code to run in secondary Unity processes.

    ### Fixed
    - Gracefully handle failing to find a particular assembly in the ILPP to prevent an ICE.
    - Fixed a bug where if a user had `Managed Stripping` mode set to `High`, our injected Direct Call delegate would be accidentally stripped out.
    - function calls using in modifiers on blittable structs where being treated as non blittable.
    - Crash when extracting sequence point information for error reporting/debug information generation.
    - The Direct Call injected delegate now has a unique suffix to avoid type-name clashes.
    - Direct Call extension methods that only differ on argument types are now supported (previously Burst's `AssemblyLoader` would complain about multiple matches).
     
    siliwangi likes this.
  6. fabrizio_unity

    fabrizio_unity

    Unity Technologies

    Joined:
    May 3, 2018
    Posts:
    47
    Hello,
    we released new versions of the burst package:

    1.4.9
    1.5.5
    1.6.0-pre.3


    Please find the changelogs in the respective documentation pages.
     
    PutridEx likes this.
  7. fabrizio_unity

    fabrizio_unity

    Unity Technologies

    Joined:
    May 3, 2018
    Posts:
    47
    Hello,
    we released a new stable version of burst

    1.6.0

    This is a major milestone for us, 1.6 release cycle is effectively part of unity 2021.2 product and it brings a lot of value, especially in terms of iteration time. The list of new features and improvements is big and can be found in the docs page; among other things, this release cycle comes with:
    • Faster compilation (~2x with cold cache, ~5x with warm cache speedup)
    • Support for more C# 8.0 constructs
    • Support for native m1/Apple Silicon
    • Support for new ARM NEON intrinsics
    • Many bug fixes
     
  8. fabrizio_unity

    fabrizio_unity

    Unity Technologies

    Joined:
    May 3, 2018
    Posts:
    47
    Hello,
    version 1.6.1 is available.


    ### Added
    - Added support for `System.Span<T>` and `System.ReadOnlySpan<T>` within Bursted code. These types are not allowed as entry-point arguments.

    ### Removed
    - Removed the player build `BC1370` exception warnings as users only found them annoying.

    ### Changed
    - External methods can now include a special suffix to opt-in to being valid along with certain hard-coded ones

    ### Fixed
    - 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.
    - Fixed a bug with `sqrt_ps` for 128-bit types where it would crash the compiler.
    - 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.
    - 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
    - Burst will now handle projects special characters in their project-name
    - Fix the `ITMS-90562: Invalid Bundle` submissions issue that users were experiencing when submitting Apps to the Apple App Store for iOS/tvOS.
    - Fixed that implicitly casting a scalar half to a vector type would cause the compiler to crash.
    - Stack overflow caused by placement of alloca under certain function transforms.
    - Fixed a crash that could occur when loading legacy Burst AOT settings and then entering play mode
    - Fixed issue that could cause bcl.exe to fail with an exit code of 1 but not output any compilation errors
     
    Lurking-Ninja likes this.
  9. fabrizio_unity

    fabrizio_unity

    Unity Technologies

    Joined:
    May 3, 2018
    Posts:
    47
    Hello,
    version 1.6.4 is available.

    • Fixed some memory leaks between the C# and C++ parts of the Burst compiler, and added some CI tooling to ensure this doesn't happen again.
    • Fixed editor crash when trying to debug a DirectCalled method
    • Error if install in build folder is used without ever using a regular build.
    • Fixed a compiler miscompile if you loaded a static readonly v128 and passed it straight to a function as an argument.
    • Fixed a Unity 2021.2 and newer bug that manifested with UWP builds - we were using the wrong unityaot folder in the Unity editor distribution with Burst.
    • Fixed a null-derefence that could occur if you used UnsafeUtility.IsUnmanaged in a static readonly constructor.
    • Fixed a bug where the compiler would reject a try/finally statement if it was the first thing in a method
     
    MarcoPersson and sheredom like this.
  10. fabrizio_unity

    fabrizio_unity

    Unity Technologies

    Joined:
    May 3, 2018
    Posts:
    47
    Last edited: Mar 2, 2022
    Kmsxkuse and MarcoPersson like this.
  11. sheredom

    sheredom

    Unity Technologies

    Joined:
    Jul 15, 2019
    Posts:
    300
    mishakozlov74 likes this.
  12. fabrizio_unity

    fabrizio_unity

    Unity Technologies

    Joined:
    May 3, 2018
    Posts:
    47
    sheredom likes this.
  13. fabrizio_unity

    fabrizio_unity

    Unity Technologies

    Joined:
    May 3, 2018
    Posts:
    47
  14. fabrizio_unity

    fabrizio_unity

    Unity Technologies

    Joined:
    May 3, 2018
    Posts:
    47
  15. fabrizio_unity

    fabrizio_unity

    Unity Technologies

    Joined:
    May 3, 2018
    Posts:
    47
    Kmsxkuse likes this.
  16. fabrizio_unity

    fabrizio_unity

    Unity Technologies

    Joined:
    May 3, 2018
    Posts:
    47
  17. ZilvinasKrasauskas

    ZilvinasKrasauskas

    Unity Technologies

    Joined:
    Jun 23, 2021
    Posts:
    12
    Vaupell, Luxxuor, Anthiese and 2 others like this.
  18. ZilvinasKrasauskas

    ZilvinasKrasauskas

    Unity Technologies

    Joined:
    Jun 23, 2021
    Posts:
    12
  19. ZilvinasKrasauskas

    ZilvinasKrasauskas

    Unity Technologies

    Joined:
    Jun 23, 2021
    Posts:
    12
    TheOtherMonarch likes this.
  20. ZilvinasKrasauskas

    ZilvinasKrasauskas

    Unity Technologies

    Joined:
    Jun 23, 2021
    Posts:
    12
    TheOtherMonarch and MarcoPersson like this.
  21. ZilvinasKrasauskas

    ZilvinasKrasauskas

    Unity Technologies

    Joined:
    Jun 23, 2021
    Posts:
    12
    TheOtherMonarch likes this.
  22. ZilvinasKrasauskas

    ZilvinasKrasauskas

    Unity Technologies

    Joined:
    Jun 23, 2021
    Posts:
    12
  23. ZilvinasKrasauskas

    ZilvinasKrasauskas

    Unity Technologies

    Joined:
    Jun 23, 2021
    Posts:
    12
  24. Miro_Brodlova

    Miro_Brodlova

    Unity Technologies

    Joined:
    Apr 28, 2023
    Posts:
    23
    Last edited: Jan 12, 2024
  25. Miro_Brodlova

    Miro_Brodlova

    Unity Technologies

    Joined:
    Apr 28, 2023
    Posts:
    23
  26. ZilvinasKrasauskas

    ZilvinasKrasauskas

    Unity Technologies

    Joined:
    Jun 23, 2021
    Posts:
    12
    Miro_Brodlova likes this.
  27. Miro_Brodlova

    Miro_Brodlova

    Unity Technologies

    Joined:
    Apr 28, 2023
    Posts:
    23
    TheOtherMonarch and tim_jones like this.
  28. Miro_Brodlova

    Miro_Brodlova

    Unity Technologies

    Joined:
    Apr 28, 2023
    Posts:
    23
    TheOtherMonarch likes this.
  29. mfjord

    mfjord

    Unity Technologies

    Joined:
    Jul 14, 2023
    Posts:
    3
    Spy-Master likes this.
Thread Status:
Not open for further replies.