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

steve-downey / compile-time-scheme / 30234135800
92%

Build:
DEFAULT BRANCH: main
Ran 27 Jul 2026 03:19AM UTC
Jobs 1
Files 112
Run time 1min
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

27 Jul 2026 03:14AM UTC coverage: 91.378% (+0.2%) from 91.136%
30234135800

push

github

steve-downey
Merge step L16: special variables and dynamic binding (Track A)

let of a symbol marked special by defvar/defparameter now binds
dynamically, setq of a special assigns the innermost dynamic binding, and
every exit path restores -- normal completion, return-from, and throw --
by reusing L15's unwind-protect shape rather than growing a second unwind
path. Parity in both evaluators, as L14 and L15 required.

The save/restore records go on a stack owned by env_arena, beside L15's
catch frames, for L15's reason: env is copied to make a lexical capture,
so a saved value living there would be duplicated into every closure
materialized inside the extent, each copy independently restorable. The
special *mark* is the mirror image -- lexical information, deliberately
carried across copies -- and EnvTest - DynamicBindingsAreNotCarriedByAnEnvCopy
pins both halves. Shallow binding means a special has one store cell, so
env::set_value is unchanged and setq of a special needs no case analysis
at all.

Merge criteria are the plan's, plus a lexical control the worker added on
its own initiative: the same program shape over a never-declared name must
answer 1, because "returns 2" alone is equally consistent with having
broken let into a global assignment. That is the test that makes the
criterion mean what it claims.

Orchestrator verification: make compile (0, and warning-free on a forced
full rebuild of the smdlisp tree), make test (646/646), make lint (all
hooks), verify-transclusions (56 resolved, 0 failures). Diff confined to
closure/ plus docs; elaborator/ needed no change because let/let* already
lower to lambda applications; smdscheme untouched. Three new UUID anchor
pairs, none nested, none deleted -- every pair in the touched files still
opens and closes before the next opens.

DIV-0014 filed: dynamically binding a special with no value is a diagnosed
error, since shallow binding has no cell to save.

MaxBindings==16 was declined and stays open; see the follow... (continued)

341 of 348 new or added lines in 6 files covered. (97.99%)

1 existing line in 1 file now uncovered.

8892 of 9731 relevant lines covered (91.38%)

224.53 hits per line

Uncovered Changes

Lines Coverage ∆ File
3
97.88
-0.07% src/smd/smdlisp/closure/cps_code.test.cpp
2
82.82
0.88% src/smd/smdlisp/closure/eval_direct.hpp
1
78.53
0.34% src/smd/smdlisp/closure/cps_code.hpp
1
99.19
-0.81% src/smd/smdlisp/closure/env.hpp

Coverage Regressions

Lines Coverage ∆ File
1
78.53
0.34% src/smd/smdlisp/closure/cps_code.hpp
Jobs
ID Job ID Ran Files Coverage
1 30234135800.1 27 Jul 2026 03:19AM UTC 112
91.38
GitHub Action Run
Source Files on build 30234135800
  • Tree
  • List 112
  • Changed 6
  • Source Changed 6
  • Coverage Changed 6
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #30234135800
  • 47bd2613 on github
  • Prev Build on main (#30225349898)
  • Next Build on main (#30236977465)
  • Delete
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