mirror of
https://github.com/python/cpython.git
synced 2025-07-18 16:55:20 +00:00

Python now supports checking bytecode cache up-to-dateness with a hash of the source contents rather than volatile source metadata. See the PEP for details. While a fairly straightforward idea, quite a lot of code had to be modified due to the pervasiveness of pyc implementation details in the codebase. Changes in this commit include: - The core changes to importlib to understand how to read, validate, and regenerate hash-based pycs. - Support for generating hash-based pycs in py_compile and compileall. - Modifications to our siphash implementation to support passing a custom key. We then expose it to importlib through _imp. - Updates to all places in the interpreter, standard library, and tests that manually generate or parse pyc files to grok the new format. - Support in the interpreter command line code for long options like --check-hash-based-pycs. - Tests and documentation for all of the above.
28 lines
582 B
C
28 lines
582 B
C
|
|
#ifndef Py_PYGETOPT_H
|
|
#define Py_PYGETOPT_H
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#ifndef Py_LIMITED_API
|
|
PyAPI_DATA(int) _PyOS_opterr;
|
|
PyAPI_DATA(int) _PyOS_optind;
|
|
PyAPI_DATA(wchar_t *) _PyOS_optarg;
|
|
|
|
PyAPI_FUNC(void) _PyOS_ResetGetOpt(void);
|
|
|
|
typedef struct {
|
|
const wchar_t *name;
|
|
int has_arg;
|
|
int val;
|
|
} _PyOS_LongOption;
|
|
|
|
PyAPI_FUNC(int) _PyOS_GetOpt(int argc, wchar_t **argv, wchar_t *optstring,
|
|
const _PyOS_LongOption *longopts, int *longindex);
|
|
#endif /* !Py_LIMITED_API */
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif /* !Py_PYGETOPT_H */
|