Thanks for all the feedback Dmitry,

One change I've noticed recently, is that the last few times I ran `M-x list-packages', it didn't display the "new" packages at the top.

Might that be related to the recent changes?

Yes. I'm fixing it now.

  • For the sake of simplicity, when you hit `x' in the package-menu you
    will no longer get two separate prompts for install/delete. You'll be
    prompted a single time for everything.

I think "INSTALL (xxx-y.z) and DELETE (xxx-z.t)" is needlessly verbose. It should probably be "Upgrade (xxx to z.t)", with maybe "and delete the currently installed versions".

I agree.

  • Most functions which involve downloading data now take an extra
    optional ASYNC argument (some of them also take an additional CALLBACK
    argument). This defaults to nil. If it is t, any downloads involved are
    performed asynchronously (and, if appropriate, CALLBACK is called
    afterwards).

Shouldn't there be some new tests?

Yes. I'm still trying to figure out how to do async tests. Currently all package.el tests use a local directory as the repository, but the async functions only kick-in for remote repositories.
Should I use GNU Elpa for the tests? Might that cause hydra to unexpectedly complain due to random connection issues?

I have to say that package upgrading being only partially asynchronous looks perplexing. You say yes - it starts downloading stuff in the background - I can move around in the buffer, then suddenly the background process takes over in a synchronous fashion - I can't move cursor anymore and just watch some messages in the echo area. The Compile-Log only pops up at the end.

While parallel downloading sounds good, maybe the overall interface should still be presented in a synchronous fashion.

I agree that's annoying and I have some similar plans. We can change the package-installation logic to first download all files simultaneously, and then unpack/compile all of them in the proper order. So large upgrades would have a significant speed improvement.

  • Package downloads are performed in sequence, because it is generally
    not safe to do them in parallel

Why not? Simply downloading in parallel should be safe. Maybe not all at once, but 2-4 at a time, especially if they come from different archives, would be beneficial.

I mis-expressed myself. Package downloads are safe in parallel, what makes it non-trivial is that the subsequent unpacking/compiling needs to be done in the right order (curently a package is installed as soon as its download finishes).