Generate C# bindings via code generation based on the core F# API
Nobody has claimed this yet.
- Dominant language
- F#
- Stars
- 860
- Forks
- 99
- Avg merge
- 22m
- Merged PRs (30d)
- 1
Description
Description
We basically have 2 options here:
(1) Reflection-based F# code generation project
A WIP of this approach can be found on the csharp-object-bindings branch, which is severely out of date, so it might be best to just initialize a new project in the current repo and copy the files over.
The gist is that a well-defined string template for csharp source files is populated based on reflection-based runtime inspection of the F# types, functions and methods.
(2) C# incremental/source generators
here I have no domain knowledge at all, and all tutorials look like pure arcane glyphs to me. I think source generators are now called incremental generators. I think they are aiming to do what we need. I have absolutely no idea how to do this though. If we go this way, we need an experienced C# dev on it.
https://github.com/dotnet/roslyn/blob/main/docs/features/incremental-generators.md
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing the outdated csharp-object-bindings branch, especially src/Plotly.NET.Codegen, and compare its reflection-based approach with the linked Roslyn incremental generators documentation. The issue needs an approach selected and a current-repository implementation that generates C# bindings from the core F# API; its exact completion criteria are not defined.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp, fsharp
- Domain
- tooling
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100