481 points by guidoiaquinti 4 days ago | 307 comments | View on ycombinator
mattclarkdotnet 4 days ago |
adrian17 4 days ago |
Similarly, I don't entirely understand refcount elimination; I've seen the codegen difference, but since the codegen happens at build time, does this mean each opcode is possibly split into two (or more?) stencils, with and without removed increfs/decrefs? With so many opcodes and their specialized variants, how many stencils are there now?
owaislone 4 days ago |
rslashuser 4 days ago |
There is a story that Python is harder to optimize than, say, Typescript, with Python flexibility and the C API getting mentioned. Maybe, if the list of troublesome Python features was out there, programmers could know to avoid those features with the promise of activating the JIT when it can prove the feature is not in use. This could provide a way out of the current Python hard-to-JIT trap. It's just a gist of an idea, but certainly an interesting first step would be to hear from the JIT people which Python features they find troublesome.
[1] https://fidget-spinner.github.io/posts/faster-jit-plan.html
vanderZwan 4 days ago |
> By using only a single instruction and two tables, we only increase the interpreter by a size of 1 instruction, and also keep the base interpreter ultra fast. I affectionally call this mechanism dual dispatch.
I really do hope they'll write that better explanation one day because this sounds pretty intriguing all on its own.
oystersareyum 4 days ago |
I recently read an interview about implementing free-threading and getting modifications through the ecosystem to really enable it: https://alexalejandre.com/programming/interview-with-ngoldba...
The guy said he hopes the free-threaded build'll be the only one in "3.16 or 3.17", I wonder if that should apply to the JIT too or how the JIT and interpreter interact.
ekjhgkejhgk 4 days ago |
pjmlp 4 days ago |
Kudos to those involved into making it happen.
ghm2199 4 days ago |
Like this is a big deal to get a project to a state where volunteers are spun up and actively breaking tasks and getting work done, no? It's a python JIT something I know next to nothing about — as do most application developers — which tells one how difficult this must have been.
ecshafer 4 days ago |
undefined 4 days ago |
fluidcruft 4 days ago |
thunky 4 days ago |
a3w 3 days ago |
`from future import time_travel`
killingtime74 4 days ago |
aplomb1026 4 days ago |
devnotes77 4 days ago |
qy-mj 4 days ago |
openclaw01 4 days ago |
wei03288 4 days ago |
fivedicks 4 days ago |
AgentMarket 4 days ago |
rafph 4 days ago |
Sensible type-annotated python code could be so much faster if it didn't have to assume everything could change at any time. Most things don't change, and if they do they change on startup (e.g. ORM bindings).