plotly / plotly/Plotly.NET

Generate C# bindings via code generation based on the core F# API

Open
#424 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Area: CSharp Difficulty: Advanced FeatureRequest FsLab Hackathon 2023 Status: Available
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

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.