DNF 3: better performance and a move to C++
DNF 3: better performance and a move to C++
Posted Mar 30, 2018 7:12 UTC (Fri) by iq-0 (subscriber, #36655)In reply to: DNF 3: better performance and a move to C++ by marcH
Parent article: DNF 3: better performance and a move to C++
I expect that there are multiple reasons for not being considered. I guess some of these are:
- The languages are very different. They'd have to fully rewrite entire chunks instead of a more gradual migration.
- The use of garbage collection might be a reason why they switched away from Python. A good garbage collector often exhibits a higher baseline RSS, which might be a problem on resource constrained systems.
- Go <-> C interop isn't considered to be very efficient. So, depending on which parts they'd want to rewrite first, there is a good chance that performance will suffer before becoming better.
- Upstream Go has (very) limited platform support. Gccgo can be used to work around this, but that would mean a workaround for a number of primary supported platforms.
And there are of course the philosophical differences, like to C++ gives you things like a rich type system, templating and exception based error handling. Go goes almost completely the other direction: simpeler type system, no templating, no metaprogramming and written out error handling. Both have their pros and cons.
But the project was probably looking for a way to incrementally make the current code base less cumbersome/easier. Switching to Go would not be the quickest way to get there.
Posted Apr 5, 2018 0:01 UTC (Thu)
by lsl (subscriber, #86508)
[Link]
Which ones? The gc compiler (the one you get from golang.org) supports AArch64, AMD64, ARM, MIPS, PPC64 (BE and LE), S390x and i386 in its main development branch. There are further (incomplete) ports available that aren't merged upstream yet (SPARC, RISC-V).
That should cover all machines supported by Fedora (and then some). Maybe you looked at the binary distributions? Those are only provided for a subset. All arches are required to have CI builders running the testsuite on every commit, though. Results are available from https://build.golang.org.
DNF 3: better performance and a move to C++