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

source-academy / py-slang / 29887602191
86%

Build:
DEFAULT BRANCH: main
Ran 22 Jul 2026 03:22AM UTC
Jobs 1
Files 114
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

22 Jul 2026 03:06AM UTC coverage: 86.179% (-0.08%) from 86.256%
29887602191

push

github

web-flow
Native Pynter: feature parity with py-slang (best effort) + testing + complex numbers (#260)

* Native Pynter: complex numbers, opcode allow-list, rest parameters, and real result-capture

This branch supersedes the earlier version of this PR: it's rebuilt on top
of a much more complete native-Pynter opcode allow-list, adds full
complex-number support end-to-end, and fixes several real bugs found while
verifying everything against the actual native binary (not just compiling).

Opcode allow-list (PYNTER_ADDITIONAL_SUPPORTED_OPCODES, opcodes.ts):
- NEWITER/FOR_ITER (for-loops), FLOORDIVG/FLOORDIVF (//), POWG (**), and
  LGCC (complex literals) are now allow-listed past PYNTER_OPCODE_MAX --
  the compiler already emitted all of these unconditionally; the assembler
  was the only thing gating them out.
- Fixed range()'s primitive index (builtins.ts): it was 30, which collides
  with native's own list_to_string slot -- range() actually lives at
  native's dedicated slot 131. This is why for-loops still faulted even
  after allow-listing NEWITER/FOR_ITER.
- Fixed the NEWA opcode to carry the list literal's element count as an
  operand (native's op_new_a pre-sizes the array up front instead of
  growing it) -- the old nullary encoding corrupted stack balance for
  every list literal once native's own STAG became a strict, non-growing
  bounds check (issue #294/#299).

Complex numbers (opcodes.ts, pvml-compiler.ts, pvml-assembler.ts):
- LGCC now serializes for native Pynter targets: two inline float32s
  (real, imag), matching native's own op_lgc_c wire format, instead of
  throwing "complex numbers are not supported when compiling for native
  Pynter".

Rest parameters (`def f(*args): ...`) for native Pynter:
- Removed PVMLCompiler's blanket "*args not supported for native Pynter"
  rejection.
- pvm_function_t's former padding byte is now has_rest_param, serialized
  by pvml-assembler.ts and read by native's op_call/op_call_t (see the
  matching pynter-sid... (continued)

4378 of 5463 branches covered (80.14%)

Branch coverage included in aggregate %.

45 of 82 new or added lines in 9 files covered. (54.88%)

1 existing line in 1 file now uncovered.

9427 of 10556 relevant lines covered (89.3%)

178758.11 hits per line

Uncovered Changes

Lines Coverage ∆ File
17
62.84
-17.55% src/pvml-runner.ts
10
88.75
2.1% src/tests/utils.ts
8
78.75
-0.46% src/engines/pvml/pvml-assembler.ts
1
92.44
-1.53% src/engines/pvml/opcodes.ts
1
79.26
0.1% src/engines/pvml/pvml-interpreter.ts

Coverage Regressions

Lines Coverage ∆ File
1
78.75
-0.46% src/engines/pvml/pvml-assembler.ts
Jobs
ID Job ID Ran Files Coverage
1 29887602191.1 22 Jul 2026 03:22AM UTC 114
86.18
GitHub Action Run
Source Files on build 29887602191
  • Tree
  • List 114
  • Changed 12
  • Source Changed 11
  • Coverage Changed 11
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #29887602191
  • bda1a257 on github
  • Prev Build on main (#29818259816)
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