# \[ANN\] InteractiveDataLanguage.jl

**URL:** <https://discourse.julialang.org/t/ann-interactivedatalanguage-jl/135914>\
**Category:** Package Announcements\
**Created:** [February 28, 2026, 10:25am UTC](https://discourse.julialang.org/t/ann-interactivedatalanguage-jl/135914 "2026-02-28T10:25:53Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![cshen](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/cshen/32/217287_2.png) [@cshen](https://discourse.julialang.org/u/cshen)\
**Post date:** [February 28, 2026, 10:25am UTC](https://discourse.julialang.org/t/ann-interactivedatalanguage-jl/135914/1 "2026-02-28T10:25:53Z")

</div>

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](https://github.com/henry2004y/IDL.jl) which was a fork of [this other package](https://github.com/BobPortmann/InteractiveDataLanguage.jl). 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-repl
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](https://github.com/ghyatzo/InteractiveDataLanguage.jl)

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.](https://github.com/ghyatzo/InteractiveDataLanguage.jl)

Hopefully somebody else finds this useful.

Cheers

---

<div class="post-metadata">

**Author:** ![mihalybaci](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mihalybaci/32/13528_2.png) [@mihalybaci](https://discourse.julialang.org/u/mihalybaci)\
**Post date:** [March 12, 2026, 11:42am UTC](https://discourse.julialang.org/t/ann-interactivedatalanguage-jl/135914/2 "2026-03-12T11:42:49Z")

</div>

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](https://gnudatalanguage.github.io/) (the FOSS version of IDL)?

---

<div class="post-metadata">

**Author:** ![cshen](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/cshen/32/217287_2.png) [@cshen](https://discourse.julialang.org/u/cshen)\
**Post date:** [March 15, 2026, 11:18am UTC](https://discourse.julialang.org/t/ann-interactivedatalanguage-jl/135914/3 "2026-03-15T11:18:58Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![cshen](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/cshen/32/217287_2.png) [@cshen](https://discourse.julialang.org/u/cshen)\
**Post date:** [August 14, 2026, 2:52pm UTC](https://discourse.julialang.org/t/ann-interactivedatalanguage-jl/135914/4 "2026-08-14T14:52:05Z")

</div>

Small Update:

I’ve added struct support as well as some small QoL like a REPL mode and an `idl"x = 10"` string macro. Object support is also in the works.

If I have some spare time I’ll see how hard supporting GDL would be.
