On Wed, 28 Aug 2013 15:52:17 +0100 Nick Treleaven nick.treleaven@btinternet.com wrote:
- Developer enjoyment, productivity & gaining more experience with C++.
(This might be an incentive for e.g. me to spend more time working on Geany). This has to be offset against those that might need to learn e.g. RAII.
Hmmm?..
Time spent for contributors who don't know C++ to learn the parts we use. What's the question?
What's the assumption - that harder contribution will actually be beneficial? Maybe we should throw some C# then, it's modern and somewhat supported under Linux, and there may be people who want to learn it. :)
Assuming we're comparing the same design in C vs templated C++ code, the C++ code would normally have an advantage because more code can be inlined. It might be at a disadvantage because of code bloat though, but the inlining may outweigh that. Are you sure you tested the C++ code with full compiler optimization?
With -O2 for gcc, and the standard "Optimize for speed" profile in the compiler used by our company. If you mean something like -O99, no, I haven't. The difference insignificant (<= 0.5%), only annoying. A probable reason is that STL doesn't use realloc(), and has no slice allocator (though I haven't tested slices explicitly).
Note that gcc has a non-standard extension for RAII, which works with the base C types. And Geany compiles with gcc only.
Really? Have you read HACKING?
The non-existent part which lists the supported compilers? :) (I know, I know: use standard C code only).
--
So it would be something with pointers-and-references, gchar-and-[S]String, STL-and-GArray/GList (sometimes required by GLib/GTK), GObjects-and-classes (or no classes? or library classes only?..), and some words banned... It'll indeed be challenging to contribute.
About RAII, how can I convice you that the automatic destructors for global/static and auto objects *only* are not that useful? Perhaps by the fact that the later languages, Java and C#, use a different model, more similar to GLib?
As for our own C++ reference counting for pointers - please... One should not include new essences unless required. Sorry if my english is unclear, I think Lex will understand and say it better.
If we are to switch, let's at least stick to what scintilla/gtk/* does, instead of inventing our own "standards" and wheels. And by that, I mean gradually rewriting Geany with classes. C++ with functions is like perl with glob() expressions. It'll still be ugly though, with all the x'-and-x"-s listed above.