First Beta release of KDevelop 5.0.0 available

After more than a year of continuous work by our community, I'm very pleased to finally announce the first beta release of KDevelop 5.0.0. This release is made up of hundreds of commits, and marks a huge step forward:

  • We have ported our huge code base to Qt 5 and KDE frameworks 5 (KF5).
  • We replaced our legacy C++ parser and semantic analysis plugin with a much more powerful one that is based on Clang from the LLVM project.
  • We removed the hand-written CMake interpreter and now leverage meta data provided by upstream CMake itself.
  • We finally integrated semantic language support for QML and JavaScript, as well as a project manager for QMake.
  • Finally, we cleaned up many areas of our code base and improved the performance of some work flows significantly.

Qt 5 and KF5

We spent a lot of effort on keeping the porting bugs to a minimum, and our thanks go out to the many testers who have guided us in the process. Porting to KF5 and Qt 5 also cut down our dependencies, bringing us closer to a proper KDevelop on Windows and KDevelop on Mac OS X. If you want to see KDevelop 5 become a reality on these platforms, then please get in touch with us and help us iron out the last issues.

Clang

KDevelop always prided itself for its state of the art C++ language support. We introduced innovative code browsing functionality, semantic highlighting and advanced code completion, features that our user base has come to rely upon for their daily work. All of this was made possible by a custom C++ parser, and an extremely complex semantic analyzer for the C++ language. Adding support for all the quirky corner cases in C++, as well as maintaining compatibility with the latest C++ language standards such as C++11, drained our energy and stole time needed to improve other areas of our IDE. Furthermore, the code was so brittle, that it was close to impossible to improve its performance or add bigger new features such as proper C language support.

Now, after close to two years of work, we finally have a solution to this dilemma: A Clang based language plugin. Not only does this give us support for the the very latest C++ language standard, it also enables true C and Objective-C language support. Furthermore, you get all of the immensely useful compiler warnings directly inside your editor. Even better, fixing these warnings is now often just a matter of pressing a single button to apply a Clang provided fix-it!

There are, however, a few caveats that need to be mentioned:

  • On older machines the performance may be worse than with our legacy C++ support. But the new Clang based plugin finally scales properly with the number of cores on your CPU, which can lead to significantly improved performance on more modern machines.
  • Some features of our legacy C++ support have not yet been ported to the new plugin. This includes special support for Qt code, most notably signal/slot code completion using the old Qt 4 macro syntax. We will be working on improving this situation and welcome feedback from our users on what we should focus on.
  • The plugin works fine with Clang 3.6 and above, but some features, such as auto-type resolution in the code browser, or argument code completion hints within a function call, require unreleased extensions to Clang. The required changes have been contributed upstream by members of our community and we intend on continuing this effort. For the best C++ experience in KDevelop, we recommend a custom build of a recent Clang. Alternatively, stay tuned for Clang 3.8 early next year.

CMake

Another area where KDevelop always excelled was its support for CMake based projects. Sadly, similar to the C++ story above, this came at a huge maintenance cost for a custom CMake interpreter. Keeping compatibility with the rapid upstream development was not possible for our small team. As such, we decided on a radical cut for KDevelop 5 and removed our custom CMake interpreter. Instead, we now use meta data provided by CMake itself, giving us a correct listing of targets, as well as all include paths and defines for the source code files in your projects. These are the most important features required of a project manager in KDevelop. But this step also means that we had to remove some of the useful advanced CMake integration features, such as the wizards to add files to a target. We are aware of this situation, and plan to work together with upstream to bring back the removed functionality in the future. Hopefully, you agree that correctness and much improved performance, where opening even large CMake projects is now close to instant, makes up for the loss of functionality.

Another big benefit for us that now both, the new Clang plugin as well as the CMake plugin, are much easier to maintain. This opens up resources for the future to work on other areas of KDevelop, such as its UI, cross-platform support or the debugger integration. Stay tuned!

QML, JavaScript and QMake

With KDevelop 5, we decided to officially include support for QML and JavaScript code and QMake projects. This functionality has been worked on for years in our playground and now, we finally incorporated these experimental plugins and will start to officially support them. Our thanks go to the Qt Creator community here, as we leverage their QML and JavaScript parser for our language support plugin. The new KDevelop plugin for QMake is simplistic but already very useful for many projects. If you are using more complicated QMake features and want to improve our interpreter, please get in touch with us!

Python, PHP, ...

Together with C++, QML and JavaScript, KDevelop 5 will continue to officially support Python 3 and PHP. In our playground we also have support for Ruby, and there are plans to integrate basic Go and Rust support. If you are interested in improving support for any of these languages in KDevelop, please step up and start contributing!

Download

You can download KDevelop 5.0.0 Beta 1 from the official KDE mirrors:

Wrap Up

To conclude this long announcement, I want to express my sincere gratitude towards the dozens of contributors that have worked on KDevelop 5 over the last months. I'm very excited to see where we have gotten already, and am eagerly awaiting a final KDevelop 5 sometime next year. Up until then, I hope we can iron out the remaining blockers and polish this first release based on Qt 5 and KF5.

Cheers!

Comments

Could I ask, what about below bugs. Is there any hope that couple of them will be fixed before final release?

  1. New CLang parser don't parse all code, what made leaving black lines in many places - tested with some files from KDevelop 4.90.90 and Qt4 project (bug: 354311).
  2. Defined dependencies not working. Calling Run/Debug made only saving not saved before files, but they are not rebuilt. Of course workaround is calling Build + Run/Debug, but for someone who got used to run Run/Debug and expect rebuilt code this is very annoying (bug: 350675)
  3. Unclear output when building cpp project using cmake (Unix Makefiles, so default setting) (bug: 354143). Promised to fix in 5.0.0 release (TargetMilestone: 5.0.0). I hope will be not like with bug 334487 referring to crash in 4.7.1 and not fixed in 4.7.2, despite was marked as going to be fixed in the next release.
  4. Opening Snippets shows that its view is not fitting to opened panel/bar. Yes, this minor, but worse is that added snippets are not shown on the list after restart of application (bug: 354308)
  5. Changing key shortcut in Debug session is lost after switching to Code perspective (bug: 354430). Minor.

I didn't mention about cpp debugger which works not very well. For example after changing the code (adding/removing several of lines) the breakpoints are moving in wrong places or even setting on top of the file. This is happens also in 4.7.x version. This is for me the most annoying thing in C/C++ debugger built in KDevelop. Bug: 353101 (reported for 4.7.1 version, but refers also to 5.0.0 beta).

I'm very happy that KDevelop is developing such dynamically. I'm using it every day, but still 4.7.x version. I really care to KDevelop worked best as can work, thus I can promise report new bugs :) - all mentioned (skipping 334487) are mine.

Permalink

In reply to by Anonymous (not verified)

Thanks for the high quality bug reports. We wanted t release this beta now as it's already quite usable. That said, we are aware that there are still many bugs here and there, and we will concentrate on polishing now over the next weeks.

Stay tuned! And patches welcome of course :)

Wow! That's quite a hefty amount of improvements! Can't wait to try it out. Congratulations to all you guys for some amazing work!

Any beta Windows builds planned?

Congrats !!!

Is there any plans to add QBS (AKA: the best build system in the world :) ) support?

Great! Thank you so much - I am looking forward to it!

May I just add that a dark syntax/colour scheme would be great? :-) I am currently using KDevelop 4.x with a nice dark scheme, the last git snapshots of KDevelop 5.x-to-be/KF5 are missing a useable one for developing. So, if somebody artisticly talented is bored... you know... ;-)

Thank you again for my favourite IDE!

I love KDevelop and truly appreciate all the hard work.

KDevelop has the ability to set break points and navigate to the break point when they are hit. Regardless of which debugger is used (GDB, Xdebug, MonoDebugger etc..) it seems like the functionality on the KDevelop side is the same. The only difference is the protocol.

I would really like the ability to be able to write that translation layer as a plugin in kdevelop. It would be great if kdevelop could expose the necessary functions via dbus or some kind of plugin architecture so that in a reasonably high level language, I could take an event from kdevelop and send it to my debugger and vice versa.

I first hit this with Xdebug support in PHP. I know there is a plugin but I couldn't get it to compile against KDevelop, and there is the new HHVM debugger also which people may want to use.

For those writing C# or targeting the mono VM (or the new Roslyn VM) there will be different debuggers that it would be great to support. However the overlap of C++/Qt developers to PHP/Javascript/C# developers is probably fairly small. So allowing people to contribute those glue parts without having to understand the underlying C++ code base would be IMHO beneficial.

I think this also extends to Intellisense like functionality (code completion etc..). The omnisharp server is a good example of how the atom editor, vim etc.. have been extended to support C# without having to necessarily understand the inner workings of those editors.

Many thanks
Andrwe

Permalink

In reply to by Anonymous (not verified)

the xdebug plugin does take some working around to install. you need a few other plugins before it will compile. you need kdev-php, kdev-executebrowser, kevelop-pg-qt before kdev-xdebug will have all the necessary components.

Someone has a Mac build or a working build instruction ?

Go support can be implemented with two ways:
1) write own Go parser & semantic analyzer
2) use builtin Go lexer/parser packages
Second ways is similar to using clang, but has several discouraging details:

  • Golang cannot interact with C++ directly, but it's possible to use interprocess communication and run Go parser as daemon.
  • AFAIK, Google golang compiler uses builtin lexer/parser packages only for simpliest things, and full language semantic, build settings, call graph and packages importing processing moved to separate package https://github.com/golang/tools/tree/master/go

There are two existing tools for Golang IDE integration.

Both tools use internal client-server model: IDE uses client which is console app with JSON response, but client internally sets up daemon and interacts with daemon by UNIX socket using "net/RPC" package in Go. Perfomance isn't ideal since there is 1 extra process creation for each IDE request, but it works.

Here is example of using "gocode" and "gosemki" (see "gotoolprocess.h", "gosemkiprocess.h", "gocodeprocess.h", "gofmtprocess.h"):
https://github.com/sergey-shambir/qtcreator-plugins-collection/tree/mas…

Hello,
Are there any build instructions on how to install this locally?
I already have the Plasma 5 desktop and KDE Frameworks from openSUSE Leap 42.1.

While I succeeded installing it (into /opt/local/kdevelop), KDevelop cannot find its plugins and setting KDEDIRS doesn't do anything.

Thanks

P.S. I've been using KDevelop for years now (since version 1.something) and I'd like to thank all of you, you're the best! This is great news, especially since I'm going to upgrade to a hidpi monitor.

Sounds amazing! Thanks, really well done. I've been looking forward to clang-based C++ parsing and finally it's here :) Well done and thanks a lot,

Mate

Hi guys,

Great work on all the improvements to KDevelop!
I especially look forward to checking out the new C++ plugin.

Looks like at the moment the only option of testing the beta is building from the sources yourself. As the last time I checked it was not available even from rolling distros -- e. g., Tumbleweed has the package but its dependencies are broken...

Could you please consider packaging KDevelop using this tool https://github.com/probonopd/AppImageKit
In theory, it should make installing and testing a new build of KDevelop a breeze.

I have created nim templates file for kde, you can find them here: https://github.com/xyz32/KDevelop-template

Is it possible to have them integrated into the release?

Also nim compiler offers an IDE integration server called nimsuggest, Is it possible to have this integrated into KDevelop, or at least is there any documentation on how one may go about it?

Thanks.

i built and installed everything tagged 4.90.90, when i run kdevelop i get an error saying KDevWelcomePlugin is not installed. i searched everywhere online... this doesnt seem to even be a thing.