Missing features

Known gaps and closed Pine Script™ v6 items — 0.6.4 convert-to-v6; 0.6.3 hosted runner; 0.6.2 P1p official builtins 0 MISMATCH; 0.6.1 correctness follow-up on 0.6.0 parity.

This page

Missing features

Abstract

“Missing” in PYNE is a moving frontier. As of 2026-09-14 (hoox-pyne 0.6.4), core v6 support remains very high (~99%+ for core language), with post-launch TV items closed (multiline strings, library export const, footprint mocks, risk enforcement, matrix LA, compile-mode strategy, drawing GC, …) plus open-source corpus parse/Runtime hardening, incremental bar-mode TA (including 0.3.10–0.3.12 kernels), alert engine + L2 webhooks, series caps, warm-compile, pending-fill averaging, timeframe.change (intraday buckets + 0.6.0 D/W/M exchange calendar), package Runtime SoT (pynescript.runtime; backend.runtime is a shim), compile object-mode residual recovery (UDF locals, nopython None/unicode, matrix handles, UDT returns, x = switch, drawing copy, int(na), round() extras, import stubs, color type dispatch, nested UDT methods), type-aware intraday risk enforcement on both brokers, intrabar var rollback on realtime ticks, request.security barmerge on HTF resample paths, and linter legacy-rule retirements. Remaining gaps cluster into optional set0x community-corpus plot parity (P1p official builtins closed), by-design platform differences, and editor-only features. Incremental ta.nvi/ta.pvi/aroon/dpo/donchian/kst and Supertrend mid±factor·ATR goldens have landed.

Authoritative narrative: docs/missing_features.md. Canonical IDs: docs/ROADMAP.md (2026-08-17).

Conceptual model

Diagram

Rendering…

Interface surface

Recently completed (do not re-open as “missing”)

Summarized — full prose in source doc:

AreaNotes
Multiline """ / '''Lexer + LexerBase + unparser
Library export const + types/enumsParse/AST/runtime registry
UDT sort_field on array/matrix sortImplemented
UDT sort_field on array.binary_search* (August 2026)Implemented (interpret + compile, 0.3.6)
once conditional structure (August 2026)Implemented in 0.4.4 — parse/unparse, interpret (confirmed-bar latch + realtime re-fire), compile historical flags. Statement-only.
input.*.activeMetadata-driven
Dynamic request.*Shared resolvers; mock/feed scaling
Enums runtime + input.enumType kind + LSP partial
Strategy open/closed trades, risk, OCA, commissionGolden tests
Drawing *.all, plot registry, max_*_count GCEffects recorded; GC on package + Pro + AXIS
Numba compile + object mode + warm-compile (H2)Disk IR cache, prewarm API/CLI, deploy defaults
Compile object-mode residuals (0.3.16–0.3.17)UDF locals / free-series, nopython None/timestamp, matrix handles, UDT returns, x = switch, drawing copy, pine_int(na), sanitize chrome, round() extras, import stubs as na, color type dispatch, nested UDT methods
Official matrix LA & predicatesdet/inv/eigen/…
0 missing vs public TV v6 function reference list (434 symbols, 2026-07-25)
Runtime _pine_defs_locked + append-only current_seriesHost hygiene (backend + pyne-worker)
Incremental ta.* (MAs, oscillators, bb/kama/stochrsi, volume obv/wad/cmf/klinger/nvi/pvi)Bar mode; PYNE_TA_INCREMENTAL=0 to disable
Series caps (T1)PYNE_SERIES_CAP default ON + goldens
Pending-fill averaging (F2)Pyramiding ≤ 0; interpret + compile broker goldens
Alert engine + L2 webhooks (L2)Dual-host /run export, ALERT_WEBHOOK_URL / webhook_url
request.security foreign-na policyForeign/complex → na both backends; same-symbol OHLCV passthrough
Plot parity harness (P1p)scripts/compare_interp_compile.py, first-party goldens + official TV builtins 0 MISMATCH
fill() export for AXISseries + plot_meta / compile __drawings

Still incomplete / by design

ItemStatus posture
Real (non-mock) multi-symbol request.* market data (B1)⚙️ By design for library core; feeds optional. Foreign-na policy landed (no invent).
request.security foreign data⚙️ Not filled with real series — emits na for foreign/complex (honest). Same-symbol simple OHLCV may lower.
Auto Fib / pivot-heavy scripts⚙️ Need real pivot structure (or registered ZigZag lib). Flat synthetic bars → intentional runtime.error (insufficient pivots); both hosts should agree (both_error_same in parity harness).
Pixel chart hostExternal (AXIS / clients)
Some unlimited-history / trim edge casesHigh-level support; exotic TV behaviors may differ
Editor word-wrap / UI-only release notes⬜ N/A
PyneTS full builtin parity (L3)⚙️ interpret + JS compile landed in @hoox-sh/pynets 0.2.0; Python remains oracle
Bit-identical every recursive smoother vs TVNumerical bounds, not bits
Dual Runtime host copies (H1)largely done — package pynescript.runtime SoT + backend.* shims + pyne-worker thin wrap. Residual = worker-only extras (logs/profile, CF first-plot), not a forked bar loop
Warm-compile product path (H2)✅ SLOs / prewarm / deploy IR cache defaults (2026-08)
Runtime residual (C1)✅ set01–04 Runtime interpret 100% excl. EXPECTED_FAIL (2026-08-09); third-party corpus not shipped
Series cap (T1)PYNE_SERIES_CAP default ON
Residual TA inc (T2)✅ R7 bb/kama/cmo/stochrsi + wma/hma/linreg; 0.3.10 obv/wad/cmf/klinger; 0.3.11 nvi/pvi; 0.3.12 aroon/dpo/donchian/kst
Pending-fill (F2)✅ R7 interpret + compile goldens
Plot parity residual (P1p)✅ Harness + first-party goldens + official TV builtins 0 MISMATCH; optional set0x community corpus unmeasured
Compile leftover library stubs⚙️ Some float(None) / UDF arity on missing import libraries; INV expected-fail fixtures stay fail
TV Wilder RMA-ATR / supertrend (F1)✅ interpret ATR is ta.rma(ta.tr); Supertrend mid±factor·ATR locked. TV ratchet is out of scope
Alert webhooks (L2)✅ Pro API + pyne-worker; see Alerts

Post-v6 launch themes (historical gap list)

v6 launch items (dynamic requests, strict bool, enums, polylines, log.*, negative indices, truediv, …) are largely supported or intentionally stubbed where platform-bound.

2025–2026 monthly TV updates introduced footprint types, active inputs, multiline strings, export const, UDT sort fields — tracked and largely closed in this repo’s July 2026 work.

Corpus + performance snapshot (2026-08-09)

Open-source set01–04 (2477 scripts; measured locally, not shipped in-repo):

MetricValue
Parse + unparse99.96% (2476 / 2477) — residual: 1 intentional invalid line-wrap docs demo
Runtime interpret100% excl. EXPECTED_FAIL — 2466 OK + 11 intentional demos
set01 Runtime249 / 249 (100%)
EXPECTED_FAIL classlibrary runtime.error demos, lower-TF security guards, pathological loops, truncated mid-call scrapes
ta_sma bar loop (≈3.2k bars)~9.5× vs full recompute
ta_atr bar loop~10×
macd+atr+rsi+sma combo~8.5×

Not TradingView® platform parity. OK% excludes only path-listed intentional demos (never soft-suppress unknown failures).

Plans: .opencode/plans/2026-07-28-runtime-performance.md. Skill: .grok/skills/pynescript-perf/. Golden: tests/test_ta_incremental.py, tests/test_series_cap.py.

Internals

PathRole
docs/missing_features.mdLiving gap analysis
tests/test_v6_features.pyv6 feature coverage
tests/test_pine_surface_gaps.pySurface gap probes
tests/test_ta_incremental.pyIncremental TA ≡ full recompute
tests/test_series_cap.pySeries cap goldens (T1)
scripts/compare_interp_compile.pyPlot parity harness (P1p)
docs/pine_v6_full_surface_inventory.mdFull name-level inventory
resource/*.g4 + builderGrammar-level feature work
.../technical_submodules/core.py_sma_inc_update, _macd_inc_update, _atr_inc_update, …

Invariants & edge cases

  1. Closing a syntax gap requires grammar + builder + unparser + tests, not only an evaluator stub.
  2. Mock data can green tests while production feeds differ — declare data source explicitly.
  3. Compile does not fill foreign request.security data — multi-asset plots stay na on compile unless same-symbol simple OHLCV; do not treat invent-as-close as a fix.
  4. Auto Fib needs pivots — without swing structure (or ZigZag library registration), expect structured insufficient-pivot errors, not fib lines.
  5. “0 missing vs reference list” ≠ identical semantics for every edge case.
  6. Perf changes must keep bar-by-bar semantics — no whole-script vectorization; prefer golden tests vs current oracle.
  7. Update this annex when missing_features.md changes major status lines.

Worked examples

Detect multiline string support

from pynescript.ast.helper import parse, unparse
src = '''//@version=6
indicator("m")
s = """a
b"""
plot(1)
'''
tree = parse(src)
assert '"""' in unparse(tree) or "'''" in unparse(tree)

Footprint mock call

Prefer tests in tests/test_v6_features.py as executable specification for request.footprint methods.

Incremental TA parity smoke

.venv/bin/python -m pytest tests/test_ta_incremental.py -q
# Disable hot path if needed:
PYNE_TA_INCREMENTAL=0 python -c "from pynescript.runtime import Runtime; ..."

Failure modes

SymptomLikely gap class
Lexer error on triple quotesStale generated lexer (should be fixed on main)
Import member missingLibrary export registration
Empty footprint rowsMock seed / data_feed not configured
Risk not blocking entryOld runtime path; ensure risk kwargs applied
Runtime TIMEOUT on method-heavy scriptsMissing _pine_defs_locked on host (fixed 2026-07-28)
Corpus PARSE_FAIL mid-blockTruncated scrape — not a grammar hole

See also