<p dir="auto">Julia's ease of use and speed advantages over other languages makes it a very good candidate for general purpose programming in addition to scientific analysis. There have been a few interesting issues that have come up that indicate that a deeper exploration of Julia in a potentially untrusted/multi-user environment is warranted (<em>cf.</em> <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="50041971" data-permission-text="Title is private" data-url="https://github.com/JuliaLang/julia/issues/9147" data-hovercard-type="issue" data-hovercard-url="/JuliaLang/julia/issues/9147/hovercard" href="https://github.com/JuliaLang/julia/issues/9147">#9147</a> and the recent discussion on julia-users about <code class="notranslate">include_string()</code> here: <a href="https://groups.google.com/d/msg/julia-users/fcB3z2shu1M/5gojVAbeUk8J" rel="nofollow">https://groups.google.com/d/msg/julia-users/fcB3z2shu1M/5gojVAbeUk8J</a>).</p>
<p dir="auto">I think several questions need to be answered prior to engaging in an exploration of Julian security:</p>
<ol dir="auto">
<li>Is Julia explicitly designed to be used in a multi-user / untrusted environment? Alternately, is there any design goal for Julia that would preclude its use in such environments?</li>
<li>Are there known issues with Julia that would expose data or systems to inadvertent code execution, disclosure, or alteration of data?</li>
<li>Has data integrity and confidentiality in Julia been the subject of prior analysis?</li>
<li>As a followon to 2), what mechanisms exist in Julia that could be considered security-centric?</li>
</ol>
<p dir="auto">There are likely other questions that need addressing as well. Is there interest in examining this topic?</p>
<p dir="auto">A typo in one area of my codebase trigged illegal instructions at another, making it hard to debug. Here is my minimal example:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="struct sparse_t
    val::Vector{Float64}
    sub::Vector{Int64}
end

# BUGGY SPARSE TO DENSE
# Should have been
#   Base.convert(::Type{Vector}, v::sparse_t) = copy(v.val)
#
Base.convert(Vector, v::sparse_t) = copy(v.val)

spvec = sparse_t(zeros(Float64,5), Vector{Int64}())
println(spvec)                                        # &lt;-- Illegal instruction (core dumped)"><pre class="notranslate"><code class="notranslate">struct sparse_t
    val::Vector{Float64}
    sub::Vector{Int64}
end

# BUGGY SPARSE TO DENSE
# Should have been
#   Base.convert(::Type{Vector}, v::sparse_t) = copy(v.val)
#
Base.convert(Vector, v::sparse_t) = copy(v.val)

spvec = sparse_t(zeros(Float64,5), Vector{Int64}())
println(spvec)                                        # &lt;-- Illegal instruction (core dumped)
</code></pre></div>
<p dir="auto">I am aware that this might be a duplicate of <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="271628901" data-permission-text="Title is private" data-url="https://github.com/JuliaLang/julia/issues/24499" data-hovercard-type="issue" data-hovercard-url="/JuliaLang/julia/issues/24499/hovercard" href="https://github.com/JuliaLang/julia/issues/24499">#24499</a>, but also note that this issue was closed without resolution. Is it possible to get proper errors at the print statement, or alternatively errors/warning about Base.convert definitions without explicit type information? Core dumps are scary..</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="julia&gt; versioninfo()
Julia Version 1.1.0
Commit 80516ca202 (2019-01-21 21:24 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
  CPU: Intel(R) Xeon(R) CPU E5-2470 v2 @ 2.40GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-6.0.1 (ORCJIT, ivybridge)"><pre class="notranslate"><code class="notranslate">julia&gt; versioninfo()
Julia Version 1.1.0
Commit 80516ca202 (2019-01-21 21:24 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
  CPU: Intel(R) Xeon(R) CPU E5-2470 v2 @ 2.40GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-6.0.1 (ORCJIT, ivybridge)
</code></pre></div>