Canvas icon indicating copy to clipboard operation
Canvas copied to clipboard

[Announcement] Moving forward / New releases

Open galvesribeiro opened this issue 3 years ago • 2 comments

Hello folks! Long time no see!

So, we've gathered Today a few PRs that would unblock some use cases and will make a release of the Canvas package updating it to Blazor stable version pre-.Net 5. This should unblock some people that was holding its usage or having to have private builds. I hope that help!

Moving forward we decided to reimplement this package using a different approach for both the 2D and the WebGL(2) contexts.

2D Context

This will support both the server-side and the WASM Blazor by having the component and its interfaces fully async (i.e. returning Task).

WebGL Context

We've asked around to some hardcore users of this library what are their current use cases and what would they like to have.

It turns out that the majority of them prefer to have a client-only mode because for performance reasons. Unlike in other client-side frameworks, Blazor to be truly 100% at the client and leverage the machine hardware acceleration, you need to run on WASM mode. Even though it is technically possible to have the WebGL instructions send over the SIgnalR transport to the client in Blazor Server side, it would neglect any performance benefits of use WebGL and would make practically unusable in certain scenarios like for example, games.

Because of all those reasons, we would reimplement the WebGL context APIs using the Blazor's Unmarshalled APIs which are only available at the WASM side. The reason for that, is because it avoid serialization of the types passed from/to C#/JS by sharing "pointers" to data structs across WASM and .Net worlds, similar to what you can do with P/Invoke in regular .Net applications and native code.

How it is gonna work?

We will first implement a very minimal API surface where you can basically issue command to those low level APIs directly with minimal .Net structs being implemented. This will be the foundation for the (almost) full .Net API around both contexts to support the HTML Canvas APIs.

Once we have that foundation working, we will start to implement strongly typed interfaces that will be more familiar to all .Net developers, which will be built on top of the low-level foundation.

When it is gonna happen?

Like I said here, we've just merged a bunch of PRs that unblocks some scenarios and will also update it to latest Blazor with .Net 5 so the package gets to an usable state again soon.

We don't expect to have another year of delay for a new release, but you know, life happens and COVID as well, which is making things to go slower, but now we will start to organize things to get back on track and follow the plan.

We'll try to put together a list of issues and a GitHub project to track milestones and new releases for this package. We can't carve in stone dates or timeframes since this is an open source project that we maintain on free time but as always, community contributions are ALWAYS Wellcome.

So, keep an eye on the issues and PRs from now on and we should have more updates relatively soon.

Thanks!

galvesribeiro avatar Feb 17 '21 04:02 galvesribeiro

Could you please include this in release?

https://github.com/BlazorExtensions/Canvas/pull/100

Thaina avatar Feb 17 '21 04:02 Thaina

https://www.nuget.org/packages/Blazor.Extensions.Canvas/1.1.1 is out.

Please note that it is not a .Net 5 package yet. This is using the latest stable Blazor version before .Net 5 release.

We will make the .Net 5 package later one.

galvesribeiro avatar Feb 17 '21 04:02 galvesribeiro