|
| 1 | +Hi all, |
| 2 | + |
| 3 | +Juno 0.12 is out ! |
| 4 | +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 :) |
| 5 | + |
| 6 | + |
| 7 | +## Release notes |
| 8 | + |
| 9 | +### New features |
| 10 | + |
| 11 | +- 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)) |
| 12 | + * 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. |
| 13 | + * (showcase) Debugging toplevel code demo:  |
| 14 | +- 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 !): |
| 15 | + * Lines where dynamic dispatch or garbage collection happened are specially colored (yellow and red, respectively) so that we can find performance pitfalls more easily |
| 16 | + * Prunes stacktraces that relate to Juno's internal tasks by default |
| 17 | + * Fixed incorrect inline highlight lengths |
| 18 | + * Keyword option control for `@profiler` macro |
| 19 | + * (showcase) New profiler look example:  |
| 20 | +- 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)) |
| 21 | + * (showcase) New tree-view menus look:  |
| 22 | +- [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)) |
| 23 | +- 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)) |
| 24 | +- 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)) |
| 25 | + * If you don't like this, head for `UI Options ⟶ Highlight Cells` setting |
| 26 | +- 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)) |
| 27 | +- 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)) |
| 28 | + |
| 29 | +### Improvements |
| 30 | + |
| 31 | +- 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)) |
| 32 | +- 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.) |
| 33 | + * Modules are more correctly detected ([Atom.jl#215](https://github.com/JunoLab/Atom.jl/pull/215)) |
| 34 | + * More memory efficient symbols cache ([Atom.jl#219](https://github.com/JunoLab/Atom.jl/pull/219)) |
| 35 | + * Escape possible danger with recursive `include` loops ([Atom.jl#256](https://github.com/JunoLab/Atom.jl/pull/256)) |
| 36 | + * 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)) |
| 37 | + * Show local binding verbatim in completions ([Atom.jl#275](https://github.com/JunoLab/Atom.jl/pull/275)) |
| 38 | + * ... 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)) |
| 39 | +- Performance improvements around Juno's GUI rendering: |
| 40 | + * Improved result animation ([atom-ink#244](https://github.com/JunoLab/atom-ink/pull/244)) |
| 41 | + * Fixed idle CPU usage with plot open ([atom-ink#248](https://github.com/JunoLab/atom-ink/pull/248)) |
| 42 | +- Improved mouse clicking behavior on inline results ([atom-ink#239](https://github.com/JunoLab/atom-ink/pull/239/files)) |
| 43 | + * Now clicking an inline result with middle-mouse button will clear it |
| 44 | + * Fixed text selecting |
| 45 | +- Auto completion feature gets enhanced sooooo much: |
| 46 | + * General performance improvements ([Atom.jl#234](https://github.com/JunoLab/Atom.jl/pull/234)) |
| 47 | + * Method completions now infer their return types using the current input argument types ([Atom.jl#276](https://github.com/JunoLab/Atom.jl/pull/276)) |
| 48 | + * Lazy return type inference and result caching ([Atom.jl#278](https://github.com/JunoLab/Atom.jl/pull/278)) |
| 49 | + * (showcase) Moar return type inference example:  |
| 50 | +- 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 !) |
| 51 | +- 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)) |
| 52 | +- 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)) |
| 53 | + * 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: |
| 54 | + |
| 55 | +### Bugfixes |
| 56 | + |
| 57 | +- Cover edge cases in code block finding logic ([atom-julia-client#661](https://github.com/JunoLab/atom-julia-client/pull/661)) |
| 58 | +- Fixed issues around menus ([atom-julia-client#671](https://github.com/JunoLab/atom-julia-client/pull/671)) |
| 59 | +- Debug prompt now can accept multi-line expression ([Atom.jl#273](https://github.com/JunoLab/Atom.jl/pull/273)) |
| 60 | +- Fixed focusing behavior with mouse hovering on inline results ([atom-ink#245](https://github.com/JunoLab/atom-ink/pull/245)) |
| 61 | + |
| 62 | + |
| 63 | +## Installation |
| 64 | + |
| 65 | +### Atom packages |
| 66 | + |
| 67 | +***Important : To fully update Atom packages, you need to restart all the previous Atom processes*** |
| 68 | + |
| 69 | +Install the latest versions of `julia-client` and `ink` packages: |
| 70 | +Close all the Atom windows and type the following command into your terminal: |
| 71 | +``` |
| 72 | +apm update |
| 73 | +``` |
| 74 | + |
| 75 | +If that also doesn’t work (or if you want to only update Juno packages), try the commands below instead: |
| 76 | +``` |
| 77 | +apm uninstall ink |
| 78 | +apm uninstall julia-client |
| 79 | +apm install ink |
| 80 | +apm install julia-client |
| 81 | +``` |
| 82 | + |
| 83 | +### Julia packages |
| 84 | + |
| 85 | +Execute the following in a Julia prompt: |
| 86 | + |
| 87 | +```julia |
| 88 | +pkg> up Atom Juno |
| 89 | +``` |
| 90 | + |
| 91 | +### Versions |
| 92 | + |
| 93 | +***Important*** : This release *requires* Atom 1.39, 1.40.1, or higher. |
| 94 | + |
| 95 | +As always, make sure all Julia and Atom packages are up-to-date. |
| 96 | + |
| 97 | +Julia packages: |
| 98 | + |
| 99 | +* Atom.jl version: 0.12.8 |
| 100 | +* Juno.jl version: 0.8.1 |
| 101 | + |
| 102 | +Atom packages: |
| 103 | + |
| 104 | +* julia-client version: 0.12.3 |
| 105 | +* ink version: 0.12.3 |
| 106 | + |
| 107 | + |
| 108 | +That's all, thanks ! |
| 109 | + |
| 110 | +[Shuhei](https://github.com/aviatesk) and [Sebastian](https://github.com/pfitzseb), |
0 commit comments