This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[RFC] Replace Java with Go in default languages

GCJ has, IMHO, moved from active development into a deep maintenance mode. I suspect this is largely due to the change of focus of key developers to OpenJDK and other projects. GCJ played a role in bootstrapping OpenJDK, both technically and politically and had OpenJDK not happened, I suspect GCJ would still be under active development.

The last news item related to Java was 2009 and scanning the ChangeLog doesn't show significant project activity (~14 changes in 2013, most of which look like routine maintenance in the language front-end. There's even fewer changes occurring in the runtime system.

I did some benchmarking using one of my slower systems (primarily because my faster systems are used for real work). It's an older quad machine, but should give us a reasonable feel for how expensive java is to the bootstrap & regression testing process.

A default languages bootstrap takes 67 minutes on that box (-j4). The times were consistent to within 20 seconds. Disabling java brings that time down to 51 minutes, again with a variance of around 20 seconds. That means roughly 25% of the time to bootstrap is Java.

I didn't measure total testing time -- just the time to test Java, where it clocks in at 7 minutes (again -j4, though it's clearly not doing much in parallel).

Clearly bootstrapping and testing Java is expensive. It's better than a while back (thanks to removing the static library build), but it's still a significant component of the bootstrap & test cycle we all do regularly.

We discussed removing libjava extensively in 2008, but never moved forward. It's not entirely clear why from reviewing the thread. Additionally, I think the landscape around OpenJDK is a bit different now than then and thus it's time to revisit.

So instead of proposing that we just remove Java from the default languags, I propose that we replace Java with Go.

Go uses -fnon-call-exceptions which is one of the things that was a bit unique about GCJ and Go appears to have a much more vibrant developer and user community than GCJ. So we get the -fnon-call-exceptions testing we want and we're actually building a front-end that a larger community cares about.

A bootstrap with Go replacing Java clocks in at 56 minutes. So we're still getting most of the improvement in bootstrap times.

Testing Go (compiler & runtime) takes about a minute longer than libjava (it's doing more in parallel, so serially Go would be considerably longer in testing).

Clearly switching from libjava to go would be a significant improvement in the bootstrap and regression test cycle. On the box I tested we'd see roughly at 15% improvement and we'd still get testing of -fnon-call-exceptions.

Thoughts or comments?

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]