Showing posts with label Visual Studio Code. Show all posts
Showing posts with label Visual Studio Code. Show all posts

Saturday, December 22, 2018

[ADVENT 2018] Current state of F# 4.x tooling and IDE ecosystem on December 2017

Hi my dear blog readers!

First of all, happy holidays! Now I’m back to joining Sergey Tihon’s  F# advent blog 2018 gathering! Smile


My past 2017 advent blog is available here: https://fsharpmonologue.blogspot.com/2017/12/advent-2017-current-state-of-f-4x.html

In this blog entry, I bring you the states of F# news and updates in two major subtopics: the tooling ecosystem, and the community surroundings.

F# state in December 2018


A lot has happened in 2018, particularly the progress that has been made from Microsoft, F# communities, and the whole cool participations on F# github repo.

To increase clarity, let’s start discussing F# tooling ecosystem.

F# tooling ecosystem updates

The F# tooling is basically evolved since 2005 (as research project before integrated in Visual Studio) into these components:

  1. F# Language Specification
  2. F# Compiler
  3. F# Core libraries
  4. F# Compiler Services (since 2013)

Note that although F# Compiler Services derives from F# Compiler, the F# Compiler Services is very important. Because it brings parity with Roslyn as compiler service. It is also a good sample of having the compiler created with the language you want to compile.

Thanks to its flexibility and power, F# Compiler Services can be used as true component, and it is suitable to be used as language services.

Ionide use F# Compiler Services heavily to provide F# support in Visual Studio Code, and it enjoys many features available in Visual Studio.

Now in Visual Studio 2017 from 15.6, these are the noteworthy F# updates:

  1. Versioning model has been changed to decouple from Visual Studio version releases. This brings F# tooling more freedom and flexibility to progress further, although F# tooling is closely related to a VS release, as described in this RFC of F# versioning plan on GitHub. A follow up article by Phillip Carter brings more detail that VS 2017 15.7.x has F# 4.4, and 15.8.x has F# 4.5, like the captured table below. Note: there will be no 4.2, 4.3 version, it will be version 4.5 or later.
  2. Related to previous point, VS 2017 15.7 will have F# 4.5. And this version will be the same version as F# Compiler Service related iteration.
  3. F# supports the same semantic of ValueTuple as Struct tuple (since 15.6). This brings closer compatibility with the .NET class library of ValueTuple in .NET Framework 4.7.
  4. F# supports full file ordering for .NET Core 2.0 or later project (since 15.6)
  5. Realtime multi TFM targeting (a.k.a. multi targeting in .NET team blog, since 15.6). This brings unique experience compared to other language tooling such as C#/VB, because C#/VB doesn’t have this yet!
  6. Go to definition from the member tooltip (since 15.6)
  7. Removal of dependency to Windows 10 SDK (since 15.6). This brings less size and leaner requirement to have F# development.
  8. ..and many more in 15.6! For more detail, please visit this official blog post: https://blogs.msdn.microsoft.com/dotnet/2018/03/06/f-language-and-tools-update-for-visual-studio-2017-version-15-6/

This is the versioning illustration:

image

This is nicely documented as RFC in F# Language Design repo in https://github.com/fsharp/fslang-design/blob/master/tooling/FST-1004-versioning-plan.md

In 15.7, F# tooling keeps updated too. These are the noticeable updates:

  1. New F# template for ASP.NET Core 2.0 project! This is a very amazing progress since 15.5, because now we could create ASP.NET Core using F# Open-mouthed smile
  2. Enabled generating F# AssemblyInfo from properties with the F# compiler in the .NET SDK. This is not trivial but it is closer to C#/VB feature to support common AssemblyInfo infrastructure that common in C#/VB project.

A quick hands-on sample to use F# new ASP.NET Core template is by executing “dotnet new web –lang f#” like this illustration: (I run against .NET Core 3.0 Preview 1)

image

Now let’s see what’s inside this folder:

image

Looking at the content of Program.fs, we now see that we have the same quick start from C# template:

image

This code implies that we use Kestrel by default.

To be maximally applicable to use F# with ASP.NET Core, I recommend to use Visual Studio Code 1.28 with the updated Ionide.

Now, the other wonderful things happened since July 2018 are the updates from communities!

Bonus fun fact of Microsoft F# repo: it uses Azure DevOps since June as the main CIs!

image


F# community tooling update

These are the best updates from community so far:

  1. Paket now supports .NET Core 2.2 and .NET Core 3.0 as one of its TFM support since 5.181.0.
  2. Fable is reaching version 2.1, and it has tons of bug fixes

That’s it folks!!

Happy holiday and Merry Christmas!

Friday, May 22, 2015

Current state of Visual Studio releases [May 2015]

Hi my blog readers! I know, this blog installment should be out regularly at 19th or 20th May, but there are many things to be discussed and lots of excitements to be shared for you before I publish this. So please be with me Smile

This is the third installment of Visual Studio releases update. In this installment, again, there are many exciting news about Visual Studio!

Here they are:

  1. The release of Visual Studio 2015 Release Candidate (also called Visual Studio 2015 RC) on 29th April 2015
  2. The release of Visual Studio 2015 SDK Release Candidate (also called Visual Studio 2015 SDK RC) on 29th April 2015
  3. The release of Visual Studio Code (preview)
  4. The release of Visual Studio 2013 Update 5 Release Candidate on 28th April 2015
  5. Github Extension for Visual Studio 2015 release (it’s also available as an option when installing Visual Studio 2015 RC)

Now here are the breakdown of those above. A friendly warning: this is a loooong list, a little bit TLDR.

Visual Studio 2015 Release Candidate

As usual, if Microsoft releases a software that has RC mark, the RTM release is near: within 3-4 months. Yes, it’s at faster cadence as indicated by my previous blog almost 2 years ago: http://fsharpmonologue.blogspot.com/2013/07/current-state-and-product-lifecycle-of.html

NOTE: This meaning of RC thing may be only apply at Microsoft world and this is common at least in the last 14 years (since Windows XP). In detail, the release of RC means the feature is fixed. This simply means that there will be no new features for the next release for the RTM. The next release of RC can be RC2 or the release, usually (officially) named as RTM, or Release-To-Market.

Even at the release of VS 2010, this trend of faster cadence has stabilized. Yes, there was broken rule of semantic versioning between VS 2012 and 2013, and it was quite annoying. The new version of Visual Studio 2013 should be bringing more features instead of just minor updates and fixes.

Fortunately, Visual Studio 2015 has many good news:

  1. It’s not just a new release, it has tons of new features compared to Visual Studio 2013
  2. VS 2015 has Roslyn (VB and C# compiler as a service) built in. And it’s also open source!
  3. Because of the nature of opening Roslyn, the communities are actively influencing the development of Roslyn and therefore the proposals of features are rapidly introduced and many of them are very good!
  4. The Visual Studio 2015 family has different products, but the price will be lower than the previous Visual Studio 2013 with MSDN subscription offers. This also includes the next release of Visual Studio 2013 Community Edition, the Visual Studio 2015 RC Community Edition. There will be NO Visual Studio Premium with MSDN subscription for Visual Studio 2015, as the VS 2015 Premium is named as Visual Studio 2015 Professional. The original VS 2015 Professional offering is now Community Edition.
  5. CodeLens is available on Visual Studio 2015 Professional. Originally it was available only at Visual Studio 2013 Ultimate Edition since Visual Studio 2013 Ultimate Edition Update 2.
  6. The original Ultimate edition is now available named as Enterprise edition in VS 2015

The official announcement is available at Visual Studio blog: http://blogs.msdn.com/b/visualstudio/archive/2015/04/29/build-2015-news-visual-studio-code-visual-studio-2015-rc-team-foundation-server-2015-rc-visual-studio-2013-update-5.aspx

You can download Visual Studio 2015 RC (Community, Professional, Enterprise) at: https://www.visualstudio.com/downloads/visual-studio-2015-downloads-vs

VS_2015_RC_download

Visual Studio 2015 SDK Release Candidate

This SDK is released at the same time of Visual Studio 2015 Release Candidate. It is also contains the implementation of Roslyn integrated into the way of Visual Studio extension development.

You can also try the samples (included in the SDK) and experiment cool new features of Roslyn, such as building AST of the code (C# and VB only) and analyze your code.

One of the nice features of Visual Studio 2015 is the Light Bulb suggestions when you code using built in managed languages (VB, C#, F#, managed C++) and native C++. Therefore you can also build your own custom Light Bulb suggestions using Visual Studio 2015 SDK. For more information about custom Light Bulb development, visit: https://msdn.microsoft.com/en-us/library/dn903708(v=vs.140).aspx

The official announcement of VS 2015 SDK RC is available at the same Visual Studio blog entry above: http://blogs.msdn.com/b/visualstudio/archive/2015/04/29/build-2015-news-visual-studio-code-visual-studio-2015-rc-team-foundation-server-2015-rc-visual-studio-2013-update-5.aspx

Visual Studio 2015 SDK RC can be downloaded at: http://www.microsoft.com/en-us/download/details.aspx?id=46850

Visual Studio Code

A new Visual Studio family is here! It’s very light, free, and cross platform!

Now why I emphasize this? There has been a strong image that Visual Studio will never have lightweight editor that runs on OS other than Windows!

What is Visual Studio Code, really?

It is simply a lightweight development editor but with intelligent features partially borrowed from a full big IDEs such as intellisense, code completion, keyword highlights. It’s based on Omnisharp, a lightweight editor that is also open source. The web development editing part is based on Electron, a subpart of Atom which is also open source. Omnisharp itself is an Atom package that provides C# and ASP.NET support.

At the time of this writing; Visual Studio Code isn’t yet reached RTM. The initial version number is version 0.1.0.

This is the official home page of Visual Studio Code: https://code.visualstudio.com/

One more thing, I have mentioned cross platform! Because Visual Studio Code runs not just on Windows, but it can run on Linux Linux 64-bit, and MacOS.

To download the current Visual Studio Code, you can get it at the landing page (home page) above.

Visual Studio 2013 Update 5 Release Candidate

Yes, you got it right: it’s another update for Visual Studio 2013 after Update 4.

Now what does this Update 5 have? Actually, it’s simply Update 4 with numerous bug fixes and a small additional feature, including these notable bug fixes:

The additional small features are:

  • Team Project rename support for Team Foundation Server (on premises). Visual Studio Online also has this feature.
  • A new query token for query iteration: @CurrentIteration (it is case sensitive name). This feature is previously available on Visual Studio Online since March 10. See https://www.visualstudio.com/en-us/news/2015-mar-10-vso.aspx

NOTE:

This update is the last release of Visual Studio 2013 update, so there will be no next Visual Studio 2013 Update after Update 5.

Github Extension for Visual Studio 2015

There is support for GitHub built in, not just Git repo support since Visual Studio 2013 initial RTM release. This extension is available as an option when installing VS 2015 or as stand alone installation.

Not just GitHub, but initial feature of pull request, merge, diff, sync, graph is also available.

This is the announcement from official Visual Studio blog: http://blogs.msdn.com/b/visualstudio/archive/2015/04/30/announcing-the-github-extension-for-visual-studio.aspx

The picture below is taken from the blog entry:

4048.BUILD2015-GithubExt-Team Explorer

To download stand alone installation of this GitHub extension, visit: https://visualstudio.github.com/?CR_CC=200627595