diff --git a/README.md b/README.md index ccf24c9..6f0e814 100644 --- a/README.md +++ b/README.md @@ -64,6 +64,8 @@ Pinned to `v3.15.0rc1` today and moving to `v3.15.0` when it ships on 1 October Every lesson is a notebook with a Colab badge on it, so there is nothing to install and nothing to build. Each one is executed end to end in CI on 3.15.0rc1 and on 3.14 before it merges, and every claim it makes about CPython carries a file, a line range and a symbol that `refcheck` resolves against the pinned tree. +Where a cell prints something different on the two versions, the notebook says so, in a note under the cell or in a paragraph near the top. Those notes are checked rather than trusted: CI runs every lesson on both interpreters, compares the output cell by cell, and fails both when a cell that differs has no note and when a note is left on a cell that has stopped differing. Sixty four cells across the twelve lessons carry one today. A note about the reader's own machine rather than the version, like how many files are in their standard library, is marked as such, because two recordings cannot decide that one. + Vocabulary works the same way. There is one definition per term in [GLOSSARY.md](GLOSSARY.md), and a lesson links into it rather than explaining a word it explained forty lessons ago or assuming you remember one. Each entry says what the word means and then says the thing people reliably get wrong about it, and where a definition rests on something in CPython rather than on the language reference it carries a citation like everything else here. Lessons do not invent a fresh example each time either. There are three programs, they are fixed, and they live in `pyxray.programs`. `L0` is `answer = 6 * 7`, one line, small enough that its bytecode and its tree and its symbol table fit on the screen together. `L1` is an iterative Fibonacci, and one call to it is enough for the interpreter to specialize the two instructions in its loop. `L2` is a small linked structure carrying a class, a generator, a closure, a dict, a `try`/`except`/`finally` and, on request, a reference cycle. Meeting a new program and a new subsystem in the same lesson is two jobs, and the one most readers drop is the subsystem.