Skip to content

Releases: unoplatform/Uno.Wasm.Bootstrap

9.0.3

31 Oct 18:27
ad639b3
Compare
Choose a tag to compare

This new release of the Uno.Wasm.Bootstrap adds support for .NET 9 and removes the need for a custom-built .NET runtime. This package is now taking full advantage of .NET WebAssembly workloads by Microsoft.

Among the SDK features that are now available as part of .NET 9:

  • Incremental Builds support, particularly when AOT is involved.
  • Satellite assemblies, Timezone and ICU partial downloads, giving the ability for localized to be fetched for relevant browser cultures
  • WebCIL, used to reduce the impacts of antiviruses
  • Individual assemblies cache breaker, used to ensure resources are not downloaded unnecessarily when unchanged.
  • Browser application caching for assemblies, used to initialize apps faster and avoid using the HTTP cache
  • CIL Strip after AOT, used to remove code that has been AOT compiled from assemblies
  • Jiterpreter updates to improve the Wasm interpreter mode performance
  • AOT builds can now be created on macOS, Windows arm64 and Linux arm64
  • Python and emscripten are now automatically managed by the .NET SDK, and ninja-build is not needed anymore
  • Improved debugging support, as the whole tooling chain provided by .NET, making it natively compatible with VS and VS Code.

To migrate to .NET 9, make sure to take a look at our docs.

See the full changelog below.


What's Changed

New Contributors

Full Changelog: 8.0.0...9.0.3

8.0.0

01 Nov 20:54
fcf86ee
Compare
Choose a tag to compare

This new release of the Uno.Wasm.Bootstrap package aligns with the .NET 8.0 RC2 release. This release is aligned with Uno Platform 5.0, checkout out our announcement for more details!

It includes many bug fixes and enhancements:

Complete changelog

Read more

7.0.15

02 Feb 21:46
9e08347
Compare
Choose a tag to compare

What's Changed

  • fix(threads): missing max threads parameter (backport #608) in #609
  • fix: restore metadata updated, include new pdb delta (backport #612) in #613
  • fix(outputpath): Adjust for output path customization (backport #620) in #623
  • feat: Use SDK provided linker for performance (backport #614) in #622
  • fix: Fixed service worker install error (backport #625) bin #626
  • Adjust service worker installation (backport #660) in #663
  • chore: Update to SDK 7.0.102 in #664
  • fix: Ensure build failure on emscripten install failure on Windows (backport #666) in #668
  • feat(localization): Add support satellite resource assemblies publishing (backport #665) in #675

Full Changelog: 7.0.6...7.0.15

7.0.6

04 Nov 00:20
55a871e
Compare
Choose a tag to compare

WebAssembly Bootstrap 7.0

Along with the .NET 7 support, we’re introducing a stable version of the Uno.Wasm.Bootstrap package, the foundation of Uno.UI’s WebAssembly support. We’ve adjusted the versioning scheme so that the major version number matches the associated .NET runtime version.

This new version of the bootstrapper is backward compatible with your net6.0 apps, and you don’t need to upgrade to .NET 7 to use it.

This release is built using the .NET 7.0.100 sources that the .NET team will use on release day, meaning that you’re already set to use the latest and greatest.

This release introduces a lot of new fixes and features, let’s dive in detail.

  • Obfuscation and custom extensions support has been added to work around firewalls and antiviruses that may block .NET binaries. Uno already uses the “.clr” extension, yet some anti-viruses may still detect the Win32 header through deep inspection, which simple obfuscation can work around.

  • Static assets support, used for ASP.NET Core hosting. See the ASP.NET Core Hosting section in this post for more information. This feature allows for an ASP.NET Core project to take a “project reference” on a WebAssembly app, to include its output in the “wwwroot” folder to deploy in a single package. The introduction of the new Uno.Wasm.Bootstrap.Server package supports ASP.NET Core projects host Uno Wasm Bootstrap projects to serve these static assets.

  • Threading preview support, a big demand for performance hungry users. Threading makes use of WebAssembly threads and comes close to the desktop threading model. A new SynchronizationContext has been introduced to easily go back and forth the main thread. The support is still in preview as there are still some threading affinity issues with JS-bound APIs that need to be fixed. As we mentioned back in June, give it a try and let us know what you can do with it!

    Also note that threading requires a specific security context in browsers, which can cause SSO flows to fail.

    Threading can be enabled using <WasmShellEnableThreads>true</WasmShellEnableThreads> in your csproj.

  • SIMD support, another big demand from performance hungry apps. This feature enables the use of the Fixed-width SIMD WebAssembly specification and is available when building with AOT enabled. The hardware support for SIMD can be checked through the Vector.IsHardwareAccelerated.

  • Native libraries support updated layout, where the inclusion of optional Threading and SIMD makes for a new matrix of possibilities for native libraries. While threading is supported by all browsers (its preview status and security restrictions can make it inapplicable for some apps), and SIMD is not yet supported by Safari, it’s required for native libraries to be providing a matrix of already compiled versions of binaries.

    You’ll find examples of this new format in Uno.Sqlite-wasm and SkiaSharp, which looks like this in a package:

  • Native signatures generation support, which enables P/Invoke signatures to be anything that the app’s code will provide. This is particularly useful for interoperability with large native libraries, like SQLite.

Finally, as the main branch of dotnet/runtime is already on .NET 8, so are the Uno.Wasm.Bootstrap development builds, and there are some amazing improvements coming.

2.0.0

23 Mar 01:46
Compare
Choose a tag to compare

This new release of the Uno.Wasm.Bootstrap package provides support for .NET 5 (net5.0) target framework, using .NET for WebAssembly from dotnet/runtime.

It also provides support for:

The .NET Runtime for this release is dotnet/runtime@99e4fda, and this package is equivalent to 2.0.0-dev.180.

Upgrade path

When upgrading from the 1.3.x versions, there is nothing specific to do for the project to continue building and running.

If you want to upgrade to net5.0, you will need to:

  • Change the target framework to net5.0
  • Add a reference to Microsoft.Windows.Compatibility version 5.0.0
  • If you are using Uno Platform (Uno.UI.* packages), you will also need to upgrade to version 3.5 or later.

If you are using on AOT (Full or mixed), note that it is still a work in progress in dotnet/runtime, and that you may still find issues that will be addressed during the course of .NET 6 development, and will be included in later builds of the Uno.Wasm.Bootstrap package.

Features

  • Add asset list to published package (4adf9ea)
  • Add generic type parameters to the AOT profile dump (975516f)
  • Add SDK Checksum optional debug logging (29e8968)
  • Add support for __Native dll import (68c09f4)
  • Add support for AOT profile filtering (06b8ee3)
  • Add support for mono runtime tracing options for native browser stack (e9ab258)
  • Add support for multi-emsdk versioned LLVM binaries (03abc09)
  • Add support for net5 (392847d)
  • Enable AOT Profile debugging (f086c6f)
  • Install embedded emscripten version for Unix based OSes (7c3c484)
  • net5 static linking, net5 validations (967d015)
  • deploy: Added ability to control where content files are being deployed (package or root) (abfbbc9)
  • deploy: Added WasmShellContentExtensionsToExclude property (f32249a)
  • deploy: Removed the DeployModeContent feature. The feature overlaps with Content metadata mode. (03235f6)
  • net5: Add support for linker feature switches (a1adb80)
  • Update to mono mono/mono@3acd878 (4c993e6)
  • deploy: .bc and .a files for static linking are no more copied to "dist" folder and used directly from their original location. (19e88cb)
  • deploy: Deploy= --> UnoDeploy= (1dfde39)

Performance Improvements

  • Improve net5 packager assembly resolution performance (9a21ca4)

Bug Fixes

  • Add IDBFS support for interpreter-only .NET 5 (107d637)
  • Add missing cil-strip pdb (8ca397d)
  • Add Stack Crawling related methods (dc87d7c)
  • Add support for InvariantGlobalization feature flag (d1d5e58)
  • Adjust default splashscreen resource (31e8040)
  • Adjust ICU support for debugging (335d22b)
  • Adjust mono-aot-cross path (7c9bc1b)
  • Adjust python encoding (3f2c153)
  • Adjust target rewriting for task name (8a218ea)
  • Adjust WASMSHELL_WSLEMSDK to use WSL native path (ed306da)
  • Bump Microsoft.Windows.Compatibility to 5.0.0 (0e7fdd3)
  • cannot find bash.exe on Windows using dotnet.exe (8dc6bef)
  • Disable dedup pass by default, align AOT compiler flags with dotnet/runtime (a9666d9)
  • Don't generate config file for illink on net5 (c15fdd3)
  • emscripten embedded mode is now the default (9a2622c)
  • ForceDisableWSL wasn't honored (7bf24d6)
  • Import PInvokeTableGenerator, use dotnet for packaget and wasm-tuner (74e8b9f)
  • Include unit tests assembly in msbuild filter (9cdac9b)
  • Invalid hash replace task (29d5862)
  • Make TargetFramework parameter optional to ignore incompatible projects (f4bb304)
  • Move emcc flags to allow for default paramters override (useful for overriding max memory with asan) (6eb3050)
  • nuget icon path (16523b8)
  • Remove unused emscripten patches, adjust install marker (979de6a)
  • Restore .NET 5 ICU support for localization (a2463c3)
  • Set System.Globalization.Invariant if unset for .NET 5 (33e25b1)
  • Split mono/mono and dotnet/runtime versions. (371195a)
  • Unquoted executable path for "dotnet" or "mono" (1d02109)
  • Use AOT Profile property only in Mixed mode (656b406)
  • debugging: Publish debugger files in all modes (a351522)
  • gitpod: Remove...
Read more

1.3

14 Jul 15:05
9b71577
Compare
Choose a tag to compare
1.3

The Uno.Wasm.Bootstrap 1.3 release of the Uno.Wasm.Bootstrap adds support for some large items:

  • PG-AOT, giving the ability to reduce the size of the WebAssembly layout significantly by compiling only the most used parts of the application, based on a recorded execution profile.
  • Support for DateTime.Now using the appropriate local timezone
  • Stabilized the use of the mono-wasm sdk, where Windows Storage Sense may remove critical files
  • Improved CDN support, where all the payload files, except some key files (e.g. index.html, PWA support) are placed in a uniquely identified path.

Features

  • Add support for local timezone (ddc772b)
  • Add elapsed time for external process execution messages (dc481c4)
  • Add support for PG-AOT detection (d149066)
  • Add the ability to globally override the EMSDK install location using WASMSHELL_EMSDK (75c2699)
  • Add Uno.Wasm.Static Linking sample (f088f39)
  • Add Uno.WasmSample.WithSpace.Aot sample (0cbba3c)
  • Enable nullable references checking in bootstrapper tasks (bbf2cf1)
  • Enable Profile Guided AOT (e48e8d1)
  • Improve build reliability (79c04cd)
  • Improve cacheability of the app payload in CDNs (fdc7d1a)
  • Provide the ability to disable WSL requirement on Windows-based CI servers (74ccb89)

Bug Fixes

  • Adjust Splash Screen customization configuration (161d660)
  • Adjust WSL mono install script instructions (4ded360)
  • Build full BaseIntermediateOutputPath (e67f92c)
  • Cleanup the dist folder properly (5d9d71e)
  • Fix invalid use of reference assemblies when actual assembly is present (e7b5857)
  • Improve error message when .NET is not installed in WSL (2fa366d)
  • Pin EMSDK version (2b655ed)
  • Pin emsdk version to the supported emscripten version (c6d354c)
  • Possible StackOverflowException when locating debugger assemblies (a3b7ba0)
  • Remove defer attribute from default index.html which can cause out of order execution (cfca867)
  • Remove invalid TimezoneData package creation (623a881)
  • Restore "Uno.Wasm.StaticLinking" and "Uno.WasmSample.WithSpace.Aot" samples (2fac3ba)
  • Disable the use of AOT Profile when WasmShellGenerateAOTProfile is set (aa3fa06)
  • Remove possible duplicates in resources, adjust css ordering (2bff0b7)
  • Restore IDBFS support for interpreter unpackaged builds (27ce6b2)
  • Support spaces in path (e81ec32)
  • Update to mono 335a5949adbb7bd31c19eb9179d300f2097f515c, use CDN endpoint. (771f158)
  • Use local scoped named for assembly references (e6f1f3a)
  • debugger: Fix using bitcode file breaks the debugger (0b00012)
  • Take linker option into account when using ninja (ce4e8ce)
  • Use latest nuget spec for package icon. (009da4c)

1.2

12 May 02:30
44d638e
Compare
Choose a tag to compare
1.2

This release provides lots of updates from the 1.0 release:

  • The availability of WebAssembly AOT on Windows, through WSL
  • The removal of the DotNetCliToolReference reference that was causing troubles to the Visual Studio UI, replacing it with Uno.Wasm.Bootstrap.DevServer updateable via the UI
  • Support for Linux and macOS
  • Support for the Visual Studio 16.6 debugger
  • Lots of fixes from the mono team, including a memory corruption issue with SkiaSharp

Head to the documentation for more details on these updates.

Features

  • Add support for *.a files linking (cea619a)
  • Add support for LLVM's -fsanitize for native memory troubleshooting (2ffb3b1)
  • Add support for VS 2019 16.6 debugger (0131188)
  • Add Uno.Wasm.Bootstrap.DevServer package (e204754), closes #186
  • Added support for CommonJS. (7fdc629)
  • Enable Wasm profiling configuration (9fbbb8c)
  • Enable WSL emsdk folder compression (b270071)
  • Update to mono latest to take advantage of mono/mono#19671 (9b8e7a8)
  • Update to mono master latest (5df9be6)

BREAKING CHANGES

  • The Uno.Wasm.Bootstrap.Cli is now deprecated and needs to be replaced with the Uno.Wasm.Bootstrap.DevServer.
    To upgrade from previous versions of the bootstrapper:

    • If you had a <DotNetCliToolReference /> line, remove it
    • Add the <PackageReference Include="Uno.Wasm.Bootstrap.DevServer" Version="1.2.0" PrivateAssets="all" /> item in the same item group as the other nuget packages.
  • Support for .NET 2.2 and 3.0 has been removed. .NET Core 3.1 is now required.

Bug Fixes

  • linux: Force load of colocated bootstrapper tooling assemblies (fb5cd94)
  • Adjust default restore tool targetframework (d6e9224)
  • AOT SDK may not be downloaded if only .a files are present (729b181)
  • Auto retry SDK Downloads (359e590)
  • CLI nuget package generation (9fff6b8)
  • Fail the build when a project uses the deprecated CLI package (ba4e8cf)
  • Invalid error message when WSL is not detected (e0607d9)
  • macOS .NET Core build error and ci validation (d145440)
  • Update mono to fix p/invoke issue, enable IDBFS by default (af3763f)
  • linux: Adjust dotnet run/build command execution for Linux (fb36dc8)
  • macos: dotnet run path aligns directory separator (b42a315)

1.0.8

27 Nov 19:28
680e650
Compare
Choose a tag to compare
  • Linux and Windows path inter-operability fixes
  • Update support for non-root site publication
  • Adjust PWA cache update strategy

1.0.5

24 Nov 02:33
daa4ffc
Compare
Choose a tag to compare

Fixes:

  • Long path issues on windows
  • .NET 4.6.2 dependency was implicitly required

1.0

30 Oct 18:13
Compare
Choose a tag to compare
1.0

The first stable release of the Uno Bootstrapper for WebAssembly.

This release is the same as the 1.0.0-dev.302 experimental release.