# F#

F# is an open-source programming language for writing software on .NET.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Microsoft Releases .NET 11 RC1 with Go-Live Support, C# 15 and F# 11 as Default Language Versions

DevFeed: [Microsoft Releases .NET 11 RC1 with Go-Live Support, C# 15 and F# 11 as Default Language Versions](<https://devfeed.tech/articles/microsoft-releases-net-11-rc1-with-go-live-support-c-15-and-f-11-as-default-language-versions-26600.md>)

Original publisher: [Read original article](<https://www.infoq.com/news/2026/09/dotnet-11-rc-1-release/>)

Author: Almir Vuk

Published: 2026-09-15T07:11:00Z

Content type: news

Language: en

Sources: [InfoQ](<https://devfeed.tech/sources/infoq.md>)

Topics: [.NET 11](<https://devfeed.tech/topics/net-11.md>), [C# 15](<https://devfeed.tech/topics/c-sharp-15.md>), [Microsoft](<https://devfeed.tech/topics/microsoft.md>), [releases](<https://devfeed.tech/topics/releases.md>), [ASP.NET Core](<https://devfeed.tech/topics/asp-net-core.md>), [F#](<https://devfeed.tech/topics/fsharp.md>), [SignalR](<https://devfeed.tech/topics/signalr.md>), [SDKs](<https://devfeed.tech/topics/sdks.md>), [.NET MAUI](<https://devfeed.tech/topics/net-maui.md>), [native aot](<https://devfeed.tech/topics/native-aot.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [api](<https://devfeed.tech/tags/api.md>), [asp-net-core](<https://devfeed.tech/tags/asp-net-core.md>), [c-sharp-15](<https://devfeed.tech/tags/c-sharp-15.md>), [development](<https://devfeed.tech/tags/development.md>), [dotnet-11-rc-1-release](<https://devfeed.tech/tags/dotnet-11-rc-1-release.md>), [f-sharp](<https://devfeed.tech/tags/f-sharp.md>), [ios](<https://devfeed.tech/tags/ios.md>), [macos](<https://devfeed.tech/tags/macos.md>), [microsoft](<https://devfeed.tech/tags/microsoft.md>), [native-aot](<https://devfeed.tech/tags/native-aot.md>), [net](<https://devfeed.tech/tags/net.md>), [net-10](<https://devfeed.tech/tags/net-10.md>), [net-11](<https://devfeed.tech/tags/net-11.md>), [net-9](<https://devfeed.tech/tags/net-9.md>), [net-core](<https://devfeed.tech/tags/net-core.md>), [net-maui](<https://devfeed.tech/tags/net-maui.md>), [news](<https://devfeed.tech/tags/news.md>), [releases](<https://devfeed.tech/tags/releases.md>), [sdk](<https://devfeed.tech/tags/sdk.md>), [signalr](<https://devfeed.tech/tags/signalr.md>)

### AI overview

Microsoft released .NET 11 Release Candidate 1 with go-live support for production use. It makes C# 15 and F# 11 the default language versions and stabilizes features from the preview cycle. The release also extends testing across mobile and desktop targets, updates SignalR authentication refresh APIs, and adds SDK, ASP.NET Core, Blazor, and Native AOT-related improvements.

### Source excerpt

Last week, Microsoft has released .NET 11 Release Candidate 1, the first release candidate of the cycle, shipping with a go-live support license for production use. The release makes C# 15 and F# 11 the default language versions, extends dotnet test to mobile and desktop targets, finalizes the SignalR authentication refresh APIs, and improves Android build times in .NET MAUI. By Almir Vuk

## Security updates for Monday

DevFeed: [Security updates for Monday](<https://devfeed.tech/articles/security-updates-for-monday-17390.md>)

Original publisher: [Read original article](<https://lwn.net/Articles/1094211/>)

Author: jzb

Published: 2026-09-14T13:18:14Z

Content type: news

Language: en

Sources: [LWN.net](<https://devfeed.tech/sources/lwn-net.md>)

Topics: [Security](<https://devfeed.tech/topics/security.md>), [Debian](<https://devfeed.tech/topics/debian.md>), [Fedora](<https://devfeed.tech/topics/fedora.md>), [Firefox](<https://devfeed.tech/topics/firefox.md>), [Git](<https://devfeed.tech/topics/git.md>), [nginx](<https://devfeed.tech/topics/nginx.md>), [Python](<https://devfeed.tech/topics/python.md>), [cURL](<https://devfeed.tech/topics/curl.md>), [Elixir](<https://devfeed.tech/topics/elixir.md>), [F#](<https://devfeed.tech/topics/fsharp.md>), [Redis](<https://devfeed.tech/topics/redis.md>), [Rust](<https://devfeed.tech/topics/rust.md>)

Tags: [curl](<https://devfeed.tech/tags/curl.md>), [debian](<https://devfeed.tech/tags/debian.md>), [elixir](<https://devfeed.tech/tags/elixir.md>), [firefox](<https://devfeed.tech/tags/firefox.md>), [git](<https://devfeed.tech/tags/git.md>), [nginx](<https://devfeed.tech/tags/nginx.md>), [python](<https://devfeed.tech/tags/python.md>), [redis](<https://devfeed.tech/tags/redis.md>), [rust](<https://devfeed.tech/tags/rust.md>), [security](<https://devfeed.tech/tags/security.md>), [updates](<https://devfeed.tech/tags/updates.md>)

### AI overview

Security updates were issued across AlmaLinux, Debian, Fedora, Gentoo, Mageia, Oracle, and SUSE. The affected software includes operating-system components, browsers, developer tools, programming-language packages, servers, libraries, and cloud-related utilities.

### Source excerpt

Security updates have been issued by AlmaLinux (389-ds-base, apr-util, coreutils, freerdp, git-lfs, glib2, gstreamer1-plugins-base, kernel, libkcapi, nginx, nodejs:22, nodejs:24, osbuild-composer, perl-YAML-Syck, postgresql16-postgis, ruby, ruby4.0, ruby:3.3, and vim), Debian (jbig2dec, kamailio, nginx, spip, and xorg-server), Fedora (baresip, bind, bluez, bubblewrap, chirp, chromium, cockpit, composer, corosync, darktable, dokuwiki, elixir, exiv2, expat, firefox, freerdp, freerdp2, gdk-pixbuf2, gegl04, golang-x-perf, grpcurl, kernel, kernel-headers, libevent, libmongocrypt, libpcap, libre, libsoup3, memcached, mingw-expat, mingw-openexr, mongo-c-driver, mrtg, nagios-plugins, nsd, nss, openssl, openvpn, PackageKit, pdns-recursor, perl-Net-OAuth, perl-XML-Bare, php-pecl-mongodb2, python-asteval, python-pip, rclone, rest, rust-hickory-net, rust-hickory-proto, rust-hickory-resolver, rust-ppmd-rust, rust-webbrowser, srt, syncthing, tar, tkimg, and valkey), Gentoo (Chromium, Google Chrome, Microsoft Edge, Opera, Vivaldi and Ruby), Mageia (bind, ffmpeg, glibc, java-17-openjdk, java-21-openjdk, librabbitmq, perl-Catalyst-Plugin-Static-Simple, perl-Imager, tor, and xz), Oracle (389-ds:1.4, ansible-core, apr-util, coreutils, freerdp, git-lfs, glib2, gstreamer1-plugins-base, gzip, httpd:2.4, image-builder, java-21-openjdk, kernel, mrtg, nginx, osbuild-composer, perl-DBI, postgresql16-postgis, python-lxml, python3.12-lxml, redis:6, and vim), SUSE (389-ds, ansible-core, ansible-creator, azure-storage-azcopy, cargo-audit, chromedriver, chromium, clamav, containerized-data-importer1.65, containerized-data-importer1.66, curl, dracut, ffmpeg-4, google-guest-agent, google-osconfig-agent, helm, java-1_8_0-ibm, jupyter-nbconvert, kernel, libpng16, libusb-1_0, libvirt, multipath-tools, NetworkManager, opensc, openssl-3, perl-Authen-SASL, perl-HTML-FormHandler, perl-Mojolicious, perl-Protocol-HTTP2, python-jwcrypto, python-sqlparse, python-tornado6, python313-geopy, python313-modelscope

## .NET Support on Heroku

DevFeed: [.NET Support on Heroku](<https://devfeed.tech/articles/net-support-on-heroku-26397.md>)

Original publisher: [Read original article](<https://www.heroku.com/blog/dotnet-support-on-heroku/>)

Author: Rune Soerensen

Published: 2024-12-03T00:00:00Z

Content type: release

Language: en

Sources: [Heroku](<https://devfeed.tech/sources/heroku.md>)

Topics: [Heroku](<https://devfeed.tech/topics/heroku.md>), [.NET](<https://devfeed.tech/topics/net.md>), [ASP.NET Core](<https://devfeed.tech/topics/asp-net-core.md>), [Blazor](<https://devfeed.tech/topics/blazor.md>), [C#](<https://devfeed.tech/topics/csharp.md>), [F#](<https://devfeed.tech/topics/fsharp.md>), [Visual Basic](<https://devfeed.tech/topics/visual-basic.md>), [cross-platform](<https://devfeed.tech/topics/cross-platform.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [Databases](<https://devfeed.tech/topics/databases.md>)

Tags: [announce](<https://devfeed.tech/tags/announce.md>), [apis](<https://devfeed.tech/tags/apis.md>), [app](<https://devfeed.tech/tags/app.md>), [asp-net](<https://devfeed.tech/tags/asp-net.md>), [asp-net-core](<https://devfeed.tech/tags/asp-net-core.md>), [blazor](<https://devfeed.tech/tags/blazor.md>), [buildpacks](<https://devfeed.tech/tags/buildpacks.md>), [c-sharp](<https://devfeed.tech/tags/c-sharp.md>), [can](<https://devfeed.tech/tags/can.md>), [community](<https://devfeed.tech/tags/community.md>), [core](<https://devfeed.tech/tags/core.md>), [cross-platform](<https://devfeed.tech/tags/cross-platform.md>), [deploy](<https://devfeed.tech/tags/deploy.md>), [developers](<https://devfeed.tech/tags/developers.md>), [f-sharp](<https://devfeed.tech/tags/f-sharp.md>), [heroku](<https://devfeed.tech/tags/heroku.md>), [high-performance](<https://devfeed.tech/tags/high-performance.md>), [languages](<https://devfeed.tech/tags/languages.md>), [maintainability](<https://devfeed.tech/tags/maintainability.md>), [net](<https://devfeed.tech/tags/net.md>), [news](<https://devfeed.tech/tags/news.md>), [nextgen](<https://devfeed.tech/tags/nextgen.md>), [platform](<https://devfeed.tech/tags/platform.md>)

### AI overview

Heroku announces that official .NET support is entering public beta. Developers can build and deploy C#, F#, and Visual Basic applications using frameworks including ASP.NET Core and Blazor. The support includes a buildpack, documentation, testing, and guidance for deploying applications, including Blazor apps with Heroku Postgres.

### Source excerpt

We're excited to announce that official support for .NET on Heroku is entering public beta starting today. Developers can now build and deploy applications in C#, F#, and Visual Basic, using frameworks like ASP.NET Core and Blazor, all with the simplicity and flexibility of the Heroku platform. .NET has long been one of the most [...] The post .NET Support on Heroku appeared first on Heroku.

## Gradient descent: back to basics with F# and C#

DevFeed: [Gradient descent: back to basics with F# and C#](<https://devfeed.tech/articles/gradient-descent-back-to-basics-with-f-and-c-38430.md>)

Original publisher: [Read original article](<https://khmylov.com/2023/02/gradient-descent-engine/>)

Author: Andrew Khmylov

Published: 2023-02-02T00:00:00Z

Content type: tutorial

Language: en

Sources: [Despite the odds](<https://devfeed.tech/sources/despite-the-odds.md>)

Topics: [C#](<https://devfeed.tech/topics/csharp.md>), [F#](<https://devfeed.tech/topics/fsharp.md>), [implementation](<https://devfeed.tech/topics/implementation.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Deep neural networks](<https://devfeed.tech/topics/deep-neural-networks.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [c-sharp](<https://devfeed.tech/tags/c-sharp.md>), [code](<https://devfeed.tech/tags/code.md>), [f-sharp](<https://devfeed.tech/tags/f-sharp.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [neural-networks](<https://devfeed.tech/tags/neural-networks.md>)

### AI overview

An overview of building a gradient descent engine from scratch, with discussion of using F# and C# and a simplified explanation of neural network training.

### Source excerpt

After dabbling with high-level AI tools recently, I wanted to revisit the basics and look under the hood. As they say, the best way to learn something is to build it. I've been following wonderful "from scratch" videos from Andrej Karpathy, where he starts with the essence of all modern AI architectures: gradient descent engine. So, I decided to keep along and build my own engine at https://github.com/khmylov/dumb-gradient, and this article is an overview of its implementation, and some thoughts on using F# and C# for a task like that. Side note: look back at university I completely forgot that one of my university projects back in 2010 was actually about building an image recognition neural network! It was funny to look back at the source code from that era. Turns out, the core ideas are still relevant, it's just computational advances, new modelling discoveries and infrastructure around them that allowed so much progress in the last decade. I'm not going to recite all the details here, the main (much simplified) ideas to comprehend are as follows (I recommend Deep Learning with PyTorch, fast.ai course, and Huggingface course to get a much deeper dive into this) We can represent most real-world data, like text, images, sounds, as vast arrays of numbers Turns out, we can model a lot of "intelligence" tasks (natural language processing, image recognition, etc.) with sophisticated mathematical functions operating on our numeric representation of real-world data Universal approximation theorem was a break-through postulating that even most sophisticated functions can be actually modeled by combining only primitive linear f(x) = a * x + b and basic non-linear functions such as tanh into some inter-connected network (here come the inevitable neuron models and neural networks), we just need a huge number of them to do that, and some computation power to figure out the arguments for those functions "Training" such networks is figuring out how to tweak randomly initialized

## Serverless v1.17 - F# service template, deployment skipping when files not changed added

DevFeed: [Serverless v1.17 - F# service template, deployment skipping when files not changed added](<https://devfeed.tech/articles/serverless-v1-17-f-service-template-deployment-skipping-when-files-not-changed-added-14412.md>)

Original publisher: [Read original article](<https://www.serverless.com/blog/serverless-v1-17-0>)

Author: Philipp Müns

Published: 2017-07-06T00:00:00Z

Content type: release

Language: en

Sources: [Serverless Blog](<https://devfeed.tech/sources/serverless-blog.md>)

Topics: [serverless framework](<https://devfeed.tech/topics/serverless-framework.md>), [Template](<https://devfeed.tech/topics/template.md>), [Deployment](<https://devfeed.tech/topics/deployment.md>), [F#](<https://devfeed.tech/topics/fsharp.md>)

Tags: [aws](<https://devfeed.tech/tags/aws.md>), [aws-lambda](<https://devfeed.tech/tags/aws-lambda.md>), [cloud-computing](<https://devfeed.tech/tags/cloud-computing.md>), [f-sharp](<https://devfeed.tech/tags/f-sharp.md>), [faas](<https://devfeed.tech/tags/faas.md>), [files](<https://devfeed.tech/tags/files.md>), [function-as-a-service](<https://devfeed.tech/tags/function-as-a-service.md>), [infrastructure-as-code](<https://devfeed.tech/tags/infrastructure-as-code.md>), [news](<https://devfeed.tech/tags/news.md>), [release](<https://devfeed.tech/tags/release.md>), [serverless](<https://devfeed.tech/tags/serverless.md>), [serverless-architecture](<https://devfeed.tech/tags/serverless-architecture.md>), [serverless-framework](<https://devfeed.tech/tags/serverless-framework.md>)

### AI overview

The Serverless Framework v1.17 release adds an F# service template and skips deployment when files have not changed, along with other updates.

### Source excerpt

F# service template, deployment skipping when files not changed and more in the Serverless Framework v1.17 release.

## An Unbiased Comparison of F# and Scala

DevFeed: [An Unbiased Comparison of F# and Scala](<https://devfeed.tech/articles/an-unbiased-comparison-of-f-and-scala-33402.md>)

Original publisher: [Read original article](<https://timkellogg.me/blog/2013/06/22/comparing-scala-to-fsharp>)

Published: 2013-06-22T00:00:00Z

Content type: comparison

Language: en

Sources: [Tim Kellogg](<https://devfeed.tech/sources/tim-kellogg.md>)

Topics: [F#](<https://devfeed.tech/topics/fsharp.md>), [Scala](<https://devfeed.tech/topics/scala.md>), [Functional programming](<https://devfeed.tech/topics/functional-programming.md>), [Programming](<https://devfeed.tech/topics/programming.md>)

Tags: [comparison](<https://devfeed.tech/tags/comparison.md>), [f-sharp](<https://devfeed.tech/tags/f-sharp.md>), [functional](<https://devfeed.tech/tags/functional.md>), [functional-programming](<https://devfeed.tech/tags/functional-programming.md>), [languages](<https://devfeed.tech/tags/languages.md>), [object](<https://devfeed.tech/tags/object.md>), [object-oriented](<https://devfeed.tech/tags/object-oriented.md>), [programming](<https://devfeed.tech/tags/programming.md>), [scala](<https://devfeed.tech/tags/scala.md>)

### AI overview

A developer compares F# and Scala from the perspective of a .NET developer who began working with Scala. The article argues that Scala is more approachable but less purely functional, while F# adheres more closely to functional programming principles. It also compares their object-oriented features, function definitions, currying, and partial function application.

### Source excerpt

Given my history as a .NET developer I learned Functional Programming via F#, but I just started a new job as a Scala developer. Naturally, I've been comparing the two languages and the quirks and nuances that make could make them enjoyable or problematic. To summarize quickly, I think Scala is more approachable but less "pure" than F#. Scala seems to have a diverse set of influences whereas F# tries to stick closely to proven Functional Programming basics.

## Discriminated Unions in C# Mono Compiler

DevFeed: [Discriminated Unions in C# Mono Compiler](<https://devfeed.tech/articles/discriminated-unions-in-c-mono-compiler-33391.md>)

Original publisher: [Read original article](<https://timkellogg.me/blog/2012/03/10/discriminated-unions-in-c-mono-compiler>)

Published: 2012-03-10T00:00:00Z

Content type: opinion

Language: en

Sources: [Tim Kellogg](<https://devfeed.tech/sources/tim-kellogg.md>)

Topics: [F#](<https://devfeed.tech/topics/fsharp.md>), [C#](<https://devfeed.tech/topics/csharp.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [.NET](<https://devfeed.tech/topics/net.md>), [OCaml](<https://devfeed.tech/topics/ocaml.md>)

Tags: [c-sharp](<https://devfeed.tech/tags/c-sharp.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [enum](<https://devfeed.tech/tags/enum.md>), [f-sharp](<https://devfeed.tech/tags/f-sharp.md>), [hashing](<https://devfeed.tech/tags/hashing.md>), [lambda](<https://devfeed.tech/tags/lambda.md>), [syntax](<https://devfeed.tech/tags/syntax.md>)

### AI overview

The author explores discriminated unions in F#, compares them with C# enums, and considers modifying the Mono C# compiler to support similar constructs in C#. The article presents this as an early-stage proof-of-concept idea rather than a completed implementation.

### Source excerpt

Recently I've been using F# a bit. F# is .NET's functional language (the syntax of F# 1.0 was backward compatible with OCaml, but 2.0 has diverged enough to make it more distinct). Learning F# was a huge mind-shift from the C-family of languages. Of all the features of F#, like implicit typing, tail recursion, and monads, many people list discriminated unions as their favorite.

## One Thing I Learned From F# (Nulls Are Bad)

DevFeed: [One Thing I Learned From F# (Nulls Are Bad)](<https://devfeed.tech/articles/one-thing-i-learned-from-f-nulls-are-bad-33390.md>)

Original publisher: [Read original article](<https://timkellogg.me/blog/2012/02/29/one-thing-i-learned-from-f-nulls-are>)

Published: 2012-02-29T00:00:00Z

Content type: opinion

Language: en

Sources: [Tim Kellogg](<https://devfeed.tech/sources/tim-kellogg.md>)

Topics: [F#](<https://devfeed.tech/topics/fsharp.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [C#](<https://devfeed.tech/topics/csharp.md>), [exceptions](<https://devfeed.tech/topics/exceptions.md>), [pattern matching](<https://devfeed.tech/topics/pattern-matching.md>), [Haskell](<https://devfeed.tech/topics/haskell.md>), [OCaml](<https://devfeed.tech/topics/ocaml.md>)

Tags: [c-sharp](<https://devfeed.tech/tags/c-sharp.md>), [exceptions](<https://devfeed.tech/tags/exceptions.md>), [f-sharp](<https://devfeed.tech/tags/f-sharp.md>), [functional](<https://devfeed.tech/tags/functional.md>), [pattern-matching](<https://devfeed.tech/tags/pattern-matching.md>), [programming](<https://devfeed.tech/tags/programming.md>)

### AI overview

The author reflects on learning F# while contributing to VsVim, highlighting pattern matching, discriminated unions, and F#'s option types. The article argues that using None and Some instead of null can make invalid states explicit and reduce null-related bugs.

### Source excerpt

Recently I started contributing to VsVim, a Visual Studio plugin that emulates Vim. When he was starting the project, Jared Parsons decided to write the bulk of it in F#. He did this mostly as a chance to learn a new language but also because it's a solid first class alternative to C#. For instance, F#'s features like pattern matching and discriminated unions are a natural fit for state machines like Vim.This is my first experience with a truly functional language. For those who aren't familiar with F#, it's essentially OCaml.NET (the F# book uses OCaml for it's markup syntax), but also draws roots from Haskell. It's a big mind shift from imperative and pure object oriented languages, but one I'd definitely recommend to any developer who wants to be better.Since I've been working on VsVim, I've been using F# in my spare time but C# in my regular day job. The longer I use F# the more I want C# to do what F# does. The biggest example is how F# handles nulls.In C# (and Ruby, Python, and any imperative language) most values can be null, and null is a natural state for a variable to be in. In fact (partly due to SQL), null is used whenever a value is empty or doesn't exist yet. In C# and Java, null is the default value for any member reference, you don't even need to explicitly initialize it. As a result, you often end up with a lot of null pointer exceptions due to sloppy programming. After all, it's kind of hard to remember to check for null every time you use a variable.In F#, nothing is null (that's not entirely true, but in it's natural state it's true enough). Typically you'll use options instead of null. For instance, if you have a function that fails to find or calculate something you might return null in imperative languages (and the actual value if successful). However, in F# you use an option type and return None on failure and Some value on success.Here, every time you call find(kittens) you get back an option type. This type isn't a string, so you can't just