Version 0023 and earlier had the upload function button ONLY perform the upload. Version 1.0 has the upload button first perform a compile and THEN the upload, even though there IS a verify (compile) button. I would VERY MUCH like to have the upload ONLY function available because if your target does not support the DTR Reset function you must first press the reset button on the target. This is IMPOSSIBLE to time correctly if you don't know when the upload will actually start! Perhaps relabel the upload button as "run" and provide a new button labeled "upload" to ONLY perform the upload.
I'd also like to have a way (perhaps in the preferences file) to specify additional linker options or at least a way to pull in the full printf and scanf libraries for floating point support. This way native avr-libc stdio functions such as printf, sprintf, scanf, and sscanf could be used in scripts. Others have asked for this on avrfreaks.net.
I don't know at what version they started doing a Build as part of the Upload but it was probably before Version 0017 when they added the rebuilding of linked libraries to the build. (Back in 0008 they forced a re-build of all libraries whenever a Board with a different processor was selected.)
You can tell when to release the Reset button because you see the "Binary sketch size:" message in the IDE when the build completes.
I have version 0023 installed on my 64 bit linux system and it does NOT compile when I hit the upload button.
Also the text in the upload window flies by very fast so it is hard to press the rest button on time!
(I have the verbose option set though).
The newest version of arduino (I'm not sure if they released a compiled version of it yet) only recompiles when it needs to.
Editing the source to give the ability to add flags to the linker isn't too hard depending on where you want to put them (I put them in the preferences file, meaning I need to have arduino closed while editing it)