Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Provide assets for using gRPC interface in Windows applications #2841

Open
3 tasks done
mink99 opened this issue Feb 19, 2025 · 2 comments
Open
3 tasks done

Provide assets for using gRPC interface in Windows applications #2841

mink99 opened this issue Feb 19, 2025 · 2 comments
Labels
os: windows Specific to Windows operating system topic: gRPC Related to the gRPC interface type: enhancement Proposed improvement

Comments

@mink99
Copy link

mink99 commented Feb 19, 2025

Describe the request

GRPC under Windows is not easy to use under Windows, gcc is not supported and it has to be built on your own, requiring a toolchain that is not always available.
As the Arduino IDE and CLI developers have all required components available under windows it would be helpful to provide with each new release / build support for the users of the CLI under GRPC:

Describe the current behavior

GRPC under Windows is not easy to use under Windows, gcc is not supported and it has to be built on your own

Arduino CLI version

all

Operating system

Windows

Operating system version

10,11

Additional context

No response

Issue checklist

  • I searched for previous requests in the issue tracker
  • I verified the feature was still missing when using the nightly build
  • My request contains all necessary details
@mink99 mink99 added the type: enhancement Proposed improvement label Feb 19, 2025
@per1234 per1234 changed the title Simplify the Integration of Arduino-cli into external tools : GRPC under Windows Provide assets for using gRPC interface in Windows applications Feb 19, 2025
@per1234 per1234 added os: windows Specific to Windows operating system topic: gRPC Related to the gRPC interface labels Feb 19, 2025
@dankeboy36
Copy link
Contributor

Hi there!

GRPC under Windows is not easy to use under Windows

Thank you for sharing your experience with the challenges of using gRPC under Windows. Starting with the gRPC API and the CLI daemon might not be straightforward. However, waiting for a specific generated client code—especially with DLLs—might be a bit unrealistic.

The Arduino CLI already provides the proto files, so you have the freedom to generate the client code that fits your needs. Have you explored using any generator frameworks?

As the Arduino IDE and CLI developers have all required components available under windows it would be helpful to provide with each new release / build support for the users of the CLI under GRPC:

The Arduino IDE uses grpc_tools_node_protoc from grpc-tools to create JS/TS code from those proto files. Given that the Arduino IDE is built with TypeScript/JavaScript, it's a bit of a stretch to expect pre-packaged DLLs for Windows just because the IDE talks to the CLI via the gRPC API.

@mink99
Copy link
Author

mink99 commented Mar 12, 2025

I would not call this a freedom… why should I even explore any „Generator Frameworks“ if everything is already there with the IDE developers ? The API of the CLI is finalised, no need for everyone to generate the same bindings again and again.
I am sure that it is not only me

  • On Windows
  • using gcc/c++
  • accessing the cli

This is not (per case) specific generated client code, this is code to access exactly one server (the cli) , which is well defined (per version) and will be used exactly the same way by every client. So i understand the dll as server code, being an integral part of the server (aka cli) and not as a specific feature for each client.

Under windows it is common practise for service-providers like the CLI to provide access features to the services for clients.

And to include those features there are (under windows) two preferred ways to communicate within the same machine: static and dynamic linking.
Static linking would be really a challenge for the developers of the CLI, due to the different runtimes of go and (everything else).
Dynamic linking therefore would be the preferred way. A DLL can be used by (almost) every programming language under Windows, whether it is some scripting language, some weird basic dialect, c / c++ ,c#, java or even anomalities like smalltalk, cobol, etc.

This DLL is (or at least should be) provided and maintained by the service provider, in our case the CLI devs, and not by the service consumers.

This is typically done with utility libraries like boost, GUI libraries , Multimedia libraries etc. all their manufacturers provide either precompiled libs for static or dynamic linking or makefiles to create them, either as libs to feed the linker, or as shared libraries.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
os: windows Specific to Windows operating system topic: gRPC Related to the gRPC interface type: enhancement Proposed improvement
Projects
None yet
Development

No branches or pull requests

3 participants