All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Nothing yet.
- Fixed a bug that caused the
getfunction to returnfalseinstead of an error when doing an invalid lookup. - Fixed an issue with reading/writing null values in YAML.
- Fixed a nil pointer dereference when reading/writing null YAML documents.
- Fixed a security issue allowing unbounded YAML expansion. Thanks to @kq5y.
v3.3.1 - 2026-02-26
- Fixed query selector parsing issue that incorrectly parsed array accessors when they followed a
filterormapcall.
v3.3.0 - 2026-02-25
replacefunction to replace occurrences of a substring in a string with another string. See docs.
v3.2.3 - 2026-02-23
- XML parser now preserves comments and processing instructions during round-trip (#175).
- Spread operator within array construction is now honoured.
v3.2.2 - 2026-02-13
- Swapped to use goccy/go-json for improved performance. Thanks @imix
- Updated model
IsScalarinternals to improve efficiency. Thanks @imix - General dependency updates.
- TOML parser sub table parsing. Thanks @pmeier
v3.2.1 - 2026-01-05
- XML parser now correctly handles empty CDATA.
v3.2.0 - 2025-12-26
joinfunction to join array elements into a single string with a specified separator. See docs.
v3.1.4 - 2025-12-18
Selectfunc in the exposed go API now correctly maps return values to the respective types.
v3.1.3 - 2025-12-18
- XML documents no longer create redundant
rootoritemelements. - Dasel no longer loses value metadata when reading/writing to internal models.
v3.1.2 - 2025-12-17
- Fix XML reading/writing when XML processing instructions are present.
v3.1.1 - 2025-12-16
- Homebrew release.
v3.1.0 - 2025-12-16
sumfunction to sum numeric values in an array. See docs.
v3.0.0 - 2025-12-15
- Major new version release.
- INI support.
- HCL support.
- Dasel syntax now supports variables and expressions.
- Files can now be read and parsed inside a dasel query.
- Variables can now be passed to dasel from the command line.
- Support for comments in queries.
- Dasel config file to define default file format.
- Interactive mode for dasel CLI (alpha).
- Go module path changed to
github.com/tomwright/dasel/v3. - Internal changes to support new version.
- Query/selector syntax revamp. See docs for more information.
- Majority of read/write operations will now maintain ordering.
- Migrated from Cobra to Kong for CLI parsing/processing.
- Removed
putanddeletecommands. Instead, modify within the query and use--rootflag.
- File redirect now works in the same way as piped input.
- Various other bug fixes and improvements.
- Whitespace in query syntax is now handled correctly.
v2.8.1 - 2024-06-30
- Fixed a bug related to yaml aliases.
v2.8.0 - 2024-06-28
- Fixed a bug that could cause a panic.
type()now returnsnullinstead ofunknownfor null values.- Added YAML support for merge tag/aliases. Thanks to pmeier. Issue 285.
v2.7.0 - 2024-03-14
null()function. See docs
- Dasel now correctly handles
nullvalues.
v2.6.0 - 2024-02-15
- Support for
--indentflag. - More descriptive errors when dasel fails to open a file.
- Docker build improvements in workflows.
v2.5.0 - 2023-11-28
- Add
manthat generates manpages for all dasel subcommands.
- Fixed an issue when parsing empty input documents.
v2.4.1 - 2023-10-18
- JSON output now acts as expected regarding the EscapeHTML flag.
v2.4.0 - 2023-10-18
orDefault()function. See docs--csv-commaflag to change the csv separator.--csv-write-commaflag to change the csv separator specifically for writes.--csv-commentflag to change the csv comment character.--csv-crlfflag to enable or disable CRLF output when working with csv files.
- Resolved an issue with YAML parser that was causing strings to be read as booleans.
- Fix a parsing issue with CSV types that forced you to expand and merge in order for it selects to work Issue 364.
v2.3.6 - 2023-08-30
- XML is now formatted correctly. (#354)
v2.3.5 - 2023-08-29
- Small internal optimisation (#341)
- Update to go 1.21
- Upgrade dependencies
- Resolved an issue with YAML parser that was causing strings to be read as numbers.
- Timestamps can now be resolved as expected in YAML.
v2.3.4 - 2023-06-01
lenfunction now works with new map type.keysfunction now works with new map type.
v2.3.3 - 2023-05-31
- Errors when selecting data are now correctly handled.
v2.3.2 - 2023-05-31
- Restored previous octal, binary and hex number parsing support in YAML and
putcommand.
v2.3.1 - 2023-05-29
versioncommand now outputs correct version information (only affected v2 onwards)
v2.3.0 - 2023-05-29
- Maps are now ordered internally.
- JSON and YAML maps maintain ordering on read/write.
all()func now works with strings.index()func now works with strings.
- Multi-document output should now be displayed correctly.
- Index shorthand selector now works with multiple indexes.
- Null values are now correctly handled.
v2.2.0 - 2023-04-17
keys()function.
v2.1.2 - 2023-03-27
- Join function.
- String function.
- Null error caused by null values in arrays. See PR 307.
v2.1.1 - 2023-01-19
- Changed go module to
github.com/tomwright/dasel/v3to ensure it works correctly with go modules.
v2.1.0 - 2023-01-11
- Ability to jump to a parent x levels up with
parent(x). Defaults to 1 level.
v2.0.2 - 2022-12-07
- Argument parsing issue that caused files to be written to the wrong place. See discussion 268.
v2.0.1 - 2022-12-07
floattype inputcommand.
- Output values are now correctly de-referenced. This fixed issues with encoded values not appearing correctly.
- Escape characters in selector strings now work as expected.
v2.0.0 - 2022-12-02
See documentation for all changes.
- Selector syntax
v1.27.3 - 2022-10-18
- The compact flag now works with the XML parser.
v1.27.2 - 2022-10-18
- Help text for select and delete commands now contain all available parsers.
- Errors now implement the
Isinterface so they are easier to use from go. - Floats are now formatted in decimal format instead of scientific notification when writing to CSV (Issue 245, Issue 229)
v1.27.1 - 2022-09-28
- Improved selector comparison parsing to allow matching on values containing special characters.
v1.27.0 - 2022-09-26
- New
value-fileflag allows you toputvalues read from a file (Issue 246)
v1.26.1 - 2022-08-24
- Make the completion command available for use (Issue 216)
- Make the
__completecommand available for use
v1.26.0 - 2022-07-09
- Search optional selector -
(#:key=value)
v1.25.1 - 2022-06-29
- Pre-commit hooks for validate command.
v1.25.0 - 2022-06-26
- Support for struct type usage in go package.
- Validate command.
v1.24.3 - 2022-04-23
- Gzip compressed binaries on releases.
v1.24.2 - 2022-04-22
- Update a package to avoid a High Vulnerability in golang.org/x/crypto with CVE ID CVE-2022-27191
v1.24.1 - 2022-03-28
storagepackage has been moved outside theinternalpackage.
- New funcs added in
v1.24.0can now be used as expected since you can now access thestorage.ReadWriteOption.
v1.24.0 - 2022-03-18
Node.NewFromFilefunc to load a root node from a file.Node.NewFromReaderfunc to load a root node from anio.Reader.Node.WriteToFilefunc to write results to a file.Node.Writefunc to write results to anio.Writer.
v1.23.0 - 2022-03-10
- Update github.com/pelletier/go-toml to consume fix for #191.
- Sprig functions to output formatter template.
v1.22.1 - 2021-11-09
- Cleaned up error output
v1.22.0 - 2021-11-09
- Type selector
[@].
- Errors are now written to stderr as expected.
v1.21.2 - 2021-10-21
- Linux arm32 build target.
v1.21.1 - 2021-09-30
--escape-htmlflag now defaults to false.
v1.21.0 - 2021-09-29
--escape-htmlflag.
put documentandput objectare now aware of the--merge-input-documentsflag.
v1.20.1 - 2021-09-28
buster-slimandalpinetags to built docker images.
- Different encodings in XML files are now handled as expected.
v1.20.0 - 2021-08-30
-v,--valueflag to workaround dash issue.
- Fixed an issue in which unicode characters could cause issues when parsing selectors.
v1.19.0 - 2021-08-14
--colour,--colorflag to enable colourised output in select command.
v1.18.0 - 2021-08-11
--formatflag toselectcommand.
v1.17.0 - 2021-08-08
- Support for
!=comparison operator in dynamic and search selectors. - Support for
-/keyValuekey in dynamic selectors.
v1.16.1 - 2021-08-02
- Fixed a bug that stopped the delete command editing files in place.
v1.16.0 - 2021-08-01
- Delete command.
v1.15.0 - 2021-05-06
--merge-input-documentsflag.
- Optional
noupdaterbuild tag to disable the self-update command.
- Empty XML documents are now parsed correctly.
v1.14.1 - 2021-04-15
- arm64 build support.
v1.14.0 - 2021-04-11
.[#]length selector.>comparison operator.>=comparison operator.<comparison operator.<=comparison operator.
v1.13.6 - 2021-03-29
- Development versions of dasel will now include more specific version information where possible.
- Fix an issue that stopped dasel being able to output CSV documents when parsed from JSON.
v1.13.5 - 2021-03-22
- Empty map values are now initialised as
map[string]interface{}rather thanmap[interface{}]interface{}.
v1.13.4 - 2021-03-11
v1.13.3 - 2021-03-05
- Blank YAML and CSV input is now treated as an empty document.
- Blank JSON input is now treated as an empty document.
v1.13.2 - 2021-02-25
- Improved information provided in
UnsupportedTypeForSelectorerrors. - Upgrade to go 1.16.
- Make sure the
-n,--nullflag has an effect in multi-select queries.
v1.13.1 - 2021-02-18
- Added
CGO_ENABLED=0build flag to ensure linux_amd64 builds are statically linked.
v1.13.0 - 2021-02-11
--lengthflag to select command.
v1.12.2 - 2021-01-05
- Fix a bug that stopped the write parser being properly detected when writing to the input file.
v1.12.1 - 2021-01-05
- Build workflows now updated to run on ubuntu-latest and use a matrix to build assets for
linux,darwinandwindowsfor bothamd64and386.
- Release asset for macos/darwin is now named
dasel_darwin_amd64instead ofdasel_macos_amd64. - Self-updater now identifies
devversion as development.
v1.12.0 - 2021-01-02
- Add
-c,--compactflag to remove pretty-print formatting from JSON output. - Defined
storage.IndentOption(indent string) ReadWriteOption. - Defined
storage.PrettyPrintOption(enabled bool) ReadWriteOption.
- Changed
storage.Parserfuncs to allow the passing of...ReadWriteOption.
v1.11.0 - 2020-12-22
- Benchmark info now contains graphs.
updatecommand to self-update dasel.
- Benchmark info now directly compares dasel, jq and yq.
v1.10.0 - 2020-12-19
- Add
dasel put documentcommand. - Benchmark information.
-r,--readand-w,--writeflags are now used indasel put object.- Fix issues that occurred when writing to the root node.
- Command names and descriptions.
v1.9.1 - 2020-12-12
- Stopped parsing XML entities in strings.
v1.9.0 - 2020-12-12
- Add keys/index selector in multi queries.
- Add
-n,--nullflag.
v1.8.0 - 2020-12-01
- Add ability to use
ANY_INDEX([*]) andDYNAMIC((x=y)) selectors on maps/objects.
v1.7.0 - 2020-11-30
- Add
-r,--readand-w,--writeflags to specifically choose input/output parsers. This allows you to convert data between formats.
v1.6.2 - 2020-11-18
- Add support for multi-document JSON files.
v1.6.1 - 2020-11-17
- Remove some validation on
dasel put objectto allow you to put empty objects.
v1.6.0 - 2020-11-17
- Add search selector to allow recursive searching from the current node.
v1.5.1 - 2020-11-14
- Fixed an issue that stopped new values being saved.
v1.5.0 - 2020-11-12
- Add ability to use
\as an escape character in selectors.
v1.4.1 - 2020-11-11
- Fix an issue when parsing dynamic selectors.
v1.4.0 - 2020-11-08
- Add
-m,--multipleflag to deal with multi-value queries. - Add
ANY_INDEXor[*]selector. - Add
NextMultipleproperty to theNodestruct - this is used when processing multi-value queries. - Add
Node.QueryMultiplefunc. - Add
Node.PutMultiplefunc.
v1.3.0 - 2020-11-08
- Add support for CSV files.
- Add support for multi-document YAML files.
- Add CodeQL step in github actions.
- Docker image is now pushed to ghcr instead of github packages.
v1.1.0 - 2020-11-01
- Add sub-selector support in dynamic selectors.
v1.0.4 - 2020-10-30
- Add
--plainflag to tell dasel to output un-formatted values.
v1.0.3 - 2020-10-29
- Command output is now followed by a newline.
v1.0.2 - 2020-10-28
- Docker image is now built and pushed when a new release is tagged.
v1.0.1 - 2020-10-28
- Add support for XML.
- Add
-as an alias forstdin/stdoutin--fileand--outputflags. - Selector can now be given as the first argument making the flag itself optional.
selectis now the default command.
v1.0.0 - 2020-10-27
- Add lots of tests.
- Add docs.
- Got accepted to go-awesome.
v0.0.5 - 2020-09-27
- Add support for TOML.
v0.0.4 - 2020-09-27
- Ability to check against the node value in a dynamic selector.
- Code coverage.
- Use reflection instead of fixed type checks.
v0.0.3 - 2020-09-24
- Use reflection instead of fixed type checks.
- Extract commands into their own functions to make them testable.
v0.0.2 - 2020-09-23
- Add ability to pipe data in/out of dasel.
- Add dasel put command.
v0.0.1 - 2020-09-22
- Everything!