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

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

Build:
DEFAULT BRANCH: main
Ran 27 Jul 2026 05:13AM UTC
Jobs 1
Files 129
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 05:07AM UTC coverage: 92.224% (+0.3%) from 91.887%
30238875600

push

github

steve-downey
Merge step L20: multiple values (Track C)

n-ary return channel per the plan's literal wording: value_list<Core, MaxValues>
carries a possibly-empty sequence, single-value contexts take the primary, and
missing values pad with nil. Each closure-backend operation becomes a pair --
eval_direct_values / apply_function_value_values return the whole list,
eval_direct / apply_function_value adapt to one value -- and only tail positions
recurse through the primitives, which is ANSI CL's multiple-value-context rule.

values is an ordinary function, not a special operator: builtin_op::values,
installed as VALUES by every default_env overload, so (values 1 2) is a plain
core_application and #'values / funcall / apply all work. An earlier attempt at
this step introduced a core_values node instead, because it believed the builtin
switch inside anchor 1d30e953 could not be edited. That constraint was false --
see the anchor section of AGENTS.md -- and the node went away with the reason for
it. multiple-value-bind stays a special operator lowering to a real core_lambda
that gets called, so it inherits implicit progn, arity checking, capture, and
L16's dynamic-binding rule.

Three ANSI divergences recorded rather than glossed: DIV-0018 (the sender backend
diagnoses both forms rather than truncating; the other side of DIV-0017),
DIV-0019 (return-from and throw carry only the primary value, because widening
the exit-record payloads costs MaxValues x 256 slots in every env_arena), and
DIV-0020 (the operator set is these two forms, and MaxValues is 8 against ANSI's
required 20).

795 tests pass; lint clean; frozen smdscheme tree untouched.

727 of 764 new or added lines in 12 files covered. (95.16%)

53 existing lines in 1 file now uncovered.

11006 of 11934 relevant lines covered (92.22%)

272.94 hits per line

Uncovered Changes

Lines Coverage ∆ File
17
80.93
2.4% src/smd/smdlisp/closure/cps_code.hpp
11
98.06
0.18% src/smd/smdlisp/closure/cps_code.test.cpp
5
82.56
-0.26% src/smd/smdlisp/closure/eval_direct.hpp
2
99.51
0.04% src/smd/smdlisp/closure/eval_direct.test.cpp
2
88.79
0.41% src/smd/smdlisp/elaborator/elaborate.hpp

Coverage Regressions

Lines Coverage ∆ File
53
82.56
-0.26% src/smd/smdlisp/closure/eval_direct.hpp
Jobs
ID Job ID Ran Files Coverage
1 30238875600.1 27 Jul 2026 05:13AM UTC 129
92.22
GitHub Action Run
Source Files on build 30238875600
  • Tree
  • List 129
  • Changed 12
  • Source Changed 12
  • Coverage Changed 12
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #30238875600
  • d63a6d26 on github
  • Prev Build on main (#30237515563)
  • Next Build on main (#30272326226)
  • 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