ionide-vscode-fsharp
Perla
Our great sponsors
ionide-vscode-fsharp | Perla | |
---|---|---|
16 | 7 | |
836 | 132 | |
0.4% | - | |
8.7 | 8.2 | |
14 days ago | 3 months ago | |
F# | F# | |
MIT License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
ionide-vscode-fsharp
-
Is there a modern IDE with good support for OCaml?
I'd love to see something similar to Microsoft's Ionide project or for JetBrains to invest in IDE support.
-
Why OCaml?
> Pretty good, https://ionide.io
It pains me to admit it because I really like F# but, with due respect to the developers, Ionide and its related projects are the most unstable toolchain I've ever used.
Spend half a day reloading the editor because the extension keeps hanging on non-trivial MSBuild only to discover that the formatter has truncated in half one of the files you worked on due to a soundness bug. (OCaml's editor support, in contrast, is quite stable.)
Rider is the best editing experience I've had with F#, by far.
The DarkLang project was originally written in OCaml and was recently ported to F# (https://blog.darklang.com/new-backend-fsharp/)
> How much work would it take in term of code rewriting?
There are definitely code changes required, but I think those are quite manageable as concepts mostly map 1:1 from OCaml to F#.
> can it compile to native code?
Yup, https://learn.microsoft.com/en-us/dotnet/core/deploying/nati...
> how good is the language support experience in vscode?
Pretty good, https://ionide.io
(but I personally prefer JetBrains Rider)
> any reason not to do it?
Compilation speed, some OCaml language features?
-
How to get a non-broken F# development experience?
I know it's a recurring topic but it's reaching a high level of pain *again* (see NET SDK 6.0.400 and 7.0.100 previews don't currently work with Ionide).
-
The Case for C# and .NET
I don't disagree but it owes a lot of that to OCaml. That said, since we're talking about C#, F# and VS Code I'm gonna talk about a pet peeve I have. If you open a C# project in VS Code when the "Ionide" (basically the F# plugin for Code) is installed then Ionide thinks it's a F# project and will open some F# stuff after a few seconds (or prompt you to setup some F# stuff in its gitignore). The root cause has been identified (plugin activates when it sees a ".sln" file), a PR have been opened and rejected with no mention as to why (https://github.com/ionide/ionide-vscode-fsharp/pull/1401) and the developers behind it are frustratingly non-communicative about it, closing issues about it (https://github.com/ionide/ionide-vscode-fsharp/issues/1701). Usual rules about OSS maintainers apply, they don't technically owe us users anything ... but man it feels like we're being trolled by now :D
-
Rust Is Hard, Or: The Misery of Mainstream Programming
F# doesn't have a hard dependency on vscode. Resources from MS will obviously encourage using MS tooling, but ionide [1] is really good. The lsp+neovim workflow is not as good but getting better.
-
Perf Avore: A Rule Based CrossPlatform Performance Based Monitoring and Analysis Tool
Perf Avore was developed on VSCode using the ionide plugin and dotnet cli.
-
A few newbie questions
I was on .Net 5 but same issue on 6. I tried the fix here- setting FSharp.dotnetRoot explicitly in settings.json and so far it seems better.
-
Web Scrapping with F#
Once we have our dependencies ready, we can start digging in with the code in VSCode using Ionide, Rider or Visual Studio.
Perla
-
Targeting Node, Bun and Deno With F#
Does that import map thing feel familiar? well maybe I spoke about that a few months ago when I wrote about a project of mine (Perla) which uses import maps to allow you to write Single Page Applications without node installed!
-
Progressively Adding Fable to JS Projects
If you need to handle dependencies via CDN/Local Dist file then some dependencies won't work because they use node like imports import {} from 'lit/some/sub/directory.js browser imports need to start with / or ./ or even ../ so they can be valid ES module imports thankfully for this you can check out in a shameless plug one of the projects I'm working on: Perla which handles this precise case but I digress, the ideal situation would be you with npm and already figured out how to serve node dependencies to your compiled code.
-
Why did you (any .NET pro) either choose or switch to using F#?
The most "complex" application would be a webpack alternative in F#: AngelMunoz/Perla and maybe a simple migrations manager AngelMunoz/Migrondi
-
Building a Webpack alternative in F#
Whew! That was a lot! but shows how to build each part of the Webpack alternative I've been working on Called Perla there are still some gaps though
-
What are you working on? (2021-12)
I keep working on Perla :) https://github.com/AngelMunoz/Perla
-
Server Sent Events with Saturn and FSharp
I've been working in perla which is a cross-platform executable frontend dev-server/build-tool which is not tied to Nodejs or .NET meaning that you don't need to have .NET installed and neither Nodejs, at the same time it doesn't use npm or other things to handle dependencies it does so by leveraging skypack and import maps to let you use npm dependencies but from a CDN rather than locally.
What are some alternatives?
playwright-dotnet - .NET version of the Playwright testing and automation library.
Fable: F# |> BABEL - F# to JavaScript, TypeScript, Python, Rust and Dart Compiler
proposal-pipeline-operator - A proposal for adding a useful pipe operator to JavaScript.
Feliz - A fresh retake of the React API in Fable and a collection of high-quality components to build React applications in F#, optimized for happiness
jakt - The Jakt Programming Language
fs-components
Escalin
elmish - Elm-like abstractions for F# apps
Thoth.Json - Library for working with JSON in a type safe manner, this libs is targeting Fable
ML.NET - ML.NET is an open source and cross-platform machine learning framework for .NET.
Saturn - Opinionated, web development framework for F# which implements the server-side, functional MVC pattern