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 | 62 / 62 | 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 | 191 | see intent coverage |
| Intents proven by a test that runs in both d/Python and d/BASIC | 86 | proven in part; none is called complete |
| Language features supported in part / not yet / complete | 36 / 9 / 0 | the compatibility table, as of 2026-09-12 |
| Built-in functions supported in part / not yet / complete, of 69 | 42 / 27 / 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-12 | 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 |
| 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 191 callable intents can be called from Python, with fixed buffers, decimals and calls that return several results |
built; 86 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: 66 programs under CPython 3.9.6 and the real runtime; 416 tests pass; the same test in both d/BASIC and d/Python; byte-for-byte reference files; negative controls | the repository, 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 |
|---|---|
float beyond literals, true division /, round(), float formatting |
not yet; the number representation is shared with d/BASIC, and Python's float rules must be proven before they are exposed |
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, .upper()/.lower(), format specifications, % 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 |
| Drag and drop, the pasteboard, messaging between programs (DOBJ), the DATA database and artifact rows | 25 SERVICE intents and 40 DATA intents can be called from Python, and none has run in a test; listed as not yet in the 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 |
Terminal input() on Linux and Windows, native window hosts there |
the compiler, runtime and command-line suites pass on both (12 September 2026), but the raw keyboard input path is macOS-only: on Linux, 65 of the 66 test programs pass, and the one that calls input() is declined with SERVICE_ROUTE_UNAVAILABLE; window hosts exist only on macOS |
| 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 default suite | 416 passing |
| 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.