F # 5 e # F aggiornamento strumenti12/06/2020

TheMummichogblog è un partecipante al Amazon Services LLC Associates programma, un programma di affiliazione pubblicitario progettato per fornire un mezzo per siti per guadagnare tariffe pubblicitarie con la pubblicità e il link al amazon.com. Amazon, il logo di Amazon, AmazonSupply, e il logo AmazonSupply sono marchi di Amazon.com, Inc. o delle sue affiliate.

F # 5 e # F aggiornamento strumenti
Phillip Carter
Phillip

20 maggio 2020

Siamo entusiasti di annunciare alcuni aggiornamenti di F # 5 di oggi! Abbiamo spedito un sacco di funzioni di anteprima in quanto F # 5 anteprima 1, e sono stati tutti stabilizzando da quel rilascio. Oggi, siamo lieti di annunciare alcune aggiunte minori al F # 5 e parlare di qualche bella opera performance fresco che abbiamo fatto.

Ecco come si ottiene l’ultima release:

Installare l’ultimo .NET 5 anteprima SDK
Installare Jupyter Notebook for .NET
Se si sta utilizzando Visual Studio su Windows, è necessario sia il .NET 5 anteprima SDK e Visual Studio Anteprima installato.

Utilizzando F # 5 anteprima
È possibile utilizzare F # 5 anteprima tramite il .NET 5 anteprima SDK, o attraverso il supporto .NET e Jupyter notebook.

Se si sta utilizzando il .NET 5 anteprima SDK, estrarre un repository di esempio mostra alcune delle cose che si può fare con F # 5. Si può giocare con ciascuna delle caratteristiche lì, invece di partire da zero.

Se si preferisce utilizzare F 5 # nel tuo progetto, è necessario aggiungere una proprietà LangVersion con anteprima come valore. Dovrebbe assomigliare a qualcosa di simile a questo:

Microsoft.NET.Sdk”>


Exe OutputType>
net5.0 targetFramework>
Anteprima LangVersion>
PropertyGroup>



ItemGroup>

Progetto>
vista rawfs5-campione-proj.fsproj ospitato con ❤ da GitHub
In alternativa, se si sta utilizzando Jupyter notebook e desidera un’esperienza più interattiva, estrarre un campione di notebook che mostra le stesse caratteristiche, ma ha un output più interattivo.

F # 5 funzionalità e miglioramenti
Questa release introduce solo una nuova funzione langauge. Tuttavia, le altre caratteristiche Abbiamo spedito finora sono stati ulteriormente stabilizzati. Ci sono alcune altre funzioni in cantiere che stiamo pensando, prima che noi chiamiamo F # 5 funzione completa, e noi pubblicheremo gli aggiornamenti quando sono disponibili.

membro di interoperabilità interfaccia predefinita
C # 8 ha introdotto la possibilità di definire le interfacce con implementazioni di default come questo:

using System;

namespace CSharp
{
interfaccia pubblica MyDim
{
public int Z => 0;
}
}
visualizzare rawdim-csharp.cs ospitati con ❤ da GitHub
Ora è possibile consumare questi in F # attraverso i mezzi standard di implementazione di un’interfaccia:

CSharp aperto

// È possibile implementare l’interfaccia tramite una classe
tipo MyType () =
_.M membro () = ()

interfaccia MyDim

lasciare md = MyType ():> MyDim
printfn “DIM da C #:% d” md.Z

// È inoltre possibile implementare tramite un’espressione oggetto
lasciare md’= {new MyDim}
printfn “DIM da C #, ma attraverso l’espressione oggetto:% d” md’.Z
visualizzare rawdim-fsharp.fsx ospitato con ❤ da GitHub
Questo vi permetterà di F # sviluppatori in modo sicuro usufruire di pacchetti o altri componenti scritti in C # che utilizzano questa funzione e si aspettano i chiamanti per sostenerlo.

Al momento non supportiamo la generazione di implementazioni di default, però. Se vuoi farlo, si prega di cercare o presentare una proposta nel repository suggerimenti linguaggio F #.

miglioramenti delle prestazioni compilatore
Siamo stati concentrati sul miglioramento delle prestazioni del compilatore F # e gli strumenti da qualche tempo, e con ogni versione che vediamo progresso incrementale. Anche se le prestazioni possono sempre essere migliorato, siamo abbastanza soddisfatti dei nostri progressi fino ad ora!

Per dimostrare la differenza, controlla questa forcella del repository FSharpPlus, una base di codice che sottolinea l’# compilatore F in modo significativo con l’uso di alcune funzioni avanzate. È possibile modificare il file global.json per specificare uno SDK .NET sulla vostra macchina. In questo caso, ha un anteprima .NET 5 e rilasciato .NET core 3.1 SDK da Visual Studio 2019 aggiornamento 16,5 specificato. Se si dispone di quelle SDK sulla vostra macchina, è possibile verificare questo fuori da soli.

Sul mio desktop personale, ho i seguenti tempi quando si esegue i seguenti comandi:

dotnet FSharpPlus.sln pulito
costruire dotnet FSharpPlus.sln -c di uscita
NET Nucleo 3.1: 3: 01,510
NET 5: 2: 16.23

Questo è piuttosto un miglioramento! Tuttavia, non tutti i miglioramenti da parete tempo-orologio sono causa di F #. Tutto nel toolchain .NET migliorato troppo.

Per scavare in questo un po ‘di più, ho eseguito la stessa procedura prima, ma ha i seguenti comandi per generare un riepilogo delle prestazioni MSBuild .:

dotnet FSharpPlus.sln pulito
dotnet msbuild FSharpPlus.sln / p: congiguration = uscita / CLP: PerformanceSummary
Con una corsa, vedo le seguenti differenze di tempo di CPU speso nel compito Fsc (il # compilatore F sempre chiamato):

NET Nucleo 3.1: 527_522 ms
NET 5: 440_873 ms

(Nota: a causa MSBuild è in esecuzione le cose in parallelo, quando è possibile, il tempo di CPU è molto più lungo di tempo orologio a muro.)

Si tratta di un miglioramento del 16% nel tempo speso nel compilatore F # per costruire la stessa base di codice! Quando si compila il progetto nucleo FSharpPlus.fsproj, Ho visto personalmente un miglioramento fino al 35% in tempi di compilazione. Il miglioramento esatto può variare da macchina a macchina e build per creare, soprattutto se il processo di compilazione non ha la priorità più alta sulla vostra macchina in quel momento. Indipendentemente da questi avvertimenti, tempi di costruzione sono sempre migliorati durante la creazione di questo progetto. Questo ha tenuto vero per un paio di altri progetti OSS che sono stati testati.

Ho caricato entrambi i registri in un succo GitHub, se siete curiosi di sapere la piena ripartizione.

Risultati come questi sono a causa di un sacco di fattori, uno dei quali è migliorare il modo che i metadati vengono letti e trattati durante la compilazione.

Inoltre, i nostri straordinari collaboratori OSS hanno continuamente trovato piccole inefficienze che hanno diligentemente aiutato a migliorare nel corso del tempo. Questo è uno sforzo continuo che siamo estremamente grati.

Scarica l’anteprima .NET 5 e provarlo voi stessi!

miglioramenti Tooling in Visual Studio 2019 Aggiornamento 16,6
Il compilatore non era l’unica cosa che ha ottenuto più velocemente in questa versione. Ci siamo concentrati sul miglioramento delle prestazioni e l’affidabilità degli strumenti di Visual Studio per F # in tutto il Visual Studio 2019 del ciclo di vita, e questa versione non è diverso! A partire da Visual Studio 2019 Aggiornamento 16,6, funzioni come Trova tutti i riferimenti e Rinomina dovrebbe correre molto più veloce e mostrare risultati molto prima durante la scansione di una grande base di codice.

Amazon e il logo di Amazon sono marchi di Amazon.com, Inc., o delle sue affiliate.