What's sad is that this is yet another github page with #777 colored text on white background. The resulting contrast is too low to read comfortably!
First, push is very different than inlining, because individual resources are cacheable by the client, and inlined resources are not. There's a little handshake at the start of a push and if the client has (or doesn't otherwise want) the resource, it can cancel the push.
In my team's experiments with using push for HTML Imports, push ends up being better than inlining (using Polymer's vulcanize tool), even with a cold cache.
Also, push is relatively easy to implement if you use the response header approach, and was availably early on in mod_spdy.
Another method would be to add a headers to the response:
Server-Push: /relative/url
Then have an output filter pull them out and push them -- but AFAIK the APIs to do that don't yet exist in mod_h2 to push like that. Adding headers in the response is nice because it works with any 'backend', and the web server doesn't have to parse the HTML/css/etc going the through it. <Location />
ServerPush /static/css/main.css
ServerPush /static/js/main.js
</Location>
<LocationMatch "^/$">
ServerPush /static/img/gigantic-homepage-image.jpg
</LocationMatch>
<Location /maps/>
ServerPush /static/js/leaflet.js
</Location>
I believe this could even avoid the need to include cache-busters in the URL since you could push with an ETag and the client can terminate if it already has the appropriate bytes without the incredible performance hit of using ETags with HTTP 1.In a.b.c, odd b indicates the unstable or experimental branch, and even b's are used for major and backwards-compatibility breaking changes. Backwards-compatibility preserving changed can be introduced in c.
So 2.2 and 2.4 are pretty different versions, while 2.3 and 2.4 are closer except 2.3 is unstable. 2.4.0 is theoretically compatible with 2.4.17, except the latter has a lot more functionality and features.
(I'm assuming they are following "standard" semver rules here)