# Compiler work priorities

**URL:** https://discourse.julialang.org/t/compiler-work-priorities/17623
**Category:** Internals & Design
**Created:** [November 16, 2018, 10:14pm UTC](https://discourse.julialang.org/t/compiler-work-priorities/17623 "2018-11-16T22:14:46Z")
**Posts on this page:** 1
**Showing post:** 1

<div class="post-metadata">

### Author: ![StefanKarpinski](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stefankarpinski/32/24_2.png) [@StefanKarpinski](https://discourse.julialang.org/u/StefanKarpinski)
#### Post date: [November 16, 2018, 10:14pm UTC](https://discourse.julialang.org/t/compiler-work-priorities/17623/1 "2018-11-16T22:14:46Z")

</div>

In response to

> [@State of the Debugger](https://discourse.julialang.org/t/state-of-the-debugger/4308):
>
> Hi there, I just wanted to ask about the state of the debugger in Julia. I am coming from Matlab and the debugger there is quite important for me to see where something is going wrong. For example, using NLsolve is a bit of a black box for me. If it does not work, I don’t know where to start to look for the problem. In contrast, in the meantime I copied the code to Matlab and could stop during the the execution of fsolve and check what is going wrong. Now it works in Matlab, but still it does n…

I thought I might write a little post about the rough priorities of the compiler team:

1. Correctness
  - finding and fixing compiler and inference bugs

2. Multithreading
  - [non-copying task stack switching](https://github.com/JuliaLang/julia/pull/13099) (done)
  - [new PARTR parallel runtime](https://github.com/JuliaLang/julia/pull/22631)
  - [locks for I/O operations](https://github.com/libuv/libuv/issues/1595)
  - other thread safety

3. Compile-time latency, aka “the time-to-first-plot problem”
  - making compilation faster
  - caching more things

4. Compiler-related packages and tools
  - [PackageCompiler](https://github.com/JuliaLang/PackageCompiler.jl)
  - Debugger
  - [Cxx](https://github.com/Keno/Cxx.jl)
  - type checking/linting

Julia 1.0 introduced a new compiler and there were inevitably various bugs and issues, so the first order of business is fixing those.

Multithreading is the next highest priority because we want to merge the new parallel runtime as soon as possible and allow people to start writing and using threaded package code before things get too far along. Ecosystems for single-threaded languages tend to start to bake that assumption in very deep if they’re around for too long. Julia’s package ecosystem is small enough and young enough that if we introduce proper multithreading soon, it will adapt quickly.

Compile-time latency is clearly a huge pain point for all Julia users, so that’s quite important.

**Update:** all of these items are complete, see [this post](https://discourse.julialang.org/t/compiler-work-priorities/17623/106) for details.

---

_[View the full topic](https://discourse.julialang.org/t/compiler-work-priorities/17623)._
