Skip to content

v2.11.0

Choose a tag to compare

@github-actions github-actions released this 04 Oct 14:02
dc9b12a

✨ Features

  • add a while special form
  • add times and fold-while
  • WSAPoll event loop for Windows
  • optional deadline on .ipc.send; close the connection on expiry (#589) (#658)
  • add native Parquet queries and native imports (#657)
  • publish splayed replacements atomically (#649)
  • export the build's commit as ray_git_commit() (#666)

🐛 Bug fixes

  • bound the tied groups the radix top-N selection keeps
  • validate launcher and timeit integer arguments
  • reject a flag as another flag's value, and unknown options
  • release the input table of window, sort and limit unconditionally
  • the reduction case owns its input too
  • Winsock errno mapping, exclusive bind and IPC on Windows
  • Windows platform layer (file mapping, pools, crash report, paths)
  • REPL, profiler and system builtins build and work on Windows
  • readable REPL prompt and CPU name in the banner on Windows
  • render i64 at full width, not through 32-bit long
  • format the banner with snprintf instead of macro string splicing
  • hand workers their freed blocks back at the end of every dispatch (#621)
  • reject trailing payload bytes (#622)
  • a projection sees the projections before it (#620)
  • report arity errors for extra arguments (#616)
  • admit the typed kernel for text columns, which it never reached (#607)
  • mapped index regions — bounds-checked children, never released on drop
  • zone min/max tell all-null from the non-null counts; empty tables keep the planner
  • reject arguments to gc (#615)
  • a STR view keeps only the bytes it points at (#631)
  • reject arguments to purge (#638)
  • reject invalid persisted graph ids (#642)
  • reject arguments to roll (#639)
  • hash int cells through f64 when a set meets a float probe (#646)
  • admit the typed kernel unless both sides carry a null (#644)
  • integer mean divides the exact 128-bit sum; mapped index tail unmapped after drop (#648)
  • reject arguments to close (#637)
  • never do work or error handling inside assert(); test the suite with NDEBUG (#653)
  • ray_execute and index attach never return NULL (#655)
  • detect half-open outbound connections with TCP keepalive (#589) (#656)
  • reject graph handles (#651)
  • write private staging leaves without the live-table writer (#667)
  • unlink a direct block's spill file once it is mapped (#665)
  • vector conditions, mixed branch types and one-element scalars (#668)
  • print every column and row of a table (#659)
  • keep a temporal column's type through a compiled xbar (#669) (#670)
  • literals and scalars read as columns, scalar where:, and update where: new columns (#676)
  • keep SYM columns typed through the eval fallback; eval fallback for update new columns and update by: (#690)
  • int-vs-float compare, compiled not/if kernels, fallback aggregates, cgroup RAM budget (#695)
  • temporal if null, scalar selects under where:/take:, non-BOOL where: predicates (#696)
  • mixed temporal compares, narrow-lane casts, fallback not/cast, count literals (#697)
  • journal single writer, failed first write cleanup, parted partition column, renameat2, narrow nil? (#699)
  • a failed first write cleans a table directory that was there before it (#702)
  • ray_journal_open releases the lock when open_append rejects the base (#701)
  • preserve layer topology during build and load (#680)
  • a select of aggregates and scalars over them is one row (#706)
  • group by a computed key beside distinct aggregates and row expressions (#708)

⚡ Performance

  • skip per-cell key null tests on provably null-free columns
  • wake only the workers a dispatch can keep busy
  • one column kernel for the direct builtin and the executor, one row pass (#623)
  • shared-node memo, STR descriptor views, fused top-k on nullable like, bulk derived key, parallel dense grouping (#626)
  • whole-table count/min/max/sum/avg from chunk-zone metadata
  • avoid rewriting copied text nulls during concat (#641)
  • 32 registers per fused expression; nulls produced mid-program, narrow scratch (#636)
  • filtered positional take stops early; sort by an unprojected column (#634)
  • partitioned dense accumulate; derived-key grouping over the column's distinct values (#633)
  • parallel splayed load, batched symfile interning, parallel hash index build (#632)
  • fused top-k prunes chunks by zone extrema and visits the best chunks first (#643)
  • unordered take aggregates only the groups it returns (#661)
  • exact-offset radix grouping, per-value programs for derived string keys, parallel STR if (#682)
  • review follow-ups to #682 (radix chunks on every worker, no second branch evaluation in STR if) (#683)
  • build splayed column indexes while streaming, no second pass (#704)
  • per-worker ticket ranges with stealing, private domains for derived keys, table-stack grouping (#705)
  • per-group slices from the selection, histograms sized by the workers (#709)

📚 Documentation

  • Windows build instructions and platform status
  • merge master back into dev after each release
🔧 Maintenance & internal
  • test(lang): pin the refcount of a table across window, sort and limit queries
  • build: Windows (MSYS2 CLANG64/MINGW64) toolchain in the Makefile
  • test: run the suite on Windows
  • bench: build the micro-benchmarks on Windows, record a Windows/Linux check
  • bench: record the recent perf benches on Windows vs Linux
  • test(regress): drop the 24 GB til from the i64 width probe
  • v2.9.1 (#625) (#629)
  • test(store): portable in-place sed in splayed_zone_aggs
  • test(agg): pin the LLC in dense_cache_bound so the route is runner-independent (#647)
  • ci(cppcheck): analyse one pinned configuration instead of up to twelve (#654)
  • test: isolate load_home from inherited RAYFORCE_HOME (#671)

Full changelog: v2.10.0...v2.11.0