What's New in F# 9

Perception of F#, C#, and .NET

  • Many commenters praise F# as a beautiful, productive, and readable language, especially for backend, algorithms, and data-heavy work.
  • C# is seen as underrated: productive, easy to teach (especially to JS/TS devs), with strong tooling and cross‑platform support.
  • Some criticize “enterprise-style” C# culture (DI-heavy, reflection, complex frameworks like EF/Spring-like stacks) for over‑abstraction and poor readability, while others argue that’s a team/culture issue, not the language.

Ecosystem, Jobs, and Microsoft Support

  • Major F# downside: few jobs, smaller ecosystem, fewer libraries, and less marketing from Microsoft.
  • Some worry about long‑term dependence on Microsoft, though others point to open-source status and the F# Software Foundation.
  • F# is often used in niche or high‑leverage teams inside .NET shops rather than as a widely advertised primary language.

Tooling, Platforms, and Deployment

  • F# works well on Windows, Linux, and macOS via .NET; parity with C# for non‑Windows-specific APIs.
  • Ionide (VS Code) and Rider are cited as strong F# environments; tooling has improved significantly in the last decade.
  • .NET deployment options discussed: shared runtime, self‑contained single binaries, trimming, and NativeAOT (including for F#).

Language Features and Interop

  • F# strengths: discriminated unions, pattern matching, records, type inference, REPL, pipeline operators, and scripting (.fsx).
  • F# 9: nullable reference interop (T | null) to align with C# nullable reference types; some disappointed this introduces null rather than mapping more strictly to options.
  • Async interop between F# async and C# Task is seen as historically painful; newer task computation expressions and helpers improve this but edge cases remain debated.
  • Tail-call attribute and TCO enforcement are welcomed for correctness.

GUI, Web, and WASM

  • GUI options: Avalonia-based libraries, Fabulous, and others; usage in production seems niche.
  • Web frameworks and WASM options (e.g., Bolero) exist; maintenance activity is mixed but still ongoing.

Learning Curve and Experience Reports

  • Functional newcomers (from JS/Python/Go) often adapt well; OO veterans (C#/Java) may need to “unlearn” patterns and initially find F# less discoverable.
  • Some report F# code as easier to read than Python or C#; others find it visually “ugly” or hard to get into.
  • One long case study describes abandoning a large F#/Fable-based system in favor of TypeScript+Rust due to complex multi-target interop and dependency management.