# Rationale for the removal of workspace()?

**URL:** <https://discourse.julialang.org/t/rationale-for-the-removal-of-workspace/8804>\
**Category:** Internals & Design\
**Created:** [February 4, 2018, 10:28am UTC](https://discourse.julialang.org/t/rationale-for-the-removal-of-workspace/8804 "2018-02-04T10:28:42Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![jonathanBieler](https://avatars.discourse-cdn.com/v4/letter/j/82dd89/32.png) [@jonathanBieler](https://discourse.julialang.org/u/jonathanBieler)\
**Post date:** [February 4, 2018, 10:28am UTC](https://discourse.julialang.org/t/rationale-for-the-removal-of-workspace/8804/1 "2018-02-04T10:28:42Z")

</div>

Just curious, I’ve looked on github but haven’t found much information.

---

<div class="post-metadata">

**Author:** ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)\
**Post date:** [February 4, 2018, 11:16am UTC](https://discourse.julialang.org/t/rationale-for-the-removal-of-workspace/8804/2 "2018-02-04T11:16:23Z")

</div>

See the issues linked in [#25046](https://github.com/JuliaLang/julia/pull/25046), and also [#25207](https://github.com/JuliaLang/julia/pull/25207). TL;DR: it had a few problems, and [Revise.jl](https://github.com/timholy/Revise.jl) has proven to be a better solution.

---

<div class="post-metadata">

**Author:** ![jonathanBieler](https://avatars.discourse-cdn.com/v4/letter/j/82dd89/32.png) [@jonathanBieler](https://discourse.julialang.org/u/jonathanBieler)\
**Post date:** [February 4, 2018, 1:43pm UTC](https://discourse.julialang.org/t/rationale-for-the-removal-of-workspace/8804/3 "2018-02-04T13:43:56Z")

</div>

I saw these but having a few issues didn’t seem like a sufficient reason for removing a feature (otherwise not much would be left). And Revise doesn’t really implement the same feature (giving you a clean space to work with).

Personally I don’t mind the change too much because I don’t use `workspace` that often, but I’m a bit surprised there’s no stronger reasons to remove it.

---

<div class="post-metadata">

**Author:** ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)\
**Post date:** [February 4, 2018, 2:09pm UTC](https://discourse.julialang.org/t/rationale-for-the-removal-of-workspace/8804/4 "2018-02-04T14:09:29Z")

</div>

My perception is that it was too much of a hassle to do right and at the same time (or because of this?) not used widely, and in the meantime Revise.jl fixed the same problem (with a different solution).

`workspace()` was a _bit_ cheaper than simply restarting the image, but had all kinds of quirks. I am hoping Julia is moving in the direction that I rarely ever need anything like this, eg [#22721](https://github.com/JuliaLang/julia/pull/22721).

---

<div class="post-metadata">

**Author:** ![randyzwitch](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/randyzwitch/32/15955_2.png) [@randyzwitch](https://discourse.julialang.org/u/randyzwitch)\
**Post date:** [February 4, 2018, 3:43pm UTC](https://discourse.julialang.org/t/rationale-for-the-removal-of-workspace/8804/5 "2018-02-04T15:43:51Z")

</div>

> [@jonathanBieler](#):
>
> And Revise doesn’t really implement the same feature (giving you a clean space to work with).

That’s why I used `workspace()`, and I think its unfortunate that its going away.

---

<div class="post-metadata">

**Author:** ![pasha](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pasha/32/3319_2.png) [@pasha](https://discourse.julialang.org/u/pasha)\
**Post date:** [February 4, 2018, 9:29pm UTC](https://discourse.julialang.org/t/rationale-for-the-removal-of-workspace/8804/6 "2018-02-04T21:29:59Z")

</div>

Coming from R, I’m used to `rm(localobject)` and a fast `ls()` (vs slow `whos()`) in the REPL. I know you can set `localobject=0` to save the memory, but in an exploratory REPL session this gets cluttered. From what I can see, the issues around `rm()` have a complex history that makes it infeasible or somehow unthinkable for Julia. I tend to think of `workspace()` is kind of a nuclear option. Revise.jl is lovely and a huge boost beyond R’s REPL.

In short, I wouldn’t miss the loss of `workspace()` if there were a `rm()` or if restarting Julia were faster. But neither of those seems likely, right?
