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