Comments (5)
Yes but I plan to work on it at one point by my current bandwidth for OSS is really low. So if you have the inclination to start something feel free to do so.
from bytecode.
I am going to start working on this slowly and post here about my progress.
The first topic I looked into is the new exception table feature. Basically it means try except are now really represented at the bytecode level as instructions but only in the table. At the ConcreteBytecode level, I think that simply having a human readable version of the format describe in https://github.com/python/cpython/blob/main/Objects/exception_handling_notes.txt is properly the right abstraction.
At the Bytecode and CFG level the story is a bit different. First we will use labels to indicate jump target as for any other jump. However I believe it would make sense to also have pseudo-instruction delineating the block in which an exception can be caught. At the Bytecode level having an entry and exit marker is relatively easy for the CFG it may be a bit more involved and I do not have a clear idea yet of what things are going to look like. Any opinion is welcome as to how to approach this new design.
from bytecode.
Is it possible to create an exception table object from Python?
First we will use labels to indicate jump target as for any other jump
Makes sense. Perhaps their contructors can take the target label as an identifier for the exception "block".
from bytecode.
The exception table is just a bunch of bytes as described in the linked file. So yes we will be able to create it from Python.
Regarding you second point, yes the pseudo instruction will take the exception handling block label as a target.
from bytecode.
The exception table is just a bunch of bytes as described in the linked file. So yes we will be able to create it from Python.
Ah ok, that's just a bytes
object now: https://github.com/python/cpython/blob/c485ec014ce174bb3f5ae948151dc40e0f6d5f7f/Objects/codeobject.c#L249
from bytecode.
Related Issues (20)
- The `Compare` enum is broken starting from Python 3.9
- EXTENDED_ARG + NOP Error HOT 3
- except Exception as e fails on Python 3.11 HOT 1
- Flag inference is too agressive in determining generator HOT 1
- Using special optimization to get rid of recursion limitations when compiling really huge code HOT 1
- stack size calculation issue HOT 5
- Stack size with EXTENDED_ARG HOT 10
- Question: how stable is it to round-trip code? HOT 3
- Why are extended line offsets -127 and 126, and not -128 and 127? HOT 2
- Stack size computation issue HOT 2
- Creating functions through bytecode HOT 3
- Missing tag on 0.12.0 release HOT 1
- Update jump address handling for 3.10 HOT 1
- Bytecode doesn't properly set linenumbers (in corner case in Python 3.10rc1) HOT 2
- Errors in compute stacksize on 3.10 HOT 7
- Please clarify the copyright HOT 4
- Remove `Compare.EXC_MATCH` on Python>=3.9 HOT 1
- Update pre_and_post_stack_effect HOT 1
- Labels don't seem to be handled correctly with Python<3.9 HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from bytecode.