microsoft / ClearScript

A library for adding scripting to .NET applications. Supports V8 (Windows, Linux, macOS) and JScript/VBScript (Windows).
https://microsoft.github.io/ClearScript/
MIT License
1.76k stars 148 forks source link

Add support for .NET Core #9

Closed cilerler closed 4 years ago

cilerler commented 7 years ago

When I try to add it from Nuget it says

Restoring packages for ...\ClassLibrary1.csproj...
Package ClearScript.V8 5.4.9 is not compatible with netstandard1.4 (.NETStandard,Version=v1.4). Package ClearScript.V8 5.4.9 supports: net40 (.NETFramework,Version=v4.0)
One or more packages are incompatible with .NETStandard,Version=v1.4.
Package restore failed. Rolling back package changes for 'ClassLibrary1'.
ClearScriptLib commented 7 years ago

Unfortunately ClearScript depends on reflection and dynamic runtime APIs that are not covered by the current .NET Standard. Furthermore, its V8 bridge is a mixed assembly and therefore requires .NET Framework.

cilerler commented 7 years ago

Thank you, do you think it will be covered by .NET Standard 2?

ClearScriptLib commented 7 years ago

Possibly. We'll keep this issue open and check again soon. Looks like .NET Standard 2.0 was finalized just yesterday!

bangclash commented 7 years ago

Net Standard 2 support would be great.

guillaumechervet commented 7 years ago

I am agree. Vert great :)

wboevink commented 6 years ago

+1 .Net Core 2.0 support

ipjohnson commented 6 years ago

@ClearScriptLib any news on supporting .netstandard 2.0?

ClearScriptLib commented 6 years ago

Hi @ipjohnson,

We've analyzed the ClearScript assemblies, and it didn't look too bad. A couple dozen APIs, most of them related to COM interop, are not available on .NET Standard.

A bigger problem for ClearScript is its dependence on Windows. JScript and VBScript are Windows-specific, and ClearScriptV8 is mixed-mode (an assembly type that's only supported on Windows).

So even if it used 100% .NET Standard APIs, ClearScript would still be Windows-only. Unfortunately, at this point, the fastest route to a portable ClearScript would probably be a fork based on ChakraCore.

Thanks!

ipjohnson commented 6 years ago

@ClearScriptLib Thanks for the update.

imsmart-tech commented 6 years ago

+1 That would be great, even if it's Windows-only. I develop on Windows so go for it. :-)

Do you have any timeline?

Grauenwolf commented 6 years ago

Most of us could live without JScript and VBScript. What we're looking for is the ability to load modern JavaScript so we can do pre-rendering like they do in Node. So an #if version that only exposed JavaScript in .NET Standard would still be really useful.

ClearScriptLib commented 6 years ago

Thanks, @Grauenwolf. Just wondering, why are you looking for .NET Standard support? Do you wish to host your application in .NET Core or another runtime? Or are you interested in non-Windows platforms?

cilerler commented 6 years ago

@ClearScriptLib it is crucial to move applications to Docker environment (could be Linux, could be Windows, isn't that the era we are in now) 😄 Please help us and implement a workaround. 🤗

Grauenwolf commented 6 years ago

Mostly I am interested in ridding myself of dependences on Node.

Node is used a lot by UI devs for build steps and pre-rendering pages. ASP.NET Core could easily do the same thing if it could run the parsers written in JavaScript.

Grauenwolf commented 6 years ago

Yes, running on non-Windows is a must. Nobody is going to consider replacing Node with ASP.NET if Linux support isn't an option.

hiyelbaz commented 6 years ago

V8 & .Net Core on Linux +1

guillaumechervet commented 6 years ago

V8 & .Net Core on Linux +1

ClearScriptLib commented 6 years ago

Folks,

Thanks for clarifying your requirements.

Unfortunately ClearScript's V8 connector is implemented in C++/CLI and would have to be redeveloped from scratch to gain cross-platform capability.

Have you considered purely managed JavaScript solutions such as Jint? There's also a portable solution based on V8 here.

Cheers!

charlesprakash commented 6 years ago

I would love to use ClearScript within my .NET Core web application. Today I can't because the module won't initialize. Support for .NET Standard is much appreciated.

ashutosh-kiddev commented 6 years ago

Hi, this is a great library and great work done by Clearscript team.We at Ubimax are trying to reuse some of our features from an existing windows application into a Unity/Hololens project. We used Clearscript for JS/C# bridging and it was great. But Clearscript seems not to be compatible with Unity. Is there any progress on making a .net standard/.net core supported version which is cross platform or if someone has tried making it usable with Unity/Hololens projects? Thanks in advance :)

ClearScriptLib commented 6 years ago

Hi @ashutosh-kiddev,

Thanks for your kind words. Unfortunately redeveloping ClearScriptV8 for compatibility with the current .NET Core would be a large project.

Instead we're hoping that .NET Core will eventually gain the platform features that ClearScriptV8 requires. To that end we're observing CoreCLR issues #18013 and #659.

Cheers!

ashutosh-kiddev commented 6 years ago

@ClearScriptLib Thanks a lot for the quick response. We will keep looking for the progress and hope this gets done sooner than later. :)

smokeelow commented 5 years ago

@ClearScriptLib Looks like that a lot of progress has been made on these two #18013 , #659

Does it mean that we can expect ClearScriptV8 support for .Net Core in the near future?

ClearScriptLib commented 5 years ago

@smokeelow Our interest in bringing ClearScript to .NET Core remains very high. If and when .NET Core officially gains support for mixed-mode assemblies, supporting it will become our top priority.

cilerler commented 5 years ago

@ClearScriptLib https://github.com/dotnet/coreclr/issues/18013 has been closed :wink:

WhitWaldo commented 5 years ago

@ClearScriptLib dotnet/coreclr#18013 has been closed 😉

It has, but with the caveat that only the .NET side is completed and that remaining work on the C++/CLI side is being internally tracked.

cilerler commented 5 years ago

Any chance to make this happen in .NetCore3?

daniel-schroeder-zeiss commented 5 years ago

I'd like to add that even a windows only .Net Standard or Core support would be appreciated. Microsoft is quite clearly communicating that this will be the future. So we would like to move our project to .Net Core even though it is windows only.

LeaFrock commented 5 years ago

As i see above, many developers like me are very eager for your support on .Net Core. Maybe my expectation is a little bit higher. I hope ClearScript can be used on .Net Core and cross platforms(not windows-only). It should be totally available on .Net Core(/Standard).

Unfortunately redeveloping ClearScriptV8 for compatibility with the current .NET Core would be a large project.

.Net itself has been redeveloped and keeps going on. ClearScript is also an official project which represents trust and advance in our minds. So if .NET Core 3.0 doesn't gain support for mixed-mode assemblies, redeveloping a project as 'ClearScript.Core', rather than waiting for something, should be more meaningful to us. The .Net Framework will be a history, and don't let it be a stumbling block——unless you would abandon this project in the future.

cilerler commented 5 years ago

@ClearScriptLib FYI

https://github.com/dotnet/coreclr/issues/18013#issuecomment-534289704

I want to share a quick update on this. The latest on the C++/CLI roadmap can be found on our C++ blog here: https://devblogs.microsoft.com/cppblog/the-future-of-cpp-cli-and-dotnet-core-3/

.NET Core support for C++/CLI is coming in .NET Core 3.1 which is shipping with Visual Studio 2019 16.4.

cilerler commented 4 years ago

@ClearScriptLib any update on this? Would you please provide a status update. Thanks in advance

adamplonka commented 4 years ago

as .NET Core vNext will be called .NET 5.0 and .NET Framework 4.8 is the last version which suggests an upgrade from .NET Framework 4.8 to .NET 5.0 will be the only and inevitable upgrade path for legacy windows applications - are there real chances of support for .NET 5.0 (at least windows only)?

cilerler commented 4 years ago

@PlonkaAdam No need to blur the water, read the entire issue, please. We have a great chance to receive .NET 3 upgrade, based on what @ClearScriptLib said above. There were two blocking issues, which both resolved as far as I know. However, the only downside will be running it on the Windows environment, but it will be still feasible to use .NET Core 3.

ClearScriptLib commented 4 years ago

Hi @cilerler,

An update:

Assuming that .NET Core 3.1 fully supports mixed-mode assemblies, we should have a release targeting that platform at some point. Unfortunately, as ClearScript is a side project, we can't commit to any definite timelines.

Thanks!

cilerler commented 4 years ago

That is fantastic news @ClearScriptLib. Thank you very much!

LeaFrock commented 4 years ago

@ClearScriptLib Waiting for good news! Thanks!

tombatron commented 4 years ago

WOO HOO!

https://devblogs.microsoft.com/dotnet/announcing-net-core-3-1/

colonelchlorine commented 4 years ago

When the post says "C++/CLI is only enabled on Windows", what does that mean in terms of the V8 interface port & ClearScript working on other platforms (e.g Linux)?

ClearScriptLib commented 4 years ago

Hi @colonelchlorine,

.NET Core 3.1 supports mixed assemblies, but only on Windows. ClearScript won't be portable to other operating systems until that changes.

Cheers!

ClearScriptLib commented 4 years ago

ClearScript 6.0 added support for .NET Core 3.1 on Windows.

cilerler commented 4 years ago

bitmoji

crowder commented 4 years ago

What remains to be done to enable this support for Linux?

tombatron commented 4 years ago

They would have to rewrite the library to not by a C++/CLI library.

ClearScriptLib commented 4 years ago

@crowder @tombatron Strictly speaking, the issue is not with C++/CLI but the fact that ClearScriptV8 is a mixed assembly - one that packs managed and native code into a single file. Such assemblies are supported only on Windows, and our understanding is that Linux support would require kernel and toolchain modifications.

Anyway, because ClearScript now supports .NET Core, we're closing this issue. Please feel free to open new ones to report any problems you encounter with ClearScript on any supported platform.