[ANN] InteractiveDataLanguage.jl

Hello,

This announcement targets the incredibly niche segment of people who use both Julia and IDL. (There are dozens of us! Dozens!)

I’m both pleased and hesitant to announce InteractiveDataLanguage.jl. It’s a package to allow julia interoperability with the IDL runtime similarly to MATLAB.jl or PythonCall.jl.

This package started with an attempt to revive the code from this package which was a fork of this other package. But it turned into a complete rewrite.

It support only scalars and arrays interoperability, leaving structures and objects out (for now).
I’ve developed this for some work I had to do so the scope covered only what I needed at the time.

It’s not much but those two element are quite well supported and offer very fast and rather transparent communication between the two runtimes, offering both copiable arrays or view into each other memories (while keeping it safe).

An excerpt:

julia> using InteractiveDataLanguage

julia> InteractiveDataLanguage.init()
Info: Acquiring license...

julia> jlarr = [1,2,3,4]
4-element Vector{Int64}:
 1
 2
 3
 4

julia> IDL.jlarr = jlarr
4-element Vector{Int64}:
 1
 2
 3
 4

julia> IDL.jlarrview = idlview(jlarr)
InteractiveDataLanguage.IDLview([1, 2, 3, 4])

julia> IDL.jlarrview[]
4-element InteractiveDataLanguage.ArrayView{Int64, 1, InteractiveDataLanguage.Variable}:
 1
 2
 3
 4

julia> all(IDL.jlarr[] .== IDL.jlarrview[] .== jlarr)
true

julia> IDL.jlarr[][2] = 42;

julia> jlarr[2] == 42
false

julia> IDL.jlarrview[][2] = 42;

julia> jlarr[2] == 42
true

More examples can be found in the README

The package requires a properly licensed version of the IDL runtime installed on the system and the licence validation procedure properly setup. It distribute solely julia code.

Some remarks: this package only works for julia 1.12+ due to the dependency on OncePerProcess. It was developed and tested only on IDL 8.9 on Windows so other platforms/versions are completely untested.

Due to this lack of feature completeness, licensing headaches and limited version/platform support, limited julia version compatibility and other reasons (hence the hesitation to announce)
I decided not to register the package, but instead leave it as a standalone package at the repository: ghyatzo/InteractiveDataLanguage.jl: Calling IDL code from Julia using the Callable IDL API.

Hopefully somebody else finds this useful.

Cheers

5 Likes

As a former user of IDL (before Python took over my field), I love this! Do you have any idea if this package could also support interactivity between Julia and the GNU Data Language (the FOSS version of IDL)?

Hi, I can tell you already that unfortunately It wont, this package targets IDL specific API and internals.
I am not very familiar with GDL internals though so I can’t say how much work would be needed to make it compatible. probably a lot.
I know that GDL is supposedly compatible with IDL source code, but if they internally use a different structure for Variables and Arrays or Objects it would make sense to just make a new package targeting exactly the GDL internals and API instead of trying to retrofit this.

1 Like