What Makes a Scripting Language?

So, I was thinking today—what makes a programming language a scripting language? There are three characteristics which seem to be typical:

  1. Most normal use of the language does not involve an explicit (user-visible) compilation phase
  2. Expressions or statements are valid top-level productions in the language’s grammar
  3. The language has a very rich (and possibly somewhat domain-specific) standard library

Any good counterexamples? That is, are there any languages commonly considered scripting languages which do not meet all three criteria? Conversely, are there languages which are not commonly considered scripting languages which do meet all of them?

hoodwink.d enhanced