URL |
Status |
Linked |
Edit |
PR 23113 |
merged |
Mark.Shannon,
2020-11-02 15:43
|
|
PR 23245 |
merged |
Mark.Shannon,
2020-11-12 10:10
|
|
PR 23251 |
merged |
Mark.Shannon,
2020-11-12 15:57
|
|
PR 23256 |
merged |
Mark.Shannon,
2020-11-13 11:53
|
|
PR 23495 |
merged |
Mark.Shannon,
2020-11-24 13:57
|
|
PR 23636 |
merged |
Mark.Shannon,
2020-12-04 10:33
|
|
PR 23743 |
merged |
Mark.Shannon,
2020-12-11 14:41
|
|
PR 23803 |
merged |
Mark.Shannon,
2020-12-16 14:50
|
|
PR 23896 |
merged |
Mark.Shannon,
2020-12-22 20:32
|
|
PR 24094 |
merged |
Mark.Shannon,
2021-01-04 13:01
|
|
PR 24697 |
merged |
alex.henrie,
2021-03-02 01:39
|
|
PR 24708 |
closed |
nascheme,
2021-03-02 18:59
|
|
PR 24714 |
closed |
nascheme,
2021-03-03 02:29
|
|
PR 24759 |
merged |
nascheme,
2021-03-05 02:34
|
|
PR 24860 |
merged |
Mark.Shannon,
2021-03-14 18:06
|
|
PR 24892 |
merged |
Mark.Shannon,
2021-03-16 11:43
|
|
PR 24902 |
merged |
Mark.Shannon,
2021-03-17 11:46
|
|
msg380231 - (view) |
Author: Mark Shannon (Mark.Shannon) * |
Date: 2020-11-02 15:32 |
Implementation of PEP 626 requires:
1. Implementation of the new line number table and associated APIs.
2. Removal of BEGIN_DO_NOT_EMIT_BYTECODE and END_DO_NOT_EMIT_BYTECODE from the compiler as they do not understand line numbers and may remove lines from the bytecode that they shouldn't.
3. Enhance compiler front-end and CFG optimizer to avoid the negative performance impact of PEP.
a) Duplicate the tests in while blocks to avoid the extra jump instruction at the end of the loop.
b) Duplicate and renumber terminator blocks that have no line numbers.
Guaranteeing that f_lineno is correct without hurting performance
-----------------------------------------------------------------
PEP 626 mandates that the f_lineno attribute of a frame is always correct, even after a return or raise, but we don't want to hurt performance.
Since the interpreter ensures that the f_lasti attribute of a frame is always correct, we can ensure correctness of f_lineno at zero cost, by ensuring that all RETURN_VALUE, RAISE_VARARGS and RERAISE instruction have a non-negative line number. Then f_lineno can always be lazily computed from f_lasti.
The front-end generates artificial RERAISEs and RETURN_VALUE that have no line number. To give these instructions a valid line number we can take advantage of the fact that such terminator blocks (blocks with no successors) can be freely duplicated. Once duplicated, each terminator block will have only one predecessor and can acquire the line number of the preceding block, without causing false line events.
|
msg380245 - (view) |
Author: Pablo Galindo Salgado (pablogsal) * |
Date: 2020-11-02 19:08 |
I'm happy that we are removing BEGIN_DO_NOT_EMIT_BYTECODE and END_DO_NOT_EMIT_BYTECODE but could you elaborate how this is related? These macros protect the compiler from emitting bytecode that corresponds to deaf code and by definition, unreachable. Could you give an example of a situation in which they create something that messes up the line numbers? Is this something to be with cleanup blocks in dead code or something similar?
|
msg380268 - (view) |
Author: Mark Shannon (Mark.Shannon) * |
Date: 2020-11-03 10:42 |
The following code is completely eliminated by the macros.
1. if 0:
2. secret_debugging_code()
PEP 626 says that all executed lines of code must generate trace events,
so we need to emit an instruction for line 1.
Dead code elimination will remove the `secret_debugging_code()`, but leave the test. The peephole optimiser can then reduce it to a NOP, but won't eliminate it as it is the only instruction for line 1.
|
msg380276 - (view) |
Author: Pablo Galindo Salgado (pablogsal) * |
Date: 2020-11-03 13:49 |
> Dead code elimination will remove the `secret_debugging_code()`, but leave the test. The peephole optimiser can then reduce it to a NOP, but won't eliminate it as it is the only instruction for line 1.
Gotcha. I am pretty sure that this will have a similar problem as the coverage people were claiming when we were not properly removing all dead code (slightly less coverage percentage). This is not a problem of course, but we should ping the coverage folks so they are aware of this.
|
msg380809 - (view) |
Author: Mark Shannon (Mark.Shannon) * |
Date: 2020-11-12 09:43 |
New changeset 877df851c3ecdb55306840e247596e7b7805a60a by Mark Shannon in branch 'master':
bpo-42246: Partial implementation of PEP 626. (GH-23113)
https://github.com/python/cpython/commit/877df851c3ecdb55306840e247596e7b7805a60a
|
msg380846 - (view) |
Author: Mark Shannon (Mark.Shannon) * |
Date: 2020-11-12 19:49 |
New changeset cc75ab791dd5ae2cb9f6e0c3c5f734a6ae1eb2a9 by Mark Shannon in branch 'master':
bpo-42246: Eliminate jumps to exit blocks by copying those blocks. (#23251)
https://github.com/python/cpython/commit/cc75ab791dd5ae2cb9f6e0c3c5f734a6ae1eb2a9
|
msg380865 - (view) |
Author: STINNER Victor (vstinner) * |
Date: 2020-11-13 00:52 |
> New changeset 877df851c3ecdb55306840e247596e7b7805a60a by Mark Shannon in branch 'master':
> bpo-42246: Partial implementation of PEP 626. (GH-23113)
This change introduced reference leaks:
https://buildbot.python.org/all/#builders/384/builds/100
5 tests failed:
test_asyncgen test_builtin test_coroutines test_exceptions
test_syntax
For example:
$ ./python -m test test_syntax -R 3:3 -m test.test_syntax.SyntaxTestCase.test_no_indent
0:00:00 load avg: 1.59 Run tests sequentially
0:00:00 load avg: 1.59 [1/1] test_syntax
beginning 6 repetitions
123456
......
test_syntax leaked [27, 27, 27] references, sum=81
test_syntax leaked [20, 20, 20] memory blocks, sum=60
test_syntax failed
== Tests result: FAILURE ==
1 test failed:
test_syntax
Total duration: 955 ms
Tests result: FAILURE
|
msg380880 - (view) |
Author: Mark Shannon (Mark.Shannon) * |
Date: 2020-11-13 12:54 |
New changeset fd009e606a48e803e7187983bf9a5682e938fddb by Mark Shannon in branch 'master':
bpo-42246: Fix memory leak in compiler (GH-23256)
https://github.com/python/cpython/commit/fd009e606a48e803e7187983bf9a5682e938fddb
|
msg382312 - (view) |
Author: Mark Shannon (Mark.Shannon) * |
Date: 2020-12-02 13:31 |
New changeset 5977a7989d49c3e095c7659a58267d87a17b12b1 by Mark Shannon in branch 'master':
bpo-42246: Make sure that line number is correct after a return, as required by PEP 626 (GH-23495)
https://github.com/python/cpython/commit/5977a7989d49c3e095c7659a58267d87a17b12b1
|
msg382492 - (view) |
Author: Mark Shannon (Mark.Shannon) * |
Date: 2020-12-04 15:22 |
New changeset eaccc12aa986f92ea05f3f0a63cedbff78dd67f1 by Mark Shannon in branch 'master':
bpo-42246: Don't forget the entry block when ensuring that all exits have a line number (GH-23636)
https://github.com/python/cpython/commit/eaccc12aa986f92ea05f3f0a63cedbff78dd67f1
|
msg382871 - (view) |
Author: Ned Batchelder (nedbat) * |
Date: 2020-12-11 15:26 |
Mark, BTW: I have run the coverage.py test suite on 3.10.0a3, and as expected there are failures. I haven't dug into it yet to see what looks expected and what does not. I also see there are still changes happening on master, so I'm not sure when to commit the time.
|
msg382872 - (view) |
Author: Mark Shannon (Mark.Shannon) * |
Date: 2020-12-11 15:50 |
Ned,
What are the failures?
I'd like to take a look, to see if things are as expected, and if there are any tests we can add to CPython.
|
msg382884 - (view) |
Author: 雅雯 (zhtw1234) |
Date: 2020-12-11 20:03 |
幹你娘
|
msg382886 - (view) |
Author: 雅雯 (zhtw1234) |
Date: 2020-12-11 20:04 |
全家死光
|
msg382888 - (view) |
Author: 雅雯 (zhtw1234) |
Date: 2020-12-11 20:06 |
幹你娘
我是渣男專打老婆騙吃拐幹
|
msg382889 - (view) |
Author: 雅雯 (zhtw1234) |
Date: 2020-12-11 20:08 |
你全家死光
|
msg382890 - (view) |
Author: 雅雯 (zhtw1234) |
Date: 2020-12-11 20:09 |
幹你娘
|
msg382950 - (view) |
Author: Ned Batchelder (nedbat) * |
Date: 2020-12-14 00:27 |
Mark, I'm categorizing and characterizing the test failures. Here's the start of it: https://gist.github.com/nedbat/6c5dedde9df8d2de13de8a6a39a5f112 Let me know what other information would be useful.
|
msg382985 - (view) |
Author: Mark Shannon (Mark.Shannon) * |
Date: 2020-12-14 13:02 |
Thanks Ned, that's really helpful. I'll go through those points:
Code after break/continue is no longer compiled.
Expected
First line number of modules
Expected
Except clause when no exception
https://bugs.python.org/issue42634
Double loops (this also covers End-of-loop jumps, I think)
https://bugs.python.org/issue42635
I want to merge https://github.com/python/cpython/pull/23743 before I fix any of the others, but here is a summary of what I think are the root causes.
if-break
Exit block duplication does not preserve line number of jump to final block
Finally handling
Combination of two things. Not preserving line numbers when performing jump-to-jump elimination and not marking try cleanup code as artificial.
|
msg383042 - (view) |
Author: Mark Shannon (Mark.Shannon) * |
Date: 2020-12-15 11:07 |
New changeset 8473cf89bdbf2cb292b39c972db540504669b9cd by Mark Shannon in branch 'master':
bpo-42246: Remove DO_NOT_EMIT_BYTECODE macros, so that while loops and if statements conform to PEP 626. (GH-23743)
https://github.com/python/cpython/commit/8473cf89bdbf2cb292b39c972db540504669b9cd
|
msg383159 - (view) |
Author: Mark Shannon (Mark.Shannon) * |
Date: 2020-12-16 12:29 |
https://github.com/python/cpython/pull/23780 fixes the finally handling.
The if-break case was fixed by earlier changes.
|
msg383245 - (view) |
Author: Mark Shannon (Mark.Shannon) * |
Date: 2020-12-17 13:55 |
New changeset bf353f3c2d937772a8cf30b15fd8eb7b82665ccb by Mark Shannon in branch 'master':
bpo-42246: Make sure that `f_lasti`, and thus `f_lineno`, is set correctly after raising or reraising an exception (GH-23803)
https://github.com/python/cpython/commit/bf353f3c2d937772a8cf30b15fd8eb7b82665ccb
|
msg383643 - (view) |
Author: Mark Shannon (Mark.Shannon) * |
Date: 2020-12-23 11:43 |
New changeset 28b75c80dcc1e17ed3ac1c69362bf8dc164b760a by Mark Shannon in branch 'master':
bpo-42246: Don't eliminate jumps to jumps, if it will break PEP 626. (GH-23896)
https://github.com/python/cpython/commit/28b75c80dcc1e17ed3ac1c69362bf8dc164b760a
|
msg387910 - (view) |
Author: Mark Shannon (Mark.Shannon) * |
Date: 2021-03-02 11:08 |
All done :)
|
msg388217 - (view) |
Author: Neil Schemenauer (nascheme) * |
Date: 2021-03-06 21:34 |
New changeset 87ec26b812e9c4095c017dc60f246eda37b83ab2 by Neil Schemenauer in branch 'master':
bpo-43372: Use _freeze_importlib for regen-frozen. (GH-24759)
https://github.com/python/cpython/commit/87ec26b812e9c4095c017dc60f246eda37b83ab2
|
msg388836 - (view) |
Author: Ned Batchelder (nedbat) * |
Date: 2021-03-16 11:16 |
Is there a reason PEP 626 isn't yet mentioned in https://docs.python.org/3.10/whatsnew/3.10.html ?
|
msg388837 - (view) |
Author: Mark Shannon (Mark.Shannon) * |
Date: 2021-03-16 11:31 |
No. We should add it.
|
msg388900 - (view) |
Author: Pablo Galindo Salgado (pablogsal) * |
Date: 2021-03-17 00:03 |
PEP 626 deprecates co_lnotab, co_lnotab:
https://www.python.org/dev/peps/pep-0626/#id15
This doesn't seem to be mentioned in the What's new document and is quite important. Mark, do you mind creating a PR for this? I could do it and add you as a reviewer if you wish
|
|
Date |
User |
Action |
Args |
2022-04-11 14:59:37 | admin | set | github: 86412 |
2021-03-17 11:46:38 | Mark.Shannon | set | pull_requests:
+ pull_request23665 |
2021-03-17 00:03:57 | pablogsal | set | messages:
+ msg388900 |
2021-03-16 11:43:46 | Mark.Shannon | set | pull_requests:
+ pull_request23654 |
2021-03-16 11:31:32 | Mark.Shannon | set | messages:
+ msg388837 |
2021-03-16 11:16:51 | nedbat | set | messages:
+ msg388836 |
2021-03-14 18:06:35 | Mark.Shannon | set | pull_requests:
+ pull_request23620 |
2021-03-06 21:34:06 | nascheme | set | messages:
+ msg388217 |
2021-03-05 02:34:56 | nascheme | set | pull_requests:
+ pull_request23532 |
2021-03-03 02:29:54 | nascheme | set | pull_requests:
+ pull_request23492 |
2021-03-02 18:59:32 | nascheme | set | nosy:
+ nascheme
pull_requests:
+ pull_request23485 |
2021-03-02 11:08:24 | Mark.Shannon | set | status: open -> closed resolution: fixed messages:
+ msg387910
stage: patch review -> resolved |
2021-03-02 01:39:37 | alex.henrie | set | nosy:
+ alex.henrie pull_requests:
+ pull_request23475
|
2021-01-04 13:01:07 | Mark.Shannon | set | pull_requests:
+ pull_request22923 |
2020-12-23 11:43:19 | Mark.Shannon | set | messages:
+ msg383643 |
2020-12-22 22:37:30 | BTaskaya | set | nosy:
+ BTaskaya
|
2020-12-22 20:32:21 | Mark.Shannon | set | pull_requests:
+ pull_request22751 |
2020-12-22 00:54:50 | methane | set | nosy:
+ methane
|
2020-12-17 13:55:38 | Mark.Shannon | set | messages:
+ msg383245 |
2020-12-16 14:50:24 | Mark.Shannon | set | pull_requests:
+ pull_request22663 |
2020-12-16 12:29:22 | Mark.Shannon | set | messages:
+ msg383159 |
2020-12-15 11:07:59 | Mark.Shannon | set | messages:
+ msg383042 |
2020-12-14 13:02:14 | Mark.Shannon | set | messages:
+ msg382985 |
2020-12-14 00:27:45 | nedbat | set | messages:
+ msg382950 |
2020-12-11 21:14:14 | rhettinger | set | title: Implement PEP 626 -> Implement PEP 626 -- Precise line numbers for debugging |
2020-12-11 20:09:40 | zhtw1234 | set | messages:
+ msg382890 |
2020-12-11 20:08:02 | zhtw1234 | set | files:
+ IMAG0629_1.jpg
messages:
+ msg382889 |
2020-12-11 20:06:23 | zhtw1234 | set | files:
+ IMAG0629_1.jpg
messages:
+ msg382888 |
2020-12-11 20:04:38 | zhtw1234 | set | files:
- IMAG0629_1.jpg |
2020-12-11 20:04:23 | zhtw1234 | set | files:
+ IMAG0629_1(1).jpg
messages:
+ msg382886 |
2020-12-11 20:03:10 | zhtw1234 | set | files:
+ IMAG0629_1.jpg nosy:
+ zhtw1234 messages:
+ msg382884
|
2020-12-11 15:50:18 | Mark.Shannon | set | messages:
+ msg382872 |
2020-12-11 15:26:07 | nedbat | set | messages:
+ msg382871 |
2020-12-11 14:41:40 | Mark.Shannon | set | pull_requests:
+ pull_request22601 |
2020-12-04 15:22:22 | Mark.Shannon | set | messages:
+ msg382492 |
2020-12-04 10:33:02 | Mark.Shannon | set | pull_requests:
+ pull_request22504 |
2020-12-02 13:31:43 | Mark.Shannon | set | messages:
+ msg382312 |
2020-11-24 14:02:29 | vstinner | set | nosy:
- vstinner
|
2020-11-24 13:57:57 | Mark.Shannon | set | pull_requests:
+ pull_request22384 |
2020-11-13 12:54:22 | Mark.Shannon | set | messages:
+ msg380880 |
2020-11-13 11:53:50 | Mark.Shannon | set | pull_requests:
+ pull_request22153 |
2020-11-13 00:52:47 | vstinner | set | nosy:
+ vstinner messages:
+ msg380865
|
2020-11-12 19:49:41 | Mark.Shannon | set | messages:
+ msg380846 |
2020-11-12 15:57:50 | Mark.Shannon | set | pull_requests:
+ pull_request22148 |
2020-11-12 10:10:09 | Mark.Shannon | set | stage: patch review pull_requests:
+ pull_request22142 |
2020-11-12 09:43:56 | Mark.Shannon | set | messages:
+ msg380809 |
2020-11-03 15:41:19 | Mark.Shannon | set | nosy:
+ nedbat
|
2020-11-03 13:49:18 | pablogsal | set | messages:
+ msg380276 |
2020-11-03 10:42:59 | Mark.Shannon | set | messages:
+ msg380268 stage: patch review -> (no value) |
2020-11-02 19:08:13 | pablogsal | set | messages:
+ msg380245 |
2020-11-02 15:43:17 | Mark.Shannon | set | keywords:
+ patch stage: patch review pull_requests:
+ pull_request22030 |
2020-11-02 15:32:42 | Mark.Shannon | create | |