Skip to content

v0.6.0

Latest

Choose a tag to compare

@ihb2032 ihb2032 released this 31 Jul 02:22
· 51 commits to main since this release
f272ce0

MoonFrame v0.6.0 — API convergence

Breaking

  • One constructor per type, spelled as the type's own name:
    Field::Field, Schema::Schema, CsvReadOptions::CsvReadOptions,
    HtmlOptions::HtmlOptions, … The new / default / with_* builder
    chains are gone — thirteen builder methods become zero.
  • Every *_with_options entry point folds into its plain form as an optional
    argument: read_csv(path, options?), scan_ndjson(path, options?),
    parse_csv_str(text, options?). NdjsonReadOptions folds into
    JsonReadOptions, and the JSON verbs are now parse_json_str /
    format_json / write_json.
  • Expr is opaque — its AST moved into an internal package — and Expr and
    JoinOptions lose ==. Compare rendered expressions instead:
    (col("a") + lit_int(1)).to_string().
  • The storage-backend surface leaves the public API, and the read-side fields
    of DataFrame / Series / Field / JoinOptions go private behind
    copying accessors, so a validated value cannot be mutated into an
    inconsistent one.
  • TypeMismatch / ParseError carry structured detail instead of a message
    string. DataFrame::take is renamed gather. SortOrder / NullOrder
    move from frame to types. A column-less frame keeps its row count
    (N × 0) rather than collapsing to 0 × 0, and a declared
    nullable = false now survives the projections.

Every source-level upgrade step, with before/after: docs/migration.md

Added

  • Numeric expressions: abs / floor / ceil / sign, floor_div /
    modulo / pow, round(decimals?), is_in, is_between(closed?).
  • Nine string ops: str_reverse, str_pad_start / str_pad_end /
    str_zfill, str_slice, str_split_get, str_len_bytes,
    str_extract, str_count_matches.
  • Predicate push-down into scan_csv / scan_ndjson: the reader parses only
    the rows the filter keeps.
  • Column selectors — numeric_cols, cols_of_dtype, cols_matching,
    cols_starts_with / cols_ends_with / cols_contains.
  • Expr::map_batches (a whole-column escape hatch, usable as a custom
    aggregation), rename_with, DataFrame::reverse / with_row_index,
    unique(subset?, keep?).
  • Series gains sort / head / tail / reverse and the statistics
    std / variance / median / first / last; LazyFrame gains the
    whole-frame reductions sum / mean / min / max / count /
    null_count.

Full history: docs/changelog.md