Title: Lazy locals dict for NEWLOCALS frames by youknowone · Pull Request #7307 · RustPython/RustPython · GitHub
Open Graph Title: Lazy locals dict for NEWLOCALS frames by youknowone · Pull Request #7307 · RustPython/RustPython
X Title: Lazy locals dict for NEWLOCALS frames by youknowone · Pull Request #7307 · RustPython/RustPython
Description: Defer locals dict allocation for function frames until first access. Most function frames only use fastlocals and never touch the locals dict, so this skips one dict heap allocation per function call. Also remove a redundant code.clone() in invoke_with_locals. Func call ~23% faster, method call ~15% faster in benchmarks. Summary by CodeRabbit Refactor Introduced lazy initialization for frame locals to reduce upfront allocation and improve runtime efficiency. Made locals optional at scope creation, standardizing fallback to globals later for consistent local-variable behavior. Updated module execution to supply explicit locals from attributes when available. Safer access patterns for locals to reduce runtime errors in edge cases.
Open Graph Description: Defer locals dict allocation for function frames until first access. Most function frames only use fastlocals and never touch the locals dict, so this skips one dict heap allocation per function ca...
X Description: Defer locals dict allocation for function frames until first access. Most function frames only use fastlocals and never touch the locals dict, so this skips one dict heap allocation per function ca...
Opengraph URL: https://github.com/RustPython/RustPython/pull/7307
X: @github
Domain: github.com
| route-pattern | /:user_id/:repository/pull/:id/files(.:format) |
| route-controller | pull_requests |
| route-action | files |
| fetch-nonce | v2:d7295edc-6f29-4aae-a3e4-2cee5950f1aa |
| current-catalog-service-hash | ae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b |
| request-id | DB2C:21DBC5:129C08D:187A7C7:6A5BD5EB |
| html-safe-nonce | e1c8c86983455295e3b0be48ed5cce87023abe864a55fc92dccc5eb897d6387f |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJEQjJDOjIxREJDNToxMjlDMDhEOjE4N0E3Qzc6NkE1QkQ1RUIiLCJ2aXNpdG9yX2lkIjoiMjUzMDQ5MTE0NjU2NjM1ODUwOCIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | 0221d91e321b7eb6b5a21e01fd2f6eedc60d1fe972e8d0438cc26dcbce84d8de |
| hovercard-subject-tag | pull_request:3342370917 |
| github-keyboard-shortcuts | repository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/RustPython/RustPython/pull/7307/files |
| twitter:image | https://avatars.githubusercontent.com/u/69878?s=400&v=4 |
| twitter:card | summary_large_image |
| og:image | https://avatars.githubusercontent.com/u/69878?s=400&v=4 |
| og:image:alt | Defer locals dict allocation for function frames until first access. Most function frames only use fastlocals and never touch the locals dict, so this skips one dict heap allocation per function ca... |
| og:site_name | GitHub |
| og:type | object |
| hostname | github.com |
| expected-hostname | github.com |
| None | 5290d7e14309ad1e76106a9c4237bd1041517e83ea182c8ab756752cb0c6940b |
| turbo-cache-control | no-preview |
| diff-view | unified |
| go-import | github.com/RustPython/RustPython git https://github.com/RustPython/RustPython.git |
| octolytics-dimension-user_id | 39710557 |
| octolytics-dimension-user_login | RustPython |
| octolytics-dimension-repository_id | 135201145 |
| octolytics-dimension-repository_nwo | RustPython/RustPython |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 135201145 |
| octolytics-dimension-repository_network_root_nwo | RustPython/RustPython |
| turbo-body-classes | logged-out env-production page-responsive full-width |
| disable-turbo | true |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 9c975978430e9ad293956f2bbdaf153b1bd84a99 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width