stevenvh:
I'm using version 1.6.3, and I still notice that everything gets compiled again when I start a new sketch. Takes 30 seconds, and is extremely annoying.
Yeah, but how often are you starting a completely new sketch? When you Verify or Upload the same sketch again, with changes, almost everything should be reused from the previous compile of that same sketch.
Reusing compiled stuff between different sketches is possible, but risky, even if you haven't changed boards or other settings. When I originally wrote the speedup to reuse files (originally in Teensyduino in 2010, and contributed to Arduino in 2011), I designed it that way. It almost always works, but it can fail in rare cases where you have extra files in your sketch that conflict in unexpected way with stuff leftover from those previous compiles.
The trouble with those rare fail cases is you get totally unexpected compile errors or other strange problems that aren't your fault. Because they're not entirely related to your own code, they're almost impossible to understand and fix. Quitting Arduino (or rebooting your computer) solves them, of course, since a new temporary folder is created when you restart Arduino. That "happened once, couldn't make it happen again after rebooting" behavior makes these bugs almost impossible for those of us working on the Arduino platform to investigate and fix, because users can't report meaningful info. Even when they provide their complete sketch and the set of libraries they used, reproducing the error requires all the other sketches and libraries they used in that session, and it can depend on doing things in the same order.
Still, today Arduino still has some very rare, very obscure bugs where things can conflict with each other in the temporary directory. One of the really unlikely cases, which I've known about for years but never developed a fix because nobody's encountered it in practice, was recently reported and discussed on Arduino's issue tracker.... only just now, after all these years and hundreds of thousands of people actively using the software! You may believe the build process is simple. If it looks simple, then Arduino is doing a good job of making things easy for you as a user. But I can assure you, there are some really thorny corner cases!
My point is there's a good reason Arduino is starting with a fresh temporary directory and recompiling so much stuff, when you start a brand new sketch. You may believe Arduino should reuse files from your other previously compiled sketches. I'm here to tell you, as the original author of this speedup and a long-time contributor to Arduino's code and especially the build process, I've been down that road. I added very rare, subtle, difficult bugs in trying to do so. Arduino's cautious approach may seem annoying to you, but I can tell you from experience it avoids some really unlikely but really tough problems.