Files
RustPython/Lib/test
Jeong, YunWon 98dba36af5 marshal (#7467)
* CPython-compatible marshal format

Unify marshal to a single CPython-compatible format. No separate
"cpython_marshal" reader — one format for frozen modules, .pyc
files, and the Python-level marshal module.

- ComparisonOperator: `(cmp_index << 5) | mask` matching COMPARE_OP
- MakeFunctionFlag: bit-position matching SET_FUNCTION_ATTRIBUTE
- Exception table varint: big-endian (matching Python/assemble.c)
- Linetable varint: little-endian (unchanged)
- Integer: TYPE_INT (i32) / TYPE_LONG (base-2^15 digits)
- Code objects: CPython field order (argcount, posonlyargcount, ...,
  co_localsplusnames, co_localspluskinds, ..., co_exceptiontable)

- FLAG_REF / TYPE_REF for object deduplication (version >= 3)
- allow_code keyword argument on dumps/loads/dump/load
- Subclass rejection (int/float/complex/tuple/list/dict/set/frozenset)
- Slice serialization (version >= 5)
- Buffer protocol fallback for memoryview/array
- Recursion depth limit (2000) for both reads and writes
- Streaming load (reads one object, seeks file position)
- TYPE_INT64, TYPE_FLOAT (text), TYPE_COMPLEX (text) for compat

serialize_code writes co_localsplusnames/co_localspluskinds from
split varnames/cellvars/freevars. deserialize_code splits them back.
Cell variable DEREF indices are translated between flat (wire) and
cell-relative (internal) representations in both directions.

Replace bitwise trick with match for new ComparisonOperator values.

21 -> 3 expected failures. Remaining: test_bad_reader (IO layer),
test_deterministic_sets (PYTHONHASHSEED), testIntern (string interning).

* Address code review: preserve CO_FAST_HIDDEN, fix varint overflow

- Use original localspluskinds from marshal data instead of
  rebuilding, preserving CO_FAST_HIDDEN and other flags
- Fix write_varint_be to handle values >= 2^30 (add 6th chunk)
- Remove unused build_localspluskinds_from_split

* Add depth guard to deserialize_value_typed

Prevents usize underflow when dict key deserialization path calls
deserialize_value_typed with depth=0 on composite types.
2026-03-23 13:10:51 +09:00
..
2026-03-01 11:36:46 +09:00
2025-08-24 10:36:07 +03:00
2026-02-18 03:10:40 +09:00
2026-02-10 21:00:40 +09:00
2025-04-30 14:33:52 +09:00
2026-02-02 00:43:07 +09:00
2026-02-04 09:53:02 +09:00
2023-04-20 15:36:28 +09:00
2023-03-02 15:01:12 +09:00
2026-02-05 00:21:34 +09:00
2022-10-18 03:26:29 +09:00
2026-01-21 20:44:26 +09:00
2023-03-01 18:06:50 +09:00
2026-03-01 11:36:46 +09:00
2026-02-02 02:02:12 +09:00
2026-02-13 22:15:52 +09:00
2026-01-25 15:20:05 +09:00
2025-03-31 18:49:08 +09:00
2026-01-19 00:04:06 +09:00
2026-02-14 18:27:31 +02:00
2026-02-13 13:36:33 +02:00
2026-02-13 13:36:33 +02:00
2026-02-13 14:13:30 +09:00
2026-01-18 21:33:37 +09:00
2026-02-06 00:15:18 +09:00
2025-03-26 02:24:01 -05:00
2025-12-12 09:23:59 +09:00
2024-06-24 19:00:54 +09:00
2026-02-18 00:43:49 +09:00
2026-02-11 16:50:23 +09:00
2026-01-30 16:39:33 +02:00
2026-02-13 18:06:47 +09:00
2026-03-23 11:31:30 +09:00
2026-02-06 00:35:00 +09:00
2026-02-08 20:36:35 +09:00
2026-03-23 11:31:30 +09:00
2026-01-17 19:22:00 +09:00
2025-09-01 11:19:00 +03:00
2026-02-10 00:48:22 +09:00
fix
2026-02-12 01:01:35 +09:00
2026-02-06 00:15:18 +09:00
2026-02-13 13:36:33 +02:00
2026-01-30 07:48:29 +09:00
2026-03-03 15:20:36 +01:00
2026-03-12 13:24:29 +01:00
2026-02-11 18:38:10 +09:00
2026-02-03 22:10:31 +09:00
2026-02-06 00:15:18 +09:00
2026-02-01 19:45:06 -05:00
2026-02-13 13:55:05 +09:00
2023-03-02 05:56:34 +09:00
2026-03-06 06:00:08 +09:00
2026-02-13 13:55:05 +09:00
2026-02-14 18:19:57 +02:00
2026-03-23 13:10:51 +09:00
2026-03-21 22:49:09 +09:00
2026-03-01 14:51:54 +09:00
2026-01-25 00:18:55 +09:00
2026-01-25 00:18:55 +09:00
2025-08-23 19:25:28 +03:00
2026-01-26 10:40:22 +09:00
2026-03-23 11:31:30 +09:00
2026-01-31 21:23:23 -05:00
2026-03-03 20:00:50 +09:00
2026-02-06 00:15:18 +09:00
2025-04-28 12:29:21 +09:00
2026-02-03 22:10:31 +09:00
2026-03-12 18:08:56 +09:00
2025-08-31 11:58:21 +03:00
2026-02-06 01:14:55 +09:00
2026-02-13 13:36:33 +02:00
2026-02-27 09:44:41 +01:00
2026-02-04 18:32:45 +09:00
2026-03-03 19:57:50 +09:00
2026-02-28 22:50:51 +09:00
2022-07-27 14:43:47 +09:00
2026-02-06 00:15:18 +09:00
2026-01-25 00:18:55 +09:00
2026-02-27 10:05:21 +01:00
2025-04-21 21:11:42 -07:00
2026-02-15 23:40:14 +09:00
2026-02-04 09:53:02 +09:00
2026-01-31 20:51:53 -05:00
2025-12-12 10:37:40 +09:00
2026-02-15 09:02:24 +09:00
2026-02-03 22:10:31 +09:00
2026-02-05 23:50:08 +09:00
2026-02-14 21:40:04 +09:00
2026-03-01 11:36:46 +09:00
2026-02-14 09:18:09 +09:00
2025-03-26 23:12:21 -05:00
2026-03-01 10:42:37 +09:00
2026-02-14 22:02:24 +09:00
2026-03-21 22:49:09 +09:00
2026-03-23 11:31:30 +09:00
2026-02-11 16:57:51 +09:00
2026-02-27 22:59:41 +09:00
2026-03-23 11:31:30 +09:00
2026-03-21 22:49:09 +09:00
2025-06-22 22:36:13 +09:00
2026-02-27 16:53:55 +09:00
2026-03-01 20:50:21 +09:00
2026-03-08 18:06:23 +09:00
2026-03-03 21:58:46 +09:00
2026-02-02 01:20:23 +09:00
2025-01-17 18:04:25 -08:00
2026-01-25 00:18:55 +09:00
2026-01-25 00:18:55 +09:00
2026-02-13 13:44:28 +09:00
2026-01-25 00:18:55 +09:00
2026-02-06 00:15:18 +09:00
2025-12-20 12:17:11 +09:00
2026-02-13 13:42:22 +09:00
2026-01-25 00:18:55 +09:00
2026-02-15 23:44:23 +09:00
2026-02-27 09:49:35 +01:00
2026-02-14 18:18:53 +02:00
2026-03-05 17:25:59 +09:00
2023-04-20 15:36:28 +09:00