A programming language is not just a means to formulate instructions for a computer to execute. It is also a way for programmers to communicate with each other and, taken further, a way for customer desires to translate into computer actions. I would agree that, viewed as instructions for a computer, not much new has come about in the last 10-15 years.
What has developed more recently are all the new ways that programmers are discovering or creating to communicate via code. TDD/BDD/RDD, literate programming, module systems baked into the language, optional typing, parameterized types, etc. are all features that, while not necessarily entirely new from a theory standpoint, are creating new ways for programmers to signal intent.
A good example of this at work is the recent resurgence in functional languages. These have, literally, been around since the very first programming languages were created, but they have never really "caught on" (for some value of "caught on"). I would suspect that part of the problem is that it has traditionally been more than a little difficult for someone not used to functional programming to approach the code. So, I would argue that the most important recent advances in the FP space have less to do with type inference, lazy evaluation, or correctness provability, and more to do with clearly communicating intent.