Categories
Uncategorized

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

--------------------------------------------------------------------------------------------------



E ogni lingua proclami che Gesù Cristo è il Signore, a gloria di Dio Padre.


Subscribe By E-mail:

Enter your email address:

Delivered by FeedBurner



----------------------------------------------------------------------------------------------

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 conda 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 conda 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 conda 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.

Per dimostrare questo, ho caricato due video che mostrano il Trova Tutte le operazioni I riferimenti al tipo di stringa in falso, una grande F # OSS Codebase. Questo è un caso estremo che non è rappresentativo di utilizzo “normale” per Trova tutti i riferimenti, ma aiuta a dimostrare ciò che potrebbe accadere nel raro caso in cui si ha bisogno di trovare i riferimenti a un tipo estremamente comune in una grande base di codice.

Il primo video è con Visual Studio 2019 Aggiornamento 16,5 (seguire il link a YouTube per una maggiore definizione):

Si noti che i risultati prendono molto più tempo per iniziare a compilare, e l’intero processo dura circa 1 minuto e 11 secondi per completare. Dopo Trova tutti i riferimenti era finito, Visual Studio è stato fino a ~ 1.75GB di utilizzo della memoria:

Immagine falso findrefs 16 5

Il secondo è con la più recente di Visual Studio 2019 Aggiornamento 16,6 (seguire il link a YouTube per una maggiore definizione):

Come si può vedere, i risultati iniziano mostrando molto più veloce, e l’intero processo sono voluti circa 43 secondi per completare! Dopo Trova tutti i riferimenti è in esecuzione finito, Visual Studio è stato fino a ~ 1,2 GB di utilizzo della memoria:

Immagine falso findrefs 16 6

Dietro le quinte, due componenti chiave sono stati riscritti:

Il componente principale che è responsabile per la ricerca di simboli in codice utente e cedendo di nuovo ad un chiamante che chiede simboli che corrispondono ad un dato ingresso
La componente di Visual Studio che mostra trovano simboli nella finestra Trova Tutti i riferimenti e la colora il testo sulla base del codice sorgente viene mostrato nella lista
In aggiunta alle caratteristiche come Trova tutti i riferimenti essere più veloce, la quantità di memoria utilizzata per l’esecuzione è stato anche notevolmente ridotto, il che è importante quando si lavora in una grande base di codice.

Proprio come con le prestazioni del compilatore, i nostri straordinari collaboratori OSS hanno continuamente trovato piccole inefficienze in codice che viene chiamati da utensili, che hanno ripulito e migliorato nel tempo. Siamo grati per il loro contributo e ci auguriamo di molte più opportunità per migliorare F # utensili con loro.

La continua F # 5 viaggio
Abbiamo ancora più impressionante roba prevista per F # 5, e non vediamo l’ora di mostrare una volta che sono finiti. Fino a quel momento, saremo concentrati su un paio di cose:

Continuando l’inclusione delle caratteristiche del linguaggio quando il loro design e le implementazioni sono stabili
Continuando a migliorare le prestazioni di utensili per le più grandi basi di codice F #
Fare F # in Jupyter e Visual Studio Codice Quaderni il miglior linguaggio per la scienza dei dati e lavoro analitico (più su questo nei prossimi aggiornamenti!)
Continuando a integrare i contributi OSS e si sforzano di includerli nelle versioni più breve tempo possibile
Se si desidera seguire su un livello molto più dettagliato, è possibile controllare il repository # sviluppo F. Stiamo monitoraggio del lavoro che stiamo concentrati su un tema GitHub ogni 3 settimane, e vi invitiamo tutti a fornire un contributo alla lista delle cose e fateci sapere cosa ne pensate.

Saluti e felice F # codifica!

F# 5 and F# tools update

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