kde Syndicate content

» KDevelop: Randa and GSOC 2011

Thu, 06/09/2011 - 15:59

Yawn. Hello everyone!

After two nights of backporting sleep in my RL branch to fix the deficiency I built up during Randa, I feel somewhat normal again. Time to blog, eh?

Randa

Lets begin with Randa. It was not only my first time there, but also my first time ever to be in the Swiss Alps. And furthermore it was the first time for me to be in the Alps without crying out loud about the lack of snow as I didn’t intend to go snowboarding. You can imagine it was a very pleasant experience for me. I definitely want to come back to go on some more serious hiking trips uphill. But I diverge ;-)

Randa as place for a sprint was simply awesome: Secluded hence no real distractions. Great environment to clean your head, get fresh air and stay focused and productive. Good food, nice people, … I could go on here :) The only negative things I noticed where the unstable networking and the dormitories.

KDevelop Sprint

The KDevelop sprint at Randa was very successful and productive. Here is a group picture of those who attended:

Randa 2011 KDevelop Group Picture
KDevelop Hackers at Randa 2011

from left to right: Sven Brauch (Python Support), Laszlo Papp (Gluon), Milian Wolff (…), Niko Sams (PHP, GDB, …), Aleix Pol (CMake, …), Alexander Dymo (UI, Ruby, …)

Aleix already blogged about what he did, so I won’t reiterate that. Instead let me point you to the incomplete log of our discussions on Techbase. Here are my personal highlights of the sprint:

  • We/I will setup a continous/nightly build- and regression-testing machine for KDevplatform/KDevelop and related plugins. Thanks already for the kind offers for hosting. More on this later
  • some more plugins from e.g. Quanta will see a released soon. Due to lack of manpower we cannot wait for a stable Quanta release, but some plugins in there are already stable and usable.
  • we will have some “welcome to kdevelop” page eventually, based on Aleix’s work with the Plasma Dashboard
  • Niko’s “Browser Like Tabs” mode will be merged eventually, try it out now and give us feedback!
  • Alexander merged a partial rewrite of the UI framework in KDevelop, bringing lots of new features and less bugs as well as reducing our codebase!
  • Sven attended his first KDE sprint and continued to work on a kick-ass python language support for KDevelop! Rock on!

I could go on and on here, we really did lots of stuff. It was great meeting you all again, hope to see you soon (at the Desktop Summit?).

GSOC

To finish this already long blog off, here a few notes on my GSOC. As you might have heard, I work on bringing C++2011 (aka C++0x) support to KDevelop. I’ve already pushed some changes to my branch which adapt our parser to support the range-based for loop syntax as well as RValue references and variadic templates. Proper DUChain integration is pending, yet it already makes working with C++2011 features much more bearable! Stay tuned for a more in-depth report.

» The End Is Nigh

Wed, 05/25/2011 - 16:35

No I’m not a nutjob who talks about the rapture (epic fail btw.). Instead, I’m talking about my time as a bachelor student. I’ve just handed in my thesis after weeks of work on it. You might have noticed by my recent absence from KDE hacking. But rest assured. Now I’m back again :)

First of all the GSOC hack time started officially this week. I got a slot again, and am a few days behind schedule yet am confident to fetch up. I’ll be working on bringing C++0x or now C++2011 support to KDevelop. You can read my proposal online.

Secondly next week I’ll be at Randa for the KDevelop sprint (among others). I’m really looking forward to it, so many nice people to meet again — awesome!

So expect more from my side again. I’ll also start to go through the bug reports of the last weeks which I have not yet attended to. Stay tuned and welcome back :)

» Why can I not clone myself yet?

Sun, 01/30/2011 - 01:54

Saturday night and I’m not going out. What the hell is wrong with me — you (and I) ask?

Sad truth is: I’m swamped with work currently. Today I sat down and finished the last protocol of a university lab course, so at least that is done for now.

Bachelor Thesis

I’m not a slacker (even though I’d like to be one!) so I also recently started working on my Bachelor thesis. I’m doing something on EPR simulations, esp. pulse EPR with “big” molecules. It’s actually pretty interesting and I already learned tons of stuff. Most notably I could finally try out Eigen. It’s as good as I imagined, and probably even better ;-) My mentor at the university, who used BLAS up to now, is amazed by the readability of code you write. It is often nearly a one-to-one mapping of a mathematical formula to code. Since I personally never learned the BLAS interface, and find it’s API hideous, I’m very pleased to be able to use Eigen from the start. Thanks to Gael and Benoit (and the others) for writing it. Since I like living on the edge, I use Eigen 3 already and - to give something back - started to update the benchmarks for them.

Anyways, back to my thesis. If anyone is interested in the code and would like to give feedback, you can find it here: https://github.com/milianw/bachelor

I really enjoy to get to know yet another different world in programming. As you might know, I started as a web developer back then. Server backend PHP programming is totally different from user interface JavaScript programming is totally different from Desktop application programming using Qt/KDE/C++… And now there is computational science… So far I never had to care about rounding errors in code I write. Nor did I estimate memory consumptions in dozens of GigaBytes or thought about how many hours my app would need to crunch the numbers on hundreds of CPU cores. It really is quite an experience.

KDevelop
I'm going to FOSDEM, the Free and Open Source Software Developers' European Meeting

So, between two days working for KDAB (which I greatly enjoy) to earn some money, and three days of - interesting - thesis reasearch, and the usual real life, where is the time for KDevelop? It’s diminished, I have to admit. Today I finally got around to at least get the release announcement for KDevelop 4.2 finished and handed it to the Dot editors. But other than the occasional commit reviewing or bug triaging, I did not do much these past weeks.

This makes my really sad, as I’m passionate about KDevelop. One more reason to look forward to FOSDEM 2011, as I’ll do a lightening talk on KDevelop this time. And of course I hope to get some first grade hacking time in Brussels :) Oh this reminds me, I should get my talk prepared until tomorrow - hm :)

Anyways, I bet I’m not the only one who would like to clone himself to get more finished. Sadly it’s not possible yet (and the waiting list for people-to-be-cloned in KDE is quite long, and dominated by names like David Faure and Dario Andres anyways ;-) ). So take my ramblings with a grain of salt :)

» KDevelop 4.2 Available

Wed, 01/26/2011 - 22:41

Hey all!

I wanted to quickly notify you all about the availability of KDevelop 4.2.0 final, you can download it here: http://download.kde.org/download.php?url=stable/kdevelop/4.2.0/src/ . Most people should be fine with waiting for updated packages from their distributor though.

This is a feature release with lots of shiny improvements and fixes. And - which is why I announce it now - it is required for users of the new KDE 4.6. So if you happen to use that, make sure you update to KDevelop 4.2 as well. Stay tuned for a full blown release announcement on the Dot soon. If you are interested in the changes now, take a look at this, this, and that. Thanks to all contributors who made this release possible, especially I would like to emphasize the contributions by new people - welcome!

Changes since KDevelop 4.2.0 RC1
  1. ChangeLog for kdevplatform v1.2.0
  2. =================================
  3.  
  4. * Milian Wolff: set version to 1.2.0 in preparation of release
  5. * Milian Wolff: remove warning that is triggered whenever the cleanup asserts for a proper removal
  6. * Adam Pigg: Save the status of the 'Use lower case filenames' checkbox for next time. Defaults to ticked as before.
  7. * Aleix Pol: Rehash every time, we can change the repository between calls, so it has to be calculated every time.
  8. * Aleix Pol: Don't display all commits in the OutputView. Makes the process considerably faster
  9. * Milian Wolff: don't add infinite number of rows of output, instead limit to 50k lines and only keep the most recent ones
  10. * David Nolden: Make sure that working sets are unique to the patch-review area before changing them.
  11. * David Nolden: Only try creating one parse-job at a time. If more parse-jobs need to be created, queue an event to re-try.
  12. * David Nolden: Delete the view _after_ emitting "viewRemoved(..)". This fixes a possible crash.
  13. * David Nolden: Also use the cache if the cached list is "empty", it means that no mimetype could be determined.
  1. ChangeLog for kdevelop v4.2.0
  2. =============================
  3.  
  4. * Milian Wolff: set version to 4.2.0 and look for kdevplatform 1.2.0 in preparation of release
  5. * David Nolden: Fix a very rare crash
  6. * David Nolden: Fix code-completion within incomplete function-macros, like "Q_ASSERT("
  7. * David nolden: Properly skip hexadecimal numbers in pp_skip_number.
  8. * Aleix Pol: Applied Valentyn Pavliuchenko patch to fix GLOB_RECURSIVE behaviour.
  1. ChangeLog for php v1.2.0
  2. ========================
  3.  
  4. * Milian Wolff: set version to 1.2.0 and look for same versioned kdevplatform in preparation of release
  5. * Milian Wolff: fix test logic
  6. * Milian Wolff: only take encountered declarations into account when checking for redeclarations
  7. * Milian Wolff: don't report use for same range as declaration of parent-namespace, happens with nested namespaces, fixes test
  8. * Milian Wolff: properly pass topducontext to update along
  9. * Milian Wolff: force updated range when encountering variable declaration
  10. * Milian Wolff: prevent explicitlyGlobal import identifiers for namespace alias declaration, fixes assert
  11. * Milian Wolff: prevent crash when visiting encapsed variables in class context

Sorry for not having a proper Dot announcement on time, I hope to do better for the next release…

» KDevelop 4.2 RC1 released

Fri, 01/14/2011 - 18:03

Good news everyone, part 2 for today:

I’m happy to announce the immediate availability of KDevelop 4.2 RC1. This is a pure bug fix release over the last beta in the 4.2 branch. Anyone using the 4.2 branch is urged to upgrade to this new version as soon as possible. Furthermore any new testers are welcome and feedback appreciated. Report it on the bugtracker on bugs.kde.org. Keep in mind that if you are using KDE 4.6 or higher, you need this release, as 4.1 only works up to KDE 4.5. If all goes according to plan, there will be another RC soon and a final release together with KDE 4.6.

Download

You can grab the source tarballs at the usual location: http://download.kde.org/download.php?url=unstable/kdevelop/4.1.90/src/

Packagers will hopefully update the testing repositories of their distribution.

Changelog
  1. ChangeLog for KDevPlatform v1.1.90
  2. =============================
  3. * Milian Wolff: fix compilation for some compilers
  4. * David Nolden: backport from master: Don't care about navigation tooltips when a context-browser view is visible, the view will handle this alone
  5. * David Nolden: backport from master: regression fixes to context browser plugin refactor
  6. * David Nolden: backport from master: Clear the file-modification cache instantly when the user has saved the file in the editor.
  7. * David Nolden: backport from master: Don't completely ignore the retrieved top-context if it is still flagged to require an update. Instead, simply show a warning message on the status bar. (TODO: Find out why the update flag is not correct)
  8. * David Nolden: backport from master: Exclude the "." when extracting the extension
  9. * David Nolden: backport from master:
  10. * Nicolás Alvarez: Move qHash of {Cursor,Range}InRevision into the KDevelop NS too.
  11. * Nicolás Alvarez: Move qHash overload for SimpleRange and SimpleCursor into the KDevelop NS.
  12. * Milian Wolff: make sure we generate colors in the ctor (undelayed)
  13. * Milian Wolff: Introduce a fallback cache based on the file extension for LanguageController::languagesForUrl
  14. * Milian Wolff: use full canonical file path for urls in duchainify, required for isLocalFile checks to succeed
  15. * Milian Wolff: append _STATIC to macros in appendedlist_static.h to prevent clash with appendedlist.h, should fix compilation in KDE4_ENABLE_FINAL=ON mode
  16. * Dmitry Risenberg: Do not mess with other active working sets when calling for a review. BUG: 260663
  17. * Milian Wolff: properly emitResult when internal SVN job failed, prevents indefinite wait in isVersionControlled on invalid URLS
  18. * Nicolás Alvarez: Simplify code in DUContextDynamicData assertion.
  1. ChangeLog for KDevelop v4.1.90
  2. ==============================
  3.  
  4. * Dmitry Risenberg: Fix duplicate brackets insertion when executing completion for a function.
  5. * Nicolás Alvarez: CMakeDUChainTest: store ranges in QSet instead of std::set.
  6. * Milian Wolff: minor: fix style/indentation
  7. * Floris Ruijter: fixes the cmakeduchaintest: a list of uses is checked too see if they're all there, that's a set operation, the test failed, because the lists where in the `wrong' order
  8. * Floris Ruijter: this test contains a c++ error, it isn't too bad(the test passes with it), but it's probably not meant
  9. * Floris Ruijter: Fix token-names for GeneratorTest
  10. * Aleix Pol: Don't look for kdevelop in gitorious anymore.
  11. * Nicolás Alvarez: Ignore the 'build' directory.
  12. * Aleix Pol: Don't add to the tree unexisting directories.
  1. ChangeLog for KDevelop PHP v1.1.90
  2. ========================
  3.  
  4. * Milian Wolff: Allow null as type for class constants.

» KDevelop 4.1.2 released

Fri, 01/14/2011 - 17:55

Good news everyone, part 1 for today:

I’m happy to announce the immediate availability of KDevelop 4.1.2, a pure bug fix release without new features. Anyone using the 4.1 branch is urged to upgrade to this new version as soon as possible. Keep in mind that if you are using KDE 4.6 or higher, you need the 4.2 branch. This release works fine with KDE 4.4 or 4.5 though.

Note: This is - probably - the last release in this branch. We are now concentrating on 4.2 and what will become 4.3 eventually.

Download

You can grab the source tarballs at the usual location: http://download.kde.org/download.php?url=stable/kdevelop/4.1.2/src/

Packagers will hopefully update the distributions, hence most people should get this release automatically via a software update.

Changelog
  1. ChangeLog for KDevPlatform v1.1.2
  2. =================================
  3.  
  4. * Milian Wolff: make sure we generate colors in the ctor (undelayed)
  5. * Milian Wolff: properly emitResult when internal SVN job failed, prevents indefinite wait in isVersionControlled on invalid URLS
  6. * Nicolás Alvarez: Simplify code in DUContextDynamicData assertion.
  7. * Milian Wolff: make sure we don't think a project is still being opened when it's import was canceled
  8. * Dmitry Risenberg: Check for unloaded version control plugin in ProjectPrivate.
  9. * Nicolás Alvarez: DumpChain: avoid double quotes around indentation in debug messages.
  10. * Milian Wolff: hide non-project kcms from project config (e.g. php documentation)
  11. * Milian Wolff: backport from 1.2: safely iterate over job list where kill can delete child jobs
  12. * Andreas Pakulat: Fix link-interface
  13. * Milian Wolff: initialize even more static data in a controlled way to prevent random crashes
  14. * Milian Wolff: also init repository for modification revision sets properly
  15. * Milian Wolff: move initialization of static DUChain data to DUChain::initialize()
  16. * Andreas Pakulat: Declare the new function
  17. * Andreas Pakulat: Extract duchain-item-repo initialization into a separate function.
  18. * Andreas Pakulat: Fix a crash when loading a project, by initializing static data
  19. * Aleix Pol: When working with directories, use the actual directory to get the cwd instead of the parent.
  20. * Milian Wolff: show prefix, postfix and arguments in snippets tree view
  21. * Milian Wolff: use Disabled palette also for snippets in disabled repositoreis
  22. * Nicolás Alvarez: Fix comment typo.
  23. * Milian Wolff: sort actions by name in 'Add Tool View' context menu
  1. ChangeLog for KDevelop v4.1.2
  2. =============================
  3.  
  4. * Nicolás Alvarez: Fix build error.
  5. * Milian Wolff: set version to 4.1.2 in preparation of KDevelop 4.2 release
  6. * Aleix Pol: Applied Valentyn Pavliuchenko patch to fix GLOB_RECURSIVE behaviour.
  7. * Milian Wolff: fix entry list being empty for some Qt versions
  8. * Milian Wolff: don't try to non-text/plain cmake files (e.g. due to problematic include)
  9. * Aleix Pol: Support as variables, variables that end with a number. This small problem made macro_optional_find_package not to work, have to be careful about that.
  10. * Aleix Pol: Properly reload when a CMakeLists.txt file has been deleted from the FS. If the CMakeLists.txt wasn't found, cleanup the directory.
  11. * Aleix Pol: Also watch non-cmake directory changes.
  12. * Aleix Pol: Properly store the cached variables doc string.
  13. * Aleix Pol: Small coding style change.
  14. * Aleix Pol: When checking if a directory exists, check that it's not a root's parent. CMake returns false in that case.
  15. * Milian Wolff: backport from master: optimize: remove existing entries from the list and don't call potentially slow hasFileOrfolder over and over again on them
  16. * Milian Wolff: optimize: don't protect static getter with mutex, instead set it up in a controlled fashion
  17. * Aleix Pol: Properly add relative globs. BUG: 259099 CCBUG: 259135
  18. * Aleix Pol: Backport from master. Don't add unused stuff in the cmake project tree.
  19. * Aleix Pol: Add support for CMAKE_MATCH_* variable.
  20. * Aleix Pol: Remove useless code.
  21. * Aleix Pol: Add support for VERSION_* commands.
  1. ChangeLog for KDevelop PHP v1.1.2
  2. ========================
  3.  
  4. * Milian Wolff: Allow null as type for class constants.

» KDevelop 4.2 Beta 2 available

Sat, 01/01/2011 - 23:09

Good news everyone!

I’m happy to announce the immediate availability of KDevelop 4.2 Beta 2. This is a bugfix release over the first beta release two weeks ago. Every tester is urged to update, any updated feedback and bug reports are highly appreciated.

To download it: http://download.kde.org/download.php?url=unstable/kdevelop/4.1.81/src

Changes in KDevelop 4.2 Beta 2 since Beta 1

Highlights besides the usual bugfixes are probably the polished plugin configuration dialog as well as some performance improvements for huge projects.

  1. ChangeLog for kdevplatform v1.1.81
  2. ==================================
  3.  
  4. * Milian Wolff: set version to 1.1.81 for beta2
  5. * Milian Wolff: don't assert when a plugin gets updated from ProviderProvider to Provider or vice versa and the user forgot to rerun kbuildsycoca4
  6. * Milian Wolff: --debug
  7. * Milian Wolff: kill running import jobs for removed folders
  8. * Milian Wolff: make sure we compare dir urls with trialing slash
  9. * Milian Wolff: make sure we don't think a project is still being opened when it's import was canceled
  10. * Milian Wolff: remove dead code
  11. * Milian Wolff: move toolbutton to configure environment into it's own (reusable) class
  12. * Milian Wolff: fix: properly update outline on document change, was missing connect to signal from document controller
  13. * Dmitry Risenberg: Check for unloaded version control plugin in ProjectPrivate.
  14. * Dmitry Risenberg: Check for unloaded version control plugin in ProjectPrivate.
  15. * Milian Wolff: reintroduce the cleanup of 986ec7bb18211a7789e28c48fdc750668ae9b1d5 (no addViewSilently, no window->setArea in working set loadToArea), but fix the problem described in 2f586e506ac59153b0b95e008acc88cea490e7d3 (restoring of split views)
  16. * Nicolás Alvarez: DumpChain: avoid double quotes around indentation in debug messages.
  17. * Milian Wolff: hide non-project kcms from project config (e.g. php documentation)
  18. * Milian Wolff: properly sort kcms in settings dialog: language support user interface projects background parser source formatter environment plugins
  19. * Milian Wolff: also blacklist disabled plugins, if we now add the plugin to the X-KDE-ParentComponents of a kcm, it won't get loaded
  20. * Milian Wolff: mark generic project manager as project category, required for settings blacklisting
  21. * Dmitry Risenberg: Properly update Container's current widget when splitting views. BUG: 259908
  22. * Milian Wolff: document X-KDE-PluginInfo-Category
  23. * Milian Wolff: proper about data for cvs plugin
  24. * Milian Wolff: sort loaded plugins by name
  25. * Milian Wolff: greatly improve plugin useability by categorizing them
  26. * Milian Wolff: backport from 1.2: safely iterate over job list where kill can delete child jobs
  27. * Milian Wolff: safely iterate over job list where kill can delete child jobs
  28. * Milian Wolff: fix session-controller unit tests
  29. * Dmitry Risenberg: Check that git is installed when loading Git Support plugin. CCBUG: 257650.
  30. * Milian Wolff: remove debug I committed accidentally
  31. * Milian Wolff: port background parser away from slow QPointer to faster QWeakPointer, esp. useful for big projects
  32. * Milian Wolff: fix compilation for qt < 4.7
  33. * Milian Wolff: speed up ::index(), imo we don't need the call to hasIndex here as the itemFromIndex checks that as well
  34. * Milian Wolff: second approach: properly implement removeRows without takeRow and speed up deletion of folders containing many items
  35. * Milian Wolff: Revert "optimize shutdown for big projects with lots of items in single folders"
  36. * Milian Wolff: optimize shutdown for big projects with lots of items in single folders
  37. * Milian Wolff: Refactor context browser plugin to make it useable without a toolview.
  38. * Milian Wolff: --debug
  39. * Milian Wolff: don't overdesign the API: make setText protected, assume text == baseName for most items
  40. * Andreas Pakulat: Make the filename corner variable size instead of fixed.
  1. ChangeLog for kdevelop v4.1.81
  2. ==============================
  3.  
  4. * Milian Wolff: set version 4.1.81 for 4.2 beta2
  5. * Milian Wolff: fix entry list being empty for some Qt versions
  6. * Milian Wolff: make it possible to configure the environment from the makebuilder config kcm ui
  7. * Milian Wolff: add missing files
  8. * Milian Wolff: sort: put qthelp at end
  9. * Milian Wolff: --debug
  10. * Milian Wolff: don't load qthelp kcm if plugin is disabled
  11. * Milian Wolff: split KCM and Plugin of QtHelpPlugin, fixes crash when unloading the plugin and accessing the KCM
  12. * Milian Wolff: introduce categories
  13. * Milian Wolff: don't try to non-text/plain cmake files (e.g. due to problematic include)
  14. * Milian Wolff: update splashscreen for 4.2
  15. * Milian Wolff: optimize startup: don't use slow QWebElement.toPlainText(), instead use a simple QRegExp parser that is *much* faster
  16. * Milian Wolff: hide void-returning functions from code completion when we are inside an non-lvalue expression
  17. * Aleix Pol: Support as variables, variables that end with a number. This small problem made macro_optional_find_package not to work, have to be careful about that.
  18. * Aleix Pol: Don't propagate the URL change if the URL hasn't changed. Damn it, trailing slashes!! >.<
  19. * Aleix Pol: We don't need this recursive case anymore. The url change will be propagated by ProjectFolderItem itself.
  1. ChangeLog for php v1.1.81
  2. =========================
  3.  
  4. * Milian Wolff: set version to 1.1.81 for 1.2 beta 2
  5. * Milian Wolff: remove obsolete todo - doh
  6. * Milian Wolff: cleanup
  7. * Milian Wolff: introduce category, fix Name, remove GenericName as it's useless
  1. ChangeLog for php-docs v1.1.81
  2. ==============================
  3.  
  4. * Milian Wolff: set version to 1.1.81 for 1.2 beta2
  5. * Milian Wolff: set proper icon, use low weight
  6. * Milian Wolff: don't load kcm if plugin is disabled
  7. * Milian Wolff: introduce category, remove GenericName as it's useless and fix user-visible Name string

» KDevelop 4.2 Beta 1 released

Fri, 12/17/2010 - 22:49

Hey all,

I’m happy to announce the immediate availability of KDevelop 4.2 Beta 1. This is a testing version and any kind of feedback would be welcome and appreciated. Please use our bugtracker. You can download the sources or wait for your distribution to create packages.

Note: Anyone who runs KDE 4.6 or later needs this version (or any later). This is because the SmartRange interface in Kate got nuked and replaced with MovingRange interface. Many thanks to David Nolden for more or less single handedly porting KDevelop to this new architecture.

The good news doesn’t end here though, KDevelop 4.2 ships with lots of notable changes and new features:

  • MovingRange` support (Thanks to David Nolden)
  • Grep Plugin rewrite with replace functionality (Thanks to Silvere Lestang, Julien Desgats, Benjamin Port)
  • QtHelp plugin now supports arbitrary .qch files (Thanks to Benjamin Port)
  • ManPage plugin (Thanks to Benjamin Port, Yannick Motta)
  • new look for code assistants (Thanks to Olivier JG)
  • filter for the project model view (Thanks to Eugene Agafonov)
  • improved “Problems” toolview, along with “TODO/FIXME” browsing (Thanks to Dmitry Risenberg)
  • better standards compliance in the C++ macro implementation (Thanks to Dmitry Risenberg)
  • argument dependent lookup for the C++ plugin (Thanks to Ciprian Ciubotariu)
  • open with external application by default (esp. useful for Qt Designer .ui files)
  • PHP: rainbow colors for all vars (and no nested functions or similar), esp. useful for scripts without Classes/Functions
  • code cleanup for working sets
  • better handling of locked sessions (locked session gets activated or the user gets asked whether he wants to remove the lock file)
  • improved Snippets editing usability

Along with these big changes, lots of small improvements have been made and we will continue to polish and harden out this branch in order to give you a stable, fast KDevelop 4.2 soon. Considering the impact and amount of changes, testing would be very welcome in order to prevent regressions and similar in the final 4.2 version.

Bye and thanks again to all contributors who made this possible. I’m especially thrilled to welcome so many new people, well done!

» Third Google CodeIn Screencast - Snippets

Sun, 12/12/2010 - 19:20

Hey everyone,

the third screencast for KDevelop is in: http://blip.tv/file/4500937

It shows the advanced snippets support in KDevelop, see also: Snippets in KDevelop & Kate.

In an unrelated note: I’ll do a talk at the Computer Science faculty of the FU Berlin tomorrow, see: http://talks.spline.de/

13.12.2010, 18 Uhr, Hörsaal der Informatik

“Wie und warum man sich als Open Source Entwickler/in engagieren sollte”

Viele Studenten könnten gute Programmierer sein, aber lassen Ihr Talent ungenutzt oder stecken es in private (kleinst) Projekte und One-Man-Vaporware. Würden sie sich hingegen in bestehenden Open Source Projekten engagieren, würde ihr Lieblingsprojekt nicht nur ein Stück besser werden, sondern sie selbst gewännen dabei eine Menge. Was ein paar dieser Vorteile sind, und wie man überhaupt damit anfängt sich in einem großen Projekt zu beteiligen, möchte ich am Beispiel von KDE zeigen und hoffe, dass dadurch ein paar mehr von euch aktiv in einem FOSS Projekt mitarbeiten werden.

Anyone is invited to attend of course :)

Bye

» Should all callgrind bottlenecks be optimized?

Thu, 12/09/2010 - 19:12

Hey all,

I’d like to have some feedback from you. Consider this code:

  1. #include <iostream>
  2. #include <memory.h>
  3.  
  4. using namespace std;
  5.  
  6. struct List {
  7. List(int size) {
  8. begin = new int[size];
  9. memset(begin, 0, size);
  10. end = begin + size;
  11. }
  12. ~List() {
  13. delete[] begin;
  14. }
  15. int at(int i) const {
  16. return begin[i];
  17. }
  18. int size() const {
  19. // std::cout << "size called" << std::endl;
  20. return end - begin;
  21. }
  22. int& operator[](int i) {
  23. return begin[i];
  24. }
  25.  
  26. private:
  27. int* begin;
  28. int* end;
  29. };
  30.  
  31. int main() {
  32. const int s = 1000000;
  33. for (int reps = 0; reps < 1000; ++reps) {
  34. List l(s);
  35. List l2(s);
  36. // version 1
  37. for ( int i = 0; i < l.size(); ++i ) {
  38. // version 2
  39. // for ( int i = 0, c = l.size(); i < c; ++i ) {
  40. l2[i] = l.at(i);;
  41. }
  42. }
  43. return 0;
  44. }

If you run this through callgrind, you’ll see quite some time being spent in l.size(), the compiler doesn’t seem to optimize that away. Now, fixing this “bottleneck” is simple, look at version 2. That way, l.size() will only be called once and you’ll save quite some instructions according to callgrind.

Now, my first impression was: Yes, lets fix this! On the other hand, this optimization is not really that noticable in terms of user-experience. So my question is: Is it worth it? Should everything one sees in callgrind that is easily avoidable and optimizable (like the stuff above) be optimized?

I ask because QTextEngine e.g. doesn’t use the optimized version and I wonder whether I should create a merge request for that. According to callgrind the difference is noticeable: One of my testcases shows ~8% of the time being spent in QVector<QScriptItem>::size() (via QTextEngine::setBoundary()). In Kate the difference is even bigger with ~16% of the time being spent in QList<QTextLayout:.FormatRange>::size() via QTextEngine::format(). Hence I’d say: yes, lets optimize that. I just wonder whether it’s noticeably in the end.

Bye

EDIT: See this comment thread for an answer.