---
title: Flux release notes
description: Important changes and and what’s new in each version of Flux.
url: https://docs.influxdata.com/flux/v0/release-notes/
estimated_tokens: 34012
product: Flux
version: v0
---

# Flux release notes

## v0.195.1

-   *Internal code cleanup.*

## v0.195.0

### Features

-   Return to internal string references.
-   Allocate memory for string content.

### Bug fixes

-   Join paths correctly in the `influxdb` source.
-   Optimize string arrays.

### Dependency updates

-   Update `github.com/benbjohnson/immutable`.
-   Update `github.com/SAP/go-hdb`.
-   Build on Rust 1.78.

## v0.194.5

### Bug fixes

-   Resolve build error on Rust 1.72.0+.

## v0.194.4

-   *Internal code cleanup.*

## v0.194.3

-   *Internal code cleanup.*

## v0.194.3

### Bug fixes

-   Make [`histogramQuantile()`](/flux/v0/stdlib/universe/histogramquantile/) correctly handle cases of zero samples.

## v0.194.1

### Bug fixes

-   Make C foreign function interface (FFI) more robust when checking for valid input.

## v0.194.0

### Features

-   Add microsecond and nanosecond support to [`iox.sqlInterval()`](/flux/v0/stdlib/experimental/iox/sqlinterval/).

### Bug fixes

-   Fix panic caused by chunking outer joins.
-   Remove 64bit reference counter misalignments.

## v0.193.0

### Features

-   Add `onNonmonotonic` parameter to [`histogramQuantile()`](/flux/v0/stdlib/universe/histogramquantile/) to define behavior when bin counts are not monotonically increasing.
-   Add the following functions to the `contrib/qxip/hash` package:
    -   [`hash.sha1()`](/flux/v0/stdlib/contrib/qxip/hash/sha1/)
    -   [`hash.md5()`](/flux/v0/stdlib/contrib/qxip/hash/md5/)
    -   [`hash.b64()`](/flux/v0/stdlib/contrib/qxip/hash/b64/)
    -   [`hash.hmac()`](/flux/v0/stdlib/contrib/qxip/hash/hmac/)

### Bug fixes

-   Convert platform-dependent path separators to slashes.
-   `use-after-free` in optimized String array.

## v0.192.0

### Breaking changes

-   Update iox.sql to detect midstream errors.

### Features

-   Add [`geo.totalDistance()`](/flux/v0/stdlib/experimental/geo/totaldistance/) to aggregate total distance of consecutive points.
-   Add [`iox.sqlInterval()`](/flux/v0/stdlib/experimental/iox/sqlinterval/) to convert Flux durations to SQL interval strings.
-   Add the [`contrib/qxip/hash`](/flux/v0/stdlib/contrib/qxip/hash/) package which includes hashing functions.
-   Add the [`contrib/qxip/logql`](/flux/v0/stdlib/contrib/qxip/logql/) package which provides functions for working with [Grafana Loki](https://grafana.com/oss/loki/) and [LogQL](https://grafana.com/docs/loki/latest/logql/).
-   Add [`contrib/qxip/clickhouse`](/flux/v0/stdlib/contrib/qxip/clickhouse/) package which provides functions for querying data from [Clickhouse](https://clickhouse.com/).

## v0.191.0

### Features

-   Associate registry attributes to import statements.

## v0.190.0

### Features

-   Add download headers within the CSV dialect.

## v0.189.0

### Features

-   Add `PartialOrd` and `Ord` to `ast::Position`.
-   Detect undesirable patterns so we can remove them later.

### Bug fixes

-   Update attribute syntax to require following element.
-   Add `salsaDatabase` to list of feature passed to Rust.
-   `testing.ShouldError` should error when no error occurs.
-   Restore termination defaults for `holtWinters` to improve performance.
-   Use salsa db when generating documentation.

## v0.188.1

### Bug fixes

-   Correctly handle join operations with large input that exceed the buffer size.

## v0.188.0

### Features

-   Compile the standard library incrementally.
-   Add attribute parsing to the parser.

### Bug fixes

-   Allow functions receiving dynamic arguments to do member expressions.

## v0.187.0

### Features

-   Add [`types.isNumeric()`](/flux/v0/stdlib/types/isnumeric/) to test for numeric values.
-   Recommend valid arguments in extra argument errors.
-   Add dynamic type support to standard type conversion functions.

### Bug fixes

-   When using `experimental.unpivot()`, don’t add the `_field` column to the group key by default.
-   Fix compilation error when using Rust 1.64.

## v0.186.0

### Features

-   Add [`dynamic.isType()` function](/flux/v0/stdlib/experimental/dynamic/istype/).
-   Add [`dynamic.asArray()` function](/flux/v0/stdlib/experimental/dynamic/asarray/).
-   Add JSON functions that work with dynamic values:
    -   [`dynamic.jsonParse()`](/flux/v0/stdlib/experimental/dynamic/jsonparse/)
    -   [`dynamic.jsonEncode()`](/flux/v0/stdlib/experimental/dynamic/jsonencode/)
-   Add runtime support for member expressions and remove index support for dynamic values.
-   Add [`iox.sql()` function](/flux/v0/stdlib/experimental/iox/sql/).

### Bug fixes

-   Update the `toUInt()` test to use the correct conversion behavior.
-   Prevent the Flux formatter from losing precision on float values.

## v0.185.0

### Features

-   Add dynamic type.
-   Add dynamic wrapper function.
-   Enable codespan formatting for errors via feature flags.

### Bug fixes

-   Pass context in the `Run` source helper.
-   Handle null vector inputs for `_vecFloat`.
-   Remove broken `contrib` packages:
    -   contrib/jsternberg/aggregate
    -   contrib/jsternberg/math

## v0.184.2

### Bug fixes

-   Remove the `stacker` dependency.
-   Skip strict *null* logical evaluator.

## v0.184.1

-   *Internal code cleanup.*

## v0.184.0

### Breaking changes

-   Update logical *null* handling and align all logical operator implementations (vectorized, row-based, as well as “in the interpreter”) to be consistent and representative of the Flux SPEC.

### Features

-   Add array type conversion functions to the [experimental `array` package](/flux/v0/stdlib/experimental/array/).

### Bug fixes

-   Update SPEC and fix some inconsistencies.
-   Update `sort limit` to skips chunks with no rows.
-   Don’t report an error about testcases in the LSP.
-   Prevent the metadata map from being concurrently mutated.
-   Don’t stackoverflow on deeply nested expressions.

## v0.183.0

### Features

-   Add support for piped-forward arrays to [`array.from()`](/flux/v0/stdlib/array/from/).
-   Add parameter to [`experimental.unpivot()`](/flux/v0/stdlib/experimental/unpivot/) for non-field and non-group-key columns.
-   Add a syntax for describing label literals.
-   Don’t display nulls as 0 in the output of `experimental.diff()`.

### Bug fixes

-   Fix duplicate definitions and update issue links in the Flux SPEC.
-   Don’t include opening parentheses in invalid call expressions.
-   Improve error message when joining with an empty table.

## v0.182.0

### Features

-   Display yields in `fluxtest`.
-   Allow [`experimental.unpivot()`](/flux/v0/stdlib/experimental/unpivot/) to work when the `_time` column is missing.
-   Add utility to the `function` package to register a source or transformation.
-   Add Rust binary to sit on top of “headless” REPL backend.

### Bug fixes

-   Correct type for `fillValueTime`.
-   Correct panic in vectorized division by zero.
-   Correct inconsistent runtime typing for `logicalVectorEvaluator`.
-   Don’t treat errors in SQL syntax as internal.
-   Improve error handling when missing a property on member expressions.
-   Preserve values of non-string group keys in `experimental.diff()`.

## v0.181.0

### Features

-   Add “headless” JSON-RPC based REPL.
-   Support vectorized unary operators.
-   Add [`experimental/polyline` package](/flux/v0/stdlib/experimental/polyline) for downsampling data.
-   Update function library to have its own arguments struct.

### Bug fixes

-   Update import path for the `Spec` package in the “headless” REPL.
-   Update conditional vectorization to handle bad values for `test`, `consequent`, or `alternate`.

## v0.180.1

-   *Internal code cleanup.*

## v0.180.0

### Features

-   Rewrite calls to `float()` as `_vectorizedFloat()`.
-   Reduce the Flux formatter default line length to 100 characters.

### Bug fixes

-   Fix logic bug in planner helper method.
-   Don’t include null columns when unpivoting.
-   Don’t error when formatting boolean literals.
-   Sort columns when printing group keys.

## v0.179.0

### Features

-   Add a `Stringify` utility function for `table.Chunk`.
-   Add support for vectorized binary equality operations.
-   Update `testing.diff()` to use `experimental.diff()` permanently.
-   Add vectorized `float()` builtin function.
-   Enhance `fluxtest` to use package name with `test` and `skip` flags.
-   Allow any kind of AST fragment to be formatted.
-   Accept Flux feature flags to the test command.

### Bug fixes

-   Update `testing.shouldError()` to use regular expression matching instead of string matching.
-   Temporarily remove duplicates test to avoid conflicts downstream.
-   Update `buildinfo` documnentation comments to match latest `go fmt`.
-   Fix aggregate window rules that left query plans in a bad state.
-   Include filename when printing the AST location.

## v0.178.0

### Features

-   Support `apiKey` parameter in [`zenoss.event()`](/flux/v0/stdlib/contrib/bonitoo-io/zenoss/event/) and [`zenoss.endpoint()`](/flux/v0/stdlib/contrib/bonitoo-io/zenoss/endpoint/).
-   Remove `vectorizedConst` feature flag.

### Bug fixes

-   Deprecate `date/boundaries` package in favor of [`experimental/date/boundaries`](/flux/v0/stdlib/experimental/date/boundaries/).
-   Update pattern matching to specify successor counts.
-   Restore integer return value for [`pagerduty.sendEvent()`](/flux/v0/stdlib/pagerduty/sendevent/).

## v0.177.1

### Bug fixes

-   Update `strings.substring()` to check bounds using rune array instead of string length.

## v0.177.0

### Features

-   Support conditional expressions in vectorized `map()`.
-   Compute minimum required dispatcher concurrency from the plan graph.
-   Add a query planner rule to remove redundant sort nodes.

### Bug fixes

-   Guard message processing with mutexes.
-   Update Flux REPL to use unique planner node IDs.

## v0.176.0

### Features

-   Promote various feature-flagged features and optimizations to be used by default.

### Bug fixes

-   Support the [`location` option](/flux/v0/stdlib/internal/location/#options) in the [`boundaries` package](/flux/v0/stdlib/date/boundaries/).
-   Pass epsilon value from Go tests to the Flux test framework.
-   Ignore unknown messages rather than erroring.

## v0.175.0

### Features

-   Update [`testing.diff()`](/flux/v0/stdlib/testing/diff/) to use [`experimental.diff()`](/flux/v0/stdlib/experimental/diff/) as its base.
-   Add a new diff implementation to the [experimental package](/flux/v0/stdlib/experimental/).
-   Generalize attributes in the query planner.
-   Add support for constants and literals in vectorized `map()`.
-   Optimize the Holt Winters implementation by using the [gonum Nelder-Mead optimization](https://github.com/gonum/gonum/blob/master/optimize/neldermead.go).

### Bug fixes

-   When joining data, provide a default schema for unmatched group keys.
-   Update the join package to be resilient to schema changes.

## v0.174.1

### Bug fixes

-   Update [`aggregateWindow()`](/flux/v0/stdlib/universe/aggregatewindow/) to correctly handle null values when using `sum` or `mean`.
-   Update [`to()`](/flux/v0/stdlib/influxdata/influxdb/to/) and [`wideTo()`](/flux/v0/stdlib/influxdata/influxdb/wideto/) to skip empty tag values.

## v0.174.0

### Features

-   Add coloring highlights to test outputs.
-   Promote [`experimental.to()`](/flux/v0/stdlib/experimental/to/) to [`influxdata.influxdb.wideTo()`](/flux/v0/stdlib/influxdata/influxdb/wideto/).
-   Allow physical plan [`attributes`](https://github.com/influxdata/flux/blob/master/plan/attributes.go) to contribute to [`formatter`](https://github.com/influxdata/flux/blob/master/plan/format.go) details.
-   Add tagging support to Flux tests.
-   Add new function [`experimental.catch()`](/flux/v0/stdlib/experimental/catch/).
-   Add new function [`testing.shouldError()`](/flux/v0/stdlib/testing/shoulderror/).

### Bug fixes

-   Update `httpWriter` struct to skip invalid floats.
-   Update [`join()`](/flux/v0/stdlib/join/) to validate group keys.
-   Fix unit tests for [`covariance()`](/flux/v0/stdlib/universe/covariance/).
-   Update all Flux packages to additionally live as Go packages.

## v0.173.0

### Breaking changes

-   Format scripts with a trailing newline by default when running the formatter.

### Features

-   Deprecate [`experimental.http.get`](/flux/v0/stdlib/experimental/http/get/).
-   Deprecate [`experimental.csv.from()`](/flux/v0/stdlib/experimental/csv/from/).
-   Promote the following functions from `experimental.array` into the [`array`](/flux/v0/stdlib/array) package:
    -   [`array.concat()`](/flux/v0/stdlib/array/concat/)
    -   [`array.filter()`](/flux/v0/stdlib/array/filter/)
    -   [`array.map()`](/flux/v0/stdlib/array/map/)
-   Promote the following functions from `experimental.http.requests` into the [`http.requests`](/flux/v0/stdlib/http/requests/) package:
    -   [`http.requests.do()`](/flux/v0/stdlib/http/requests/do/)
    -   [`http.requests.get()`](/flux/v0/stdlib/http/requests/get/)
    -   [`http.requests.peek()`](/flux/v0/stdlib/http/requests/peek/)
    -   [`http.requests.post()`](/flux/v0/stdlib/http/requests/post/)
-   Promote `experimental.bitwise` into the [`bitwise`](/flux/v0/stdlib/bitwise/) package.
-   Remove all `Test` statements. New statements are written with `TestCase`.
-   Format scripts with a trailing newline by default when running the formatter.

### Bug fixes

-   Return an error if the user modifies group key while using [`join`](/flux/v0/stdlib/join/)

## v0.172.0

### Features

-   Add multiple new join functions to the [`join`](/flux/v0/stdlib/join/) package such as [`join.full()`](/flux/v0/stdlib/join/full/).
-   Add [`initialZero`](/flux/v0/stdlib/universe/derivative/#initialzero) parameter to the derivative function.
-   Allow features to enable builtin statements.
-   Provide the comments for each `Symbol` from `PackageExports`.
-   Suggestions now start off by default and added a new flag.
-   Add builtin function [`time`](/flux/v0/stdlib/date/time/) to the `date` package to convert any timeable into datetime.
-   Allow vector types to be specified in Flux source.

### Bug fixes

-   Replace extra boolean parameter for suggestions with Flux REPL options.
-   Remove [`testing.load()`](/flux/v0/stdlib/testing/load/) from [`testutil.yield()`](/flux/v0/stdlib/internal/testutil/yield/).
-   Fix a bug in how sort nodes are created for a new join.
-   Removed extra indentation for test cases.
-   Retain the package for identifier referencing the prelude.
-   Only return an error in tests if an assertion fails.
-   Fix [`findColumn()`](/flux/v0/stdlib/universe/findcolumn/) to handle multi-buffer tables.
-   Point to the function being piped to on argument mismatches.
-   Visit successors before continuing DFS on node.

## v0.171.0

### Breaking changes

-   Remove `testing.loadStorage()`.

### Features

-   Add `FromStr` to allow the Flux LSP (language server protocol) CLI to run with optional Flux features.
-   Add method to parallelize aggregate transformations.
-   Report unused symbols.
-   Add `From` implementations for `Node/NodeMut`.

### Bug fixes

-   Pass a seed to the tables generator.
-   Ensure buffers are retained when copying a buffered table.
-   Return an error when using a label variable without the Label constraint.

## v0.170.1

### Bug fixes

-   Require an earlier minimum version of `lsp-types`.

## v0.170.0

### Features

-   Add a `pretty.rs`\-based MonoType formatter.

### Bug fixes

-   Update vectorized `map()` to properly handle shadowed columns.

## v0.169.0

### Features

-   Add a `_status` tag to PagerDuty records.
-   Refactor the operator profile to be in the query statistics.

### Bug fixes

-   Ensure that constraints are checked and propagated fully.
-   Fix math for integral with a single value.
-   Add `json` tags for the transport profiles in statistics.
-   Initialize `Metadata` in Flux statistics.
-   Return a more helpful error message when an HTTP response body exceeds 100MB.
-   Correct several issues found during the implementation of polymorphic labels.

## v0.168.0

### Features

-   Enable [`movingAverage()`](/flux/v0/stdlib/universe/movingaverage/) and [`cumulativeSum()`](/flux/v0/stdlib/universe/cumulativesum/) optimizations by default.
-   Vectorize logical operations in [`map()`](/flux/v0/stdlib/universe/map/).
-   Add a planner rule that expands logical join nodes.
-   Added timezone support to [`hourSelection()`](/flux/v0/stdlib/universe/hourselection/).

### Bug fixes

-   Attach type when constructing logical expressions.
-   Fix panic with half-diamond logical plan.

## v0.167.0

### Features

-   Allow default types to be specified for default arguments.
-   Add [`date.scale()`](/flux/v0/stdlib/date/scale/) to allow for dynamic duration changes.
-   Expose aggregate window spec fields for use by the query planner.
-   Add [`experimental.preview()`](/flux/v0/stdlib/experimental/preview/).

### Bug fixes

-   Update `date.add()` and `date.sub()` to work correctly with timezones enabled.
-   Fix failing continuous integration tests.
-   Update `hourSelection()` to support overnight time ranges.
-   Fix logic error in aggregate window planner rule preserve the rule if `table.fill` is present.
-   Use `MultiplicativeOperator` in `MultiplicativeExpression`.

## v0.166.0

### Features

-   Add InfluxData semantic commit and pull request title validator.
-   Add an `Expr` node to the visitor API.
-   Add label polymorphism.
-   Vectorize remaining arithmetic operators.

### Bug fixes

-   Remove `JoinOpSpec.TableNames` in favor of `JoinOpSpec.params` to stay consistent inside `tableFind()`.
-   Fix `SortLimit` for empty input group.

## v0.165.0

### Features

-   Add support for options in the `testcase` extension.
-   Vectorize addition operations in `map()`.
-   Add location support to `date.truncate()`.
-   Accept string literals in properties of a record type.
-   Add trace option to the `flux` CLI.
-   Add `EquiJoinPredicateRule`.

### Bug fixes

-   Update `map()` test case to include a range.
-   Don’t set `BaseLocation.file` to `Some("")`.
-   Fix `strings.joinStr` panic when it receives a null value.
-   Remove 64bit misalignment.
-   Fix memory releases and add checked allocator to the end of tests.

## v0.164.1

### Bug fixes

-   Remove an extraneous `go generate` statement.

## v0.164.0

### Features

-   Allow Go to pass compilation options to Rust.

### Bug fixes

-   Do not assume integers are 64bit integers.
-   Update `prometheus.scrape` type signature to correctly return a stream.

## v0.163.0

### Features

-   Report skipped tests.

### Bug fixes

-   Update transformation transport adapter to always invoke `finish`.
-   Add support for “soft paragraphs” (paragraphs that contain single newline characters) in inline Flux documentation.

## v0.162.0

### Features

-   Add [OpenTracing spans](https://opentracing.io/docs/overview/spans/) to the Flux runtime.
-   Add the `cffi` feature to reduce WASM binary size.
-   Replace the main `flux` CLI with a new `flux` CLI that starts a Flux REPL by default or executes a Flux script via stdin.
-   Track freed memory with `SetFinalizer`.
-   Move [`addDuration()`](/flux/v0/stdlib/date/add/) and [`subDuration()`](/flux/v0/stdlib/date/sub/) from the `experimental` package to the `date` package.

### Bug fixes

-   Improve error messages for column conflicts in pivot operations.
-   Create OpenTracing spans for transformations using the proper context.
-   Add errors to OpenTracing spans created for transformations.
-   Restore required features hidden behind the `cffi` feature.

## v0.161.0

### Features

-   Re-enable the dialer pool and update dependency injection.

### Bug fixes

-   Check length boundary for lower bound of [`strings.substring()`](/flux/v0/stdlib/strings/substring/).

## v0.160.0

### Features

-   Remove the `concurrencyLimit` feature flag and keep it in the dependencies.
-   Add MQTT Docker integration test.
-   Enable dialer pool.
-   Add an IOx-specific unpivot function to the `internal` package.

### Bug fixes

-   Update [`join()`](/flux/v0/stdlib/universe/join/) to properly handle divergent schemas.
-   Fix line endings in the `testcase` format to prevent unnecessarily nesting the body of a test case.
-   Make [`strings.substring()`](/flux/v0/stdlib/strings/substring/) check bounds correctly.
-   Fix duration and integer literal scanning.
-   Make `testcase` a semantic check instead of an error.
-   Skip parallel merge when selecting the result name based on side effects.
-   Add metadata headers to inline documentation.

## v0.159.0

### Features

-   Added a `finish` state to parallel-merge and always protect with a mutex lock.

### Bug fixes

-   Use a fork of the `gosnowflake` library to prevent file transfers.
-   When encoding Flux types as JSON, encode dictionary types as JSON objects.
-   Upgrade Apache Arrow to v7.

## v0.158.0

### Features

-   Add inline documentation to the `universe` package.
-   Factor parallel execution into the concurrency quota calculation.

### Bug fixes

-   Add parallel merges with no successors to the results set.
-   Correctly use range in an updated `map()` test.

## v0.157.0

### Features

-   Update `fill()` to use narrow transformation.
-   Add an attribute-based instantiation of parallel execution nodes.
-   Expose the `Record::fields` iterator.
-   Allow the `estimate_tdigest` method in `quantile()` to process any numeric value.
-   Optimize `aggregateWindow()` for specific aggregate transformations.

### Bug fixes

-   Update vectorized `map()` to handle missing columns.
-   Remove duplicate line in `Makefile`.
-   Fix `cargo doc` build errors.
-   Reclassify CSV-decoding errors as user errors.
-   Update `iox.from()` and `generate.from()` to use proper stream annotation.

## v0.156.0

### Features

-   Add second pass to physical planner for parallelization rules.
-   Separate streams from arrays in the type system.
-   Add function to internal/debug to check feature flag values.
-   Allow feature flags to record metrics if configured.
-   Add extra verbose level to dump AST of test.
-   Explain what `[A], [A:B]` etc means in errors.

### Bug fixes

-   Make `buckets()` function return a stream.
-   Remove unnecessary `TableObject` guards.
-   Copy `TagColumns` in `to()` that may get modified into the transformation.
-   Update tests to use explicit yields.

## v0.155.1

### Bug fixes

-   Update tests to use an explicit yield.

## v0.155.0

### Features

-   Add new [experimental array functions](/flux/v0/stdlib/experimental/array/) for operating on arrays.

### Bug fixes

-   Add `stop` parameter to [InfluxDB schema functions](/flux/v0/stdlib/influxdata/influxdb/schema/).
-   Remove `os.Exit` calls and allow `defer executor.Close` to run.
-   Properly handle time zone transitions when there is no daylight savings time in the specified time zone.

## v0.154.0

### Features

-   Add [`requests.peek()`](/flux/v0/stdlib/experimental/http/requests/peek/) to return HTTP response data in a table.
-   Add [`display()`](/flux/v0/stdlib/universe/display/) to represent any value as a string.
-   Create a version of `map()` that is columnar and supports vectorization.
-   Support vectorized functions.

### Bug fixes

-   Add time vector to the `values` package.
-   Set the correct type for vectorized functions.

## v0.153.0

### Features

-   Connect language server protocol (LSP) features through the Flux crate.
-   Add conversion from `flux.Bounds` to `plan/execute.Bounds`.
-   Re-index all bound variables to start from 0.

### Bug fixes

-   Int feature flags work properly when returned as floats.

## v0.152.0

### Features

-   Add the [`experimental/http/requests` package](/flux/v0/stdlib/experimental/http/requests/) to support generic HTTP requests.
-   Add [`experimental/iox` package](/flux/v0/stdlib/experimental/iox/) and a placeholder for the `iox.from()` function.
-   Add dependency hooks to the dependency subsystem.
-   Remove unneeded feature flags.

### Bug fixes

-   Revert update to the dependencies package.
-   Return false if contains gets invalid value.

## v0.151.1

### Features

-   Update to Rust 1.58.1.

## v0.151.0

### Features

-   Expose `MonoType::parameter` and `MonoType::field`.

### Bug fixes

-   Support writing unsigned integers with the `http` provider.

## v0.150.1

### Bug fixes

-   Remove duplicate `die` builtin in the `universe` package.

## v0.150.0

### Features

-   Update inline documentation in the following packages:
    -   date
    -   experimental
    -   testing
    -   timezone
    -   types

### Bug fixes

-   Make iterating the hashmap deterministic.
-   Quote SQL identifiers to mitigate the risk of SQL injection.

## v0.149.0

### Features

-   Add `Get` methods to `metadata`.
-   Optimized `sort |> limit` operations.
-   Add [`location` option](/flux/v0/stdlib/universe/#location) support to the `date` package.
-   Use reference equality for `Symbol`.
-   Add inline documentation to the following packages:
    -   socket
    -   sql
    -   strings

### Bug fixes

-   Do not attempt IP validation for BigQuery data source names (DSNs).

## v0.148.0

### Features

-   Report multiple errors from a single `unify` call.
-   Update [`to`](/flux/v0/stdlib/influxdata/influxdb/to/) transformation to use narrow transformation.
-   Provide specific error information on function calls.
-   Allow errors to be formatted via `codespan`.
-   Add an `internal/debug.opaque` function.
-   Provide which package exported a symbol.
-   Add timeable support to [`experimental.addDuration()`](/flux/v0/stdlib/experimental/addduration/) and [`experimental.subDuration()`](/flux/v0/stdlib/experimental/subduration/).
-   Add inline documentation to the following packages:
    -   interpolate
    -   json
    -   kafka
    -   math
    -   regexp
    -   runtime
    -   sampledata
    -   slack
    -   system
    -   pagerduty
    -   profiler
    -   pushbullet

### Bug fixes

-   Classify IP validation failures as `Invalid`.
-   Relocate the mutex in the optimized union to avoid a data race.
-   Split the entire pipe chain into multiple lines (if necessary).

## v0.147.0

### Features

-   Optimize [`union()` transformation](/flux/v0/stdlib/universe/union/).
-   Optimize [`timeShift()` transformation](/flux/v0/stdlib/universe/timeshift/).
-   Add inline documentation to the following packages:
    -   experimental/prometheus
    -   experimental/query
    -   experimental/record
    -   experimental/table
    -   experimental/usage

### Bug fixes

-   Add mutex to the optimized `union` transformation.
-   Ensure arrays are not table streams before calling `Len()`.
-   Disable flakey `geo.filterRows` tests.

## v0.146.0

### Features

-   Update `pkg-config` to support `aarch64-apple-darwin`.
-   Add inline documentation to the following packages:
    -   experimental/geo
    -   experimental/http
    -   experimental/influxdb
    -   experimental/json
    -   experimental/mqtt
    -   experimental/oee

### Bug fixes

-   Update the default `epsilon` parameter for `testing.diff` to `0.000001`.
-   Fix unsigned integer conversion tests to correctly use an defined conversion.

## v0.145.0

### Features

-   Add inline documentation to the following packages:
    -   experimental/aggregate
    -   experimental/array
    -   experimental/bigtable
    -   experimental/bitwise
    -   experimental/csv

### Bug fixes

-   Return an error from join operations if a column is not found in the schema.

## v0.144.0

### Features

-   Add location and message methods to `semantic::Error`.
-   Return multiple errors from conversions.
-   Add a vectorized field to semantic graph, `FunctionExpr`.

### Bug fixes

-   Set `GOPATH` in `Dockerfile_build`.

## v0.143.1

### Bug fixes

-   Add targets to `rust-toolchain`.

## v0.143.0

### Breaking changes

-   Add new parameters to [`difference()`](/flux/v0/stdlib/universe/difference/) to ensure [`increase()`](/flux/v0/stdlib/universe/increase/) returns more accurate results on counter reset.

### Features

-   Don’t introduce constraints for default arguments.
-   Make error messages more consistent.
-   Use new versions of `sort()` and `derivative()` by default.
-   Add inline documentation to the following packages:
    -   contrib/anaisdg/anomalydetection
    -   contrib/anaisdg/statsmodels
    -   contrib/bonitoo-io/victorops
    -   contrib/bonitoo-io/zenoss
    -   contrib/jsternberg/influxdb
    -   contrib/rhajek/bigpanda
    -   contrib/sranka/telegram
    -   experimental

### Bug fixes

-   Validate examples in inline documentation as part of CI linting process.
-   Correctly handle trailing dollar signs in string expression.
-   Improve `fluxdoc` error messages.
-   Fix panic when `length()` is given a stream of tables.
-   Fix panic when `json.encode()` is given a stream of tables.

## v0.142.0

### Features

-   Default to erroring dependencies

### Bug fixes

-   Fix Queryd panic when using the `experimental/geo` package.

## v0.141.0

### Features

-   Add `is_type` to query the runtime type.
-   Add ability to read options from the `Context`.
-   Ignore documentation for values prefixed with an underscore (`_`).
-   Add inline documentation to the following packages:
    -   contrib/RohanSreerama5/naiveBayesClassifier
    -   contrib/bonitoo-io/alerta
    -   contrib/bonitoo-io/hex
    -   contrib/bonitoo-io/servicenow
    -   contrib/bonitoo-io/tickscript
    -   contrib/chobbs/discord
    -   contrib/jsternberg/rows/
    -   contrib/sranka/opsgenie
    -   contrib/sranka/sensu/
    -   contrib/sranka/teams
    -   contrib/sranka/webexteams
    -   contrib/tomhollingworth/events
    -   generate
    -   http
    -   influxdata/influxdb
    -   influxdata/influxdb/monitor
    -   influxdata/influxdb/sample
    -   influxdata/influxdb/schema
    -   influxdata/influxdb/secrets
    -   influxdata/influxdb/tasks
    -   influxdata/influxdb/v1

### Bug fixes

-   Propagate the element type through array constructors.
-   Catch unsupported input types in aggregate transformations.
-   Support pipe parameters (`<-`) in `fluxdoc`.
-   Fix documentation errors when running `cargo doc`.
-   Reduce the amount of extra parse errors.

## v0.140.0

### Features

-   Support reporting unlimited diagnostics.
-   Support type inference running on invalid ASTs.
-   Add erroring versions for each dependency.
-   Report multiple errors from type inference.
-   Add `fluxdoc` formatting documentation.
-   Add inline documentation to the following packages:
    -   array
    -   csv
    -   dict

### Bug fixes

-   Handle errors when executing inline examples.
-   Convert fixed array to slice.
-   Compare sorted join keys.
-   Make multiline-formatting consistent.
-   Fix invalid syntax formatting.
-   Improve error checking for null and invalid types.

## v0.139.0

### Features

-   Continue type inference through errors at runtime.

### Bug fixes

-   Revert `runtime.now()` and related updates.

## v0.138.0

### Features

-   Create a BigTable dependency to let Flux mimic or control BigTable API usage.
-   Report multiple type inference errors.
-   Add [bitwise operations](/flux/v0/stdlib/experimental/bitwise/).

### Bug fixes

-   Update [`fill()`](/flux/v0/stdlib/universe/fill/) to return tables unchanged when using `usePrevious` to fill a non-existent column.
-   Add `runtime.now()` to return the same time throughout a script execution.

## v0.137.0

### Features

-   Add support for [Vertica](https://www.vertica.com/) to the [`sql` package](/flux/v0/stdlib/sql/).

### Bug fixes

-   Correctly handle HTTP errors from the InfluxDB writer.

## v0.136.0

### Features

-   Enable executable examples to documentation generated by `fluxdoc`.
-   Enforces IP validation and timeouts when using `mqtt`.
-   Add an alternate `flux` CLI that starts the REPL if no argument is given.
-   Update lint formatting.
-   Add [`contrib/bonitoo-io/servicenow` package](/flux/v0/stdlib/contrib/bonitoo-io/servicenow/) and support for [ServiceNow](https://servicenow.com/) events.
-   Add `component` and `customDetails` parameters to [`pagerduty.sendEvent()`](/flux/v0/stdlib/pagerduty/sendevent/).
-   Update the `fluxdoc` parser to capture more data.
-   Create a formatter for semantic graph.

### Bug fixes

-   Add `contrib/bonitoo-io/servicenow` to the list of `fluxdoc` exceptions.
-   Disable write retries for the InfluxDB `http` provider.

## v0.135.1

### Features

-   Add a disposable interface for transformations.

### Bug fixes

-   Improve error message when regrouping is required in `map()`.

## v0.134.0

### Features

-   Add short mode to `fluxdoc dump` command.
-   Add Analyzer API to `libflux`.
-   Add [`timezone` package](/flux/v0/stdlib/timezone/) with fixed offset location.
-   Add [`record.get()` function](/flux/v0/stdlib/experimental/record/get/) to dynamically retrieve record properties.
-   Embed the compiled standard library instead of compiling at runtime.

### Bug fixes

-   Create new annotations when group key columns change.
-   Update [`prometheus.histogramQuantile()`](/flux/v0/stdlib/experimental/prometheus/histogramquantile/) to support multiple histograms and metric format versions.

## v0.133.0

### Features

-   Expose location functionality to [`window()`](/flux/v0/stdlib/universe/window/), [`aggregateWindow()`](/flux/v0/stdlib/universe/aggregatewindow/), and [`experimental.window()`](/flux/v0/stdlib/experimental/window/).
-   Add location functionality to the `interval` package.
-   Add methods to convert time values to and from local clock time.
-   Add [`mqtt.publish()` function](/flux/v0/stdlib/experimental/mqtt/publish/).
-   Add [`retain` parameter](/flux/v0/stdlib/experimental/mqtt/to/#retain) to [`mqtt.to`](/flux/v0/stdlib/experimental/mqtt/to/).

### Bug fixes

-   Add `range()` before `window()` to set query time bounds in tests.
-   Use a new `Fresher` instance for each package.

## v0.132.0

### Features

-   Copy location-related code from the Go `time` package.
-   Create a `Vector` monotype.
-   Refactor and optimize [`derivative()` transformation](/flux/v0/stdlib/universe/derivative/).
-   Add new [InfluxDB sample datasets](/flux/v0/stdlib/influxdata/influxdb/sample/data/#available-influxdb-sample-datasets) and [`sample.alignToNow()`](/flux/v0/stdlib/influxdata/influxdb/sample/aligntonow/).
-   Allow query concurrency to be set to the number of nodes in the graph.

### Bug fixes

-   Update null check with clear error message.
-   Report errors from function parameters.
-   Propagate all inferred properties to a function argument.
-   Fix `Staticcheck` linter in `executetest`.
-   Reformat non-formatted Flux files.
-   Make builds reproducible by ordering package members in the `doc` package.
-   Prevent the optimized `derivative()` from attempt to replicate a non-existent bug.
-   Update [`events.duration()`](/flux/v0/stdlib/contrib/tomhollingworth/events/duration/) to properly handle multiple buffers.

## v0.131.0

### Features

-   Update `group` to use new `GroupTransformation` interface.
-   Add [`experimental/record` package](/flux/v0/stdlib/experimental/record/).
-   Embed compiled Flux standard library instead of compiling at runtime.
-   Add [`contrib/bonitoo-io/hex` package](/flux/v0/stdlib/contrib/bonitoo-io/hex/) to work with hexadecimal string values.

### Bug fixes

-   Disallow setting [`allowAllFiles` parameter](https://github.com/go-sql-driver/mysql#allowallfiles) in [MySQL DSNs](/flux/v0/query-data/sql/mysql/#mysql-data-source-name).
-   Downgrade [Snowflake](/flux/v0/query-data/sql/snowflake/) version.
-   Add *null* support to optimized `repeat` function.

## v0.130.0

### Features

-   Add narrow state transformation transport.

## v0.129.0

### Features

-   Make `flux-dump-docs` use a nested documentation structure.

### Bug fixes

-   Add `boolean` package to prelude.
-   Delete obsolete Go formatter code.
-   Fix `unknown type` panic when using `difference()`.

## v0.128.0

### Features

-   Add [`sampledata` package](/flux/v0/stdlib/sampledata/) with basic sample datasets.
-   Add `GroupTransformation` transport.

## v0.127.3

### Bug fixes

-   Add `FormatDuration` method that can be exported in other repositories.

## v0.127.2

### Bug fixes

-   Remove `flux wasm` crate and moved it to `lsp`.
-   Delete obsolete packages.
-   Add `_time` to status sorting.
-   Fix panic with `unknown type invalid` in `reduce()` function.

## v0.127.1

### Bug fixes

-   `limit()` correctly resets the offset after processing a partial buffer.

## v0.127.0

### Features

-   Create an executable to retrieve all `stdlib` documentation and updated WASM functions.
-   Implement `transport` in aggregate transformations.
-   Add documentation site links and fix `flux_types` issue.

### Bug fixes

-   `fill()` function fails when the specified fill column doesn’t exist.
-   Add `link` parameter to function structs.

## v0.126.0

### Features

-   Update `filter()` to use narrow transformation.

### Bug fixes

-   Return JSON for WASM.
-   Check both dynamic types and static values in `strings` package.
-   Check both dynamic types and static values in `regexp` package.
-   Change `die` error code to invalid.

## v0.125.0

### Features

-   Add feature flag library as an internal package.
-   Add narrow transformation transport.
-   Add transport-aware dataset.
-   Simplify the transport interface and add a transformation adapter.
-   Add [`contrib/sranka/webexteams` package](/flux/v0/stdlib/contrib/sranka/webexteams/).
-   Add optimized repeat function for arrow arrays.
-   Add two additional internal message types.

### Bug fixes

-   Update transformation adapter to return an error when receiving a flush key for a table that is not present.
-   Fix pivot operations when no data is left to operate on.
-   Update `join()` to produce columns of equivalent length when combining mismatched schemas.

## v0.124.0

### Features

-   Update the string array builder to support constant data.
-   Expand message interface with message lifetime controls.
-   Create internal Flux array package.

### Bug fixes

-   Register `sortedPivot` and update `sortedPivot` kind.
-   Derive `Copy` on `ast::Position`.
-   Update `to()` function to properly close the writer on error.
-   Update `libflux` include paths to use `pkg-config`.
-   Properly copy record types with no `extends` parameter.

## v0.123.0

### Breaking changes

-   Remove the `sleep()` function.

### Features

-   Optimize [`pivot()` transformation](/flux/v0/stdlib/universe/pivot/).
-   Add [InfluxDB sample data package](/flux/v0/stdlib/influxdata/influxdb/sample/).
-   Use `table.fill()` when `aggregateWindow(createEmpty: true)` is used.

## v0.122.0

### Features

-   Add `--skip` flag to the `flux test` command to skip specific tests.

## v0.121.0

### Features

-   Update [`experimental.to()`](/flux/v0/stdlib/experimental/to/) to use the Flux `influxdb` provider.

## v0.120.1

-   *Add inline Flux function documentation.*

## v0.120.0

### Features

-   Bootstrap documentation methods.

### Bug fixes

-   Reverse [`math.atan2()`](/flux/v0/stdlib/math/atan2/) parameters.
-   Fix documentation headers in `stdlib`.
-   Distinct `testcase` should not use `testing.load()`.
-   `movingAverage()` creates columns with the same length when `n` is the size of the input.
-   Allow work queue to be resized when work exceeds queue length.
-   `distinct()` appends null values without creating invalid tables.

## v0.119.1

-   *Add inline Flux function documentation.*

## v0.118.1

-   *Internal code cleanup.*

## v0.118.0

### Features

-   Add `exclude` parameter to `pagerduty.dedupKey()`.

### Bug fixes

-   Ensure PagerDuty tests include a `_value` column.
-   Add length check to CSV annotation parsing.
-   Change `FunctionLiteral` precedence to preserve parentheses.

## v0.117.3

-   *Internal code cleanup.*

## v0.117.2

### Bug fixes

-   Remove `tabstop` processing from formatter.
-   Support dividing IEEE float values by zero.
-   Fix multiline collapse when formatting function parameters.
-   Reclassify `map type` error as `user` error.
-   Fix acceptance tests to catch different timestamps.

## v0.117.1

### Bug fixes

-   Update `group_no_agg_table` acceptance test to run in a consistent order.
-   Remove `xcc.sh` release dependency.
-   Fix `staticcheck` linter failures.
-   Replace erroneous line deletions.

## v0.117.0

### Features

-   [`to()`](/flux/v0/stdlib/influxdata/influxdb/to/) function writes to a remote InfluxDB instance.

### Bug fixes

-   Fix unexpected behavior caused by going over the Go/Rust boundary multiple times using JSON serialization.
-   Update `Assert_eq!` output.
-   Update `comrak` dependency.
-   Set `CARGO_HOME` after removing privileges.
-   Log uneven columns found when processing tables.
-   Audit and clean up the Docker build image.
-   Switch default InfluxDB port from `9999` to `8086`.
-   Add tests for window offset behavior.
-   Update formatting for conditional expressions.
-   Fix string interpolation for basic types.

## v0.116.0

### Features

-   Add Jaeger tracing information to profile metadata.
-   Add `flux fmt` step to the continuous integration pipeline.
-   Update the `window` implementation to use `interval.Window`.
-   Add [`today()` function](/flux/v0/stdlib/universe/today/).

### Bug fixes

-   Remove deadlock when an error occurs while the dispatcher is stopping.
-   Prevent errors caused by the the auto-formatter removing brackets around `if` expressions.
-   Auto-format remaining Flux files.

## v0.115.0

### Features

-   Add [Alerta notifications support](/flux/v0/stdlib/contrib/bonitoo-io/alerta/).
-   Add [`table.fill()` function](/flux/v0/stdlib/experimental/table/fill/) to fill empty tables with a single row.
-   Add string formatting to `dict` type.

### Bug fixes

-   Refactor semantic printing of types.
-   Do not remove escape characters when auto-formatting.
-   Add `0.0.0.0` to URL validator.
-   Add new display API for values.
-   Auto-format Flux files in `stdlib/testing`.

## v0.114.1

### Bug fixes

-   Upgrade `mssqldb` dependency for Go 1.16.
-   Format Flux files in `stdlib`.

## v0.114.0

### Features

-   Add `debug.slurp()` and `debug.sink()`.
-   Add [`experimental/influxdb`](/flux/v0/stdlib/experimental/influxdb/) and [`experimental/usage`](/flux/v0/stdlib/experimental/usage/) packages.
-   Add `fmt` subcommand to the `flux` CLI to apply formatting to Flux files.

### Bug fixes

-   Format Flux files in `stdlib` and `stdlib/testing`.
-   Update the macOS SDK for Go 1.16.
-   Revert check for uneven columns.
-   Wait for the dispatcher to finish before finishing query.
-   Remove `codecov` job.

## v0.113.0

### Features

-   Add ported table test.
-   Create `astutil` package for AST utilities such as formatting.

### Bug fixes

-   Update expected output for acceptance test `group_no_agg_table`.

## v0.112.1

### Bug fixes

-   Add `Comment` fields to Go AST structs to preserve comments in the AST.

## v0.112.0

### Features

-   Add [`testing.load`](/flux/v0/stdlib/testing/load/) for using raw tables in tests.
-   Add remaining experimental built-in types without column parameters.
-   Add [OEE (overall equipment effectiveness) package](/flux/v0/stdlib/experimental/oee/).

### Bug fixes

-   Use new crate name in `buildinfo`.
-   Add bounded time ranges to fix test cases.
-   Move `derive` helper attribute after `derive` macro.

## v0.111.0

### Features

-   Use `FnvHasher` for hash maps.
-   Add [`tickscript` package](/flux/v0/stdlib/contrib/bonitoo-io/tickscript/).

### Bug fixes

-   When finding the parent directory’s root, skip the current directory.
-   Fix `if else` statement in `aggregate.window()`.

## v0.109.1

### Bug fixes

-   Perform testing checks as part of query `done`.
-   Delimited multi-result encoder properly releases results before checking for errors.

## v0.109.0

### Features

-   Add support for null values in string interpolation.
-   Add support for all basic datatypes in string interpolation.
-   Add support for parsing CSV files without annotations.
-   Support formatting the AST from `libflux`.

### Bug fixes

-   Add error handling for wrong number of fields for raw CSV.
-   Change Rust version to be updated manually.

## v0.108.1

-   *Internal code cleanup.*

## v0.108.0

### Features

-   Add [BigPanda notification support](/flux/v0/stdlib/contrib/rhajek/bigpanda/).
-   Add [Zenoss notifications support](/flux/v0/stdlib/contrib/bonitoo-io/zenoss/).
-   Add [VictorOps notifications support](/flux/v0/stdlib/contrib/bonitoo-io/victorops/).

### Bug fixes

-   Classify “Option not found error” as internal.
-   Remove `as_user` parameter from `slack.message` payload.

## v0.107.0

### Features

-   Add new [`experimental.kaufmansAMA()` function](/flux/v0/stdlib/experimental/kaufmansama/) signature.
-   Add new [experimental aggregate function](/flux/v0/stdlib/experimental/#experimental-functions) signatures.
-   Add `extends` capability to `testcase` block to extend tests using a relative path to another file.

### Bug fixes

-   Update CSV package to handle large files.
-   Add tests and fix the `NoHeader` configuration for the `csv` decoder.
-   Remove `interval` package and documentation.
-   Disable line wrap linter.
-   Fix typo in comment.

## v0.106.0

### Features

-   Add new [experimental `integral()` function](/flux/v0/stdlib/experimental/integral/) signature.
-   Add new [experimental `window()` function](/flux/v0/stdlib/experimental/window/) signature.

# Bug fixes

-   Switch from `HashMap` to `BTreeMap` in the conversion functions from AST to semantic.
-   Track and reduce memory used by `tdigest`.
-   Detect and break infinite loops while parsing arrays.

## v0.105.0

### Features

-   Add `interval` package to `window` transformation.

## v0.104.0

### Features

-   Reintroduce `IsZero` method on time windows.

### Bug fixes

-   Break parse loop when invalid array item is found.

## v0.103.0

### Features

-   Add `testing/expect` package for test expectations.

### Bug fixes

-   Change the default test discovery path from `./stdlib` to `.`.

## v0.102.0

### Features

-   Add `fluxdoc` command to generate JSON and HTML from Flux source code.
-   Improve performance of random access group lookup by utilizing `xxhash`.
-   Improve performance for accessing data within a `Value`.

### Bug fixes

-   Clean up `interval` package.

## v0.101.0

### Features

-   Validate IP addresses from the dialer `Control` function.
-   Expose `test` command to be used by external libraries.

## v0.100.0

### Features

-   Add ability to execute tests from `.tar` and `.zip` archives.

### Bug fixes

-   Fix endpoint examples in source code.

## v0.99.0

### Features

-   Evaluate [dictionary literals](/flux/v0/spec/expressions/#dictionary-literals).
-   Infer the type of dictionary literals.
-   Parse and format dictionary literals.
-   Add a pure Flux test runner.

### Bug fixes

-   Ensure `csv.from()` only returns one result.
-   Change `extern` parsing code to return a more descriptive error message.
-   Do not allow containers within a record to be null.
-   Retrieve `now` option before running a Flux script.
-   Fix misspellings in the [Flux README](https://github.com/influxdata/flux/blob/master/README.md).

## v0.98.0

### Features

-   Transform `testcase` AST into pure flux.
-   Added Rust scanner.

### Bug fixes

-   Substring method now works on more indices.
-   Fix typos in `Dockerfile_build`.

## v0.97.0

### Features

-   Add dict package for interacting with dictionaries.
-   Added Ragel 7 to the Dockerfiles.
-   Add support for `testcase` statement.
-   Add Dictionary type syntax.
-   Add Dictionary type unification rule.

## v0.96.0

### Features

-   Create a Dictionary type interface and implementation.
-   Add Dictionary type (dict) to the semantic flatbuffers.

## v0.95.0

### Features

-   Use `tabwriter` to vertically align tab stops.

### Bug fixes

-   Format types in error messages according to Flux grammar.

## v0.94.0

### Features

-   Add “everything” Rust benchmark.

### Bug fixes

-   Add multiline support to the Flux formatter.
-   Format types using letters instead of numbers.

## v0.93.0

### Features

-   Ensure query plan nodes have unique IDs.

## v0.92.0

### Features

-   Add `fluxinit` package as an alternative to importing `builtin`.
-   Add [series `cardinality()` function](/flux/v0/stdlib/influxdata/influxdb/cardinality/) to InfluxDB package.

### Bug fixes

-   Do not panic when the value column for `pivot()` does not exist.
-   Properly truncate timestamps to beginning of window bounds.
-   Updates operator precedence in formatter.
-   Do not panic when a string expression evaluates to *null*.
-   Add support for multiline conditional logic.

## v0.91.0

### Features

-   Aggregate results for `operator` profiler.
-   Add contributed [`events` package](/flux/v0/stdlib/contrib/tomhollingworth/events/).
-   Use `tableFind` and related functions with profiler results.
-   Add duration support to [`orTime` parameter](/flux/v0/stdlib/influxdata/influxdb/tasks/lastsuccess/#ortime) of `lastSuccess()`.

### Bug fixes

-   Configure the profiler even if `operator` profiler is not enabled.
-   Update formatter to handle newline characters in `write_string`.
-   Make formatter use spaces instead of tabs.
-   Update formatter double spacing rules.
-   Add support for multiline type expressions.
-   Update `influxdata/influxdb/tasks` package with new location of `execute` dependencies.
-   Improve multiline and parentheses support in formatter.

## v0.90.0

### Features

-   Add [Sensu package](/flux/v0/stdlib/contrib/sranka/sensu).

### Bug fixes

-   Verify dependencies in `Dockerfile_build`.
-   Fix panic in `experimental.join`.

## v0.89.0

### Features

-   Add support for SAP HANA databases.
-   Add support for comments preceding `builtin` statements in code formatting.

## v0.88.0

### Features

-   Move functions from `v1` package to `schema` package.

### Bug fixes

-   Fix field type error in test.
-   Update buildinfo script to handle new and deleted files.
-   Sets default quantile method when not specified.
-   Improve security of Dockerfile for build scripts.

## v0.87.1

### Bug fixes

-   Fetch ragel dependency over HTTPS.
-   Ensure `ast.TextPart` is properly escaped when formatting.
-   Elapsed with multiple buffers per table.

## v0.87.0

### Features

-   Linear interpolation.
-   Type signature for linear interpolate function.

### Bug fixes

-   Fix compiler type inference with extended records.
-   Colm Flux grammar updates: keywords, string interpolation, and UTF-8 IDs.
-   Exponent operator have higher precedence.

## v0.86.0

### Features

-   Add operator profiler.
-   Add duration conversion.
-   Add naive bayes classification.

### Bug fixes

-   Reset pointer after scanning invalid Unicode.
-   Catch references to non-existent columns.
-   Propagate span context to `source.Run`.

## v0.85.0

### Features

-   Add `Aggregate.window` for an alternative windowing aggregate.

### Bug fixes

-   Remove months parameter.

## v0.84.0

### Breaking changes

-   Remove time-column parameters from `range()` function and update type signature.

### Features

-   Add [Opsgenie package](/flux/v0/stdlib/contrib/sranka/opsgenie/).
-   Implement [`lastSuccess()`](/flux/v0/stdlib/influxdata/influxdb/tasks/lastsuccess/) in the `tasks` package.
-   Support duration values in `aggregateWindow`.
-   Update Apache Arrow to 1.0.1.

### Bug fixes

-   Ensure meta columns are never part of group key.

## v0.83.1

### Bug fixes

-   Single value integral interpolation.

## v0.83.0

### Features

-   Improve window errors.
-   Add [BigQuery](https://cloud.google.com/bigquery) support to [`sql` package](/flux/v0/stdlib/sql/).
-   Add `TypeExpression` to `BuiltinStmt` and fix tests.
-   Add time-weighted average ([`timeWeightedAvg()` function](/flux/v0/stdlib/universe/timeweightedavg/)).
-   Update [`integral()`](/flux/v0/stdlib/universe/integral/) with linear interpolation.
-   Make experimental tracing an attribute of the context.

### Bug fixes

-   Update builtin statement for `integral()`.
-   Add Rust JSON tests.
-   CSV no longer deadlocks when next transformation does not consume table.

## v0.82.2

### Features

-   Add [`tasks.lastSuccess` function](/flux/v0/stdlib/influxdata/influxdb/tasks/lastsuccess/) to retrieve the time of the last successful run of an InfluxDB task.

## v0.82.1

-   *Internal code cleanup.*

## v0.82.0

### Features

-   Add the [`profiler` package](/flux/v0/stdlib/profiler/).
-   Add a documentation URL field to Flux errors.
-   Check InfluxDB schema compatibility.

### Bug fixes

-   Panic when a map object property contains an invalid type.

## v0.81.0

### Features

-   Delete old parser.
-   Add function to indicate duplicate option assignments.

### Bug fixes

-   Calculate distinct key values.
-   Handle pipe arguments inside of compiler.

## v0.80.0

### Features

-   Add `nulls` parameter to `gen.tables()`.

### Bug fixes

-   Revert the timeable constraint for integer.
-   Make socket/sql URL test robust.

## v0.79.0

### Features

-   Add `array.from()` function to convert Flux values into a table.

### Bug fixes

-   Add bounds to Geo package end-to-end tests.

## v0.78.0

### Breaking changes

-   Removed `correlationKey` parameter from `geo.toRows` and `geo.shapeData`.

### Features

-   Add functions to convert semantic monotype to AST type.
-   Add BigQuery support.
-   Rust flatbuffer serialization for `MonoType` and `TypeExpression`.
-   Extend with Geo package with GIS functions and [unit support](/flux/v0/stdlib/experimental/geo/#distance-units).

### Bug fixes

-   String interpolation in arrays.

## v0.77.1

### Bug fixes

-   Write tests and fix issues with `rows.map`.

## v0.77.0

### Features

-   Add a faster `map()` function *(user-contributed `/contrib/jsternberg/rows` package)*.
-   Add an [`influxdb.select()` function](/flux/v0/stdlib/contrib/jsternberg/influxdb/select/) *(user-contributed)*.
-   Flatbuffer deserialization for type expression AST nodes.
-   Flatbuffer types for monotype and type expression AST nodes.
-   Go AST nodes for type expression syntax.
-   Get all options and properties.
-   Add `parse_function` in `parser/mod.rs`.
-   Add an alternative aggregate package to user-contributed packages.

### Bug fixes

-   Fix string interpolation in arrays.

## v0.76.1

### Bug fixes

-   Fix data race in metadata.

## v0.76.0

### Features

-   Add query plan to query metadata.

## v0.75.0

### Features

-   Update `parse_record` to return `MonoType` for consistent results from functions used by `parse_monotype`.
-   Internal command utility for comparing CSV tables.
-   Update `mod.rs` with `parse_record`.
-   Add planner tests for window min and max.
-   CRUD options and properties.
-   Update `mod.rs` with `parse_constraints`.
-   Update `mod.rs` with `ArrayType` and add `Array` to the `Monotype` enumeration.

### Bug fixes

-   Statuses are always sorted by source timestamp.
-   Multiple `do` calls will fail with an empty table.

## v0.74.0

### Features

-   Add `discord.endpoint()` function.
-   Enhance the static table API.
-   Update `mod.rs` with `parse_type_expression` and other supporting functions.
-   Expose static table package and table diff functions.
-   `Find_var_type()` API.
-   Add `stringify` method for a table and a diff utility.
-   Added range to end-to-end tests.
-   Add types grammar to SPEC.

### Bug fixes

-   Normalize Monotype.

## v0.73.0

### Features

-   Add parameter for applying substitution to top-level environment.
-   Add MergeFilterRule to `universe.filter`

### Bug fixes

-   Use query strings instead of AST for remote InfluxDB queries. This lets you query remote InfluxDB instances in the Flux REPL.

## v0.72.1

### Bug fixes

-   Correctly classify “duplicate yield” error.

## v0.72.0

### Features

-   Update `from()` to use `Timeable`.

### Bug fixes

-   Fix appending an array of booleans with null values.
-   Pass the context to the planner when using the table object compiler.
-   Add `diff` output to release script on error.
-   Appending empty tables to a buffered builder normalizes the schema.
-   Remove `bad_sqlite_path1` test.
-   Classify spec build errors as user errors.
-   Verify index expression bounds in evaluation.
-   Substitute array element types correctly.

## v0.71.1

### Bug fixes

-   Add a check to ensure `every` is non-negative.

## v0.71.0

### Features

-   Apply `Timeable` constraint to integer type to support integer values in time-related function parameters.
-   Implement schema mutation functions without performing any copies.
-   Add [`http.pathEscape()` function](/flux/v0/stdlib/http/pathescape/).

## v0.70.0

### Features

-   Update all `date` functions to accept time and duration types.
-   Add [Microsoft Teams package](/flux/v0/stdlib/contrib/sranka/teams/).
-   Evaluate and store `now` in execution dependencies for `tableFind()`.
-   Add `Timeable` constraint for time and duration types.
-   Add [SQL Server support](/flux/v0/stdlib/sql/from/#query-a-sql-server-database) to `sql` package.
-   Add [Telegram package](/flux/v0/stdlib/contrib/sranka/telegram/).
-   Add [Amazon Athena support](/flux/v0/stdlib/sql/from/#query-an-amazon-athena-database) to `sql` package.
-   Add support for macOS builds.

### Bug fixes

-   Move semantic analysis to the finalize step.
-   Fix check for stream equality.
-   Fix the compiler’s return type when `with` operator is used.
-   Include `stdlib` Flux dependencies from the Flux `build.rs`.
-   Include a hash of the sources for `libflux`.
-   Flux test for [experimental `json.parse()`](/flux/v0/stdlib/experimental/json/parse/).
-   Reorder `go generate` call to `libflux` in `stdlib`.

## v0.69.2

### Bug fixes

-   Include a hash of sources for `libflux`.

## v0.69.1

### Bug fixes

-   Fix experimental `json.parse()` test.

## v0.69.0

### Features

-   Add [Discord package](/flux/v0/stdlib/contrib/chobbs/discord/) *(contributed by [@chobbs](https://github.com/chobbs))*.
-   Add [`json.parse()` function](/flux/v0/stdlib/experimental/json/parse/).

### Bug fixes

-   Adjust error handling in Flux `date` package.

## v0.68.0

This version of Flux introduces an updated type inference system that improves performance, error messaging, and usability of the [Flux Language Server Protocol (LSP)](https://github.com/influxdata/flux-lsp).

### Breaking Changes

-   Change signature of `group()` function.

### Features

-   Add [`fieldKeys()`](/flux/v0/stdlib/influxdata/influxdb/v1/fieldkeys/) and [`measurementFieldKeys()`](/flux/v0/stdlib/influxdata/influxdb/v1/measurementfieldkeys/) to v1 package.
-   Add a context to `plantest.RuleTestCase`.
-   Add Snowflake support to SQL package.
-   Add [`experimental.chain()`](/flux/v0/stdlib/experimental/chain/) function.
-   Add semantic nodes for bad statement and bad expression.
-   Add [`findColumn()`](/flux/v0/stdlib/universe/findcolumn/) and [`findRecord()`](/flux/v0/stdlib/universe/findrecord/) functions.
-   Return `false` if `contains()` is called with an empty set.
-   Various performance optimizations.
-   Add a dynamically linked Valgrind test.
-   Add location information to type error messages.
-   Add all Linux cross-compilation tools to release Docker image.
-   Support remote `buckets()` and `v1.databases()` calls.
-   Add support for static linking.
-   Add `influxdb` source.
-   Add support for `pkg-config`.
-   Transform semantic nodes back to AST nodes.
-   Handle multi-file packages.
-   Make `Eval()` and `EvalAST()` use libflux for parsing and analysis.
-   Add `lookuptype` function for stdlib builtins.

### Bug Fixes

-   Re-enable Clippy linter rule match single binding.
-   Fix bug in object equal method.
-   Add builtin formatting.
-   Implement `TimeBounds` for `influxdb.fromRemote`.
-   Inject the URL validator into `NewDefaultClient`.
-   Fix race condition in the `filter()` function.
-   Validate HTTP redirects against private IPs.
-   Hide DNS information in HTTP.
-   Fix concurrent map write in `filter()` transformation.
-   Copy all fields of `WindowProcedureSpec` in `Copy()`.
-   Run `go generate` on libflux when `go generate` is run on stdlib.
-   Fix panic when `map()` overwrites group column.
-   Support execution contexts in the REPL.
-   Apply substitution fully when compiling lambda.
-   Planner rewrite rules take a context.
-   Fix panics when functions operate on null values.
-   Fix logic for merging packages with no package clause.
-   Compute function’s return type after substitution.
-   Resolve member expressions.
-   Improve error message descriptions.
-   Check types of parts when evaluating `StringExpression`.
-   Bind appropriate interpreter when evaluating functions.
-   Tweak Rust JSON serialization and add tests.
-   Pivot sends update watermark and processing time exactly once.
-   Calculate diff’s watermark using both predecessors.
-   Add length check to avoid allocs checking for JSON `null`.
-   Make compilers robust to `null` keyword in `extern` field.
-   Address issues in `RemoveTrivialFilterRule`.
-   Bind appropriate interpreter when evaluating functions.
-   Convert `HashMap` in semantic package to `BTreeMap`.
-   Use static linking when creating the Valgrind test.
-   Update `flatbuffers` dependency.
-   Fix JSON serialization of Rust AST.
-   Remove unused environment variables.
-   Make `merge_packages` allow no package clauses.
-   Do not call `CheckKind` when evaluating logical expressions.
-   Force the Go libflux wrapper to rebuild using `go generate`.
-   Adjust `test-bench` config for Circle CI.
-   Fix Valgrind test code.
-   Let Rust parser parse with file name.
-   Remove Algorithm-W to-do list.
-   `JoinStr` returns a string, not an empty record.
-   Only add visible properties to output of `map()`.
-   Serialize the correct sign duration literal.
-   Remove code in semantic package that depends on Rust/Cgo code.
-   Remove `component` field from API.
-   Remove unused notification rule fields from Slack and PagerDuty APIs.
-   Array builders accept array types as input.
-   Enable `map()` tests with null values.
-   Remove tests for marshalling semantic graph.
-   Run `make generate` to generate stdlib.
-   Fix type error in benchmark test.
-   Update `TableObject` test.
-   Do not call `LocalRange` on nil scope.
-   Type assertion error in `length()` tests.
-   Update type inference test case with test for `union()`.
-   Make non-test CI steps pass.
-   Fix semantic check for option reassignment.
-   Type inference tests for binary comparison operators.
-   Fix typo in builtins.
-   Update `holtWinters()` to make `seasonality` optional.
-   Fix type errors in tests.
-   Remove default value from notify data.
-   Allow options to be set in scope.
-   Replace `ScopeComparer` with `ScopeTransformer`.
-   Use `LocalRange` in compile tests.
-   Add missing parameter to type of `to()`.
-   Get `TableObject` test case to compile.
-   Fix typo in test case.
-   Update `TableObjects` to type `Array`.
-   Use array type method correctly.
-   Update schema mutators.
-   Return proper types for type conversion functions.
-   Enable complete package to compile and pass tests.
-   Make stdlib compile.
-   Expect monotypes for function values.
-   Require successful lookup of stdlib builtins or panic.
-   Optimize lookup function using hashmap.
-   Include function type when deserializing function expressions.

## v0.67.0

### Features

-   Planner Pattern interface supplies a set of ProcedureKind as root.
-   Initial prototype of a table-based Flux.
-   Evaluate and store “now” in execution dependencies for `tableFind()` to use.
-   Static analysis tool for listing entry points to Flux.
-   Pass context to rewrite rules in the planner.

### Bug fixes

-   Pivot sends update watermark and processing time exactly once.
-   `system.time()` checks context for override.
-   Add bounds to alignTime tests.

## v0.66.1

### Bug fixes

-   Add bounds to `alignTime()` tests.

## v0.66.0

### Features

-   Add [`epsilon` parameter](/flux/v0/stdlib/testing/diff/#epsilon) to `testing.diff()`.
-   Add [`experimental.alignTime()` function](/flux/v0/stdlib/experimental/aligntime/).
-   Add random access group lookup.
-   Add [Pushbullet package](/flux/v0/stdlib/pushbullet/).
-   Add a helper for testing `execute.Source`.

### Bug fixes

-   Use RandomAccessGroupLookup in `testing.diff()`.
-   Address deleted state `GroupLookup`.
-   Add test case for errors when AST is bad.
-   Reduce memory usage during CI testing.

## v0.65.0

### Features

-   Add [`experimental.join()`](/flux/v0/stdlib/experimental/join/) function.
-   Store comments in the AST and preserve on format.
-   Add [`shapeData()`](/flux/v0/stdlib/experimental/geo/shapedata/) function to Geo package.
-   Expose format to Wasm users.

### Bug fixes

-   Reimplement `stateChanges()` function.
-   Remove the `set -x` in the xcc script.
-   Publishes Flux as a public npm package.
-   Pivot message passing.

## v0.64.0

### Features

-   Hand-transpile `elapsed()` aggregate.
-   Hand-transpile `cumulative_sum()`.
-   Experimental `csv` package.

### Bug fixes

-   Add response reader as dependency to tune response size.
-   Handle unfinished option statement without panic.
-   Simplify libflux C API and resolve memory leaks.
-   Don’t construct a `compiler.compilerScope` with a nil `value.Scope` as base.
-   Influxql-decode to handle the case without tag set.

## v0.63.0

### Features

-   Experimental `geo` package.
-   Initial grammar for Flux and a partial grammar for InfluxQL.

## v0.62.0

### Features

-   InfluxQL decode and series aggregation tests.

### Bug fixes

-   Properly categorize parse errors as “invalid”.
-   Fail gracefully when `tableFind` does not have an execution context.

## v0.61.0

### Features

-   Add experimental aggregate package with `rate()` function.

### Bug fixes

-   Deserialize the default vector if array elements are null.
-   Allow array and row types to be equatable.

## v0.60.0

### Features

-   Add experimental `query` package.
-   Create a Docker environment for Flux releases.
-   Validate there are no free type variables in prelude/stdlib build.
-   Add formatter library.

### Bug fixes

-   `derivative()` works properly across multiple buffers.
-   Fix free type variable found in `tripleExponentialDerivative()`.
-   Update type of `window()` function.
-   Freshen row types using deterministic property order.
-   Libflux JSON deserialization uses type properly.
-   Expose the builtin polytypes when analyzing a `stdlib` package.
-   Deserialize call expressions when arguments are missing.
-   Handled malformed data as well as EOF.
-   Allow unsigned integers to be subtractable.
-   Link both `libflux` and `liblibstd` for flux-config.
-   Link `libstd` into the `lib` directory instead of `libflux`.
-   Flux-config correctly copies `stdlib` when using a module.
-   Add 169.254/16 range to URL validator.
-   Update `uuid` library to improve security.
-   Handle invalid string literals.
-   Remove ’tags’ line from local tags.

## v0.59.6

### Bug fixes

-   `derivative()` works properly across multiple buffers.

## v0.59.5

### Bug fixes

-   Revert window optimizations to fix regression in output row sorting.

## v0.59.4

### Bug fixes

-   Remove `tags` line from local tags.
-   Handle malformed data as well as EOF.

## v0.59.3

### Bug fixes

-   Link both `libflux` and `libstd` for flux-config.

## v0.59.2

### Bug fixes

-   Link `libstd` into the lib directory instead of `libflux`.

## v0.59.1

### Bug fixes

-   Flux-config correctly copies `stdlib` when using a module.
-   UUID security.

## v0.59.0

### Features

-   Add Go/Rust API for getting semantic graph.
-   Optimize `limit()` transformation.
-   Optimize `group()` transformation.

### Bug fixes

-   AST json serialization glitches.
-   Better messaging for malformed CSV.
-   Skip stdlib symlink was removed erroneously.
-   Ensure stdlib directory is created.
-   Correctly skip the stdlib symlink in libflux.
-   Ensure that stdlib is present when building with flux-config.

## v0.58.4

### Bug fixes

-   Skip stdlib symlink was removed erroneously.

## v0.58.3

### Bug fixes

-   Ensure stdlib directory is created.

## v0.58.2

### Bug fixes

-   Correctly skip the stdlib symlink in libflux.

## v0.58.1

### Bug fixes

-   Ensure that stdlib is present when building with flux-config.

## v0.58.0

### Features

-   Serialize semantic graph flatbuffers.
-   Implement `onEmpty` parameter for `filter()`.
-   Serialize Flux standard library types as part of build process.
-   Add type declarations for universe.
-   Methods for type checking package dependencies.
-   Add type declarations for strings.

### Bug fixes

-   Expose tracing flag.
-   Update `count` builtin type.
-   Update `experimental.set` builtin type.
-   Update the type of `influxdb.to` to be a passthrough.
-   Update `fill` builtin type.
-   Remove redundant clones found by a new version of Clippy.
-   Fix durations in Rust semantic graph.
-   Removes unnecessary rc clone in semantic serializer.
-   Do not stall forever in flux-config when an error happens with verbose.
-   Update function block return statements to produce a stmt and not an expression.
-   Fix token location for `scan_with_regex`.
-   Cache environment variable for performance.
-   Fix a couple errors in builtin types.
-   Annotate variable assignment with polytype (not monotype).

## v0.57.0

### Features

-   Categorize more Flux errors with codes.
-   Teach flux-config how to download the sources when using vendor.
-   Opentracing in query execution runtime.
-   Reduce memory allocations for operations in values.
-   Translate FlatBuffers semantic graph to Go.
-   Add types for some universe builtins.
-   Add type declarations for builtins.
-   Add Numeric and Row kind constraints.

### Bug fixes

-   Enable strict mode by default.

## v0.56.0

### Features

-   Crate for typing Flux standard library.
-   Serialize type environment.
-   Improve filter performance when filtering on values.
-   Update usage duration test to exclude queue and requeue time.
-   Add types for some built-ins.
-   Add `timeout` parameter to experimental `http.get()`.

### Bug fixes

-   Properly use a fake version with `flux-config` when no version is present.
-   Address Clippy lints.
-   Add bytes monotype to Rust semantic module.
-   Allow underscores (`_`) in type expressions.

## v0.55.1

### Bug fixes

-   Fix e2e usage test so that their queries are properly pushed down.

## v0.55.0

### Breaking changes

-   Expand the interface for `BufferedTable`.

### Features

-   Expose optimized `pivot()` function.
-   Create utility program for building `libflux`.
-   Create a tool that measures performance of calling Rust from Go.
-   Inject types in the semantic graph.
-   MonoType and PolyType flatbuffer encodings.
-   MonoType and PolyType flatbuffer schemas.
-   Update Rust flatbuffers to more closely match Rust semantic graph.
-   Flatbuffers AST to Go AST.
-   Port immutable walk and fix mutable walk.
-   Define the flatbuffers schema for semantic graph.
-   Infer imported package types.
-   Unify and infer function types.
-   Add support for safely converting bytes to strings.
-   Add sqlite3 support.
-   Add internal table utility for streaming tables.

### Bug fixes

-   Update semantic graph FlatBuffers schema for identifiers.
-   Ignore order when comparing record types.
-   Operands for `<=` and `>=` are comparable AND equatable.
-   Constrain unary expressions to be same type as operand.

## v0.54.0

### Features

-   Expose function to analyze from string.
-   Added semantic expression constraints to libflux.
-   Custom `PartialEq` for polytypes.
-   Extensible record unification.
-   `Semantic.Walk`.

### Bug fixes

-   Do not constrain type variables with empty kinds.
-   Update usage tests to filter on `_field`.
-   Record labels are scoped and fields are ordered.
-   Parse row variables.
-   Update make release to confirm remote and local are in sync.
-   Make `walk_rc` public.

## v0.53.0

### Breaking changes

-   Interpret months as part of the semantic duration.

### Features

-   Macros for type inference tests.
-   Let-polymorphism with test example.
-   Generalization, instantiation, and constraint solving.
-   Type environment.
-   Convert Rust AST to FlatBuffers format.
-   Allow lexing and parsing of string polytypes according to polytype grammar rules.
-   Add month support when adding durations to a time value.
-   Interpret months as part of the semantic duration.

### Bug fixes

-   Type variable constraints.
-   Apply sub to both sides of constraint before unifying.
-   Instantiate quantified vars, not free vars.

## v0.52.0

### Features

-   `Visitor` uses `Rc` for nodes.
-   Add `EvalOptions`.

### Bug fixes

-   Correctly lex `µs`.

## v0.51.0

### Breaking changes

-   Update the Flux SPEC to remove duration addition and subtraction.
-   Turn duration value into a vector.

### Features

-   Implementations for type substitutions and constraints.
-   Add semantic analysis.
-   Updated the duration value to include months and negative flag.
-   Create a flatbuffers schema for AST.
-   Add initial C binding for parsing an AST.
-   Create a tool for updating `.flux` tests in-place.
-   Add walk implementation.
-   Turn duration value into a vector.
-   Define initial Flux data types.

### Bug fixes

-   Update libflux parser to match the Go parser.
-   Allow data collected by `prometheus.scrape()` to be used by `histogramQuantile()`.
-   Remove mock allocator.
-   Validate URL for `sql.from()`, `sql.to()`, and `socket.from()`.

## v0.50.2

### Bug fixes

-   Make `keep()` and `drop()` throw an error if merging tables with different schemas.

## v0.50.1

### Bug fixes

-   Add annotated errors to the execute package where it affects normal usage.
-   Reorder variables in the allocator for atomic operations.

## v0.50.0

### Features

-   Add `experimental/prometheus` package.
-   Add a memory manager to the memory allocator.
-   Add an internal function for generating data.
-   Switch to using discarding mode for transformations.
-   Group key join on `_time`.

### Bug fixes

-   Require `data` parameter in `monitor.check()`.
-   Return the EOF error when reading metadata.
-   Re-add missing import.
-   Fix broken links in SPEC.
-   Return error from cache.
-   Update the `universe` package to use flux errors throughout.
-   Parse escape characters in string interpolation expressions.
-   Improve CSV error message for serialized Flux error.
-   Have the interpreter return annotated Flux errors.

## v0.49.0

### Features

-   Optimize `filter()` to pass through tables when possible.
-   Additional arrow builder utilities.
-   Add a `benchmark()` function to the testing package.
-   Add an arrow backed version of the table buffer.

### Bug fixes

-   Fix `sql.from()` connection leak.
-   Fix some of the memory leaks within the standard library.
-   Fix `mqtt.to()` topic parameter.

## v0.48.0

### Breaking changes

-   Convert the Flux memory allocator into an arrow allocator.

### Features

-   New dependency injection framework.
-   Add planner options to Flux language.
-   Make Flux `internal/promql/quantile` behavior match PromQL `quantile` aggregate.

### Bug fixes

-   Passing context to WalkIR.
-   Make `join()` reject input tables lacking `on` columns.

## v0.47.1

### Bug fixes

-   Pass dependencies to WalkIR

## v0.47.0

### Bug fixes

-   Introduce ParenExpression.
-   Make fmt runs cargo fmt on Rust directories.
-   Update `Hex.Dump` to `hex.EncodeToString`.
-   Integrate the Promql transpiler into Flux.

## v0.46.2

### Bug fixes

-   Make `to` use URL validator.
-   Add filesystem to default test dependencies.

## v0.46.1

### Bug fixes

-   Add a filesystem service.
-   Do a pointer comparison for table objects instead of a deep compare.

## v0.46.0

### Features

-   Replace EnvironmentSecretService with EmptySecret….
-   Source location for rust parser.

### Bug fixes

-   Push error for bad string expression.
-   Remove `token` parameter from `pagerduty.endpoint`.

## v0.45.2

### Bug fixes

-   Push the tag before running goreleaser.
-   Additional opentracing spans for debugging query flow.

## v0.45.1

### Bug fixes

-   Ensure `http.post` respects the context.

## v0.45.0

### Features

-   Added Google Bigtable `from()`.

### Bug fixes

-   Add `pagerduty.severityFromLevel()` helper function.
-   Sleep function now gets canceled when the context is canceled.
-   Categorize the undefined identifier as an invalid status code.
-   Panic from `CheckKind` in `memberEvaluator`.

## v0.44.0

### Features

-   Add `http.basicAuth` function.
-   Add measurement filters to `monitor.from` and `monitor.logs`.

### Bug fixes

-   changed the default HTTP client to be more robust.

## v0.43.0

### Features

-   PagerDuty endpoint for alerts and notifications.

## v0.42.0

### Features

-   Add `stateChanges` function.

### Bug fixes

-   Race condition in looking up types in `map`.
-   Support bool equality expressions.
-   Calculating a type variable’s free type variables.
-   Do not generate fresh type variables for member expressions.
-   Array instantiation.

## v0.41.0

### Features

-   Add ability to validate URLs before making `http.post` requests.
-   Evaluate string interpolation.
-   Implement the `secrets.get` function.
-   Added secret service interface.
-   Add secrets package that will construct a secret object.
-   Added a SecretService interface and a new dependencies package and a basic test of functionality.
-   Add Slack endpoint.

### Bug fixes

-   Make `reset()` check for non-nil data before calling `Release()`.
-   Add test case for `notify` function.
-   Add missing math import to test case.
-   Make packages aware of options.
-   Resolved `holtWinters` panic.
-   Use non-pointer receiver for `interpreter.function`.

## v0.40.2

### Bug fixes

-   Resolved `holtWinters()` panic.

## v0.40.1

### Bug fixes

-   Use non-pointer receiver for `interpreter.function`.

## v0.40.0

### Breaking changes

-   Update compiler package to use true scope.
-   Add `http` and `json` to prelude.

### Features

-   Add `alerts.check()` function.
-   Add `alerts.notify` function.
-   Add `kaufmansER()` and `kaufmansAMA()` functions.
-   Add `experimental.to()` function.
-   Add `experimental.set()` function to update entire object.
-   Add `experimental.objectKeys()` function.
-   Add `tripleExponentialDerivative()` function.
-   Add `json.encode()` function.
-   Add `mqtt.to()` function.
-   Add Bytes type.
-   Update compiler package to use true scope.
-   Add http endpoint.
-   Add post method implementation.
-   String interpolation.

### Bug fixes

-   Avoid wrapping table errors in the CSV encoder.
-   Remove irrelevant TODOs.
-   `mode()` now properly considers nulls when calculating the mode.
-   Add `http` and `json` to prelude.
-   Rename all Flux test files to use `_test.flux`.

## v0.39.0

In Flux 0.39.0, `holtWinters()` can cause the query engine to panic. **Flux 0.40.2 resolves this panic.**

### Breaking changes

-   Implement the scanning components for string expressions.

### Features

-   Add `tail()` function.
-   Add framework for `http.post()` function.
-   Implement `deadman()` function.
-   Time arithmetic functions.
-   Alerts package.
-   Add an experimental `group()` function with mode `extend`.
-   Implement the scanning components for string expressions.
-   Add `chandeMomentumOscillator()` function.
-   Add `hourSelection()` function.
-   Add `date.year()` function

### Bug fixes

-   Update object to use Invalid type instead of nil monotypes.
-   Make it so the alerts package can be defined in pure Flux.
-   Close connection after `sql.to()`.

## v0.38.0

### Features

-   Update selectors to operate on time columns.
-   Add `relativeStrengthIndex()` transformation.
-   Add double and triple exponential average transformations (`doubleEMA()` and `tripleEMA()`).
-   Add `holtWinters()` transformation.
-   Add `keepFirst` parameter to `difference()`.
-   DatePart equivalent functions.
-   Add runtime package.
-   Add and subtract duration literal arithmetic.
-   Allow `keep()` to run regardless of nonexistent columns. If all columns given are nonexistent, `keep()` returns an empty table.
-   Scanner returns positioning.

### Bug fixes

-   Function resolver now keeps track of local assignments that may be evaluated at runtime.
-   Fixed InfluxDB test errors.
-   Add range to tests to pass in InfluxDB.
-   Allow converting a duration to a duration.
-   Catch integer overflow and underflow for literals.

## v0.37.2

-   *General cleanup of internal code.*

## v0.37.1

### Bug fixes

-   Fixed InfluxDB test errors.
-   Add range to tests to pass in InfluxDB.

## v0.37.0

### Features

-   Add PromQL to Flux transpiler and Flux helper functions.
-   Add mutable arrow array builders.
-   Created date package.
-   Return query and result errors in the multi result encoder.
-   Add `exponentialMovingAverage()`.
-   Add full draft of Rust parser.
-   Implement more production rules.
-   AST marshalling.
-   Parse statements.
-   Parse integer and float literals.
-   Add initial Rust implementation of parser.

## v0.36.2

### Bug fixes

-   Add helper methods for comparing entire result sets.
-   Map will not panic when a record is `null`.

## v0.36.1

### Bug fixes

-   Add `range` call to some end-to-end tests.
-   Fix implementation of `strings.replaceAll`.

## v0.36.0

### Features

-   Updated `movingAverage()` and added `timedMovingAverage`.
-   `elapsed()` function.
-   `mode()` function.
-   `sleep()` function.
-   Modify error usage in places to use the new enriched errors.
-   Enriched error interface.
-   End-to-end tests that show how to mimic pandas functionality.
-   End-to-end tests for string functions.

### Bug fixes

-   Fix `difference()` so that it returns an error instead of panicking when given a `_time` column.
-   Added end-to-end tests for type conversion functions.
-   Make `map()` error if return type is not an object.
-   Fixed miscounted allocations in the `ColListTableBuilder`.
-   Support formatting `with`.

### Breaking changes

-   Updated `movingAverage()` to `timedMovingAverage` and added new `movingAverage()` implementation.

## v0.35.1

### Bug fixes

-   Re-add `mergeKey` parameter to `map()` in deprecated state.

## v0.35.0

### Breaking changes

-   Remove `mergeKey` parameter from the `map()` function.

### Features

-   Add `sql.to()` function.
-   Add `movingAverage()` function.
-   Add `strlen()` and `substring()` functions to the `strings` package.

### Bug fixes

-   Remove `mergeKey` parameter from the `map()` function.
-   Parse float types with PostgreSQL.

## v0.34.2

### Bug fixes

-   Parse float types with PostgreSQL.

## v0.34.1

### Features

-   Add custom PostgreSQL type support.
-   Added MySQL type support.
-   Nulls work in table and row functions.

### Bug fixes

-   Fixed boolean literal type conversion problem and added tests.
-   Diff should track memory allocations when it copies the table.
-   Copy table will report if it is empty correctly.

## v0.33.2

### Bug fixes

-   Use `strings.Replace` instead of `strings.ReplaceAll` for compatibility.

## v0.33.1

### Bug fixes

-   Copy table will report if it is empty correctly.

## v0.33.0

### Breaking changes

-   Implement nulls in the compiler runtime.

### Features

-   Add Go `regexp` functions to Flux.
-   Add the exists operator to the compiler runtime.
-   Implement nulls in the compiler runtime.
-   Add nullable kind.
-   Support “with” syntax for objects in row functions.
-   Port several string functions from go `strings` library to Flux.
-   Add exists unary operator.

### Bug fixes

-   Add range to map\_extension\_with.flux.
-   Row function resets records map with each call to prepare.
-   Fix `joinStr`, including adding an EndToEnd Test.
-   Fix `string_trimLeft` and `string_trimRight` so that they pass in InfluxDB.
-   Add length check for empty tables in fill.

## v0.32.1

### Bug fixes

-   Identify memory limit exceeded errors in dispatcher.

## v0.32.0

### Breaking changes

-   Remove the control package.

### Bug fixes

-   Changelog generator now handles merge commits better.
-   Return count of errors when checking AST.

## v0.31.1

### Bug fixes

-   Do not call done after calling the function.

## v0.31.0

### Breaking changes

-   Copy the table when a table is used multiple times.

### Features

-   Support for dynamic queries.

### Bug fixes

-   Copy the table when a table is used multiple times.

## v0.30.0

### Features

-   Support for dynamic queries.

## v0.29.0

### Breaking changes

-   Make `on` a required parameter to `join()`.

### Features

-   Add stream table index functions ( [`tableFind()`](/flux/v0/stdlib/universe/tablefind/), [`getRecord()`](/flux/v0/stdlib/universe/getrecord/), [`getColumn()`](/flux/v0/stdlib/universe/getcolumn/) ).
-   Construct invalid binary expressions when given multiple expressions.

### Bug fixes

-   Properly use RefCount to reference count tables.
-   Remove the race condition within the `(*Query).Done` method.
-   Fix table functions test.
-   Add `column` parameter to `median()`.
-   Modify `median` to work with `aggregateWindow()`.
-   `pivot()` now uses the correct column type when filling nulls.
-   Add error handling for property list.
-   Return the error from the context in the executor.

## v0.28.3

### Bug fixes

-   Fix request results labels to count runtime errors.
-   An error when joining could result in two calls to finish.

## v0.28.2

### Bug fixes

-   Preallocate data when constructing a new string array.

## v0.28.1

### Bug fixes

-   Make executor respect memory limit from caller.

## v0.28.0

### Features

-   Allow choosing sample/population mode in `stddev()`.

### Bug fixes

-   Fix `reduce()` so it resets the reduce value to the neutral element value for each new group key and reports an error when two reducers write to the same destination group key.

## v0.27.0

### Features

-   Add `trimSuffix` and `trimPrefix` functions to the strings package.
-   Add support for conditional expressions to compiler.
-   Add conditional expression handling to interpreter.

### Bug fixes

-   Enforce memory and concurrency limits in controller.
-   Format conditional expression.
-   `tagKeys` should include a call to `distinct`.

## v0.26.0

### Breaking changes

-   Aggregates now accept only a `column` parameter. `columns` not used.

### Features

-   Add handling for conditional expressions to type inference.
-   Add `if`/`then`/`else` syntax to Flux parser.
-   Added a WalkIR function that external programs can use to traverse an opSpec structure.
-   Add planner options to compile options.
-   Add example on how to use Flux as a library.
-   `duplicate()` will now overwrite a column if the as label already exists.

#### Bug fixes

-   Format right child with good parentheses.
-   Make staticcheck pass.
-   Rename `json` tag so go vet passes.
-   The controller pump could reference a nil pointer.
-   Create a DependenciesAwareProgram so controller can assign dependencies.
-   Make `Program.Start` start execution synchronously.
-   Read the metadata channel in a separate goroutine.
-   Remove dead code in controller so `staticcheck` passes.
-   Allow Flux unit tests to pass.
-   Require a Github token to perform a release.
-   Change example name to make go vet pass.
-   Make `csv.from` return decode error.

## v0.25.0

### Breaking changes

-   Fix logical operators (`and`, `or`) precedence.

### Bug fixes

-   Omit space between unary operator and operand.
-   Format AST preserving operator precedence.

## v0.24.0

### Breaking changes

-   Rename `percentile()` function to `quantile()`.

### Bug fixes

-   Handle when a non-call expression is parsed as the pipe destination.
-   Add error message to Compile methods for empty Spec.

## v0.23.0

### Breaking changes

-   Remove unused statistics from the struct.

### Features

-   Define comparison operators between time types.
-   Parse signed duration.
-   Added `reduce()` function and supporting go API for implementation.
-   Fix for recognizing locally scoped objects and arrays in a row function.

### Bug fixes

-   Columns in percentile signature and more strict param checking.
-   Report the error received when parsing a bad regex literal.
-   Remove unused statistics from the struct.

## v0.22.0

### Features

-   Added a math package and ported all 64 bit go math library functions.

### Bug fixes

-   Make read-like access patterns for objects thread-safe.

## v0.21.4

### Bug fixes

-   Test union.flux correctly uses sort.
-   Pivot orders rowKey and columnKey by the input parameters, rather than the table column order.
-   Deterministic sorting of input tables in join.
-   Group key comparison works regardless of column ordering.

## v0.21.3

### Bug fixes

-   Fix test to pass in InfluxDB.
-   Write table and result name in each row of CSV output.
-   Make time() function accept any format that parser accepts.
-   Return errors when evaluating functions.
-   Prevent a deadlock in the array expression parser.

## v0.21.2

### Bug fixes

-   Add AST compiler to mappings.

## v0.21.1

### Bug fixes

-   Make ASTCompiler marshalable.
-   Fix a controller test to be less flaky.
-   `from()` must send deep table copies to its downstream transformations.

## v0.21.0

### Breaking changes

-   Support attaching arbitrary query metadata from the executor.

### Features

-   Support attaching arbitrary query metadata from the executor.
-   Socket source.

### Bug fixes

-   Add locks to make diff threadsafe.

## v0.20.0

### Features

-   AST match.
-   Generate ASTs from Flux test files for external consumption.
-   Add compile subcommand that compiles Flux to spec.

### Bug fixes

-   Change loadStorage and loadMem to be options so that they are modifiable.
-   Generate skipped tests; skip in test driver.

## v0.19.0

### Breaking changes

-   Make `window()` parameters match SPEC.
-   Split FromProcedureSpec into logical and physical specs.

### Features

-   Add `contains()` function to check for membership in lists.
-   `test` keyword.

### Bug fixes

-   Raw query test case.

## v0.18.0

### Features

-   Add strings package with functions to trim/change string case.
-   Make duration conversion public.
-   Add assertEmpty method and use it with testing.test.
-   Expose literal parsers used within the parser.
-   Add testing.diff function.
-   Execute command.

### Bug fixes

-   Refactor the controller to remove data races.
-   Member expressions using a string literal use the incorrect end bracket.
-   Skip lambda evaluation when referencing nulls.
-   Options editor should use ast.Expression.
-   Fix decoder bug where a default table ID is given when none is required.
-   Add close to SourceIterator.

## v0.17.0

### Features

-   Checks for option dependencies.
-   Add query success and error metrics.
-   Track nested blocks in the parser.
-   Update `aggregateWindow()` to include `createEmpty` as parameter to allow for null results.
-   Add query function count metrics.

### Bug fixes

-   Multiplicative operators are above additive operators in precedence.
-   Fix panic when copying lambda.
-   Only print a package’s public exports.
-   Cannot access imports of imports.
-   Check for schema collision when appending columns to a table.
-   Process test helper had bad logic to check for errors.
-   Handle rune errors correctly when decoding an illegal token.

## v0.16.1

### Bug fixes

-   Copy packages for importer copy.

## v0.16.0

### Features

-   Adds various v1 meta queries helper functions

### Bug fixes

-   Fixes various UX issues.
-   Object polytype.
-   Fix edge case panic in `assertEquals`.
-   Check for equality in time columns correctly.
-   Fix bug where `assertEquals` did not check tables without a match in both streams.
-   Clear return for each REPL command.

## v0.15.0

### Features

-   Add rule to remove filter true nodes.
-   Checks for variable reassignment and option declarations below package block.

### Bug fixes

-   Move a test file into the testing/testdata folder.

## v0.14.0

### Breaking changes

-   Implement and require builtin statements.
-   Fix keys to output group key.
-   Organizes builtin code into Flux packages.
-   Change flux command to be a REPL.

### Features

-   Implement and require builtin statements.
-   Added a new utility library for generating test data.
-   `columns()` function.
-   Add fill function to set a default value for null values in a column.
-   Organizes built-in code into Flux packages.
-   Change flux command to be a REPL.
-   Refactored the table builder interfaces to support null value creation.
-   Aggregates process empty/all-null tables by creating a null row.
-   Show nulls in REPL as empty string.
-   Add ability to define built-in packages.
-   Treat omitted values with no defaults as nil in CSV.
-   Build arrow columns with null values.
-   Converting limit to use arrow arrays.
-   TableBuilder interface and ColListTableBuilder implementation support creation of nil values.

### Bug fixes

-   Count nulls in the count aggregate.
-   Fix keys to output group key.
-   Adding test for type mismatch in group.
-   Nest extern blocks for each level in scope.
-   Memory leak in limit when slicing.
-   Prettier formatting for package.
-   Change Package.Path to be json omitempty.

## v0.13.0

### Breaking changes

-   Add File and Package nodes to the AST.

### Features

-   Embed errors into the ast from the parser.
-   Add no-points optimization for `from() |> keys()`.
-   Add File and Package nodes to the AST.
-   Add a function for checking for errors within the AST.

### Bug fixes

-   Remove unneeded use of memory allocator.
-   Allow the memory allocator to be nil for arrow arrays.
-   Fix several bugs in copy methods add tests.
-   Fix a flaky test in the controller shutdown.

## v0.12.0

### Features

-   Slice utils.
-   Parse string literal object keys.
-   Add tests for multi-line and escaped strings.
-   Arrow helper method.
-   Converting all aggregates to use arrow arrays.

### Bug fixes

-   Embed plan.DefaultCost in input and output functions.
-   Side effect statements are now copied between related interpreter scopes.

## v0.11.0

### Features

-   Add utility methods for converting a slice into an arrow array buffer.

### Bug fixes

-   Do not panic with unbalanced parenthesis.
-   Respect positive timeout for toHTTP.

## v0.10.0

### Breaking changes

-   Change “label” to “column” for state tracking functions.

### Features

-   Plan validation.
-   Testing framework no longer checks output.
-   Integrate arrow arrays into the table builder.
-   Support packages and imports.

### Bug fixes

-   Cancel all queries after timeout elapses.
-   `makefile` for generating the scanner after clean was incorrect.

## v0.9.0

### Features

-   Option Editor.

### Bug fixes

-   Return the source attribute in the location correctly.

## v0.8.0

### Features

-   Rule to chain group operations.
-   Add package and import support to the semantic graph.
-   Add `assertEquals` function to transformations.
-   Parse import and package statements
-   Walk pattern for AST.
-   AST formatting.
-   Switch over to the new parser.

### Bug fixes

-   Make controller return planner failures.
-   Collision between external and fresh type vars.
-   fmt for import and package.
-   Add import/package nodes to ast.Walk.
-   Improve panic message when the wrong column type is used.
-   Check nil results when computing stats.
-   Suppress group push down for \_time and \_value.
-   Terminal output functions must produce results.
-   Fix race in interpreter.doCall.
-   Fix ast.Walk for Assignment rename.
-   Improve error message for missing object properties.
-   Add unary logical expression to the parser.
-   Variable declarator node needs to duplicate the location information.

## v0.7.4

### Bug Fixes

-   Add missing comparison operators.

## v0.7.3

### Bug Fixes

-   Fix the ident statement to use expression suffix.
