Today we’re very excited (and a bit nervous) to announce the new development cycle of the Arduino IDE.
As you may have noticed, we’ve been continuously removing functionality from the Java package, and migrating them to a collection of external tools. We began this project by moving the build logic to arduino-builder, which now also powers the Arduino Create infrastructure.
We think that this split will keep the tools manageable, while giving a chance for third parties to integrate them into their products without the burden of a full-blown IDE.
Moreover, we are introducing another couple of tools:
One is arduino-cli, which we’ll uncover in the next few weeks as soon it comes out of pre-pre-alpha stage.
The other is arduino-preprocessor, which supersedes ctags in the sketch preprocessing phase. Moving to a different tool has been a necessary step for many reasons, the most important being the ctags’ limited parsing of complex C++ sketches.
arduino-preprocessor is based on libclang, statically compiled for zero dependencies execution; it uses clang’s superpowers to extract the prototypes we need, directly from the AST. As a (really nice) side effect, this engine can even be used for context-aware completion, probably the most required feature from the beginning of Arduino.
Since we’re unveiling such a big feature, it will surely impact the overall performance. To avoid keeping it out-of-tree for too long, we decided to open the beta branch.
This branch will be a playground for new ideas and implementations, including more collaborators with push powers. The branch has just been populated with all the IDE-related pull requests scheduled for the next release.
The beta branch is quite peculiar as well, because precompiled binaries generated from this branch will be available directly from the arduino.cc download page. We noticed that nightly (or hourly) builds are insufficient to spot a whole class of bugs, which may harm non-developers, users with non-latin charsets, and so on.
Being marked as experimental, the beta branch will not be ready for large-scale deployment (although it will probably be okay for everyday use); thus, we won’t provide a Windows exe or a signed OSX app. However, we hope that many people will test it and report bugs and impressions, so we can merge it safely into master in the near future.
A short curated list of the beta branch’s improvements over the latest 1.8.x IDE:
- Initial support for autocompletion (activate it using CTRL+space)
- Attention: Launching for the first time is quite slow and will freeze the UI. Don’t worry, simply wait for it to unstick.
- Initial work on daemonized builder (using file watchers, will be able to spot if compilation can be avoided, partially or totally).
- AVR core has been moved to its own repo.
- Tabs are scrollable. 🙂
- The serial monitor is html-aware and clickable (if steady).
- Initial work on Library dependencies UI.
- Initial work on Hi-DPI support on Linux.
- Find/replace window is always on top of its own editor window.
- Library/Board manager show buttons on mouseover.