|
| 1 | +--- |
| 2 | +title: 'Spyder 4.0 takes a big step closer with the release of Beta 2!' |
| 3 | +published: May 21, 2019 |
| 4 | +author: gonzalo-pena-castellanos |
| 5 | +description: 'This is the first of a series of blog posts we will be writing to showcase updates on the development of Spyder, new planned features and news on the road to Spyder 4.0 and beyond.' |
| 6 | +category: [IDEs] |
| 7 | +featuredImage: |
| 8 | + src: /posts/release-spyder-4beta2/blog_feature_var1.svg |
| 9 | + alt: 'An illustration of a brown and a dark brown hand coming towards each other to pass a business card with the logo of Quansight Labs.' |
| 10 | +hero: |
| 11 | + imageSrc: /posts/release-spyder-4beta2/blog_hero_var1.svg |
| 12 | + imageAlt: 'An illustration of a brown hand holding up a microphone, with some graphical elements highlighting the top of the microphone.' |
| 13 | +--- |
| 14 | + |
| 15 | +It has been almost two months since I joined Quansight in April, to start |
| 16 | +working on Spyder maintenance and |
| 17 | +development. So far, it has been a very exciting and rewarding journey under |
| 18 | +the guidance of long time Spyder maintainer |
| 19 | +[Carlos CΓ³rdoba](https://github.com/ccordoba12). |
| 20 | +This is the first of a series of blog posts we will be writing to showcase |
| 21 | +updates on the development of Spyder, new planned features and news on the |
| 22 | +road to Spyder 4.0 and beyond. |
| 23 | + |
| 24 | +First off, I would like to give a warm welcome to |
| 25 | +[Edgar Margffoy](https://github.com/andfoy), |
| 26 | +who recently joined Quansight and will be working with the Spyder team to |
| 27 | +take its development even further. Edgar has been a core Spyder developer |
| 28 | +for more than two years now, and we are very excited to have his (almost) |
| 29 | +full-time commitment to the project. |
| 30 | + |
| 31 | +# Spyder 4.0 Beta 2 released! |
| 32 | + |
| 33 | +Since August 2018, when the first beta of the 4.x series was released, the |
| 34 | +Spyder development team has been working hard on our next release. |
| 35 | +Over the past year, we've implemented the long awaited full-interface dark theme; |
| 36 | +overhauled our entire code completion and linting architecture to use the |
| 37 | +[Language Server Protocol](https://microsoft.github.io/language-server-protocol/), |
| 38 | +opening the door to supporting many other languages in the future; |
| 39 | +added a new Plots pane to view and manage the figures generated by your code; |
| 40 | +and numerous other feature enhancements, bug fixes and internal improvements. |
| 41 | + |
| 42 | +## Dark theme |
| 43 | + |
| 44 | +A full-interface dark theme has been a |
| 45 | +[long awaited feature](https://github.com/spyder-ide/spyder/issues/2350), |
| 46 | +and is enabled by default in Spyder 4. You can still select the |
| 47 | +light theme under ``Preferences > Appearance`` by either choosing a light-background |
| 48 | +syntax-highlighting scheme, or changing ``Interface theme`` to ``Light``. |
| 49 | + |
| 50 | + |
| 51 | + |
| 52 | +Pretty, right :-) ? |
| 53 | + |
| 54 | +This enhancement was made possible by the work of |
| 55 | +[Colin Duquesnoy](https://github.com/ColinDuquesnoy), |
| 56 | +[Daniel Pizzeta](https://github.com/dpizetta) |
| 57 | +and their [QDarkStyle](https://github.com/ColinDuquesnoy/QDarkStyleSheet/) |
| 58 | +package. The Spyder team is now actively collaborating with Colin and Daniel |
| 59 | +to pursue the release of QDarkStyle 3.x, which will be using Spyder's |
| 60 | +[QtSASS](https://github.com/spyder-ide/qtsass/) |
| 61 | +package to harness the power of SASS/SCSS and allow users to fully customize |
| 62 | +the theme dynamically. |
| 63 | + |
| 64 | + |
| 65 | +## Language Server Protocol architecture |
| 66 | + |
| 67 | +The Language Server Protocol (LSP) was created by Microsoft for Visual Studio Code to standardize how |
| 68 | +development tools (e.g. editors and IDEs) communicate with |
| 69 | +servers that provide code completion, linting and related facilities for |
| 70 | +different programming languages. With LSP, as |
| 71 | +[they describe it](https://web.archive.org/web/20190528210156/https://microsoft.github.io/language-server-protocol/): |
| 72 | + |
| 73 | +> A single Language Server can be reused in multiple development tools, |
| 74 | +> which in turn can support multiple languages with minimal effort. |
| 75 | +> LSP is a win for both language providers and tooling vendors! |
| 76 | +
|
| 77 | +As of Spyder 4 Beta 2, Spyder is now one of those tools! |
| 78 | +We developed our own client to communicate with any server that implements |
| 79 | +LSP v3.0 through a transport layer that uses ZeroMQ sockets. Code completion, |
| 80 | +help generation, calltips, and real-time code/style analysis were rewritten to take advantage of this |
| 81 | +architecture, and hover hints and docstring style analysis were added. |
| 82 | +Further LSP features, such as workspace functionality and on the fly completion, will come in future betas. |
| 83 | + |
| 84 | +<img src="/posts/release-spyder-4beta2/spyder-hover-hint-calltip.png" class="center" /> |
| 85 | + |
| 86 | +Our current support is geared towards Python, using the great |
| 87 | +[Python-Language-Server](https://github.com/palantir/python-language-server) |
| 88 | +package. This has allowed us to provide fine-grained configurability for |
| 89 | +[Pycodestyle](http://pycodestyle.pycqa.org/en/stable/) and |
| 90 | +[Pydocstyle](http://www.pydocstyle.org/en/stable/) options, and in future |
| 91 | +betas weβll also add the ability to use and configure code formatters like |
| 92 | +YAPF and autopep8. |
| 93 | + |
| 94 | + |
| 95 | + |
| 96 | +We support configuring LSP servers for additional, non-Python programming languages. |
| 97 | +In the future, we hope to include out-of-the-box LSP integration for |
| 98 | +some of the most popular languages in the scientific computing space, |
| 99 | +including Fortran, Julia and C/C++. |
| 100 | + |
| 101 | + |
| 102 | + |
| 103 | +## Plots pane |
| 104 | + |
| 105 | +Similar to [RStudio](https://www.rstudio.com/) and other data science IDEs, |
| 106 | +Spyder now includes a Plots pane, allowing you to browse all figures created during a |
| 107 | +session. Beyond just viewing plots, you can also zoom, save/export, copy and remove |
| 108 | +them. |
| 109 | + |
| 110 | + |
| 111 | + |
| 112 | +## But wait, there's more! |
| 113 | + |
| 114 | +There are numerous additional features we've added in the previous 10 |
| 115 | +months! These include: |
| 116 | + |
| 117 | +* **Autosave** and **File Recovery** in the editor, so Spyder can restore your |
| 118 | +unsaved files in case it crashes or something else goes wrong. |
| 119 | +* Dedicated **Sympy**, **Cython** and **Pylab** consoles, making it |
| 120 | +very simple to quickly explore and create code for these libraries. |
| 121 | +* OS level **window pane undocking**, allowing you to easily |
| 122 | +organize panes across different monitors. |
| 123 | +* Support for **[multi-indexes](https://pandas.pydata.org/pandas-docs/stable/user_guide/advanced.html)** |
| 124 | +in our Dataframe viewer, making working with complex datasets much easier. |
| 125 | + |
| 126 | +We will describe all of these additional enhancements in greater detail in |
| 127 | +future blog posts. |
| 128 | + |
| 129 | +## You can help! |
| 130 | + |
| 131 | +If would like to help us test this beta release and try out the new features it offers, |
| 132 | +you can! You can install it with ``conda`` (if using Anaconda/Miniconda, as we recommend), |
| 133 | +or with ``pip``; we suggest doing so in a new Conda env or ``virtualenv``/``venv`` |
| 134 | +so you can easily switch between your existing Spyder install and the Spyder 4 beta. |
| 135 | +For example, to do so with ``conda``, enter the following at the Terminal/Anaconda prompt: |
| 136 | + |
| 137 | +```bash |
| 138 | +$ conda create --channel spyder-ide --name spyder-beta spyder=4.0.0b2 |
| 139 | +$ conda activate spyder-beta |
| 140 | +$ spyder |
| 141 | +``` |
| 142 | + |
| 143 | +This is a safe process because Spyder now uses a different configuration |
| 144 | +directory for its development versions, so you can easily switch between our stable |
| 145 | +and beta releases without worrying about one affecting the other. |
| 146 | + |
| 147 | +If you find any bugs, you can report them on our |
| 148 | +[issue tracker](https://github.com/spyder-ide/spyder/issues); |
| 149 | +make sure to search for your error message or behavior before making a new one. |
| 150 | + |
| 151 | +## Closing remarks |
| 152 | + |
| 153 | +I would like to thank Quansight for the opportunity of working in open source |
| 154 | +development on an awesome project like Spyder. I am also grateful to our |
| 155 | +users, [contributors](https://github.com/spyder-ide/spyder/graphs/contributors) |
| 156 | +and [core developers](https://github.com/orgs/spyder-ide/people) for helping |
| 157 | +making Spyder amazing! |
0 commit comments