• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

source-academy / py-slang
86%

Build:
DEFAULT BRANCH: main
Repo Added 10 Mar 2026 12:15PM UTC
Files 158
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

LAST BUILD ON BRANCH main
branch: SELECT
CHANGE BRANCH
x
  • No branch selected
  • 082
  • NearleyDSL
  • add-autocomplete
  • add-chapter-2-documentation
  • add-chapter-3-documentation
  • add-complex
  • add-complex-to-docs
  • add-coveralls
  • add-docs-spread-expression
  • add-documentation
  • add-eslint
  • add-for-loops
  • add-grammar-types
  • add-multiple-resolver-validator-errors
  • add-print-llist-pvml-stepper
  • add-tco
  • adopt-black-python
  • builtin-shadowing
  • bump-common-cse-machine-0.3.1
  • bump-conductor-0.8.0
  • bump-conductor-0.8.3
  • bump-pynter-wasm-0.2.0
  • chore/no-cjs-builds
  • ci-native-pynter-parity
  • conditional-bool-check-py2js-stepper
  • cpython-test-mode-224
  • cse-frame-labels
  • cse/strict-bool-if-ternary-436
  • data-visualizer-none-display-value
  • dependabot/npm_and_yarn/babel/core-7.29.7
  • dependabot/npm_and_yarn/brace-expansion-1.1.16
  • dependabot/npm_and_yarn/brace-expansion-1.1.21
  • dependabot/npm_and_yarn/browserslist-4.28.8
  • dependabot/npm_and_yarn/flatted-3.4.2
  • dependabot/npm_and_yarn/handlebars-4.7.10
  • dependabot/npm_and_yarn/handlebars-4.7.9
  • dependabot/npm_and_yarn/humanfs/node-0.16.8
  • dependabot/npm_and_yarn/ip-address-10.2.0
  • dependabot/npm_and_yarn/ip-address-10.4.0
  • dependabot/npm_and_yarn/ip-address-10.7.2
  • dependabot/npm_and_yarn/js-yaml-3.15.0
  • dependabot/npm_and_yarn/js-yaml-3.15.1
  • dependabot/npm_and_yarn/linkify-it-5.0.2
  • dependabot/npm_and_yarn/lodash-4.18.1
  • dependabot/npm_and_yarn/markdown-it-14.1.1
  • dependabot/npm_and_yarn/markdown-it-14.2.0
  • dependabot/npm_and_yarn/markdown-it-14.3.2
  • dependabot/npm_and_yarn/mathjs-15.2.0
  • dependabot/npm_and_yarn/picomatch-2.3.2
  • dependabot/npm_and_yarn/serialize-javascript-7.0.5
  • dependabot/npm_and_yarn/tar-7.5.16
  • dependabot/npm_and_yarn/tar-7.5.21
  • dependabot/npm_and_yarn/tar-7.5.22
  • deploy-docs-to-python-subfolder
  • dev-under-windows/spawn-binstubs
  • div
  • docs-estepper-note-update
  • docs-local-source-academy-setup
  • docs-python-estepper-spec
  • docs-python-stepper-spec
  • docs-sourceacademy-sicp-not-published
  • docs-sourceacademy-sicp-published
  • docs/add-documentation-section
  • docs/operator-precedence-spec
  • docs/print-llist-and-list-highlighting
  • e-stepper-cse-snapshots
  • e-stepper-design-note
  • e-stepper-engine
  • e-stepper-note-no-in
  • equality
  • estepper-book-wording
  • estepper-breakpoint
  • estepper-declarations-not-evaluated
  • estepper-explicit-lookups
  • estepper-frame-ids
  • estepper-gutter-breakpoints
  • estepper-hide-empty-frames
  • estepper-keep-garbage-objects
  • estepper-lambda-return
  • estepper-list-home-holds
  • estepper-no-literal-parens
  • estepper-objects-keep-home
  • estepper-section4
  • estepper-shadow-builtins
  • estepper-snapshot-no-empty-frames
  • estepper-snapshot-roots
  • estepper-tail-call
  • estepper-while-unfolds
  • feat/add-module-loader
  • feat/conductor-data-visualizer
  • feat/conductor-integer-type
  • feat/conductor-stepper
  • feat/global-keyword
  • feat/make-conductor-changes
  • feat/module-closure-sync-fastpath
  • feat/py2js-draw-data
  • feat/py2js-rest-params-and-spread
  • feat/stepper-breakpoint
  • feat/stepper-output-box
  • feature-191-stepper-input
  • feature-383-gutter-breakpoints
  • feature-385-stepper-imports
  • feature/cse-machine-plugin
  • feature/ev3-hardware-support
  • feature/standalone-cli
  • finish-pynter-rename
  • fix-187-nonlocal-error-message
  • fix-211-reassignment-error-location
  • fix-211-reassignment-wording
  • fix-214-exponent-without-dot
  • fix-257-breakpoint-any-arity
  • fix-341-py2js-cyclic-print
  • fix-380-full-python-keywords
  • fix-385-module-substitution-test
  • fix-390-len-docstring
  • fix-391-jsdoc-font-bug
  • fix-394-triple-quote-line-tracking
  • fix-397-py2js-predefined-function-error-location
  • fix-4041-annotate-globals-in-frames
  • fix-427-sound-module-callback-budget
  • fix-469-self-name-free
  • fix-alternate-alternative-wording
  • fix-backslash-line-continuation
  • fix-carriage-return
  • fix-closures-in-lists-snapshot
  • fix-cpython-batch-runner-syntax-warning
  • fix-docs-deploy
  • fix-docs-makefile
  • fix-documentation
  • fix-error-type-names
  • fix-js-comments-in-python-docs
  • fix-lexer-build-warning
  • fix-ll-prelude
  • fix-predicate-type-error-message
  • fix-prelude-dual-mode-reduce-callback
  • fix-premature-frame-transition-on-return
  • fix-print-display-name
  • fix-py2js-global-shadowing
  • fix-py2js-nested-async-module-callback
  • fix-py2js-stdlib-error-message
  • fix-pynter-list-comparison
  • fix-pynter-wasm-blob-worker-hang
  • fix-pynter-wasm-cwrap-null
  • fix-pynter-wasm-fault-trailer
  • fix-pynterwasm-hang
  • fix-settimeout-worker-teardown
  • fix-stdlib
  • fix-stepper-maxmin-arity
  • fix/233-currentline-synthetic-nodes
  • fix/298-revert-verbose-builtin-repr
  • fix/360-document-set-timeout
  • fix/478-headless-draw-data
  • fix/491-flush-prints-on-error
  • fix/493-wasm-true-division-by-zero
  • fix/accumulate-fold-direction
  • fix/complex-abs-hypot
  • fix/conductor-npm-dep
  • fix/cse-270-293-302-v2
  • fix/cse-loop-spec-compliance
  • fix/cse-machine-display-bugs-228-229
  • fix/docs-pair-mutators-link
  • fix/draw-data-min-args
  • fix/evaluator-error-flat-line-shape
  • fix/grouping-paren-source-range
  • fix/llist-module-interop
  • fix/llist-module-interop-stepper
  • fix/misc-jsdoc-duplicate-declarations
  • fix/multiple-prints
  • fix/nested-lambdas
  • fix/nonlocal-and-scope-validators
  • fix/nonlocal-multi-name
  • fix/preprocessing-error-consistency
  • fix/prepublish-only
  • fix/pvml-remove-instruction-limit
  • fix/py-slang-190-input-popup
  • fix/py2js-linked-list-sharing
  • fix/range-only-in-for-header
  • fix/reserve-range-name
  • fix/resolver-error-caret-offset
  • fix/sicp-release-version-guard
  • fix/sicp-version-bump-0.2.0
  • fix/stepper-binding-substitution-timing
  • fix/stepper-lambda-param-capture
  • fix/stepper-reject-chapters-above-2
  • fix/tail-call-optimisation
  • function-source-in-snapshots
  • global
  • issue-189-cse-machine-breakpoint
  • jspy
  • list-indexing-multiplication-299
  • local-demo
  • main
  • migrate-stdlib
  • more-package-improvements
  • operators
  • parser/non-associative-comparisons
  • pass
  • port-stdio
  • pr1-directory-restructure
  • pr2-svml-compiler
  • publishing
  • pvml-browser-revival
  • pvml-draw-data
  • pvml-math-domain-and-runner-coverage
  • pvml-module-loading
  • pvml-native-pynter-parity
  • py2js-builtin-shadowing
  • py2js-engine
  • py2js-local-file-imports
  • pynter-parity-report-script
  • pynter-skip-gate
  • pynter-wasm-rebuild
  • pyodide-asset-download-race
  • pyodide-callback-proxy-lifetime
  • pyodide-evaluator
  • pyodide-module-imports
  • pyodide-torch
  • python-2-support
  • python-3-doc
  • python-4-doc-update
  • python-4-docs
  • python-4-support
  • python-package
  • remove-envsteps
  • remove-equal-215-on-equality
  • remove-list-length
  • remove-unused-packages
  • renamings
  • repl-engine-rename-and-wasm
  • repl-multi-chunk-evaluator-tests
  • set-timeout-py2js
  • single
  • skip-complex-number-tests-pynter
  • some-fixes
  • standalone-repl-cjs
  • step-limit
  • stepper-builtin-hover-popup
  • stepper-cycle-display
  • stepper-def-after-step-gone
  • stepper-honor-configured-step-limit
  • stepper-import-reassignment
  • stepper-import-shadowing
  • stepper-import-timing
  • stepper-library-function-popup
  • stepper-library-one-step
  • stepper-module-callback
  • stepper-module-function-popup
  • stepper-no-repl-result
  • stepper-opaque-thumbnails
  • stepper-operator-conformance
  • stepper-self-ref-declaration
  • stepper-unbound-local-447
  • svml-sinter-repl
  • test-py2js-set-timeout-reschedule-chain
  • test/py-cse-plugin
  • test/pynter-conditional-bool
  • timeout
  • undeclared
  • update-docs-chapter-1-2
  • update-docs-chapter-3
  • wasm-builtins-slice-488
  • wasm-compiler
  • wasm-compiler-chapter-4
  • wasm-compiler-conductor-integration
  • wasm-error-message-alignment
  • wasm-fix-shadow-stack-unary-comparison
  • wasm-module-loading
  • wasm-operator-conformance
  • wasm-str-repr
  • wasm/strict-bool-if-ternary-437
  • worktree-issue-223-local-var-allocation

14 Oct 2026 10:52PM UTC coverage: 86.499% (-0.001%) from 86.5%
38650547445

push

github

web-flow
E-stepper: leave frames without bindings out of the CSE snapshot (#548)

* E-stepper: leave frames without bindings out of the CSE snapshot

The stepper does not draw a frame without bindings: the call runs in the frame
the function extends. Its CSE snapshot still sent such frames, and closures made
in them referred to them, so the host drew an empty frame as the closure's home.
The snapshot now omits them and names the nearest drawn ancestor wherever one is
referred to (closures, parents, the active frame).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* E-stepper snapshot: keep the empty built-ins root

Hiding frames without bindings also hid the built-ins root in Python §1, where it
is empty, leaving the parent of Global dangling (review of #548).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>

5676 of 7017 branches covered (80.89%)

Branch coverage included in aggregate %.

4 of 4 new or added lines in 2 files covered. (100.0%)

12378 of 13855 relevant lines covered (89.34%)

209202.38 hits per line

Relevant lines Covered
Build:
Build:
13855 RELEVANT LINES 12378 COVERED LINES
209202.38 HITS PER LINE
Source Files on main
  • Tree
  • List 158
  • Changed 2
  • Source Changed 2
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses

Recent builds

Builds Branch Commit Type Ran Committer Via Coverage
38650547445 main E-stepper: leave frames without bindings out of the CSE snapshot (#548) * E-stepper: leave frames without bindings out of the CSE snapshot The stepper does not draw a frame without bindings: the call runs in the frame the function extends. Its C... push 14 Oct 2026 11:10PM UTC web-flow github
86.5
38582402575 estepper-snapshot-no-empty-frames Merge 894d846ce into 3fdb8df1c Pull #548 14 Oct 2026 02:57PM UTC web-flow github
86.5
38579808820 estepper-snapshot-no-empty-frames Merge c5c8a734c into 3fdb8df1c Pull #548 14 Oct 2026 02:34PM UTC web-flow github
86.5
38552828090 main CSE snapshots: keep the frames of closures inside lists (#546) * e-stepper: a tail call says E1 is no longer needed here, not in the program Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * e-stepper: follow the book's wording: built... push 14 Oct 2026 11:12AM UTC web-flow github
86.5
38550647803 fix-closures-in-lists-snapshot Merge 3452d3970 into 442dec1a1 Pull #546 14 Oct 2026 10:53AM UTC web-flow github
86.5
38549925501 fix-closures-in-lists-snapshot Merge bf58882a4 into 442dec1a1 Pull #546 14 Oct 2026 10:44AM UTC web-flow github
86.5
38142840717 main e-stepper: follow the wording of SICPy §3.2 (#544) * e-stepper: a tail call says E1 is no longer needed here, not in the program Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * e-stepper: follow the book's wording: built-in, and a n... push 11 Oct 2026 01:36PM UTC web-flow github
86.5
38136706508 estepper-book-wording Merge ba4d77f91 into 293955f85 Pull #544 11 Oct 2026 12:03PM UTC web-flow github
86.5
38118773749 main e-stepper: do not draw frames without bindings (#542) * e-stepper: a frame without bindings is not drawn; it is labelled like the frame it extends Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * e-stepper: a frame whose only binding... push 11 Oct 2026 06:58AM UTC web-flow github
86.49
38117610891 estepper-hide-empty-frames Merge 446cb7396 into 6ab786fda Pull #542 11 Oct 2026 06:36AM UTC web-flow github
86.49
See All Builds (1105)
  • Repo on GitHub
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc