Closed Fabian-Schmidt closed 3 months ago
That's probably on me, partially.
At that time I was trying to fix NetWatcherService
, which required upgrading the target framework to .NET 4.7.2 (System.Collections.Concurrent.ConcurrentDictionary.GetOrAdd-0)))
Though that never got finished, and later replaced by native C interop.
The upgrade from .NET 4.6.1 to .NET 4.7.2 dropped Windows Server 2008 SP2
and Windows 8
as supported systems, while .NET 4.7.2 is in-place upgradable on all supported systems with .NET 4.7.1.
What's stopping you from targeting .NET 4.7.2?
Thanks for the quick response.
Unfortunately I must target 4.7.1 (or earlier) in my use case and cannot upgrade the hosting environment. I also find it undesirable to target such an old version.
Yeah..... I honestly don't think I'm going to do this. We're actually using the factory method of ConcurrentDictionary elsewhere now. Not in many places. But I don't really want to compromise all that just to support a very old version of Framework.
The decision at the time was to support Framework versions that supported Windows versions could be upgraded too. So, 2008 R2, I believe, can be upgraded safely to .NET 4.7.2.
Looks like 2008 R2 extended support ended too though. Heh.
Just a thought - ConcurrentDictionary source is free for the taking (MIT) and probably fairly trivial to backport.
Yeah. Well, that's what I mean by "compromise all that". Copying Framework source code into IKVM.
Thank you for the detailed feedback. I wanted to check the motivation.
I must explore alternatives now.
Just to add another datapoint, I've just received a query about providing support for using MPXJ.Net (the version of MPXJ using modern IKVM) on .Net Framework 4.7.1.
that's what I mean by "compromise all that". Copying Framework source code into IKVM.
Would an approach similar to this package (https://github.com/OlegRa/System.DateTimeOnly), which makes DateOnly and TimeOnly available for use with .Net < 6.0 be workable? I haven't looked at the implementation of ConcurrentDictionary
, but if it is feasible for the code to be extracted into a separate NuGet package would IKVM be able to make use of it to make support for 4.7.1 possible? I'd be happy to tackle creation of a package like this if it is useful and feasible.
I would probably not agree to included third party polyfils as direct deps of IKVM.Runtime anyways. We already polyfil a few things ourselves: for instance System.Range and System.Index, so we can make use of those features internally on Framework. They don't get exposed to users. Adding a third party package into our dep tree is a hard sell. I've just managed to finally remove Mono.Posix for instance, and that was a big win.
I'm okay with some of hte light weight MS polyfils: like System.Buffers, System.Memory, Unsafe stuff, ValueTuple, etc. Supported by MS. Low impact. Of certain origin, etc.
I think the biggest problem is that none of these requests come with a timeline. When would we be committing to drop NET471? What date? Would we just pin to MS' extended support date? Would those users have upgraded by then, or would we be back in the same place? None of this is clear.
I'm also frankly a little suspicious of people who claim they can't upgrade .NET Framework, but are somehow clammering to upgrade to the latest IKVM version. :)
Ya know, another window is open too: IKVM 8.6.4 did support NET461. IKVM.Maven.Sdk 1.5.5 release went with this.
IKVM itself has undergone major internal changes since then. But it's not like 8.6.4 no longer works. Can ya'll not just keep using that for now? I'd still take patches to 8.6.4 and do releases from that. And its not like people can't do that themselves either.
Thanks for the feedback, most helpful.
I think the biggest problem is that none of these requests come with a timeline. When would we be committing to drop NET471? What date? Would we just pin to MS' extended support date? Would those users have upgraded by then, or would we be back in the same place? None of this is clear.
It's tricky. The approach I'm taking is just to give clear advance notice (e.g. N months from now XYZ will no longer be supported in new versions of ABC), so hopefully end users will have enough runway to sort out their upgrades. I guess we may be having a similar conversation about IKVM and 4.7.2 at some point in future. Having said all that, the query about 4.7.1 support has come after I've given my end users given that notice...
Ya know, another window is open too: IKVM 8.6.4 did support NET461. IKVM.Maven.Sdk 1.5.5 release went with this
Interesting observation. I'd like to keep the "mainline" version of my package on the current version of IKVM.Maven.Sdk, but I can see the potential for packaging a (separate? combined?) 4.7.1 compatible version of my package while the versions of IKVM.Maven.Sdk are functionally equivalent. I'll have a think about what's feasible...
Hello,
Is it possible to add .NET Framework 4.7.1
net471
as a supported target Framework?I found the change from 4.6.1 to 4.7.2 - #406 - , but I did not see the technical motivation for it.
The .NET Framework 4.7.1 is still supported by Microsoft .
Thank you