cronologic-de / xhptdc8_babel

Wrappers, Utilities and Examples for using the xHPTDC8 with various programming languages.
Mozilla Public License 2.0
0 stars 1 forks source link

Language Bindings #20

Open sulimma opened 3 years ago

sulimma commented 3 years ago

xHPTDC8 language bindings

This repository shall also contain tools to use the xHPTDC8 with various programming languages.

Depending on how the language handles calls to C libraries this might just be an example project with instructions on how to link, or it might contain function and structure declarations or a wrapper with type conversions.

Scope

Each language bind shall provide a combined interface to the driver library and the util library.

In languages where the mapping of custom types is cumbersome, the config structure can be omitted and replaced by a YAML config interface.

Languages

Required Languages

C

Cronologic is using C# internally for applications and production tests. Implementing a wrapper for that will also provide access to all other .net languages. C# is supported by swig.org.

Binary Distributable Languages

We want to distributed windows binaries with the driver. We can use these as examples for programming languages. Unfortunately none of the languages in high demand have the capability to generate stand alone binaries directly. Therefore we are using less important languages for this.

Go

Go is used by the info tool of issue #19. From the information we have now this should probably use methods directly from the C API. The interface can be generated by swig. It might be useful to add support for async IO for both hits and groups.

Rust

Rust is used by the readout tool of issue #10. From the information we have now this should probably use methods directly from the C API. The interface can be generated by swig. It might be useful to add support for async IO for both hits and groups.

Languages with high commercial demand

Python

Python is widely used at universities. Configuration by YAML is a natural way of doing things in the python world. It probably makes sense to provide classes for TDCHit and for groups.

LabView

We have little knowledge about LabView but we have many customers asking for it. The standard C interface is cumbersome to use in LabView. It might make sense to add an additional abstraction layer.

Matlab

Customers once in a while are asking for Matlab support. Matlab can call C interfaces.

Low Hanging Fruit

Swig support additional languages that we could support. They are less often used so we should only support them if it is simple to do.

R

Similar to Matlab.

Scilab

Similar to Matlab. Less commonly used than R.

Octave

Similar to Matlab. Less commonly used than Scilab.

Julia

Similar to Matlab. Rather exotic. Much better Performance than R, Scilab or Octave, especially of operations can't be vectorized.

TODO

This is an overview issue. When support for a language is started, a seperate issue shall be created and linked from this issue.