>You are right, the difficulties are in Python's design.
Not anymore than there were in Javascript's design -- which is as, if not more, dynamic.
It's just lack of funding. PyPy managed to get much faster than CPython, but doesn't have the funding or the blessing of being official (Javascript doesn't need it, since there were always multiple implementations).
Javascript does have it easier by virtue of being single threaded, with no overloading and with a single numeric type. In the python version of this loop:
for x in range(1000):
sum = sum + math.sin(x)
The global "math" and "math.sin" can be changed by another thread at any point. Javascript guarantees that this cannot happen.
Also, what constructs of Javascript are more dynamic than python? I can only think of "eval" and "with", both of which the JavaScript JIT decline to compile and interpret instead.
Not anymore than there were in Javascript's design -- which is as, if not more, dynamic.
It's just lack of funding. PyPy managed to get much faster than CPython, but doesn't have the funding or the blessing of being official (Javascript doesn't need it, since there were always multiple implementations).