ionide-vscode-fsharp
jakt
Our great sponsors
ionide-vscode-fsharp | jakt | |
---|---|---|
16 | 31 | |
841 | 2,744 | |
1.0% | 0.6% | |
8.7 | 9.4 | |
13 days ago | about 1 month ago | |
F# | C++ | |
MIT License | BSD 2-clause "Simplified" 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.
jakt
- "Useless Ruby sugar": Pattern matching (Pt. 1)
-
Essence: A desktop OS built from scratch, for control and simplicity
SerenityOS is doing exactly that:
https://github.com/SerenityOS/serenity/tree/master/Ladybird
I also like their Jakt programming language:
https://github.com/SerenityOS/jakt
Though I'm more enthusiastic about Redox (doing it in Rust):
-
Will Carbon Replace C++?
It's very opinionated and SerenityOS-focused, but the language Jakt ( https://github.com/SerenityOS/jakt ) transpiles to C++, has memory safety and some very neat ideas for readability.
-
Ask HN: Are people still using Pascal in 2023?
I love Rust, but its model and specifics would make it difficult to learn how to write code in other languages.
For low-level code, I think Carbon may fill that niche in the future. If it doesn't, C++ may be a good candidate once up-to-date books have been written and compilers actually support the modern spec. Classrooms/guides would need to move away from the still-lingering "C++ is C with classes" approach and use the standard library before that can be a reality, but this book[0] by Bjarne Stroustrup himself demonstrates the future C++ _could_ have if all the modern language features become usable.
In business, C++ will still be the domain of ancient clusterfucks compiled by MSVC++ 6 in many areas, similar to how most Java code is still built around Java 8 because that was the most recent stable version for many projects' lifecycle (and Oracle's decision to only ship JRE 8 to consumers doesn't help) and how .NET 4 is still taught in schools because the new and scary dotnet tool doesn't map 1-to-1 with the old way of working. I can't imagine microcontroller toolkits supporting a modern version of _any_ language in the first place.
However, if more people would learn modern C++ (or a replacement, like Carbon), I think this class of programming languages can have the same growth and hype Rust has enjoyed for the past years.
I'm keeping my eye on Carbon and Zig. Google's influence has managed to push Go to the forefront despite its many quirks, and Zig seems to be focused on doing "C, but right" rather than "C++, but right" which so far is looking pretty promising.
It's also fun to see Jakt[1] being developed in real time; I don't think it's a language that will be useful for production software any time soon, but on the other hand it's a language that actually produces binaries reliably (unlike pre-alpha Carbon or pre-release Zig, the latter exposing many problems after switching to a self-hosted compiler).
-
Multiplayer counter strike like game without game engine - just php 8.1, fully open sourced
About php, I have no problem of rewriting whole game for performance reasons once it is done and popular in low level language like https://github.com/SerenityOS/jakt but I think for now php is good and sufficient.
-
☘️ Good luck Rust ☘️
Jakt, pretty well designed (lots of ideas stolen from ML/Rust), but very immature
-
SerenityOS author: "Rust is a neat language, but without inheritance and virtual dispatch, it's extremely cumbersome to build GUI applications"
I think this thread might be interesting to the people here. The guy eventually started working on his own safe language, Jakt: https://github.com/SerenityOS/jakt
- The 4th year of SerenityOS
-
The Val Programming Language
Looks theoretically interesting, let's see if they can deliver in practice. Of all the Rust alternatives this and Jakt are among the most promising IMHO. However, Jakt is more of a community driven project and is actually somewhat usable today.
-
Cppfront, Herb Sutter's proposal for a new C++ syntax
I found this language recently that also compiles to CPPv1:
https://github.com/SerenityOS/jakt
Really nice feature set.
What are some alternatives?
carbon-lang - Carbon Language's main repository: documents, design, implementation, and related tools. (NOTE: Carbon Language is experimental; see README)
zig - General-purpose programming language and toolchain for maintaining robust, optimal, and reusable software.
Rust-for-Linux - Adding support for the Rust language to the Linux kernel.
playwright-dotnet - .NET version of the Playwright testing and automation library.
hylo - The Hylo programming language
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
fs-components
Perla - A cross-platform tool for unbundled front-end development that doesn't depend on Node or requires you to install a complex toolchain
cppfront - A personal experimental C++ Syntax 2 -> Syntax 1 compiler
Escalin
autocxx - Tool for safe ergonomic Rust/C++ interop driven from existing C++ headers