All notable changes to kScript are recorded here. Releases are sorted with the latest first.
Latest release
v2.2.0 — Pie plots & volume-profile access
June 2026 · New
plotPiebuiltin (auto-normalized slices,displaytext mode, batchable with per-element sizing), plus documentedvolume_profilerow structure and raw price-level bucket access alongside thevp*accessors.
All releases
| Version | Date | Highlights | Breaking changes |
|---|---|---|---|
| v2.2.0 | Jun 2026 | plotPie per-bar pie chart (auto-normalized slices, display text mode, batchable with per-element radius/colors); documented volume_profile row structure + raw bucket access | None (additive within v2) |
| v2.1.0 | May 2026 | plotPriceLabel builtin, glow halo on chart-shape plots, lineStyle (solid/dashed/dotted), opacity on plotShape/plotText | None (additive within v2) |
| v2.0.0 | Sep 2025 | Per-bar execution model, kwargs, stronger compiler, dedicated data subscriptions, scalars from indicators, func + loops, extended plots | Yes (relative to v1; see Migration (v1 vs v2)) |
v2.2.0 — June 2026
Pie plots and clearer volume-profile access: a new proportional pie builtin, plus first-class documentation of the volume_profile row structure and raw price-level bucket access.
Added
plotPie(value, price, radius?, colors?, opacity?, display?)— per-bar pie chart drawn as a proportional circle anchored to a price.valueis an array of slice magnitudes, normalized automatically ([60, 40]→ 60% / 40%;[3, 1]→ 75% / 25%).pricesets the vertical anchor;radius(px),colors(per slice), andopacity(0–1) control appearance.display— per-slice text mode:"percent"(default),"value", or"none". This is a single mode string, not thelabel=[...]/desc=[...]series-label arrays the other plots take.- Batchable — works inside
plotBatches, so you can draw one pie per price level (e.g. buy/sell split at everyvolume_profilebucket). Each batched pie carries its ownradius,colors, andopacity.
Documented
volume_profiledata structure — each bar is a row shaped[timestamp, [priceLow, priceHigh, buyVol, sellVol], …]: slot0is the timestamp and every later slot is one price-level bucket. The bucket count varies per bar.- Raw bucket access — alongside the scalar
vp*accessors, you can iterate buckets directly:vpa[0]is the current row andvpa[0][i + 1]is the i-th bucket. Pairs naturally withvpBucketCount+plotBatches(e.g. a pie per bucket). - Accessor functions —
vpBuy,vpSell,vpDelta,vpTotal,vpPoc,vpPocVolume,vpBucketCount,vpPriceHigh,vpPriceLowdocumented with parameter tables and examples.
Reference
- Plotting —
plotPieparameter table and examples. - Volume Profile Functions — data structure, raw bucket access, and the full
vp*accessor reference. - Backward-compatible within v2; no migration required.
v2.1.0 — May 2026
Plotting refresh: a new per-bar label builtin and richer styling kwargs across the existing chart-shape plots.
Added
plotPriceLabel(price, text?, type?, position?, ...)— per-bar decorative label anchored at a price level. Three visual modes:"callout"(default): text box with a leader line and dot"simple": centered text box"icon-only": SVG path or image URL, withiconSize,anchorX,anchorYcontrols- Text styling kwargs:
color,backgroundColor,fontFamily,fontWeight(clamped 100–800),size(clamped 1–30),opacity(clamped 0–1) tooltipfor hover text (supports\nfor line breaks)icon-onlyURLs support animated GIFs and WebP, so labels can render looping or animated icons
glowkwarg onplotLine,plotBar,plotCandle,plotShape, andplot— soft halo around the stroke.trueenables a default blur in the series color; a number sets the blur radius in pixels (clamped 0–30, 0 disables).lineStylekwarg onplotLineandplot—"solid"(default),"dashed", or"dotted". No effect on bar / candle / point types.opacitykwarg onplotShape— overall element opacity (0–1, clamped).fontWeightandopacitykwargs onplotText— text weight 100–800 (clamped, rounded to nearest 100) and overall opacity 0–1 (clamped).
Changed
plotShapeshape catalog clarified —"circle","triangle","cross", and"diamond"are all supported. The reference previously documented circle-only.
Reference
- Plotting — full parameter tables, including the new entries.
- This release is backward-compatible within v2; no migration required.
v2.0.0 — September 2025
Major release of kScript v2 on the Kiyotaka platform: new execution model, language features, and standard library—with intentional breaking differences from v1 for long-term ergonomics and performance.
Added
- Per-bar execution with clear phases for initialization, calculation, and plotting—see Execution model.
- Keyword arguments on builtins for clearer, order-independent calls (Keyword arguments).
funcuser-defined functions andfor/whileloops (with the documentedvarrestrictions) (User functions).- Dedicated data subscriptions:
ohlcv(...),trades(...),orderbook(...)replacing the generic v1-onlysource(...)pattern in v2 docs. - Reverse index access on time series (
ts[0]= latest bar) as described in the v1→v2 transition material. - Extended plotting:
plotCandle,plotShape, and richer styling kwargs alongside existing line/bar plots (Plotting).
Changed
- Technical indicator helpers now resolve to scalar values per bar instead of returning full composite series that required manual alignment in typical v1 usage.
- Compiler performs stronger static analysis (syntax, scope, types) so more issues surface at edit time rather than at runtime.
- OHLCV field access standardized via accessors such as
ohlcvTs.close,ohlcvTs.volume, etc.
Fixed
- Class of issues where v1 scripts could run without obvious errors yet mis-align series or misuse full-series returns; v2’s model and compile checks reduce this failure mode.
Breaking changes
- Scripts written for kScript v1 are not source-compatible with v2 without migration (execution model, subscriptions, indicator return shapes, and keyword-only ergonomics). Use the v1 vs v2 migration guide together with this entry when porting.
- Removal of reliance on
buildTimeseries/mergeTimeseries/matchTimestamp-style manual alignment in favor of engine-driven per-bar evaluation for typical indicators.