# \[ANN\] Juno 0.12

**URL:** <https://discourse.julialang.org/t/ann-juno-0-12/34717>\
**Category:** Juno\
**Tags:** announcement, juno\
**Created:** [February 16, 2020, 10:12am UTC](https://discourse.julialang.org/t/ann-juno-0-12/34717 "2020-02-16T10:12:58Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![aviatesk](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/aviatesk/32/7610_2.png) [@aviatesk](https://discourse.julialang.org/u/aviatesk)\
**Post date:** [February 16, 2020, 10:12am UTC](https://discourse.julialang.org/t/ann-juno-0-12/34717/1 "2020-02-16T10:12:59Z")

</div>

Hi all,

Juno 0.12 is out !  
Since we have _ **tons** _ of bugfixes and improvements for this release, here I’m going to pick some of the key highlights, but we hope you will like all the improvements and features added 🙂

## Release notes

### New features

- Juno is now able to debug toplevel code, i.e. you don’t need type `Juno.@enter` in REPL anymore ! ([Atom.jl#269](https://github.com/JunoLab/Atom.jl/pull/269), [atom-julia-client#683](https://github.com/JunoLab/atom-julia-client/pull/683), [atom-ink#255](https://github.com/JunoLab/atom-ink/pull/255), [atom-ink#256](https://github.com/JunoLab/atom-ink/pull/256))
  - You can use `Julia Debug: Run File (Block, Cell)` and `Julia Debug: Step Through File (Block, Cell)` commands (or corresponding menus) for debugging whole `.jl` file, selected code block, or even a Weave code cell, etc.
  - (showcase) Debugging toplevel code demo: ![toplevel code debugging](https://global.discourse-cdn.com/julialang/original/3X/a/1/a16f97c17617e7fa383ff9bbb400b1f56ec7ca29.gif)

- QoL improvements on profiler ([Atom.jl#244](https://github.com/JunoLab/Atom.jl/pull/244), [Juno.jl#463](https://github.com/JunoLab/Juno.jl/pull/463), [atom-julia-client#672](https://github.com/JunoLab/atom-julia-client/pull/672), [atom-ink#247](https://github.com/JunoLab/atom-ink/pull/247) – we internally use [FlameGraphs.jl](https://github.com/timholy/FlameGraphs.jl), thanks @tim.holy for suggesting this collaboration !):
  - Lines where dynamic dispatch or garbage collection happened are specially colored (yellow and red, respectively) so that we can find performance pitfalls more easily
  - Prunes stacktraces that relate to Juno’s internal tasks by default
  - Fixed incorrect inline highlight lengths
  - Keyword option control for `@profiler` macro
  - (showcase) New profiler look example: ![Profiling example](https://global.discourse-cdn.com/julialang/original/3X/2/6/262d39906c119347536d16c6decdb872080d9cad.png)

- Provides smoother ways to run/debug a file from tree-view. You can use `Julia Client: Run File`, `Julia Debug: Run File` and `Julia Debug: Run File` commands and the corresponding menus within tree-view ([atom-julia-client#684](https://github.com/JunoLab/atom-julia-client/pull/684))
  - (showcase) New tree-view menus look: ![tree-view-menus](https://global.discourse-cdn.com/julialang/original/3X/f/2/f25085009c051fa00c02ebced03132c6e42ab43f.png)

- [Additional formatting options for JuliaFormatter.jl](https://domluna.github.io/JuliaFormatter.jl/dev/#Formatting-Options-1) can be specified via `Julia Options ⟶ Formating Options` config setting ([atom-julia-client#682](https://github.com/JunoLab/atom-julia-client/pull/682), [Atom.jl#259](https://github.com/JunoLab/Atom.jl/pull/259))
- Added the `Julia Options ⟶ Format the current editor when saving` config option ([atom-julia-client#677](https://github.com/JunoLab/atom-julia-client/pull/677))
- Code cells are highlighted, and cell detection logic gets improved ([atom-julia-client#674](https://github.com/JunoLab/atom-julia-client/pull/674), [atom-julia-client#675](https://github.com/JunoLab/atom-julia-client/pull/675))
  - If you don’t like this, head for `UI Options ⟶ Highlight Cells` setting

- The new command `Julia Client: Activate Enviroment In Parent Folder` (or `Juno ⟶ Enviroment ⟶ Enviroment in Parent Folder` menu) automatically searches a `Project.toml` file up from the current file’s directory and then activate it if exist ([Atom.jl#241](https://github.com/JunoLab/Atom.jl/pull/241), [atom-julia-client#670](https://github.com/JunoLab/atom-julia-client/pull/670))
- A terminal instance can be started from the current editor directory via `Julia Client: New Terminal From Current Folder` command (or `Juno ⟶ New Terminal ⟶ Current File's Folder` menu) ([atom-julia-client#657](https://github.com/JunoLab/atom-julia-client/pull/657))

### Improvements

- Juno’s REPL and terminal now use [WebGL renderer for xtermjs](https://github.com/xtermjs/xterm.js/pull/1790) by default, which should bring us a vast improvement for rendering-performance ([atom-ink#242](https://github.com/JunoLab/atom-ink/pull/242), [atom-julia-client#660](https://github.com/JunoLab/atom-julia-client/pull/660))
- LOTS of improvements around static analysis features (used for `Julia Client: Open Outline Pane`, `Julia Client: Goto Symbol` or clicking a name in the workspace view, etc.)
  - Modules are more correctly detected ([Atom.jl#215](https://github.com/JunoLab/Atom.jl/pull/215))
  - More memory efficient symbols cache ([Atom.jl#219](https://github.com/JunoLab/Atom.jl/pull/219))
  - Escape possible danger with recursive `include` loops ([Atom.jl#256](https://github.com/JunoLab/Atom.jl/pull/256))
  - Update to the latest version of [CSTParser.jl](https://github.com/julia-vscode/CSTParser.jl) ([Atom.jl#262](https://github.com/JunoLab/Atom.jl/pull/262))
  - Show local binding verbatim in completions ([Atom.jl#275](https://github.com/JunoLab/Atom.jl/pull/275))
  - … and much more ([atom-julia-client#643](https://github.com/JunoLab/atom-julia-client/pull/643), [Atom.jl#205](https://github.com/JunoLab/Atom.jl/pull/205), [Atom.jl#206](https://github.com/JunoLab/Atom.jl/pull/206), [Atom.jl#208](https://github.com/JunoLab/Atom.jl/pull/208), [atom-julia-client#651](https://github.com/JunoLab/atom-julia-client/pull/651), [Atom.jl#220](https://github.com/JunoLab/Atom.jl/pull/220), [Atom.jl#221](https://github.com/JunoLab/Atom.jl/pull/221), [Atom.jl#268](https://github.com/JunoLab/Atom.jl/pull/268), [Atom.jl#272](https://github.com/JunoLab/Atom.jl/pull/272), [Atom.jl#273](https://github.com/JunoLab/Atom.jl/pull/273))

- Performance improvements around Juno’s GUI rendering:
  - Improved result animation ([atom-ink#244](https://github.com/JunoLab/atom-ink/pull/244))
  - Fixed idle CPU usage with plot open ([atom-ink#248](https://github.com/JunoLab/atom-ink/pull/248))

- Improved mouse clicking behavior on inline results ([atom-ink#239](https://github.com/JunoLab/atom-ink/pull/239/files))
  - Now clicking an inline result with middle-mouse button will clear it
  - Fixed text selecting

- Auto completion feature gets enhanced sooooo much:
  - General performance improvements ([Atom.jl#234](https://github.com/JunoLab/Atom.jl/pull/234))
  - Method completions now infer their return types using the current input argument types ([Atom.jl#276](https://github.com/JunoLab/Atom.jl/pull/276))
  - Lazy return type inference and result caching ([Atom.jl#278](https://github.com/JunoLab/Atom.jl/pull/278))
  - (showcase) Moar return type inference example: ![Inference example](https://global.discourse-cdn.com/julialang/original/3X/6/8/68f923a348f31d9dfb032a267d7c3248fbdf7601.png)

- Start to support more extensive precompilations (using [SnoopCompile.jl](https://github.com/timholy/SnoopCompile.jl)), which hopefully gives better first-time invocation speed for various features ([Atom.jl#270](https://github.com/JunoLab/Atom.jl/pull/270), [Juno.jl#476](https://github.com/JunoLab/Juno.jl/pull/476) – thanks @Amin_Yahyaabadi for taking the initiative on this !)
- Better documentation search ([DocSeeker.jl#17](https://github.com/JunoLab/DocSeeker.jl/pull/17), [Atom.jl#232](https://github.com/JunoLab/Atom.jl/pull/232), [DocSeeker.jl#19](https://github.com/JunoLab/DocSeeker.jl/pull/19))
- Clicking links in a REPL/terminal now needs `ctrl/cmd` modifier as in-editor symbol jump and prevents “random clicking on terminal” from opening a file ([atom-ink#251](https://github.com/JunoLab/atom-ink/pull/251), [atom-julia-client#678](https://github.com/JunoLab/atom-julia-client/pull/678))
  - If you don’t like this change, you can restore the previous behavior by turning off the `Julia Client > Terminal Options > Ctrl/Cmd modifier for link activation` config setting:

### Bugfixes

- Cover edge cases in code block finding logic ([atom-julia-client#661](https://github.com/JunoLab/atom-julia-client/pull/661))
- Fixed issues around menus ([atom-julia-client#671](https://github.com/JunoLab/atom-julia-client/pull/671))
- Debug prompt now can accept multi-line expression ([Atom.jl#273](https://github.com/JunoLab/Atom.jl/pull/273))
- Fixed focusing behavior with mouse hovering on inline results ([atom-ink#245](https://github.com/JunoLab/atom-ink/pull/245))

## Installation

### Atom packages

_ **Important : To fully update Atom packages, you need to restart all the previous Atom processes** _

Install the latest versions of `julia-client` and `ink` packages:  
Close all the Atom windows and type the following command into your terminal:

```julia-auto
apm update

```

If that also doesn’t work (or if you want to only update Juno packages), try the commands below instead:

```julia-auto
apm uninstall ink
apm uninstall julia-client
apm install ink
apm install julia-client

```

### Julia packages

Execute the following in a Julia prompt:

```julia
pkg> up Atom Juno

```

### Versions

_ **Important** _ : This release _requires_ Atom 1.39, 1.40.1, or higher.

As always, make sure all Julia and Atom packages are up-to-date.

Julia packages:

- Atom.jl version: 0.12.8
- Juno.jl version: 0.8.1

Atom packages:

- julia-client version: 0.12.3
- ink version: 0.12.3

That’s all, thanks !

[Shuhei](https://github.com/aviatesk) and [Sebastian](https://github.com/pfitzseb),

---

<div class="post-metadata">

**Author:** ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)\
**Post date:** [February 16, 2020, 1:34pm UTC](https://discourse.julialang.org/t/ann-juno-0-12/34717/2 "2020-02-16T13:34:52Z")

</div>

> [@aviatesk](#):
>
> Lines where dynamic dispatch or garbage collection happened are specially colored (yellow and red, respectively) so that we can find performance pitfalls more easily

Is this mentioned in the UI? This is cool, but it seems like something I’d forget the meaning of.

---

<div class="post-metadata">

**Author:** ![marius311](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/marius311/32/3953_2.png) [@marius311](https://discourse.julialang.org/u/marius311)\
**Post date:** [February 16, 2020, 1:41pm UTC](https://discourse.julialang.org/t/ann-juno-0-12/34717/3 "2020-02-16T13:41:13Z")

</div>

All these improvements look awesome, thank you for the great work you guys do on this!

---

<div class="post-metadata">

**Author:** ![pfitzseb](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pfitzseb/32/45566_2.png) [@pfitzseb](https://discourse.julialang.org/u/pfitzseb)\
**Post date:** [February 16, 2020, 1:54pm UTC](https://discourse.julialang.org/t/ann-juno-0-12/34717/4 "2020-02-16T13:54:50Z")

</div>

Yes, that’s mentioned in the upper right if you hover over the profile frame.

---

<div class="post-metadata">

**Author:** ![aviatesk](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/aviatesk/32/7610_2.png) [@aviatesk](https://discourse.julialang.org/u/aviatesk)\
**Post date:** [February 16, 2020, 1:58pm UTC](https://discourse.julialang.org/t/ann-juno-0-12/34717/5 "2020-02-16T13:58:45Z")

</div>

> [@ChrisRackauckas](#):
>
> Is this mentioned in the UI? This is cool, but it seems like something I’d forget the meaning of.

To some extent. If you hover on a dispatched/gc box in profiler view, there is indication of that in the side of localtion information:  
 ![image](https://global.discourse-cdn.com/julialang/original/3X/2/0/2084d01bf0513b142087ea83b02b273704e1f73c.png)  
But yes, legend or something more explicit will be better.  
(Little discussion here: [update profiler by pfitzseb · Pull Request #672 · JunoLab/atom-julia-client · GitHub](https://github.com/JunoLab/atom-julia-client/pull/672#discussion_r371631136))

---

<div class="post-metadata">

**Author:** ![xiaodai](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/xiaodai/32/15937_2.png) [@xiaodai](https://discourse.julialang.org/u/xiaodai)\
**Post date:** [February 17, 2020, 10:28am UTC](https://discourse.julialang.org/t/ann-juno-0-12/34717/6 "2020-02-17T10:28:25Z")

</div>

I find that Hydrogen interferes with Juno. Perhaps uninstall it if you run into issues

---

<div class="post-metadata">

**Author:** ![mwolff](https://avatars.discourse-cdn.com/v4/letter/m/c2a13f/32.png) [@mwolff](https://discourse.julialang.org/u/mwolff)\
**Post date:** [February 17, 2020, 12:08pm UTC](https://discourse.julialang.org/t/ann-juno-0-12/34717/7 "2020-02-17T12:08:11Z")

</div>

Since yesterday I have a problem with Atom Juno. After the last ink update nothing worked. Only constantly appearing bug reports. Uninstalling and reinstalling didn’t help either. I have now completely uninstalled Atom. Seems that the updates don’t check if the version of Atom Juno is suitable for updating. No idea if it’s still worth installing Atom 1.25 (32-bit) again. Is it possible to install older releases of julia-client, ink etc that worked?

---

<div class="post-metadata">

**Author:** ![pfitzseb](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pfitzseb/32/45566_2.png) [@pfitzseb](https://discourse.julialang.org/u/pfitzseb)\
**Post date:** [February 17, 2020, 12:12pm UTC](https://discourse.julialang.org/t/ann-juno-0-12/34717/8 "2020-02-17T12:12:29Z")

</div>

Did you try the installation instructions outlined above? What version of Atom are you running?

> After the last ink update nothing worked. Only constantly appearing bug reports.

That’s not enough info for us to help you.

---

<div class="post-metadata">

**Author:** ![mwolff](https://avatars.discourse-cdn.com/v4/letter/m/c2a13f/32.png) [@mwolff](https://discourse.julialang.org/u/mwolff)\
**Post date:** [February 17, 2020, 12:29pm UTC](https://discourse.julialang.org/t/ann-juno-0-12/34717/9 "2020-02-17T12:29:25Z")

</div>

Atom 1.25 (32-bit Linux)

---

<div class="post-metadata">

**Author:** ![pfitzseb](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pfitzseb/32/45566_2.png) [@pfitzseb](https://discourse.julialang.org/u/pfitzseb)\
**Post date:** [February 17, 2020, 12:33pm UTC](https://discourse.julialang.org/t/ann-juno-0-12/34717/10 "2020-02-17T12:33:05Z")

</div>

I’d very much recommend updating to a more recent version. You can install an older version of ink with e.g.

```julia
apm install ink@0.9.15

```

(that version should work, but I didn’t try myself).

---

<div class="post-metadata">

**Author:** ![mwolff](https://avatars.discourse-cdn.com/v4/letter/m/c2a13f/32.png) [@mwolff](https://discourse.julialang.org/u/mwolff)\
**Post date:** [February 17, 2020, 12:34pm UTC](https://discourse.julialang.org/t/ann-juno-0-12/34717/11 "2020-02-17T12:34:44Z")

</div>

Ok i try, but that is the last 32-bit version of Atom for linux

---

<div class="post-metadata">

**Author:** ![Zhong\_Pan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/zhong_pan/32/19872_2.png) [@Zhong\_Pan](https://discourse.julialang.org/u/Zhong_Pan)\
**Post date:** [February 17, 2020, 12:52pm UTC](https://discourse.julialang.org/t/ann-juno-0-12/34717/12 "2020-02-17T12:52:05Z")

</div>

Thank you, thank you, thank you! This update eliminated a few major pain points in the visual debugging workflow which my colleagues complained about. I’ll definitely ask them to take a look again - not only the new feature, but also how fast things are improving!

And I like the faster autocomplete.

Much appreciated!

---

<div class="post-metadata">

**Author:** ![Amval](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/amval/32/6217_2.png) [@Amval](https://discourse.julialang.org/u/Amval)\
**Post date:** [February 17, 2020, 1:58pm UTC](https://discourse.julialang.org/t/ann-juno-0-12/34717/13 "2020-02-17T13:58:39Z")

</div>

Both REPL rendering and autocomplete seem much faster. Great job!

---

<div class="post-metadata">

**Author:** ![apieum](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/apieum/32/2928_2.png) [@apieum](https://discourse.julialang.org/u/apieum)\
**Post date:** [February 17, 2020, 7:42pm UTC](https://discourse.julialang.org/t/ann-juno-0-12/34717/15 "2020-02-17T19:42:40Z")

</div>

Hi,  
it’s a great job, and I’m sincerely sorry to tint it with a bit of shadow. 🤷‍♂️  
I’m surprised (to not say shocked) there’s still people using a debugger (outside legacy code context).  
I suppose they don’t write unit test, so if there’s people here who need support to learn TDD, I offer my humble services for free.  
wish you the best, ❤ julia

---

<div class="post-metadata">

**Author:** ![joa-quim](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/joa-quim/32/227_2.png) [@joa-quim](https://discourse.julialang.org/u/joa-quim)\
**Post date:** [February 17, 2020, 8:02pm UTC](https://discourse.julialang.org/t/ann-juno-0-12/34717/16 "2020-02-17T20:02:51Z")

</div>

> [@apieum](#):
>
> I’m surprised (to not say shocked) there’s still people using a debugger

Please don’t restart this story again.

---

<div class="post-metadata">

**Author:** ![Azamat](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/azamat/32/6892_2.png) [@Azamat](https://discourse.julialang.org/u/Azamat)\
**Post date:** [February 17, 2020, 8:19pm UTC](https://discourse.julialang.org/t/ann-juno-0-12/34717/17 "2020-02-17T20:19:56Z")

</div>

> [@apieum](#):
>
> if there’s people here who need support to learn TDD, I offer my humble services for free

I would certainly benefit from some kind of blog post about it outlining the workflow and explaining it’s advantages

---

<div class="post-metadata">

**Author:** ![xiaodai](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/xiaodai/32/15937_2.png) [@xiaodai](https://discourse.julialang.org/u/xiaodai)\
**Post date:** [February 17, 2020, 11:40pm UTC](https://discourse.julialang.org/t/ann-juno-0-12/34717/18 "2020-02-17T23:40:55Z")

</div>

If your test fails, then you still need a debugger to find out why if it’s caused by a bug in the code? TDD = no need for debugger is mystifying. Or are you just trolling?

---

<div class="post-metadata">

**Author:** ![kevbonham](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kevbonham/32/216165_2.png) [@kevbonham](https://discourse.julialang.org/u/kevbonham)\
**Post date:** [February 18, 2020, 2:36am UTC](https://discourse.julialang.org/t/ann-juno-0-12/34717/19 "2020-02-18T02:36:41Z")

</div>

> [@joa-quim](#):
>
> Please don’t restart this story again.

For anyone tempted to respond in one way or another w/r/t TDD vs debugger, please read [this thread](https://discourse.julialang.org/t/how-do-you-use-debuggers/4580) in full instead. If for some reason you are not thoroughly dissuaded from any urge to continue the discussion, well, just please don’t anyway 🙏.

---

<div class="post-metadata">

**Author:** ![heliosdrm](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/heliosdrm/32/3851_2.png) [@heliosdrm](https://discourse.julialang.org/u/heliosdrm)\
**Post date:** [February 19, 2020, 11:26am UTC](https://discourse.julialang.org/t/ann-juno-0-12/34717/20 "2020-02-19T11:26:14Z")

</div>

This update is great, thanks!!

> [@aviatesk](#):
>
> You can use `Julia Debug: Run File (Block, Cell)` and `Julia Debug: Step Through File (Block, Cell)` commands (or corresponding menus) for debugging whole `.jl` file, selected code block, or even a Weave code cell, etc.

I wonder: what are “blocks” in this context? A set of lines selected on the editor, or marked by some delimiter marks…?

---

<div class="post-metadata">

**Author:** ![nilshg](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nilshg/32/2283_2.png) [@nilshg](https://discourse.julialang.org/u/nilshg)\
**Post date:** [February 19, 2020, 11:28am UTC](https://discourse.julialang.org/t/ann-juno-0-12/34717/21 "2020-02-19T11:28:59Z")

</div>

See the docs: [Basic Usage · Juno Documentation](http://docs.junolab.org/latest/man/basic_usage/#Cell-Evaluation-1)

[Next page](https://discourse.julialang.org/t/ann-juno-0-12/34717.md?page=2)
