ARE WE NATIVE YET?
Live compatibility status of pyscriptc: which builtins, standard-library modules and PyPI packages compile to native code today.
99%76 of 77 probed builtins and stdlib modules compile (full or partial)
Builtins
2 full ·15 partial ·1 none
18 probed
Standard library
0 full ·59 partial ·0 none
59 probed
PyPI top 100
2 full ·7 partial ·9 none
18 probed
Support at a glance
One square per probed item. Green is full, amber partial, red none. Hover for details; click a square to jump to its table row.
Adoption ladder
How far a script gets: compiles, and compiles plus passes its output checks. Lanes say where each import lands in the compiled tree.
| Rung | Corpus | Scripts | Compiled | Passed |
|---|---|---|---|---|
| R1 — Single-file script | benchmarks/scripts_corpus/scripts | 45 | 16 | 13 |
| R2 — Multi-module tree | benchmarks/scripts_corpus/trees | 5 | 4 | 4 |
native83%273 imports
pack0%1 imports
extern17%56 imports
island0%0 imports
absent0%0 imports
Builtins
| Item | Status | Count | Unsupported | Fences |
|---|---|---|---|---|
abs, all, any, bin, chr, divmod, enumerate, getattr, hasattr, hex, iter, len, map, next, oct, ord, pow, range, repr, reversed, round, sum, bool, set | full | 24 | — | — |
print | partial | 1 | file= other than sys.stdout or sys.stderr | PS2002 |
input | partial | 1 | prompt argument | PS2003 |
int | partial | 1 | unknown keyword, int(bool) | PS2003 |
float | partial | 1 | float(bool) | PS2003 |
str | partial | 1 | str of a user class | PS2003 |
list | partial | 1 | list(str) | PS2002 |
min, max | partial | 2 | key= a function name | PS2003 |
sorted | partial | 1 | key= a function name, sorted(dict) | PS2003 |
zip | partial | 1 | more than 2 lists | PS2003 |
filter | full | 1 | — | — |
isinstance | partial | 1 | tuple of types | PS2001 |
open | partial | 1 | keywords other than encoding= | PS2003 |
id | partial | 1 | id of int | PS2003 |
frozenset | partial | 1 | non-constant argument | PS2002 |
eval | partial | 1 | anything but a constant expression | PS2002 |
BaseException and subclasses | partial | 7 | ExceptionGroup | PS2003 |
bytes, bytearray, memoryview, callable, complex, dict, format, tuple, type, object, super, vars, dir, globals, locals, exec, issubclass, ascii, setattr, delattr, slice, hash, __import__ | none | 23 | all (`dict` displays and `{}` work; `dict(...)` does not) | PS2002 |
Standard library
| Item | Status | Count | Unsupported | Fences |
|---|---|---|---|---|
math | partial | 1 | asin, sinh, degrees, fsum, factorial, comb, isqrt, copysign, fmod, cbrt, log with a base | PS2001, PS2003 |
re | partial | 1 | finditer, 5+ groups, sub with a function | PS1001, PS2001, PS2002 |
json | partial | 1 | ensure_ascii=False, JSONDecodeError | PS1106, PS2003 |
tomllib | partial | 1 | load (file object), keyword arguments | PS2001, PS2003 |
dotenv | partial | 1 | stream, verbose, interpolate, override, encoding arguments, other dotenv members (find_dotenv, set_key, DotEnv), interpolation ($VAR stays literal) | PS2001, PS2003 |
yaml | partial | 1 | load, dump, safe_dump, keyword arguments | PS2001, PS2003 |
jwt | partial | 1 | RS256 and other asymmetric algorithms, non-literal algorithm, other jwt members (get_unverified_header, PyJWTError), claims beyond str values (exp, aud), options dict, headers argument | PS1003, PS2001, PS2003 |
orjson | partial | 1 | default callable, other OPT_ flags, other orjson members (Fragment, JSONDecodeError) | PS2001, PS2003 |
urllib.request, urllib.error | partial | 2 | urlopen header keyword, other urllib.request members (build_opener, install_opener, urlretrieve), HTTPError attribute reads | PS2001, PS2003 |
urllib.parse | partial | 1 | urlparse, urljoin, urlunsplit, parse_qsl | PS2001 |
base64 | partial | 1 | b32, b16, a85, encodebytes | PS2001 |
hashlib | partial | 1 | blake2, sha3, sha224, new, pbkdf2_hmac, incremental update (no-argument constructor) | PS2001, PS2003 |
struct | partial | 1 | calcsize, unpack_from, non-literal format | PS2001 |
datetime | partial | 1 | timezone and tzinfo, utcnow, datetime.strftime | PS2001 |
time | partial | 1 | time_ns, ctime, process_time | PS2001 |
collections | partial | 1 | ChainMap | PS1106 |
functools | partial | 1 | reduce with a lambda, reduce with an initializer, partial, wraps, lru_cache, cmp_to_key, cache, total_ordering | PS2001, PS2002 |
itertools | partial | 1 | count, cycle (infinite), permutations, pairwise, batched, tee, dropwhile, compress | PS2001 |
operator | partial | 1 | itemgetter, attrgetter, methodcaller, and_, not_, getitem | PS2001 |
contextlib | partial | 1 | closing, redirect_stdout, ExitStack, contextmanager | PS2001 |
os | partial | 1 | scandir, system, urandom, cpu_count, kill, symlink, rmdir, getuid, keyword arguments (makedirs exist_ok) | PS2001, PS2003 |
posixpath | partial | 1 | commonpath, ismount, lexists | PS2001 |
pathlib | partial | 1 | rglob, absolute, rmdir, with_suffix, relative_to, resolve to str, PurePath | PS2001 |
stat | partial | 1 | S_IMODE, S_ISFIFO, S_ISSOCK, filemode | PS2001 |
fnmatch | partial | 1 | fnmatchcase, translate | PS2001 |
warnings | partial | 1 | warn with a category, simplefilter | PS2001 |
io | partial | 1 | TextIOWrapper, BufferedReader, io.open | PS1106 |
sys | partial | 1 | stdin, path, modules, getsizeof, getrecursionlimit, stdout.flush | PS2001 |
importlib | partial | 1 | import_module, reload | PS2001 |
inspect | partial | 1 | getsource, isclass, signature, iscoroutinefunction | PS2001 |
threading | partial | 1 | main_thread, Thread target is a callable, Timer, Lock in `with` | PS1003, PS1106, PS2001, PS2002 |
queue | partial | 1 | PriorityQueue, a queue without an element annotation, an unknown queue method, a bool element type | PS1001, PS1106, PS2001, PS2002 |
logging | partial | 1 | basicConfig(level=...), format args (`logging.info(fmt, a)`), exception, handlers (StreamHandler) | PS2001, PS2003 |
asyncio | partial | 1 | bare Queue annotation (element type needed), get_event_loop, sleep outside a coroutine | PS1001, PS2001, PS2002 |
subprocess | partial | 1 | Popen, getoutput | PS2001 |
socket | partial | 1 | socket(), gethostbyname | PS2001 |
ssl | partial | 1 | contexts (create_default_context) | PS2001 |
ctypes | partial | 1 | CDLL, c_int(...), sizeof of other types | PS2001 |
string | partial | 1 | capwords, Template | PS2001 |
bisect | partial | 1 | insort, bisect, key=, list[str] | PS2001 |
errno | partial | 1 | errorcode | PS2001 |
importlib.resources | partial | 1 | read_text, is_resource | PS2001 |
hmac | partial | 1 | hexdigest, digestmod= | PS2001 |
unicodedata | partial | 1 | ucd_3_2_0 (also: Latin-1 only) | PS2001 |
tempfile | partial | 1 | mkstemp, TemporaryDirectory | PS2001 |
atexit | partial | 1 | register of a function with arguments, unregister | PS2001 |
shutil | partial | 1 | make_archive, disk_usage, chown | PS2001 |
enum | partial | 1 | Flag, str-valued members, methods on the enum | PS2002 |
dataclasses | partial | 1 | field(), asdict, frozen=, order= and other options | PS1201, PS2001 |
random | partial | 1 | sample, gauss, Random, choices(k=) | PS2001, PS2003 |
csv | partial | 1 | DictReader, writer on a non-file | PS2001 |
textwrap | partial | 1 | TextWrapper | PS2001 |
copy | partial | 1 | copy of a user class | PS2001 |
argparse | partial | 1 | subparsers, nargs=, choices= | PS2003 |
platform | partial | 1 | processor | PS2001 |
calendar | partial | 1 | monthcalendar | PS2001 |
zipfile | partial | 1 | ZipFile | PS2001 |
tarfile | partial | 1 | TarFile | PS2001 |
typing, typing_extensions | partial | 2 | Any annotation, bare Callable, multi-arm union, optional of a multi-arm union, Literal annotation, Self return, TypeAlias declaration, PEP 695 type alias, PEP 695 TypeVar parameter, forward reference string, TypedDict class base, NamedTuple class base, NewType value, ParamSpec value, cast value, get_type_hints reflection, isinstance with a generic, __annotations__ read | PS1101, PS1102, PS1103, PS1104, PS1105, PS1106, PS2001, PS2002 |
PyPI top 100
The pinned packages of the PyPI top-100 corpus, with the fences that block them.
| Package | Version | Status | Definitions | Fenced | Top fences |
|---|---|---|---|---|---|
| certifi | 2026.7.22 | full | 5 | 0 | — |
| colorama | 0.4.6 | none | 77 | 48 | PS1204 (51), PS2002 (42), PS1001 (36) |
| python-dotenv | 1.2.4 | none | 75 | 42 | PS2002 (85), PS1106 (10), PS1001 (7) |
| filelock | 4.1.1 | partial | 641 | 238 | PS2002 (411), PS2001 (78), PS1103 (52) |
| h11 | 0.16.0 | none | 133 | 74 | PS2002 (106), PS1106 (17), PS1203 (15) |
| idna | 3.20 | none | 56 | 37 | PS2002 (46), PS2003 (23), PS1101 (7) |
| iniconfig | 2.3.1 | partial | 34 | 13 | PS2002 (6), PS1003 (5), PS1103 (4) |
| jmespath | 1.1.0 | none | 200 | 107 | PS1001 (93), PS2002 (14), PS1204 (9) |
| pyjwt | 2.15.1 | partial | 171 | 65 | PS2002 (55), PS1104 (20), PS2001 (15) |
| mdurl | 0.1.2 | none | 12 | 7 | PS2002 (15), PS2003 (2), PS2001 (1) |
| packaging | 26.3 | partial | 558 | 279 | PS2002 (214), PS1106 (90), PS1204 (52) |
| pathspec | 1.1.1 | none | 132 | 92 | PS2002 (108), PS1106 (21), PS1201 (20) |
| platformdirs | 4.13.0 | partial | 388 | 154 | PS2002 (131), PS1102 (33), PS2001 (22) |
| pytz | 2026.5 | partial | 102 | 32 | PS2002 (30), PS1001 (18), PS2001 (3) |
| shellingham | 1.5.4 | none | 25 | 19 | PS2002 (27), PS1001 (18), PS2001 (1) |
| trove-classifiers | 2026.9.21.13 | partial | 0 | 0 | PS2002 (1) |
| tzdata | 2026.5 | full | 0 | 0 | — |
| zipp | 4.1.1 | none | 75 | 57 | PS1001 (50), PS2002 (15), PS2001 (3) |
Fence census
Fence diagnostics across the pinned PyPI corpus, by code. A fence is a reported, numbered divergence — never a silent miscompile.
| Code | Title | Count | Packages |
|---|---|---|---|
PS2002 | construct not supported | 1306 | 16 |
PS1001 | annotation missing or not supported | 301 | 13 |
PS2001 | stdlib name not supported | 209 | 15 |
PS1106 | annotation names a type the compiler does not take | 197 | 9 |
PS1204 | class body statement | 125 | 7 |
PS1103 | generic alias annotation | 121 | 8 |
PS1101 | union annotation | 92 | 9 |
PS2003 | call arguments not supported | 79 | 10 |
PS1201 | decorator | 72 | 8 |
PS1104 | dynamic or structural annotation | 67 | 6 |
PS1003 | type mismatch | 50 | 8 |
PS1102 | Optional annotation | 42 | 5 |
PS1203 | class header form | 25 | 5 |
PS1105 | forward reference annotation | 14 | 6 |
PS2004 | operator or operand not supported | 11 | 5 |
PS2006 | decorator expression is not a typed callable | 6 | 3 |
PS4203 | finalizer refused | 1 | 1 |
PS4201 | dynamic attribute protocol refused | 1 | 1 |
History
| Date | Commit | Packages full | Partial | None | Fences |
|---|---|---|---|---|---|
| 2026-10-25 | d4987c81acf4 | 2 | 6 | 10 | 2721 |
| 2026-10-26 | 9b915eea78b9 | 2 | 7 | 9 | 2719 |
| 2026-10-27 | 95debbd232c8 | 2 | 7 | 9 | 2719 |
| 2026-10-28 | 7f67db8da943 | 2 | 7 | 9 | 2719 |