Repository navigation
Releases: astral-experiments/serc
Release list
0.1.11
Release Notes
Released on 2026-11-03.
Other changes
- Publish standalone archives and installers to GitHub Releases with Serc's
repository token (#2378,
#2378).
Install serc 0.1.11
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/serc/releases/download/0.1.11/serc-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/serc/releases/download/0.1.11/serc-installer.ps1 | iex"Download serc 0.1.11
Verifying GitHub Artifact Attestations
The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:
gh attestation verify <file-path of downloaded artifact> --repo astral-experiments/sercYou can also download the attestation from GitHub and verify against that directly:
gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>0.1.9
Release Notes
Released on 2026-10-28.
Serc 0.1.9 expands source-encoding support and improves byte-for-byte
compatibility with CPython.
Enhancements
- Compile source files encoded with Big5 or Windows-1252 using
CPython-compatible codec aliases and strict decoding behavior
(#2266; #2266)
Bug fixes
- Produce CPython-compatible bytecode for additional real-world package sources
(#2266; #2266) - Preserve CPython-compatible source positions and exception-table coverage when
optimization copies, threads, or fuses bytecode (#1718;
#1718) - Restore byte-for-byte compatibility with CPython 3.14.5 across the pinned
compatibility corpus at all optimization levels (#1365;
#1365) - Reject identifiers whose Unicode normalization produces
True,False, or
None, matching CPython 3.13–3.15 while preserving Python 3.12 behavior
(#1371; #1371) - Reject oversized starred assignment targets and named sequence captures with
CPython-compatible diagnostics (#1370;
#1370) - Match CPython bytecode for sequence patterns that combine captures with
trailing wildcards (#1372;
#1372) - Parse bare
raisestatements and uses of thematchsoft keyword after
semicolons consistently with CPython (#2266;
#2266) - Preserve exception-table coverage when
yield fromappears in an
exception-handler type expression (#1376;
#1376) - Emit CPython-compatible
RESUMEexception depth for explicityield
expressions in exception-handler type expressions andexcept*bodies
(#1375; #1375)
Install serc 0.1.9
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/serc/releases/download/0.1.9/serc-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/serc/releases/download/0.1.9/serc-installer.ps1 | iex"Download serc 0.1.9
Verifying GitHub Artifact Attestations
The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:
gh attestation verify <file-path of downloaded artifact> --repo astral-sh/sercYou can also download the attestation from GitHub and verify against that directly:
gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>0.1.8
Release Notes
Released on 2026-10-20.
Serc 0.1.8 speeds up fully cached compilation and validates bytecode
destinations before writing.
Bug fixes
- Reject symlinks and other non-regular
.pycdestinations before writing,
including with--force(#1357;
#1357)
Performance
- Speed up fully cached compilation batches by skipping output grouping and
compilation scheduling when every requested.pycfile is current
(#1357; #1357)
Install serc 0.1.8
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/serc/releases/download/0.1.8/serc-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/serc/releases/download/0.1.8/serc-installer.ps1 | iex"Download serc 0.1.8
Verifying GitHub Artifact Attestations
The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:
gh attestation verify <file-path of downloaded artifact> --repo astral-sh/sercYou can also download the attestation from GitHub and verify against that directly:
gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>0.1.7
Release Notes
Released on 2026-10-20.
Serc 0.1.7 improves batch compilation and avoids rebuilding current bytecode
caches.
Enhancements
- Compile explicit source-file lists with
--files-from, using
newline-delimited paths by default or NUL-delimited paths with--null,
without scanning directories (#1355;
#1355) - Skip current
.pycfiles by default when their target format, invalidation
mode, and source fingerprint match; use--forceto rebuild them, while
--checkalways compiles without writing bytecode (#1355;
#1355) - Report compiled and skipped file counts with
--output-format json
(#1355; #1355)
Install serc 0.1.7
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/serc/releases/download/0.1.7/serc-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/serc/releases/download/0.1.7/serc-installer.ps1 | iex"Download serc 0.1.7
Verifying GitHub Artifact Attestations
The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:
gh attestation verify <file-path of downloaded artifact> --repo astral-sh/sercYou can also download the attestation from GitHub and verify against that directly:
gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>0.1.6
Release Notes
Released on 2026-10-19.
Serc 0.1.6 adds standalone release binaries, improves CPython compatibility, and
reduces compilation overhead.
Enhancements
- Download standalone Serc binaries for uv’s 18 release targets from checksummed
archives or shell and PowerShell installers, with provenance attestations and
a release mirror (#1352;
#1352)
Bug fixes
- Preserve CPython-compatible control-flow joins and exception ownership when
optimization removes assertions in conditionals, nested handlers, and context
managers (#1304; #1304)
Performance
- Improve release-wheel and archive performance with profile-guided optimization
on macOS ARM64, Windows x64, and GNU/Linux x64 and ARM64 (#1352;
#1352) - Speed up
-Oand-OOcompilation by reusing function scope analysis when
assertion removal cannot change bindings or local ordering
(#1305; #1305)
(#1321; #1321) - Reduce optimized-compilation scope analysis by retaining original scope state
and skipping collection when no comprehension locals need reconciliation
(#1309; #1309)
(#1333; #1333) - Speed up folding large string frozensets and reusing repeated frozenset
constants (#1287; #1287)
(#1290; #1290) - Speed up integer-set folding by avoiding temporary numeric representations,
including for large integers (#1292;
#1292) (#1297;
#1297) - Speed up tuple-heavy compilation by indexing tuple-folding witnesses during
constant remapping and operand resolution (#1332;
#1332) (#1334;
#1334) - Reduce Python 3.12 cleanup overhead by skipping unused setup indexes and
walking legacyNOPinstructions directly (#1293;
#1293) (#1294;
#1294) - Reduce legacy cleanup overhead by indexing instructions by block and avoiding
copies when a pass makes no changes (#1301;
#1301) (#1339;
#1339) - Speed up source validation on Python 3.12 and 3.13 by bounding prefixed-string
scans and reusing parser tokens (#1299;
#1299) (#1306;
#1306) - Reduce optimized-compilation time and memory use by rewriting the parsed
syntax tree in place (#1310;
#1310) - Avoid extra depth and cleanup passes for optimized expression trees
(#1314; #1314)
(#1320; #1320) - Skip repeated constant-folding work for binary expressions and chains that
require runtime evaluation (#1341;
#1341) (#1343;
#1343) - Skip inapplicable sequence and tuple-folding passes on Python 3.13 and 3.15
(#1307; #1307)
(#1340; #1340) - Speed up Python 3.15 assembly by reusing compact-layout and borrowing fast
paths and caching opcode encodings (#1311;
#1311) (#1336;
#1336) - Reduce assembler ownership and local-simulation overhead by avoiding
unnecessary scans and reusing dense borrowing boundaries (#1312;
#1312) (#1319;
#1319) - Skip redundant assembler certificate checks during
NOPremoval and unchanged
source-location propagation (#1323;
#1323) (#1324;
#1324) - Speed up exception-owner analysis by indexing range labels, rejecting
irrelevant markers before provenance scans, and decoding tail operands once
(#1330; #1330)
(#1331; #1331)
(#1337; #1337) - Reduce jump-layout overhead by borrowing inline fixups and reusing
already-resolved operands (#1313;
#1313) (#1327;
#1327) - Reduce forward-jump cleanup overhead by skipping first-pass lookups and
deferring instruction copies (#1335;
#1335) (#1342;
#1342) - Reduce symbol and scope-name analysis allocations by reusing parsed
identifiers, streamlining collection, and inlining common mangling checks
(#1317; #1317)
(#1326; #1326)
(#1329; #1329) - Reduce source-location lookup overhead for calls, simple assignments, and
definitions (#1318; #1318)
(#1322; #1322) - Speed up source validation with a fast prefilter for oversized decimal
literals (#1325; #1325) - Skip compiler setup for empty unreachable tails after terminating statements
(#1328; #1328) - Reduce assembler memory use with compact storage for preserved jump targets
(#1316; #1316) - Reduce multi-version assembly overhead by translating operands only when their
encoding depends on the target Python version (#1295;
#1295)
Other changes
Install serc 0.1.6
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/serc/releases/download/0.1.6/serc-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/serc/releases/download/0.1.6/serc-installer.ps1 | iex"
Download serc 0.1.6
| File | Platform | Checksum |
|---|---|---|
| serc-aarch64-apple-darwin.tar.gz | Apple Silicon macOS | checksum |
| serc-x86_64-apple-darwin.tar.gz | Intel macOS | checksum |
| serc-aarch64-pc-windows-msvc.zip | ARM64 Windows | checksum |
| serc-i686-pc-windows-msvc.zip | x86 Windows | checksum |
| serc-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| serc-aarch64-unknown-linux-gnu.tar.gz | ARM64 Linux | checksum |
| serc-i686-unknown-linux-gnu.tar.gz | x86 Linux | checksum |
| serc-powerpc64le-unknown-linux-gnu.tar.gz | PPC64LE Linux | checksum |
| serc-riscv64gc-unknown-linux-gnu.tar.gz | RISCV Linux | checksum |
| serc-s390x-unknown-linux-gnu.tar.gz | S390x Linux | [checksum](https://releases.astral.sh/github/serc/releases/download/0.1.6/serc-s390x-... |
0.1.5
Released on 2026-10-14.
Serc 0.1.5 improves compilation performance and reduces memory use when
compiling for Python 3.12.
Performance
- Speed up
-Oand-OOcompilation when the syntax tree needs no changes
(#1275; #1275) - Speed up compilation of functions with many sequential
try/exceptblocks
on Python 3.12 (#1277;
#1277) - Speed up compilation of mapping patterns with many captures on Python 3.14 and
3.15 (#1284; #1284) - Speed up compilation of functions with many async context managers
(#1281; #1281) - Reduce source-validation overhead when targeting Python 3.12 and 3.13
(#1279; #1279) - Reduce memory use when compiling for Python 3.12 (#1280;
#1280) - Reduce code-object construction and copying overhead (#1262;
#1262) (#1263;
#1263) (#1265;
#1265) - Reduce scope-analysis and closure-lowering overhead (#1260;
#1260) (#1261;
#1261) - Reduce allocations during control-flow analysis (#1273;
#1273) - Reduce assembler overhead for jumps, source locations, and instruction
processing (#1268; #1268)
(#1269; #1269)
(#1266; #1266)
(#1267; #1267)
(#1270; #1270)
(#1258; #1258) - Reduce marshal serialization work (#1264;
#1264) - Reduce constant-folding overhead (#1272;
#1272)
0.1.4
Released on 2026-10-12.
Serc 0.1.4 reduces compilation, assembly, and serialization overhead.
Performance
- Reduce compilation memory use by deferring full provenance allocation for
linear scopes (#1252;
#1252) - Speed up marshal serialization by indexing the occurrence stream directly
(#1242; #1242) - Reduce name and metadata allocations by reusing interned names and the
compiler’s name index (#1231;
#1231) (#1235;
#1235) - Reduce name-cache initialization, lookup, and memory overhead
(#1234; #1234)
(#1241; #1241) - Speed up assembler graph processing by indexing fusion-owner boundaries and
avoiding unnecessary cold-block and reversed-store scans (#1236;
#1236) (#1253;
#1253) (#1255;
#1255) - Reduce swap optimization work by indexing instructions from the first swap
(#1250; #1250) - Reduce compiler setup overhead by initializing state directly in its final
heap allocation (#1243;
#1243) - Speed up source-location and scope-exit lookups (#1251;
#1251) (#1256;
#1256) - Skip long-decimal pre-scanning for source files too short to exceed the
parsing limit (#1257;
#1257) - Reduce small-code encoding overhead by avoiding instruction copies
(#1254; #1254)
0.1.3
Released on 2026-10-11.
Serc 0.1.3 expands CPython bytecode compatibility, especially for Python 3.14
optimized control flow, exception cleanup, and source locations.
Bug fixes
- Match CPython loop backedges when optimization erases final coroutine-loop
branches, including loops inside context managers (#1031;
#1031) (#1038;
#1038) (#1040;
#1040) (#1041;
#1041) (#1042;
#1042) - Match CPython loop exits when optimization erases prefixes, nested-finalizer
branches, completed manager work, or coroutinefor/elsearms
(#1043; #1043)
(#1044; #1044)
(#1047; #1047)
(#1054; #1054)
(#1055; #1055) - Preserve optimized branch exits after erased iterator work, completed managed
branches, and discarded constants (#1188;
#1188) (#1198;
#1198) (#1220;
#1220) - Preserve loop and async-cleanup boundaries when optimization removes
assertions or loop tails (#1102;
#1102) (#1104;
#1104) (#1107;
#1107) (#1114;
#1114) - Preserve exits when optimization erases comprehension, context-manager,
structured-cleanup, or finalizer work (#1106;
#1106) (#1108;
#1108) (#1112;
#1112) (#1118;
#1118) - Preserve coroutine, loop, and finalizer exits when optimization erases
recovery paths, assertions, or awaited alternatives (#1162;
#1162) (#1204;
#1204) (#1205;
#1205) (#1207;
#1207) - Match CPython exception ownership when copied loop exits cross finalizers,
backedges, or guarded handlers (#1032;
#1032) (#1048;
#1048) (#1052;
#1052) - Preserve control-flow and borrowing boundaries for nested
while/elseloops
and runtime loops in finalizers (#1064;
#1064) (#1068;
#1068) (#1069;
#1069) (#1078;
#1078) - Preserve loop and retry cleanup after recovery breaks, linear
elsesuites,
and nested context managers (#1080;
#1080) (#1085;
#1085) (#1086;
#1086) - Match CPython iterator-loop cleanup boundaries for chained comparisons, async
breaks, and abrupt asyncelsesuites (#1046;
#1046) (#1049;
#1049) (#1088;
#1088) (#1089;
#1089) - Preserve async-iterator exits into nested cleanup, outer-loop cleanup, and
assertion cleanup (#1093;
#1093) (#1097;
#1097) (#1120;
#1120) (#1127;
#1127) - Preserve iterator cleanup when runtime breaks, conditional loads, or guarded
cleanup are involved (#1144;
#1144) (#1161;
#1161) (#1164;
#1164) - Preserve natural loop and iterator exits into structured, managed, nested, and
Boolean-guarded cleanup (#1094;
#1094) (#1095;
#1095) (#1096;
#1096) (#1098;
#1098) - Preserve coroutine-loop recovery entries and cold continuations around nested
cleanup and asyncelsebreaks (#1131;
#1131) (#1135;
#1135) (#1138;
#1138) (#1139;
#1139) - Preserve
breakpaths into conditional, guarded, and awaited cleanup
(#1137; #1137)
(#1140; #1140)
(#1146; #1146)
(#1147; #1147) - Preserve loop and managed-recovery exits through handler cleanup, context
managers, and runtime finalizers (#1155;
#1155) (#1187;
#1187) (#1200;
#1200) (#1214;
#1214) - Match CPython ordering for folded breaks, coroutine loop-
elsebreaks, direct
loop exits, and finalizer entry after loops (#1202;
#1202) (#1203;
#1203) (#1212;
#1212) (#1217;
#1217) (#1223;
#1223) - Preserve exception ownership when guarded finalizers and conditional
context-manager cleanup are copied (#1035;
#1035) (#1036;
#1036) (#1050;
#1050) (#1053;
#1053) - Preserve finalizer ownership, condition slots, and empty exits around
terminating handlers and conditional branches (#1058;
#1058) (#1062;
#1062) (#1065;
#1065) (#1066;
#1066) - Match CPython exception tables after erased
try/elseassertions and
compactedNonechecks in nested context managers (#1072;
#1072) (#1087;
#1087) - Preserve recovery cleanup after conditional stores,
elifbranches, and
awaited branches in coroutines (#1057;
#1057) (#1059;
#1059) (#1063;
#1063) - Preserve borrowed continuations after assertion recovery in functions,
coroutines, and context managers (#1067;
#1067) (#1070;
#1070) (#1073;
#1073) (#1074;
#1074) - Preserve normal cleanup after terminating, guarded, reraising, or named
exception recovery (#1071;
#1071) (#1075;
#1075) (#1076;
#1076) (#1077;
#1077) - Preserve normal-cleanup reachability after terminal protected bodies, nested
guards, and guarded recovery (#1081;
#1081) (#1082;
#1082) (#1083;
#1083) (#1084;
#1084) - Preserve nested cleanup entries after guarded raises and awaited reraises
(#1091; #1091)
(#1092; #1092) - Preserve cleanup after awaited
try/elseassertions, nested recovery
alternatives, and asserted coroutine exits (#1099;
#1099) (#1100;
#1100) (#1101;
#1101) - Preserve cleanup reachability, boundaries, and ownership across abrupt
branches and nested loops (#1109;
#1109) (#1110;
https://github.com/astral-sh/serc/pull/...
0.1.2
Released on 2026-10-05.
Serc 0.1.2 improves CPython bytecode compatibility and speeds up compilation and
serialization.
Bug fixes
- Preserve shared returns and cleanup exits when constant-true assertions are
folded on Python 3.12 (#975;
#975) - Match CPython control flow when optimization removes nested assertions or
branch prefixes (#989;
#989) (#991;
#991) (#998;
#998) (#1005;
#1005) (#1027;
#1027) - Match CPython control flow in coroutines and nested iterators after assertion
removal (#995; #995)
(#1016; #1016) - Preserve implicit returns after optimization erases terminal loop assertions
(#1012; #1012) - Match CPython loop bytecode when optimization removes
elseassertions after
assignments, comprehensions, and inner loops (#1004;
#1004) (#1006;
#1006) (#1007;
#1007) (#1008;
#1008) - Match CPython loop bytecode after assertion removal inside
tryblocks and
context managers (#993;
#993) (#999;
#999) (#1019;
#1019) (#1020;
#1020) - Match CPython loop bytecode in coroutines and async loops after awaits and
assertion removal (#994;
#994) (#1002;
#1002) (#1010;
#1010) (#1011;
#1011) - Match CPython cleanup ordering when
breakorcontinueexits through
finallyblocks (#977;
#977) (#981;
#981) (#1022;
#1022) - Match CPython exception tables for returns and conditional cleanup in
finallyblocks (#982;
#982) (#983;
#983) (#984;
#984) - Match CPython exception tables for returns and nested cleanup in async context
managers (#985; #985) - Match CPython iterator cleanup when
finallyblocks call methods or local
callables (#986; #986)
(#992; #992) - Match CPython local-variable loads after conditional cleanup,
try/else
breaks, and exception-handler exits (#976;
#976) (#1000;
#1000) (#1003;
#1003) (#1009;
#1009) - Match CPython local-variable loads after conditional loops in
finallyblocks
(#1001; #1001) - Match CPython exception tables for conditional tuple returns inside
try
blocks (#1015; #1015) - Match CPython bytecode and source locations for exception-handler cleanup and
closure setup (#979; #979)
(#980; #980) - Match CPython exception tables when
breakorreturnexits nested exception
handlers andfinallyblocks (#1023;
#1023) (#1024;
#1024) (#1025;
#1025) (#1026;
#1026) - Match CPython cleanup for sequence patterns with multiple wildcards and match
statements inside unnamed exception handlers (#1018;
#1018) (#1021;
#1021) - Keep later global references independent from temporary comprehension targets
(#972; #972) - Calculate the correct stack size for later
except*handlers containing
calls, suspension, or nested cleanup on Python 3.14 and 3.15
(#974; #974) - Compile deeply nested statement suites without overflowing small thread stacks
(#971; #971) - Preserve the final operand’s source line in chained
Nonecomparisons on
Python 3.12 and 3.13 (#973;
#973) - Match CPython startup string interning and marshal identity on Linux for the
documented native reference profile across Python 3.12 through 3.15
(#978; #978) - Match CPython constant tables and bytecode when folding Boolean expressions
and starred collection literals (#987;
#987) (#988;
#988)
Performance
- Speed up marshal serialization (#930;
#930) (#931;
#931) (#932;
#932) (#962;
#962) - Reduce compilation overhead (#948;
#948) (#964;
#964) - Speed up compilation of annotation-heavy code (#996;
#996) (#997;
#997) (#1013;
#1013) - Reduce memory allocations during compilation (#1017;
#1017) - Reduce repeated work when compiling folded constants (#1014;
#1014) - Speed up source nesting validation (#930;
#930) (#931;
#931) (#932;
#932)
0.1.1
Released on 2026-09-29.
Serc 0.1.1 adds Python optimization modes and hash-based bytecode caches,
improves compilation performance, and expands compatibility with CPython.
Enhancements
- Compile with Python’s
-Oand-OOoptimization modes through CLI flags or
CompileOptions(#841;
#841) - Generate checked or unchecked hash-based bytecode caches with
--invalidation-modeorCompiledModule::to_hash_pyc(#840;
#840) - Opt into caller-selected decimal literal parsing limits through new text,
byte, and path compilation APIs (#911;
#911) - Model the caller’s integer-to-string limit when formatting duplicate
mapping-key diagnostics through opt-in compilation APIs (#887;
#887) - Reproduce floating-point constant folding from documented CPython 3.14.5 GCC
and Clang builds on supported GNU/Linux x86-64 hosts by selecting a native
build profile (#824; #824)
Bug fixes
- Produce CPython-compatible control flow, source locations, exception tables,
and constant sharing under-Oand-OO(#912;
#912) - Preserve requested
.opt-N.pyccache suffixes for repeated optimization flags
while applying-OOsemantics (#912;
#912) - Compile nested
continuestatements infinallysuites without negative
stack-depth errors or incorrect exception restoration (#825;
#825) - Compile deeply nested expressions and postponed annotations without
overflowing the compiler stack (#827;
#827) - Honor selected native build profiles throughout nested constant folding
(#827; #827) - Keep enclosing cleanup and exception handlers active when tracing raises at a
nested no-opfinallysuite (#900;
#900) (#908;
#908) - Convert
StopIterationraised by tracing in nested generator finalizers into
RuntimeErrorinstead of silently terminating the generator
(#903; #903) - Resolve private type-parameter names and their mangled aliases to the same
binding in generic class headers (#828;
#828) - Preserve marshal object identity for retained native startup names on Python
3.14 (#830; #830) - Remove redundant
NOPinstructions before module annotations after literal
and negated conditions on Python 3.14 and 3.15 (#894;
#894) (#906;
#906) - Match CPython opcode ordering when breaking from an exceptional
finally
suite into nested handler cleanup (#829;
#829) - Preserve async-comprehension assertion exits in terminal conditionals on
Python 3.12 (#889; #889) - Match CPython’s exception-table coverage for markers in nested finalizers
after a handler returns (#904;
#904) - Match CPython bytecode and exception-table ownership after branching
try
bodies enter nested finalizers (#909;
#909) - Match CPython 3.12 source locations for successful assertions at the end of
finallysuites (#907;
#907) - Reject lambdas and comprehensions in Python 3.12 generic headers when their
annotation scopes can see an enclosing class namespace (#831;
#831) - Reject repeated explicit keyword arguments in calls, including unreachable
code (#845; #845) - Reject invalid uses of
__debug__in attributes, call and class keywords, and
class patterns according to the target Python version (#847;
#847) - Reject commas immediately following bare
yieldexpressions while continuing
to accept parenthesized yields and yield tuples (#846;
#846) - Reject Python sources with more than 99 active indentation levels
(#834; #834) - Enforce CPython’s default 4,300-digit limit for decimal integer literals
(#835; #835) - Reject parameter specification and variadic type-parameter defaults when
targeting Python 3.12 (#869;
#869) (#870;
#870) - Include the repeated type-parameter name in duplicate-name diagnostics
(#850; #850) - Match CPython diagnostics for unknown
__future__features
(#858; #858) - Match CPython diagnostics for misplaced
__future__imports
(#860; #860) - Prioritize misplaced
__future__imports over unknown features in the same
statement (#865; #865) - Match CPython diagnostics and source ranges for duplicate mapping-pattern keys
(#857; #857) - Reject large integer mapping-pattern keys that compare equal to floating-point
or complex keys (#861;
#861) - Preserve lone surrogates when validating and folding mapping-pattern keys
(#877; #877) - Match CPython diagnostics for assignment expressions targeting attributes
(#871; #871) - Match CPython diagnostics for unparenthesized tuples after
yield from
(#872; #872) - Preserve type-alias default diagnostics when later syntax errors are also
present (#867; #867) - Report the appropriate comprehension-specific error for
yieldand
yield fromexpressions inside comprehensions (#879;
#879) - Report direct dictionary-comprehension value
yielderrors before
corresponding key errors (#880;
#880) - Report nested comprehension
yielderrors in operand order
(#884; #884) - Prioritize comprehension
yielderrors over earlier bare starred expressions
(#885; #885) - Prioritize supported comprehension
yielderrors over async-generator
value-return errors (#895;
#895) - Match CPython diagnostics for
awaitinside synchronous functions and lambdas
(#896; #896) - Resolve invalid
globalandnonlocaldeclarations before reporting
mapping-pattern errors (#881;
#881)