  Despite significant research efforts, the state-of-the-art algorithm for
maintaining an approximate matching in fully dynamic graphs has a polynomial
{worst-case} update time, even for very poor approximation guarantees. In a
recent breakthrough, Bhattacharya, Henzinger and Nanongkai showed how to
maintain a constant approximation to the minimum vertex cover, and thus also a
constant-factor estimate of the maximum matching size, with polylogarithmic
worst-case update time. Later (in SODA'17 Proc.) they improved the
approximation factor all the way to $2+\epsilon$. Nevertheless, the
longstanding fundamental problem of {maintaining} an approximate matching with
sub-polynomial worst-case time bounds remained open.
  We present a randomized algorithm for maintaining an {almost-maximal}
matching in fully dynamic graphs with polylogarithmic worst-case update time.
Such a matching provides $(2+\epsilon)$-approximations for both the maximum
matching and the minimum vertex cover, for any $\epsilon > 0$. Our result was
done independently of the $(2+\epsilon)$-approximation result of Bhattacharya
et al., so it provides the first $(2+\epsilon)$-approximation for minimum
vertex cover (together with Bhattacharya et al.'s result) and the first
$(2+\epsilon)$-approximation for maximum (integral) matching.
  The polylogarithmic worst-case update time of our algorithm holds
deterministically, while the almost-maximality guarantee holds with high
probability. This result not only settles the aforementioned problem on dynamic
matchings, but also provides essentially the best possible approximation
guarantee for dynamic vertex cover (assuming the unique games conjecture).
