News for hackers. Stuff that matters.
Re:What I Learned Making My Own JIT Language by blattimwind on Wednesday June 27, 2018 @01:55PM (#17410286)
> I don't know that you have to hand full control over to the programmer, but if you're randomly flinging values on the heap everywhere (a.k.a. "hash tables"), you're gonna hit a wall long before you get to "C performance".

Rule of Python: Everything is at least two pointers away.

--

> and CPython is hopping through all these hoops for every such lookup.

Actually CPython has a cache for that. This becomes apparent if you improperly replace methods in the class dictionary.

I think the bane of Python specifically is a bit different. It's not so much that it's very dynamic, because JITs can clearly deal with that. It's that CPython exposes all kinds of interpreter state that's off-limits in other languages, which makes it way harder to JIT. In JavaScript there are at most a handful ways how you can mutate a prototype, but in CPython you don't have enough fingers to count them, even if you only consider Python and not the C API.

Re:What I Learned Making My Own JIT Language by jerf on Wednesday June 27, 2018 @02:01PM (#17410340)
"Actually CPython has a cache for that."

My apologies for my unclarity. In my head, "hopping through all these hoops" included using caching, but that is completely unclear. It is true that there is a lot of caching being done, because it would simply be unusable if there isn't. But it is also true that there is still a lot of work to do for "x.y()", even when all caches are used fully.

Re:What I Learned Making My Own JIT Language by blattimwind on Wednesday June 27, 2018 @02:03PM (#17410359)
Yes... and most of it is even part of stable APIs.