Skip to content

What runs today

This page is the plain list of what d/Python can do right now, what it cannot do yet and why, and what the browser playground can and cannot do, with the date each thing was measured. After it you will know exactly what to expect before you start.

d/Python is an initial, tested implementation of a broader set of promises. This page is the honesty table: every row points at test results, and a row moves only when the results move. The source commit and the measurements come from the bundle this site was built from; the section marked this build is regenerated every time the site is built.

Measured in this browser, when this site was built

What was measured Value How
Test programs that print exactly the expected text in this browser build 73 / 73 every single-file program was compiled and run by this site's own compiler and runtime when the site was built; see the test programs
Test programs made of several files, tested on the command line instead 4 the browser compiler takes one file at a time
Intents on d/OS's official list that can be called from Python 206 see intent coverage
Intents proven by a test that runs in both d/Python and d/BASIC 121 proven in part; none is called complete
Language features supported in part / not yet / complete 45 / 8 / 0 the compatibility table, as of 2026-09-12
Built-in functions supported in part / not yet / complete, of 69 46 / 23 / 0 the builtins table
Reference Python every test is checked against CPython 3.9.6 fixed in advance, down to the exact build
This build 2026-09-14 the footprint page lists the module sizes
Instructions a program may run before the browser gets a turn 5,000 why an infinite loop cannot freeze the page

Built, and tested

Piece State
Front end: the RustPython parser (0.4.0, MIT), Python analysis and translation, error messages with a line and column built; 62 single-file test programs compile and match in this browser
Shared back end (dos-dbc-backend): emitting bytecode, stack accounting, relocation, optimization, and checking every image it produces built; lifted out of the d/BASIC compiler, whose test suite kept passing
Integers of any size in a shared library file, .dbl, with Python's //, %, **, divmod, pow with a modulus, shifts and bit operations built; stored as decimal strings and charged against the runtime's budgets; not the final, fast representation
Unicode strings and bytes as different types; slicing, search, split, strip, replace, join, encode, repr, ascii, f-strings with !r/!a built; the compatibility table names the missing methods
Lists, tuples, ordered dictionaries with live views, sets and frozensets, ranges with any bounds; comprehensions; iter/next, enumerate, zip, map, filter, sorted, reversed; generator expressions built; one element type per list, dictionary or set
Functions with positional-only, keyword-only, *args, **kwargs; closures with nonlocal; lambdas; direct and mutual recursion with a catchable limit of 128 calls built
Classes with single inheritance, super(), __str__, __repr__, __bool__, __len__, __call__, __iter__/__next__, __enter__/__exit__, __index__; isinstance/issubclass built
Exceptions: raise, try/except/else/finally, assertions, catchable ZeroDivisionError, IndexError, KeyError, ValueError, TypeError, EOFError, StopIteration built
Modules and packages: sibling imports, aliases, from-imports, __init__.py, relative imports, circular imports, __main__ guards; compiled into one .dbc built on macOS (the browser compiler takes one source file)
Console programs with input() on the shared CONSOLE.READ_LINE_RESULT service; window programs with open, draw, resize, key, pointer and close built; this browser and macOS
Floats and complex numbers that behave like Python's: /, round, format, float(), shortest round-trip printing, exact integer/float comparison this browser and macOS; checked against the reference CPython build
Typed objects (DOBJ) that encode to bytes and decode with their links intact; copy and paste through the d/OS pasteboard; native and negotiated drag and drop encoding and decoding in this browser; the pasteboard and drags on macOS, where 9 pasteboard and all 11 drag intents have the same test in both languages
On-screen widgets through the shared UI engine; 24 widget intents with the same test in both languages built; this browser and macOS
The dos module: all 206 callable intents can be called from Python, with fixed buffers, decimals and calls that return several results built; 121 intents have run in tests written in both languages
Calling published shared libraries with exact signatures and hashes; DPK2 packages with resources, icons and developer seals; installation tests built on macOS
Testing: 77 programs under CPython 3.9.6 and the real runtime, the same test in both d/BASIC and d/Python for every tested intent, fixed byte-for-byte checks, and deliberate negative tests that prove the harness notices a wrong answer every build
macOS kit: both programs, seven compiled examples, 21 checks that it works from any folder built
Browser playground: compiler, runtime and font module as WebAssembly, console input, WebGL2 graphics, embeds that stand alone built; this site, tested 12 September 2026
Linux and Windows: the compiler, runtime and command-line suites pass on both; the check of the exported WebAssembly passed with nothing skipped 12 September 2026; see Conformance

Not yet, and said so

Piece Honest state
Custom binary operators on your own classes (__add__, __eq__ and friends), moves between two different applications, % formatting and str.format not yet supported
Generator functions, yield, send/throw/close, async not yet supported
Descriptors, metaclasses, multiple inheritance, reflection, dynamic imports, getattr/setattr, property, staticmethod/classmethod not yet supported
Collections that mix types, changing a variable's type, and/or whose result could be either type the compiler explains why; what is missing is a way to carry a type tag with each value (the message calls it the tagged-value adapter)
String repetition with *, .upper()/.lower(), % formatting, str.format not implemented; the compiler names each one
The standard library, open(), hashlib, contextlib, pip packages not yet; d/OS modules supply the platform's services instead
Custom exception classes, traceback objects, exception chaining the compiler stops and says so
Files, network and sound in the browser proven natively on macOS; this playground attaches no part of the host that supplies files, sound or the network, so those programs are declined before they start
The DATA database and artifact store 40 intents can be called from Python and none has a passing test yet; see intent coverage
A way to type text into a GUI field, a physical input method editor, testing across browsers and for performance separate work, named in the playground's test report
Copy/paste and drag off macOS; terminal input() on Windows the window host itself is cross-platform (winit and wgpu) and opens a real window on Linux and Windows with a display; what is still macOS-only is the copy/paste and drag native bridge, declined by name elsewhere, and terminal input(), which works on Linux but not yet on Windows (the Linux corpus run passed 65 of 66, the one exception being the input() program)
Real d/OS hardware the platform's test results, not the language's

Measured on macOS

Measured on 12 September 2026 (see Conformance):

Measurement Value
Tests in the selected set for the release build 325 passing
Test programs whose debug and release builds produce identical compiled files 77 of 77
Console command-line program (with debug information) 6,872,672 bytes
Native graphics host program (with debug information) 8,714,704 bytes
Tic-tac-toe compiled program 17,968 bytes (measured natively, 11 September 2026)
Object identities available per run 256
Recursion limit 128 calls, catchable
Room for a program's strings and constants 65,535 bytes

Whole-file sizes include debug information; they are not the memory a program uses or the cost of a feature. See Footprint & Cost for what each figure does and does not mean.

When something above is missing, the program stops and says so by name, on every host. It does not pretend.