I've written my share of JS-heavy apps and the boost will be nice for that. However, my complaints with JS don't lie with performance.
- Tied too much to the browser. JS works great for some (some love it) but syntactically I hate every last part of it. However: web == JS so I have no other option.
- Typing. Yeah, it has types but they're practically worthless. A Number represents a float/double and an integer? Say what?
- Type checking.
- No reflection.
- No dictionary. Sure, you can use an Object as a dictionary but the second someone prototypes it to add root functionality then you've introduced other items in your "dictionary". (I'm looking at you prototype.js)
- Nothing resembling libraries. No dependencies, etc.
- It's bastardized to accommodate the short comings of HTML (drop downs, combo boxes, etc.)
- Obey's Postel's law too much. Error handling and exceptions is a sad state.
- No threading. No locking. Nothing resembling concurrent programming. The more complicated your app the more arbitrary events and multithreading are important.
- No classes. Prototyping & cloning is a neat paradigm for where it fits but so do class-based objects. This isn't just JS I have this problem with. Being able to do both and using the right one where necessary would be great.
- When is the document loaded? And if you have two libraries vying for that event? (See library complaint)
- Since it has no real library support I have to blame the browser for not providing more general functionality. XML parsing, date stuff is abysmal, and other "routine" stuff you do when making web sites.
- Scoping. Scoping is mind-numbingly bad.
- Namespaces (again, see library complaint) are implemented via object nesting, which isn't really namespaces
- Logging and debugging. I haven't delved into the likes of Firebug to see how it works but when the language (again no libraries so I blame the language) itself only provides alert() then it's clear the creators weren't thinking about debugging at all. At least IE natively will let you debug JS!
- Standard dialogs are alert() and confirm(). Anything and everything else you have to roll your own. I really, really don't want to write something for a Yes/No dialog instead of OK/Cancel confirm().
- Drag-and-drop. If you've done it then you know it's no walk in the park.
- Browser identification and JS version identification. Why should I have to jump through hoops, poke & prod things, and guess at what my JS run-time is? Everyone has their own means to detect it and it's absolutely ludicrous. I'm fine if there's no real "standard" but at least give me the variables to know what I'm writing against so I can adequately work with it. (Again tied too close to the browser.) Every language I use frequently has means for me to identify such things.
Basically my point is that performance does not bring JS up another tier. It just prolongs the pain of having a grossly inadequate language for rich application development. JS does have some nice things about it (first-class functions, closures, for(..in..), etc.) but in no way would I consider it "good" for application development.