yatli / fvim

Cross platform Neovim front-end UI, built with F# + Avalonia
MIT License
1.34k stars 30 forks source link

Mention .NET SDK 3.1.404 is required for build #175

Closed ForNeVeR closed 3 years ago

ForNeVeR commented 3 years ago

Since some parts of the new syntax (say, uint) are used here, the project cannot be built using an older SDK.

yatli commented 3 years ago

I thought it builds fine with 3.1 sdk?

ForNeVeR commented 3 years ago

uint was only included into F# 5, which isn't available in 3.1 SDK.

yatli commented 3 years ago

Thanks.

I just double checked the fsproj, it says netcoreapp3.1, and there's no explicit reference to FSharp.Core, so it should default to 4.7.

The azure build pipeline was updated a while ago to use 5.0 SDK though.

I'll need to actually do a build with 3.1 to see what happens. IIRC uint has been around since a long time ago.

I was experimenting with a .Net 5 build, but reverted to netcoreapp3.1 due to performance issues.

yatli commented 3 years ago

I do remember this RFC, and was confused a bit back then -- I must have been using uint32 or just int 😅😅

yatli commented 3 years ago

Builds fine with SDK 3.1 -- not sure why/how:

yatli commented 3 years ago

Do you have a repro where 3.1 SDK doesn't work?

ForNeVeR commented 3 years ago

Yes. I have .NET SDK 3.1.301 installed (dotnet info → 3.1.301, among others. including 5.0.101), and the global.json I've generated says the following:

{
  "sdk": {
    "version": "3.1.301"
  }
}

dotnet build says this:

C:\Temp\fvim\Views\Editor.xaml.fs(85,34): error FS0039: The type 'uint' is not defined. Maybe you want one of the following:   uint8   UInt16   UInt32   UInt64   uint16 [C:\Temp\fvim\fvim.fsproj]

For the record:

$ dotnet --info
.NET Core SDK (reflecting any global.json):
 Version:   3.1.301
 Commit:    7feb845744

Runtime Environment:
 OS Name:     Windows
 OS Version:  10.0.18363
 OS Platform: Windows
 RID:         win10-x64
 Base Path:   C:\Program Files\dotnet\sdk\3.1.301\

Host (useful for support):
  Version: 5.0.1
  Commit:  b02e13abab

.NET SDKs installed:
  2.1.801 [C:\Program Files\dotnet\sdk]
  2.2.203 [C:\Program Files\dotnet\sdk]
  3.0.100 [C:\Program Files\dotnet\sdk]
  3.1.101 [C:\Program Files\dotnet\sdk]
  3.1.301 [C:\Program Files\dotnet\sdk]
  5.0.101 [C:\Program Files\dotnet\sdk]
ForNeVeR commented 3 years ago

You may try switching to 3.1 on CI to check if that works. Anyway, I think it's a good idea to state actual requirements you have on CI (i.e. the tool versions you're checking against).

ForNeVeR commented 3 years ago

Oh gosh. Tried the same in 3.1.404: it works, indeed. Seems F# 5 compiler was included somewhere in the middle of 3.1 then?

ForNeVeR commented 3 years ago

I suggest we state that 3.1.404 is required, then. There's another user here who had 3.1.108 installed, and they were thinking it would be enough to build fvim, while it actually is not.

ForNeVeR commented 3 years ago

I've updated the PR to reflect these findings.

yatli commented 3 years ago

Thank you!

I was hesitating on stating SDK 5.0 requirement because installing a 5.0 package (host+runtime+sdk) alone is not enough to build for TFM netcoreapp3.1 -- I want to remove such complexity to avoid scaring people new to dotnet away.

The uint thing probably happened recent enough during the rune refactoring -- that the transition did not raise an alert for me.

I'll merge this one now. We will move to 5.0 when I have sufficient test data.