Fixes
- Fixing
xan renamewith non-comma delimiters. - Fixing
xan from -f=parquetnot converting timestamp columns.
Quality of Life
- Better moonblade error messages when values are not yet materialized.
- Better
xan count -H/--human-readable.
Breaking
- Renaming
xan from --pathto--root. - Renaming
xan separate -T/--txtto-L/--lines.
Features
- Adding
xan count -c/--check-alignment & -H/--human-readable. - Adding
xan sort -e -z/--compress. - Adding
xan sample -g -S/--sorted. - Adding
xan from -f=(json|ndjson) --model. - Adding
xan cat rows -I/--intersection & -U/--union. - Adding
xan top -g -S/--sorted. - Adding the
sort,dedup,flatten&flat_mapmoonblade function. - Adding support for
list&mapcolumns when usingxan from -f=parquet.
Fixes
- Fixing text wrapping across tool, especially
xan flatten -w&xan flatten -F. - Fixing
xan select -e&xan mapplural clause flattening given list. - Fixing
xan from -f=parquetnot emitting correct column names for list & map columns.
Performance
- Introducing a fast path for
xan sort -ewhen input fits in a single chunk. - Faster
xan from -f=ndjson & -f=parquet. - Amortizing
xan sampleallocations. - Improving performance of
xan freq&xan p freq.
Quality of Life
- Better record size estimation for
xan sort -e. - Better
xan flatten -cwhen string width cannot be computed correctly (because of emojis typically).
Breaking
- Bumping MSRV to
1.85.0and edition 2024. - Overhauling how
xan scrapetakes its inputs. It now targets HTML files on disk by default now. xan plot --density-scalenow defaults tolog.xan freq -X/--approx-algo&xan p freq -X/--approx-algonow default toheavy-keeper.- Dropping
xan eval -S/--serialize. The default behavior of the command is now to output the serialized value.
Features
- Adding
xan search -x/--pattern-file. - Adding
xan cat --glob,xan merge --glob,xan parallel --glob. - Adding the
hostnamemoonblade function. - Adding
xan scrape --paths, --path-column, --docs, --docs-column, -D/--stdin-doc & --glob. - Adding
xan from -f=(json|ndjson) --path <path>. - Adding
xan from -f toml&-f raw. - Adding
xan spark --hide-all & --repeat-x-axis.
Fixes
- Fixing moonblade string with bstring equality.
- Fixing percentages shown by
xan spark -P. - Fixing
xan completecorrectness in presence of duplicate values. - Fixing
xan spark -cdiscretization & legend.
Performance
- Improving performance of
xan scrape. - Improving performance of
xan from -f ndjson.
Quality of Life
- Better legends & axis for
xan spark. - Highlighting empty labels when using
xan heatmap.
Breaking
- Stopping to serialize moonblade lists either as joined by some separator or JSON. This was awkard, error-prone & potentially lossy. Use the
joinfunction manually to format output when required. - As per previous point, dropping
xan scrape --sep. - Dropping implicit unary function calls in moonblade pipelines. This feature was not well-known, confusing (an indentifier, could be understood as a call in a pipeline, only if not in first position...), and mostly useless now that moonblade has had a proper dot operator.
xan plot -A/--aggregatedoes not take an expression anymore but has an automatic selection of two modes:sumandmean. It should also be faster.- Renaming the
indexfunction asrow_indexfor clarity. xan agg -C/--along-columns & -M/--along-matrix&xan groupby -C/--along-columns & -M/--along-matrixwill not map current column index to the result of theindex()function. Thecol_index()can be now used instead for this very purpose.xan window -g/--groupbydoes not require the file to be sorted anymore. This means using-g/--groupbywill now require the whole file to be buffered into memory by the command. The old behavior can still be used through the-S/--sortedflag, thus aligning thexan windowcommand with the rest of the tool.row_indexwill now error if the expression has no concept of row index, instead of returning nothing.xan parallel -z/--compressnow take the desired compression (eithergziporzstd).- Retiring the
xan grepcommand in favor ofxan search -Z/--fast-parser. xan tokenize --keepshort flag becomes-kinstead of-Kto harmonize with other commands.- Retiring the
xan flatmapcommand in favor ofxan explode -e. - Retiring the
xan fuzzy-joincommand in favor of a consolidatedxan joincommand. - Changing
xan from -f txt -c <name>default tolineinstead ofvalue. - Renaming
xan join -L/--prefix-left & -R/--prefix-rightshort flags to-l&-rrespectively to avoid colliding with the added-R/--reverseflag that can be used for merge joins. - Dropping
xan plot -B/--bars. It never worked very well and its use-case will be redirected toxan spark. - Changing
xan heatmap --widthshort flag from-wto-Wso that adding a-H/--heightflag remain consistent and avoids clashing with-h/--help. - Dropping
xan heatmap --show-gradientsin favor ofxan help gradients. - Renaming
xan search -A/--allflag to--every-columnfor clarity and avoid clash with-A/--after-context. - Dropping
xan sort -U/--unstable. It was never used and the performance boost it supposedly provides cannot be observed.
Features
- Adding
xan parallel --dont-chunk. - Adding nullary
col,col_index&headervariants, to work with expression applied in series to multiple columns at once. - Adding
prev_col&next_colfunctions. - Adding
xan (search|filter) -B/--before-context & -A/--after-context. - Adding
xan window -O/--overwrite. - Adding
xan map -C/--along-columns. - Adding
xan window -C/--along-columns. - Adding
xan cat rows --raw, -P/--preprocess & -H/--shell-preprocess. - Improving
xan selectDSL star selectors. You can now do stuff likevec_*_count,*[1],vec_*[1]etc. xan p -H/--shell-preprocessnow works on Windows.- Adding native
zshcompletions (@apcamargo). - Adding
xan dedup --u32. - Adding
xan explode -e/--evaluate, -f/--evaluate-file, --pad & -k/--keep. xan to npyis now able to stream.- Adding
xan parallel top&xan top -p/--parallel, -t/--threads. - Adding
xan network edgelist --range. - Adding
xan network nodelist. - Adding the
xan runcommand. - Adding
xan view --name. - Adding
xan join -S/--sorted, -R/--reverse & -N/--numeric. - Adding
xan parallel --run&xan cat rows --run. - Adding
xan to md -l/--limit. - Adding the
xan sparkcommand. - Adding
xan stats -R/--report, --color, --cols, --sep. - Adding
xan (freq|p freq) -X/--approx-algo. - Adding
xan plot -D/--density-gradient, --density-scale, --hide-legend, --hide-x-axis, --hide-y-axis, --hide-all & -Q/--square. xan separatewill now avoid emitting columns with an empty name given to--into.- Adding
xan separate --txt & --F/--filter. - Adding
pow&sqrtscales.
Fixes
- Fixing issues related to nested lambdas in expressions.
- Fixing
xan renameconsistency regarding CRLF newlines and first row normalization when using-n/--no-headers. - Fixing
xan map --overwrite --filter. - Fixing
leadwindow function when there is not enough rows ahead. - Fixing
xan network --formatnot being validated early enough. - Fixing
xan explode -D/--drop-emptywhen selecting multiple columns. - Fixing
xan merge -urow precedence. - Fixing
xan join -D/--drop-keyautomatic selection when using--full. - Fixing granularity inference of
xan plot -T. - Fixing
xan from -f (json|ndjson)to emit empty outputs from empty inputs. - Fixing
xan headerslayout when input files have a very large number of columns (>= 1000). - Fixing arity validation of
top,argtop,most_common&most_common_countsaggregation functions.
Performance
- moonblade expressions are now faster overall and allocate more cautiously, thus saving memory.
- Improving performance of
xan transform,xan flatmap,xan agg&xan groupby. - Improving performance of
xan rename. - Faster
xan range. - Faster
xan parallel -H/--shell-preprocess. - Faster
xan tokenize words. - Adding fast path for
xan explodewhen only a single column is selected. - Faster
xan sort -e.
Quality of Life
xan plotwill now display<empty>label in legends.xan cat rowswill now error when input have inconsistent columns.- Automatic column alignement with
xan to md. xan fromnow consider.logfiles as text lines.
Fixes
- Fixing
xan sort --check -n&xan dedup --check -nprinted report. - Fixing
xan parallel cat -nS. - Fixing CSV parsing rare edge case panics.
- Fixing commands relying on zero-copy CSV parsing for performance.
Performance
- Improving performance of
xan flatten,xan view,xan to&xan network. - Faster
xan network -f nodelistin some cases.
The temporal update.
Breaking
xan select -nwill not error anymore on empty inputs and, generally, empty files should not trigger selection errors when using commands with-n/--no-headers.xan heatmap -C/--crambecomes a flag accepting eitherauto,alwaysornever.- Dropping
-Cshort flag forxan sort --cells(it could be confused with--columnsor--check). - Completely overhauled how datetimes work in moonblade.
xan separatewill not trim splitted values with some modes by default anymore.- Dropping
xan network --statsin favor of-f stats. -Dbecomes short flag forxan network --degreesinstead of--disjoint-keys.xan separate --capture-groupsis dropped in favor of-c/--captures&-C/--all-captures.- Renaming
xan search --breakdownshortflag to-bto allow for future-B/--before-context.
Features
- Adding
xan matrix count&xan matrix adj. - Adding
front_codingwindow function. - Timestamp support with
xan plot -LT. - Adding
xan rename -n/--no-headerssupport for-p/--prefix&-x/--suffix. - Adding
xan from -f parquet(requires theparquetfeature). - Adding
xan to latex. - Adding
xan top -L/--lexicographic. - Adding
xan heatmapflags:-w/--width,-F/--fill,-a/--align,-U/--unit,-Z/--show-normalized,-A/--ascii,-l/--label&-v/--values. - Adding new gradients to
xan heatmap. - Adding
range&repeatmoonblade functions. - Adding
xan sort --columns. - Adding
xan view -T/--tee. - Adding
now,fractional_days,to_timezone,to_local_timezone,with_timezone,with_local_timezone,without_timezone,to_timestamp,to_timestamp_ms,from_timestamp,from_timestamp_ms,span,date&timemoonblade functions. - Better type inference with
xan stats, and thetype&typesaggregation functions, now including more types for temporal values (zoned_datetime,datetime,date&time). - Adding
xan input -T/--tolerant. - Adding
xan separate --trim. - Adding
xan grep -B/--before-context & -A/--after-context. - Adding
xan network -f=components, -S/--simple, --union-find, --minify & --sample-size <n>. - Adding
xan plot --timezone. - Adding
xan hist --logshorthand flag for--scale=log. - Adding
log_distsparkline column toxan stats -qoutput. - Adding
dist&log_distaggregation functions. - Adding
xan search -L/--levenshtein <k> & -D/--damerau-levenshtein <k>.
Fixes
- Fixing
xan separateautomatic column prefix extraction. - Fixing
xan heatmap -n. - Fixing
xan heatmap --repeat-headers --cram alwaysnot repeating x-axis legend. - Fixing correctness of
xan plot -Tand increase resolution to microseconds. - Fixing moonblade column-related functions returning incorrect results wrt
-n/--no-headers. xan searchshould now properly error when handling invalid utf-8 in relevant modes.- Fixing
xan search -iR&xan search -i --replacement-column.
Performance
- Improving performance of
xan complete,xan top,xan plot -T&xan hist. - Improving overall performance of
xan network. - Slightly optimizing
xan vocabby allowing needless heap allocation & indirection. - Improving performance and memory usage of
xan separate.
Quality of Life
- Adding proper help to
xan heatmap.
Features
- Adding
xan bisect. - Adding
xan flatten -N/--non-empty. - Adding the
soundex,refined_soundex&phonogrammoonblade functions for phonetic encoding.
Fixes
- Fixing
xan to (md|html) --no-headers. - Fixing
xan plot -R/--regression-line.
Quality of Life
- Adding
xan to markdownas an alias forxan to md. xan flatten&xan viewwill stop masquerading trimmed empty cells as empty.
Breaking
- Changing how
xan separategenerates default column names. xan from -f=(json|ndjson|jsonl)will now emit column in input order by default.- Changing
xan to -B/--buffer-sizeto--sample-sizeto harmonize flag names withxan from.
Features
- Adding the
xan completecommand. - Adding an optional unit to
ceil,floor,round&truncmoonblade function. E.g. floor to nearest decade:floor(year, 10). - Adding
basename&dirnamemoonblade functions. - Adding
parse_py_literalmoonblade functions. Useful to deal with files dubiously serialized usingpandas. - Adding
xan view --repeat-headers=(auto|always|never). - Adding
xan view --reveal-whitespace=(auto|always|never). - Adding
--colorsupport toXAN_VIEW_ARGS. - Adding
xan from -f json --sample-size -1to sample the whole file. - Adding
xan from -f json --single-object. - Adding
xan from --sort-keys. - Adding
xan to (json|ndjson|jsonl) --sample-size -1to sample the whole file. - Adding
xan to (json|ndjson|jsonl) --stringsflag. - Adding
xan separate --prefix. - Adding
xan heatmap -Cshort flag for--cram. - Adding
xan heatmap --repeat-headers. - Adding
rank,cume_dist,percent_rankandntilewindow functions. - Adding
xan help --color.
Fixes
- Fixing
xan select -neincorrectly emitting headers.
Quality of Life
xan view -pwill not print bottom header anymore by default.xan viewwill not reveal problematic whitespace if output is not colored anymore, by default.- Better
xan histerror messages and help. - Testing more file name variants when searching for a
.gziindex.
Fixes
- Fixing
xan freq --groupbyincorrectly unescaping group cells. - Fixing help related to
xan pivot&xan unpivot. - Upgrading
simd-csvto get safety fixes. - Fixing evaluation of moonblade commands related to column indexing.
The SIMD update.
Breaking
- Bumping MSRV to
1.83.0. - Dropping
xan plot -Y/--add-series. It is now possible to select multiple columns as<y>inxan plot <x> <y>instead. - Dropping the
-C/--force-colorsflag inflatten,heatmap,hist,plotandviewin favor of the more standardized and flexible--color=(auto|never|always)flag. xan joinwill now automatically drop joined columns from one the files when it is obviously safe to do so.xan behead&xan renamedo not normalize the output anymore to be as fast as possible.- The new SIMD CSV parser might not deal with CSV irregular cases the same way
rust-csvdid. In any case,xan inputwill still continue to userust-csv. xan slice -B/--byte-offset&xan slice -A/--accumulateare now mutually exclusive.xan inputhas been overhauled.- Dropping
xan count --sample-size. - Overhauling
xan fixlengthsto accept streams by shifting default from double-pass read to buffering the whole stream into memory. xan plot --x-scale log & --y-scale logare now natural log. Uselog10for the base10 log as before.- Dropping
xan reverse -m/--in-memoryflag. Behavior is now automatically detected. - Dropping
xan shuffle -m/--in-memoryflag. Loading the file into memory is now the default. Thexan shuffle -e/--externalflag has been added if you want the old default behavior. xan binsnow outputs<empty>values instead of<nulls>.- Overhauling
xan bins. The default is now to find nice boundaries for the bins. Use-e/--exactto revert to the old behavior. The default number of bins is now10, and won't use Freedman-Diaconis rule by default. A-H/--heuristicflag has been added if you want to automatically select a suitable number of bins.
Features
- Adding
xan flatten -F/--flatter. xan pivotcan now target multiple columns.- Adding the
xan grepcommand for fast but coarse filtering. - Adding
xan search -f/--flag. - Adding
xan map -F/--filter. xan search -B/--breakdownnow consolidates the results when multiple patterns have a same name.- Adding
xan flatten --row-separator. - Adding
xan flatten --csv. - Adding
xan headers --color. - Adding the
xan join <columns> <input1> <input2>arity as a convenience when joined column names are the same in both inputs. - Adding
xan join -D/--drop-key=(none|both|left|right). - Adding
xan fuzzy-join -D/--drop-key=(none|both|left|right). - Adding
xan plot -A/--aggregate. - Adding support for plural selection clauses in both
xan select -e&xan mape.g.xan map 'full_name.split(" ") as (first_name, last_name). - Adding
xan search -P/--add-pattern. - Adding
xan groupby -M/--along-matrix. - Adding
xan groupby -T/--total. - Adding support for
.ndjson&.jsonlfiles. Those are considered as headless TSV files with null byte quoting so you can easily use them withxancommands. - Adding out-of-the-box support for
.vcf,.sam,.bed,.gtf&.gff2files. - Adding a
xan cat colsalias toxan cat columns. - Adding
zstdsupport. - Adding
earliest&latestmoonblade functions. - Adding
xan dedup -f/--flag. - Adding
-kshort flag forxan dedup --keep-duplicates, and-Cshort flag forxan dedup --choose. - Adding
xan fixlengths -H/--trust-header. - Adding
xan separate. - Adding full log scale support to
xan plot. - Adding
xan hist --scale. xan windowis now able to run total aggregations.- Adding
thousands_sep,commaandsignificancekwargs tonumfmtmoonblade function.
Fixes
- Fixing
xan dedup --checkbug where the first record was ignored. - Fixing
xan hist -Dwhen a same date is found multiple times. - Fixing
xan from -f xlsdatetime conversion. - Fixing
xan flatten&xan viewwhen column names contain line breaks. - Fixing invalid argument parsing error being printed to stdout instead of stderr.
- Fixing
xan progressSIGINT corrupting output. - Fixing
xan enum -A/--accumulate. - Fixing
xan from -f tarwhen tarball archive is not gzipped. - Fixing
min&maxmoonblade function when passing a list of numbers. - Fixing
xan flatten -Hedge cases. - Fixing commands requiring seekable streams accepting unindexed compressed files by error.
- Fixing
xan plot --count --y-scale log.
Performance
- Wildly improving performance of most of
xancommands by leveraging a novel SIMD CSV parser/writer. - Improving performance of
xan from -f txt&xan from -f npy. - Improving memory footprint of hash-based commands (e.g.
frequency,groupby,dedupetc.). - Improving performance of
xan progress,xan range,xan enum,xan behead,xan rename.
Quality of Life
xan parallel catnow flushing more consistently.- Better highlighting of problematic strings in
xan flatten,xan view&xan headers. xan parallelwill now generally stop as soon as an error is detected in a subprocess and cleanly report errors.- Better argv parsing error UX in general.
- The
-pflag will now avoid going further than 16 to avoid issues on server with many CPUs where hogging the resources is an issue and where using too much threads at once could hurt performance. The-tflag remain available to tweak the number of threads. xan histwill now dim bars having a0count so you can easily distinguish them from non-empty bars.
Breaking
xan partitionnow normalizes filenames to lowercase to correctly deal with case-insensitive filesystems.xan partitionalso gets a related-C/--case-sensitiveflag.
Features
- Adding
allandanymoonblade higher-order functions. - Allowing moonblade
printffunction to be called with lists. - Adding
-f/--evaluate-fileflag tomap,filter,flatmap&transformcommands. - Adding
xan map -O/--overwrite.
Fixes
- Fixing
xan top -T/--tiesedge case. - Fixing broken pipe panics for some commands.
- Dropping remnant
dbg!macro when reading files in reverse. xan flatten -Hnow correctly working on more data types.
Performance
- Using
jemallocatorfor musl builds.
Quality of Life
- Better moonblade
printffunction error messages.
Breaking
xan search --countwill not emit rows with 0 matches anymore unless--leftis used.
Features
xan transformis now able to work on a selection of columns, rather than on a single column.- Adding the
xan unpivotcommand. - Adding the
xan pivotcommand. - Adding
xan join --semi&xan join --anticommands. - Adding
xan slice --raw. - Adding default expression argument to
lead&lagwindow functions. - Adding
shlex_split,cmdandshellmoonblade functions. - Adding
aarch64-apple-darwinandaarch64-unknown-linux-gnuto CI builds. - Adding
to_fixedmoonblade function. - Adding decimal places optional argument to
ratio&percentageaggregation functions. - Adding
frac&dense_rankaggregation functions toxan window.
Fixes
- Loosening
xan partitionsanitizer to allow hyphens, dashes and points. - Fixing
xan parallel --progressdisplay. - Fixing logic error in
xan search -Bwhen using without--left. - Fixing
xan parallel catwhen working on file chunks with-Por-H. - Fixing moonblade list/string slicing with some combinations of negatives indices.
- Fixing moonblade
splitfunction not using regex patterns properly. - Fixing moonblade parsing wrt regex patterns and comments (using a regex pattern containing
#was not possible). - Fixing
leadwindow aggregation function when working on any column that is not the first one. - Fixing
xan view -S/--significancebeing overzealous, especially wrt integers.
Performance
- Improving performance of
xan parallelwhen working on file chunks.
Quality of Life
xan headersnow report more useful information when files have diverging headers.- Better error messages for
read_jsonandparse_jsonmoonblade functions. xan view -pwill not engage pager when input errored or is empty.xan select -e & -fbecome boolean flags instead of error-inducing invocation variants.
The parallel update.
Breaking
- Dropping undocumented
xan indexand related interactions (inxan count,xan sample,xan slice&xan split --jobs). - Dropping now useless
coalescemoonblade function. xan splitnow accepts its output directory as an optional flag.xan partitionnow accepts its output directory as an optional flag.xan split -sbecomesxan split -Sto avoid confusion with the-s/--selectflag used everywhere else.- Dropping useless
xan count --csvflag. - Dropping
xan freq -t/--threshold. Usexan freq | xan filter 'count >= n'instead. - Adding
xan slice -I/--indicestaking care ofxan slice -ipolymorphism taking multiple indices before. xan parallel freqnow followsxan freqbehavior regarding limits.- Dropping
xan url-join&xan regex-join. Both commands have been merged into a newxan fuzzy-joincommand using the-u/--url-prefix&-r/--regexflags respectively. xan from --sheetbecomes--sheet-nameand is no longer the default.--sheet-index 0becomes the default.- Dropping
xan foreach. It is not distinctive enough as you can usexan mapfor the same purpose and get useful information about the results of evaluated side effects or write to/dev/null. - Renaming
xan agg --colstoxan agg --along-rows. - Changing
cellplaceholder to anonymous_value inxan agg -R/--along-rows. - Dropping moonblade commands
-E/--errorsflags. A lot has changed since they were created. They will be reevaluated in the future if required. You can rely on thetry&warnmoonblade functions instead, for now. - Dropping
xan select -A/--append. Latestxan mapis now actually equivalent toxan select -eA. - Changing
xan mapto accept a selection expression able to create multiple columns at once rather than a single expression and a column name. This meansxan map 'expr' col_namebecomesxan map 'expr as col_name'.
Features
- Adding
xan count -a/--approx. - Adding
xan slice --end-byte. - Adding
xan slice -S/--start-condition&xan slice -E/--end-condition. - Adding
xan slice -L/--last. - Allowing
-n/--no-headersand-d/--delimiterflags to appear before subcommands. - Adding backtick quoted strings to moonblade.
- Adding moonblade
printffunction. - Adding moonblade
pad,lpad&rpadfunctions. - Adding
xan select -f/--evaluate-file. - Adding multi-member gzip files support (to handle files compressed with
bgzipnotably). - Adding
xan split -f&xan partition -fshort flag for--filename. - Adding
xan split -c/--chunks&xan split --segments. - Adding
xan sample -§/--cursed. - Adding
xan search -B/--breakdownand the related--name-columnflag. - Adding CSV file chunking capabilities to
xan parallel. - Adding
xan from md. - Adding
xan parallel map. - Adding
-p/--parallel&-t/--threadstocount,freq,stats,search,agg&groupbycommands. - Adding piped column access to expression given to
xan flatmap -r. - Adding
xan rename -R/--replace&xan rename -x/--suffix. - Adding
xan parallel freq -l/--limit, -A/--all, -a/--approx & -N/--no-extra. - Adding
xan search -U/--unique-matches & --sep & --left. - Adding parallelization through novel file segmentation of files compressed with
bgzipwhen a.gziindex can be found. - Adding the
xan windowcommand for window aggregations like rolling averages, cumulative sums, lags etc. - Adding
xan help window. - Adding
xan head&xan tailas aliases overxan slice -l&xan slice -Lrespectively. - Adding
xan from --sheet-index & --list-sheets. - Adding
xan flatten -H/--highlight & -i/--ignore-case. - Adding
xan agg -C/--along-cols&xan agg -M/--along-matrix. - Adding
xan groupby -C/--along-cols. - Adding support for
xan search -l -p -t. - Adding
rmsmoonblade aggregation function. - Adding
xan scrape -E/--encoding. - Adding CDX files support.
- Adding
regexmoonblade function. - Adding
header,col_index&col_index?moonblade functions. - Adding
find&find_indexmoonblade functions. - Adding
-l/--limitsupport toxan search -p&xan filter -p. - Adding
xan pivot-longeralias toxan unpivot. - Adding
xan pivot-wideralias toxan pivot.
Fixes
- Adding missing highlight for
NULLvalues inxan view&xan flatten. - Fixing moonblade slicing wrt negative indexing and nontrivial inner expression.
- Fixing moonblade
getfunction for bytes. - Fixing
xan sort -eskipping first record of each chunk. - Fixing
xan sort -estability. - More accurate
xan sort -ememory usage calculations. - Fixing
xan transform -n. - Fixing
xan view -g -s. - Fixing moonblade concretization wrt branching.
- Fixing
xan behead -oandxan behead -Ao. - Reorganizing
xan help functions. - Fixing lexicographic extent merging in
xan parallel stats. - Fixing
xan to mdwidth alignment. - Renaming
xan parallel --shell-preprocessingshort flag to be-Hbecause it was being overriden by-S/--source-column. - Adding missing subcommand completions for
xan parallel&xan cat. - Better default threads count heuristics.
- Better
xan plot -Tdate parsing. - Fixing
xan searchreplacements when using the-s/--selectflag with a non-full selection. - Adding the
xan view -r/--rightflag to force right alignment for a selection of columns. - Fixing
xan flattenbroken pipe panics when piped. - Fixing
xan plot -R/--regression-linewhen linear function endpoints are out of bounds. xan parallelearly exits when a target file does not exist.- Fixing
moonbladelist slicing. - Fixing
cols()&headers()moonblade functions without arguments. - Fixing
cols()&headers()not working with dynamic arguments. - Fixing moonblade indexing parsing.
- Fixing aggregation arity validation.
- Fixing
xan agg&xan groupbybehavior wrt-n/--no-headers. - Fixing shortcircuiting of
andandormoonblade functions. - Fixing issue with degenerate cases in
xan bins --nice. - Fixing bin allocation in
xan bins --nice. - Fixing
xan bins --nicefirst and last bound to stick to min & max. - Fixing negative indexing with
col*(name, pos)moonblade functions. - Fixing
argmin&argmaxparallel stability. - Fixing panic with
xan plotwhen using log scales and min/max are <= 0.
Performance
- Switching hashmaps to
ahash. - Optimizing moonblade pipelines with more than a single underscore substitution.
- Improving
xan reverseperformance. - Reducing memory footprint of aggregators.
- Optimizing
xan select -eallocations.
Quality of Life
- Prepending xan subcommand to error messages.
- Better error messages when moonblade expressions cannot be parsed.
- Displaying number of threads actually used when using
xan parallel. xan viewnow automatically right-align columns containing only integers.- Better moonblade casting errors.
xan binsformatted bound will now be padded for better readability.
Features
- Adding moonblade function
log2,log10and support for custom base with an optional argument oflog. - Adding
\0,\x..and\u{......}literals to moonblade strings. - Adding moonblade function
col?.
Fixes
- Better color support for legacy Windows terminals.
- Fixing
to_timezonefunction with UTC timestamps on some platforms where jiff is built "bundled". - Fixing moonblade commands (e.g.
filter,mapetc.) when using-n/--no-headers.
Fixes
- Adding missing
-M/--hide-infosupport withXAN_VIEW_ARGS. - Pinning MSRV to
1.81.0in CI builds to avoid Windows Defender false positives.
Fixes
- Overhauling & fixing CI builds.
Fixes
- Fixing compilation with musl.
- Fixing
xan cat rows -n.
Breaking
- Dropping mostly useless
-p/--parallel&-c/--chunk-sizeflags inxan agg&xan groupby. They were only useful when the inner aggregated expression was costly (i.e. reading files) and you can usexan map -pupstream for this instead. See alsoxan parallel (agg | groupby)if you want to work in parallel over multiple files.
Features
- Adding
xan input --tabs. - Adding
xan input -H/--skip-headers. - Adding
xan input -L/--skip-lines. - Adding
xan input -R/--skip-rows. - Adding
xan input --vcf, --gtf, --gff. - Adding
xan search -R/--replace&xan search --replacement-column. - Adding
xan rename -S/--slugify. - Adding moonblade function
sum. - Adding support for
.psv,.ssv&.scsvfile extensions. - Adding
xan headers -s/--start. - Adding
xan to txt. - Adding
xan behead -A/--append. - Adding
xan hist -G/--compress-gaps. - Adding
xan agg --cols.
Fixes
xan view --no-headersnow automatically toggles--hide-headers.xan fromcorrectly decompress some gzipped formats.xan fill -vcorrectly fills empty cells at beginning of files.xan parallel -twill not use more threads than inputs.- Fixing
xan statspanicking when encountering NaN values. - Allowing tabs to be understood as whitespace in moonblade expressions.
- Fixing
xan join --crosswhen joined files don't have the same number of columns. - Adding missing
-n/--no-headers&-d/--delimitertoxan to. - Fixing
xan progress -Bwith gzipped files. - Adding missing
-C/--force-colorstoxan plot.
Breaking
- Dropping
xan union-find. Seexan networknow for similar utilities. xan explode --singularbecomesxan explode --singularize.xan implode --pluralbecomesxan implode --pluralize.
Features
- Adding scraping selectors
prev_sibling,next_sibling,find_ancestor&last. - Adding
xan scrape images. - Adding
xan search -u/--url-prefix. - Adding
xan network -f nodelistandxan network --degrees. - Adding various format aliases to
xan from. - Adding
xan explode -D/--drop-empty. - Adding
xan from tar. - Adding
xan url-join.
Fixes
- More inflection cases supported in both
xan explode -Sandxan implode -P. - Better error reporting with
xan scrape. - Fixing
xan scrapeprocessing values when selection is empty. - Fixing
parentscraping selector. - Adding missing higher-order functions documentation to
xan help.
Performance
- Improving performance of
xan explode. - Improving performance of
xan implode.
Fixes
Fixing CI builds.
Breaking
- Moonblade
strftime()and all other date formatting functions such asymd()do not support timezones any more, seeto_timezoneandto_local_timezoneinstead.
Features
- Adding moonblade function
to_timezoneandto_local_timezone - Improving
xan help cheatsheet. - Adding moonblade function
try. - Adding moonblade functions
int&float. - Adding moonblade functions
lru&urljoin. moonbladenow tolerates line-breaks as whitespace when parsing. This makes it possible to write your expressions on multiple lines.moonbladenow accepts comments starting with#.- Adding
xan scrapecommand. - Adding
xan help scrapingsubcommand. - Adding moonblade function
html_unescape.
Fixes
- Fixing
xan flatten -wwrt line breaks. - Fixing underscore expansion when contained in map & list expressions.
- Fixing
xan to mdcell escaping.
Performance
- Decrease
moonblade-related commands memory consumption.
Fixes
- Fixing Windows compilation.
Fixes
- Fixing Windows compilation.
Breaking
- Moonblade concat operator becomes
++instead of.. - Overhauling moonblade cli documentation:
- Dropping
--functions,--cheatsheetand--aggseverywhere - Adding a proper
xan helpcommand
- Dropping
- Dropping
xan glob. - Adding access & call operator to moonblade:
- Member access:
map.name(same asget(map, "name")) - Function call:
string.len()(same aslen(string))
- Member access:
- Help is now printed in stdout (typically when using the
-h/--helpflag).
Features
- Adding
xan to html. - Adding
xan to md. - Adding
xan to npy. - Adding
xan from npy. - Adding
-R/--regression-linetoxan plot. - Adding
xan talias forxan transpose. - Adding map substitution to
fmtmoonblade function. - Adding
xan sort -C/--cells. - Adding
xan search --count --overlapping. - Adding
xan tokenize words -F/--flatmap.
Fixes
- Fixing
xan search --pattern-column. - Fixing autocompletion with range and multiple selection.
- Fixing url highlighting in
xan viewandxan flatten. - Fixing datetime highlighting in
xan viewandxan flattenwrt Z-terminated timestamp formats. - Fixing
statsdate & url inference. - Fixing moonblade support for Z-terminated timestamp formats.
- Fixing
xan plot -Tgranularity inference. - Fixing missing fractional seconds to default
datetimeserialization. - Fixing bin allocation with
xan bins --nice. - Fixing
xan search --patterns -i. - Fixing
xan search -r -i --patterns --countresults.
Performance
- Optimizing aggregator memory consumption.