github cue-lang/cue v0.10.0

latest releases: v0.11.0-alpha.1, v0.11.0-0.dev
one month ago

This release includes experimental support for the embed proposal, many fixes for the new evaluator and modules, as well as many other fixes and enhancements.

Evaluator

CLs 1195897, 1196094, 1198356, 1198736, and 1198860 fix crashes with CUE_EXPERIMENT=evalv3 as reported by users.

CLs 1199272, 1199273, and 1199340 fix spurious "field not allowed" error regressions in the new evaluator.

CL 1198566 fixes a performance regression introduced in CUE v0.6 where cue cmd and tools/flow became many times slower on some inputs.

CL 1198350 ensures that all interpreter errors, such as those from @embed attributes, include position information.

Embed proposal

With CUE_EXPERIMENT=embed, CUE now supports the embedding of non-CUE files within a CUE package. See the embed proposal and its design document for details, as well as the new how-to guide for the feature.

Modules

The cue help documentation for modules and inputs has been expanded, and a number of error messages when using or publishing modules are now more helpful.

A new concept guide on CUE language versions documents the language.version field in cue.mod/module.cue files.

CL 1198249 adds support for an @ignore file attribute to unconditionally ignore a file when loading packages or calculating dependencies.

CL 1198003 teaches the CUE loader to support symbolic links when loading from local directories, matching the behavior before CUE_EXPERIMENT=modules was introduced.

CL 1198143 tweaks cue mod init without an argument to create a module with the module path cue.example rather than an empty path that made the module file invalid.

CL 1197530 fixes the behavior of build tags, and also adds support for parentheses in build tag expressions.

CL 1197531 implements better caching when evaluating dependencies, which should speed up evaluation of modules that use multi-directory packages.

Go API

CL 1196721 disallows importing or loading packages with an underscore qualifier like foo.com/bar:_, as it was never intended behavior. Users should use the new embed proposal instead.

CL 1198555 adds a cue/load.Config.SkipImports option to avoid loading instances from import statements. This particularly helps cue fmt, where the loading caused unwanted slowness and unnecessary errors.

CL 1196820 adds a cue.LanguageVersion function to obtain the current version of the language spec that the Go module implements.

CL 1197160 implements considered support for build tags in modules. Build tags are considered false when outside the main module.

CL 1198686 fixes cue/load so that it no longer produces extra invalid packages when Config.Package was set to * and nested packages were loaded.

CL 1198351 fixes a bug in astutil.Sanitize where unused imports were not being fully removed from ast.File, causing errors in cue trim where all uses of an import were removed.

CL 1198494 speeds up the Path method on wrapped errors, which causes noticeable speed-ups in some edge cases.

CL 1198157 fixes cue/parser to accept keywords as valid selectors, aligning with the language specification.

Encodings

Initial support for TOML is included in this release, including support in cmd/cue and an experimental Go package. See the issue tracker for remaining work in this space.

CLs 1199309, 1199139, 1199306, 1199214, 1199398, 1199308, and 1199309 resolve a number of issues when decoding JSON Schema files.

CLs 1196332, 1199094, and 1199103 fix the JSON decoder to provide correct position information when decoding JSONL files or encountering a syntax error.

CL 1198874 fixes the loading of JSON files to reject multiple newline-delimited values, as those ar only allowed in NDJSON or JSONL files.

CL 1198876 teaches the YAML decoder to decode empty documents as null, aligning with the YAML spec and fixing panics when loading empty YAML files.

CL 1196291 tweaks the YAML decoder so that comments following a field are attached to the entire field.

CL 1196436 tweaks the textproto decoder to correctly handle required and optional fields.

CLs 1195628 and 1199054 ensure that cue/format prints the correct white space before and after comments.

CL 1195884 teaches cue/format to preserve comments associated with ... ellipsis expressions.

CL 538624 fixes a bug where cue/format would start a CUE file with white space if it began with a clause.

CL 1196134 fixes a bug in cue/format where a comment at the start of a CUE file would sometimes be indented.

CL 1196135 fixes a bug in cue/format where index or selector expressions could cause extra tab indentation.

Builtins

CL 1196212 adds a list.Reverse function to reverse the elements of a list.

CL 1197452 tweaks tool/exec.Run so that its errors are unambiguous when any command arguments contain white space.

CL 1198636 tweaks path.Match and tool/file.Glob to reject ** wildcard patterns as unsupported, to avoid confusion and allow future changes to their behavior. Note that this change may break uses of ** patterns, which behaved like *.

cmd/cue

CL 1196822 adds a --language-version flag for cue mod init and cue mod edit to set the language.version value.

CL 1197185 teaches cue mod resolve to work on the current module when no arguments are given.

CL 1196370 teaches cue mod registry to gracefully shut down when interrupted.

Full list of changes since v0.9.0
  • all: minor code cleanups by @mvdan in dc3ba30
  • internal/ci: test and release with Go 1.23.0 by @mvdan in 40da936
  • cue/errors: avoid simple duplication when gathering errors by @cuematthew in ee85bb9
  • cmd/cue: do not panic on empty jsonl inputs by @mvdan in 93670d7
  • cmd/cue: prefer ndjson over ldjson by @mvdan in 8b3cc67
  • cmd/cue: expand the embed help section by @mvdan in ecda391
  • encoding/jsonschema: fix panic on impossible enum by @rogpeppe in 4760f3b
  • encoding/jsonschema: fix issue 3176 by @rogpeppe in 6694c55
  • encoding/jsonschema: add test case for issue 3176 by @rogpeppe in 2122b51
  • encoding/jsonschema: add test cases for nested values by @rogpeppe in 0bd8619
  • encoding/jsonschema: better "type excluded" logic by @rogpeppe in 7ca1a14
  • encoding/jsonschema: fix type exclusion test by @rogpeppe in 5fde360
  • encoding/jsonschema: add test cases for excluded types by @rogpeppe in 89c7b4b
  • encoding/encoding/jsonschema: allow type number with int enum by @rogpeppe in bdf9be8
  • encoding/jsonschema: only one error per URL by @rogpeppe in 8e99f5e
  • encoding/jsonschema: support legacy id field by @rogpeppe in 709741d
  • encoding/jsonschema: schema version support by @rogpeppe in 6c26e3c
  • encoding/jsonschema: add test for numeric enum with type by @rogpeppe in 52ae410
  • mod/modregistry: return empty list for Versions with invalid name by @rogpeppe in f00a023
  • cmd/cue: add test for bad path lookup by @rogpeppe in 9a9dd17
  • encoding/jsonschema: implement MapURL by @rogpeppe in bddcb54
  • internal/core/adt: fix validator closedness issue by @mpvl in c683420
  • internal/core/adt: add test for issue 3332 by @mpvl in c8ff441
  • internal/core/adt: still process pattern for closeContext by @mpvl in 81740d5
  • internal/core/adt: split conjunct trees based on prefix by @mpvl in 8e02b92
  • internal/core/adt: add tests for closedness by @mpvl in 53bbdad
  • internal/core/debug: simplify logic of debug visualization by @mpvl in 2e312df
  • internal/core/adt: show # only on original defintion node by @mpvl in 6cc01b0
  • encoding/json: fix positions when Decoder.Extract finds bad syntax by @mvdan in a093c9b
  • cmd/cue: add test case for bad jsonl syntax error positions by @mvdan in 5e19deb
  • cmd/cue: suggest cue mod fix on all commands to add language.version by @mvdan in 40eed23
  • encoding/jsonschema: fix decoding of $id by @haoqixu in 915059d
  • cue/format: keep blank between ast.EmbedDecl and comment by @haoqixu in a6f1b76
  • encoding/json: fix location for JSON syntax error by @haoqixu in 596a8c3
  • cmd/cue: add test cases for embedding files inside symlink dirs by @mvdan in 677ece8
  • cmd/cue: add a test for embedding symbolic links by @mvdan in 4d941df
  • cmd/cue: implement cue import --dry-run by @mvdan in bcbc7cd
  • encoding/toml: support error positions by @mvdan in 334a6fe
  • encoding/toml: mimic indented CUE multi-line strings in test strings by @mvdan in 1ec257c
  • update golang.org/x/... and ociregistry for rc.1 by @mvdan in c15144f
  • encoding/jsonschema: decode required properties as required fields by @haoqixu in c4697bd
  • all: delay compiling global regexes and templates by @mvdan in 252a666
  • cmd/cue: add testscript for the jsonl file type by @mvdan in 4c7aecf
  • cmd/cue: speed up get_go_json_compat.txtar by @mvdan in 20d3c9c
  • cmd/cue: use fewer go/packages Need bits in get go by @mvdan in 3260084
  • internal/encoding/yaml: decode empty inputs as "null" by @mvdan in 30a5c79
  • internal/core/adt: fix panic triggered by using wrong condition by @mpvl in cd689ef
  • encoding/toml: support decoding keys named "_" by @mvdan in cf18d6f
  • internal/encoding: decode json files as a single JSON value by @mvdan in e8e6f04
  • cmd/cue: add TOML to a couple of help topics I forgot about by @mvdan in 0dccbf3
  • cmd/cue: add testscript to interpret empty files as various filetypes by @mvdan in db92bf8
  • cmd/cue: fix all "flag used without being added" bugs by @mvdan in 0bd038c
  • all: use simpler for loop iterations by @mvdan in 0d9d541
  • internal/ci/check: bump yuin/goldmark by @mvdan in dfe07b8
  • internal/core/adt: don't signal cleared schedulers by @mvdan in 0d4258e
  • encoding/jsonschema: add test case for issue 3351 by @mvdan in 95c818c
  • encoding/jsonschema: port txtar tests to cuetxtar by @mvdan in 44bc1ab
  • internal/cuetdtest: make M.Flags (internal) public by @cuematthew in 91929bd
  • cue/interpreter/embed: forbid ** via pkg/path.Match by @mvdan in 187fb1a
  • pkg: forbid ** in path.Match and tool/file.Glob by @mvdan in 987a85e
  • pkg: add test cases for ** in file patterns or globs by @mvdan in 25bb3d4
  • cue/load: do not create packages unnecessarily for files outside package directory by @rogpeppe in a4abb05
  • cue/load: add test case for issue 3306 by @rogpeppe in f472fd2
  • cue/load: implement SkipImports mode by @rogpeppe in 88306e2
  • all: make use of the new slices.Clone and cmp.Or Go 1.22 APIs by @mvdan in 55d1cb1
  • internal/core/adt: use a named vertexStatus constant rather than 0 by @mvdan in 862fcf1
  • cmd/cue: hook up encoding/toml for import and export by @mvdan in 9b91188
  • encoding/toml: add first implementation of an encoder by @mvdan in 54f2cce
  • internal/core/dep: use a new visitor.marked map when recursing by @mvdan in 34739e9
  • tools/flow: add test case for issue 2559 by @mvdan in 51bf6f2
  • tools/flow: add to task stats in the first initTasks call by @mvdan in bc41b25
  • internal/core/runtime: do not hide positions in interpreter errors by @rogpeppe in f7b7aaf
  • cmd/cue: add test case for embedded file error by @rogpeppe in bfcfff3
  • internal/cuetxtar: Correct nesting of tests by @cuematthew in dc199f5
  • internal/cuetxtar: Be noisier if DebugArchive is faulty by @cuematthew in b77c599
  • internal/core/walk: Clarify Visitor.Before documentation by @cuematthew in aa8e810
  • cmd/cue: do not initialize cmd.Command twice in cue cmd by @mvdan in 3f84ba6
  • cmd/cue: test that cue cmd --cpuprofile works by @mvdan in 17b3e52
  • cue/errors: make wrapped.Path faster by bypassing unnecessary reflection by @mxey in e68bd63
  • all: start using Go 1.22's loop var scoping and reflect.TypeFor by @mvdan in 055405a
  • internal/core/adt: do not require closeContext.group to be non-nil by @cuematthew in c8f3cad
  • cmd/cue: point "help get" text at CUE-specific cmd by @jpluscplusm in 5de5b42
  • cue/ast/astutil: update ast.File.Imports properly in Sanitize by @mvdan in 8145bdd
  • cmd/cue: add tests for symbolic links by @rogpeppe in 23fc4b1
  • internal/buildattr: implement @ignore attributes by @rogpeppe in e00557b
  • cmd/cue,internal/buildattr: add tests for @ignore tags by @rogpeppe in d502843
  • internal/ci: ensure internal/_e2e isn't broken in CI by @mvdan in 00879f0
  • internal/ci: ensure commit messages do not @-mention users by @mvdan in cf6641c
  • cue: add a regression test for a default elimination bug fixed in evalv3 by @myitcv in 97eeee4
  • internal/ci: copy how internal/vcs sets a clean env for git tests by @mvdan in 9025f67
  • internal/_e2e: remove unused import by @mvdan in 6a9997f
  • cue/cmd: ensure flags are added if they are used by @cuematthew in 657d5ec
  • internal/ci/checks: rewrite from bash to Go by @mvdan in 32013a7
  • internal/ci: move commit check script to a separate file with tests by @mvdan in daf98a0
  • all: make use of some more Go 1.22 std APIs by @mvdan in af83dad
  • drop go1.21, start testing on go1.23rc2 by @mvdan in 1aaf802
  • cmd/cue: use default module name for cue mod init by @rogpeppe in b3c12b3
  • mod/module: improve error messages for bad module path by @rogpeppe in 3e9d805
  • cmd/cue: add tests for module path errors by @rogpeppe in f7e48bb
  • cmd/cue: add a reference to the Central Registry from cue help modules by @rogpeppe in 8986233
  • cmd/cue: add information about import paths to cue help inputs by @rogpeppe in e9bc377
  • cue/parser: accept keywords as selector by @haoqixu in 682ff0e
  • all: replace internal/txtarfs with txtar.FS by @mvdan in e2054df
  • internal/vcs: show stderr when git exits with an error by @mvdan in d0724a0
  • internal/mod/modimports: remove duplicate test txtar file entry by @mvdan in 243da87
  • cue/literal: use strconv.IsGraphic by @mvdan in acdd41f
  • cue/load: avoid one stat call when loading a valid module by @mvdan in efdb072
  • cue/load: add test coverage for loading a legacy cue.mod file by @mvdan in 28c6219
  • internal/mod/modpkgload: symbolic links can be valid CUE files too by @rogpeppe in f5b905c
  • internal/mod/modpkgload: propagate CUE syntax error by @rogpeppe in a36cc32
  • cmd/cue: fix panic on bad syntax by @rogpeppe in af808c3
  • cmd/cue: better error message for mismatched publish version by @rogpeppe in b513fc2
  • cmd/cue: improve error message for malformed module path by @rogpeppe in 9a88d06
  • README: point to cuelang.org for install docs by @jpluscplusm in f2066e3
  • internal: remove some deprecated type/method usages by @cuematthew in e1f552f
  • cue: use Value.Err in examples using Compile APIs by @mvdan in 719893f
  • mod/module: allow versionless module path in CheckPath by @rogpeppe in 3a379b7
  • cmd/cue: add test case for issue 3262 by @rogpeppe in 56d6987
  • mod/modload: ignore _test.cue files in dependencies by @rogpeppe in 7793367
  • cmd/cue: fix link in embed help text by @rogpeppe in 77ac696
  • mod/modfile: use fixed language version for Fix by @rogpeppe in 6f2bfb4
  • cue/load: implement shared syntax cache by @rogpeppe in fc16ef8
  • cue/load: move syntax cache into fileSystem by @rogpeppe in afa222f
  • cue/load: use constructor for fileSystem by @rogpeppe in f787af8
  • internal/buildattr: stop at package clause and support parentheses by @rogpeppe in 5cbddef
  • internal/buildattr: add tests by @rogpeppe in 1bb894b
  • cue/load: CUE files only contain a single *ast.File by @rogpeppe in 75d4005
  • cue/load: move towards unified syntax cache by @rogpeppe in 14deefa
  • cue/load: remove import comment parsing by @rogpeppe in b03789f
  • cue/load: clean up allTags by @rogpeppe in 59fe2e4
  • interpreter/wasm,internal/filetypes: fix wasm awkwardness by @rogpeppe in d5d4815
  • cue/load: cache file names only by @rogpeppe in 4a8f673
  • internal/filetypes: speed up common case by @rogpeppe in fed43b0
  • cmd/cue: handle signals and perform a graceful shutdown for mod registry by @haoqixu in 27adbac
  • bump go-internal to get the latest testscript fixes by @mvdan in 695fefc
  • cue/interpreter/embed: don't allow hidden files in glob by @mpvl in 8bedc2b
  • pkg/tool/exec: document how Run.cmd works with string versus list by @mvdan in 7e1f140
  • update Go dependencies for the upcoming alpha by @mvdan in f6be8a8
  • internal/ci: bump Go and goreleaser versions for the upcoming alpha by @mvdan in 16c45d3
  • core/adt: simplify duplicate NumKind and NumberKind consts by @cuematthew in 304530f
  • pkg/tool/exec: show command arguments in errors as a Go slice by @mvdan in 38269ec
  • cmd/cue: test tool/exec.Run with arguments involving spaces by @mvdan in 5903ec8
  • core/adt: rename CompositKind to CompositeKind by @cuematthew in 95802d3
  • cmd/cue: add a forwards compatibility test case for bugfix releases by @mvdan in 2a96988
  • cue/interpreter/embed: respect module boundaries by @rogpeppe in 6056916
  • README: link to Slack and Discord via cuelang.org by @jpluscplusm in ddfe8eb
  • cue/interpreter/embed: require type if glob extension not specified by @myitcv in 2c8ee2f
  • cue/interpreter/embed: fix handling of dir matching glob by @myitcv in 970d10f
  • cmd/cue: do not allow embedding of CUE file types (for now) by @myitcv in a0f2cac
  • cmd/cue: add test case for embedding of CUE file type files by @myitcv in 868c110
  • cmd/cue: provide initial text for 'help embed' by @myitcv in 5c8be53
  • cmd/cue: document CUE_EXPERIMENT=embed by @myitcv in e460eb0
  • tools/trim: convert inline tests to txtar by @cuematthew in 8079151
  • doc/ref/impl: fix order of arguments in δ partial feature function by @cuematthew in 4eecacd
  • cmd/cue: make mod resolve work with no args by @rogpeppe in dbe24df
  • cue/load: better treatment for build tags with respect to modules by @rogpeppe in 79c1739
  • internal/buildattr: factor out from cue/load by @rogpeppe in 7ca3925
  • internal/ci: remove debug logging of commit message by @myitcv in f1f0963
  • cmd/cue: implement --language-version flag for cue mod edit and init by @rogpeppe in e9b2c29
  • mod/modfile: deprecate LatestKnownSchemaVersion by @rogpeppe in 71eb3be
  • cue: add LanguageVersion by @rogpeppe in a9009e8
  • cue/interpreter/embed: add support for embedding by @mpvl in 6594f45
  • cue/ast,spec: document that package _ is equivalent to missing package by @rogpeppe in c7f9334
  • disallow explicit underscore import path qualifiers by @rogpeppe in 1c381a0
  • cue/load: do not consider anonymous packages when checking package qualifier by @rogpeppe in 5ab2d73
  • cmd/cue,cue/load: add tests for underscore packages by @rogpeppe in 9295a20
  • internal/core/runtime: new attribute name for extern by @mpvl in b70e543
  • internal/filetypes: split ParseFile by @mpvl in a1c1cd7
  • pkg/list: add Reverse function by @NoamTD in f42327c
  • cue/load: clarify the docs for Config.ModuleRoot by @mvdan in a94d22f
  • README: simplify a bit, add new website links, add Discord invite by @mvdan in fecf80d
  • encoding/protobuf/textproto: correctly decode required/optional fields by @haoqixu in dec1786
  • encoding/json: fix position for jsonl by @haoqixu in 16c15d1
  • remove navbar.md and its supporting logo by @mvdan in 0d69846
  • cmd/cue: remove unnecessary fields and do not use filepath.WalkDir by @mvdan in db5c6bf
  • cue/format: prevent vertical tabs from causing extra indentation by @mvdan in 1f197eb
  • cue/format: avoid indenting a lone leading comment by @mvdan in d70f9d7
  • cue/...: remove remnants of /block/ comment support by @mvdan in 0cf2060
  • update github.com/emicklei/proto by @mvdan in 1d70939
  • cue/format: add test cases for issue 2496 by @mvdan in 59e276a
  • internal/cueversion: bump LanguageVersion for v0.10 by @mvdan in 525e18b
  • cmd/cue: correctly import comments after a field key by @haoqixu in cc7cb90
  • cmd/cue: forbid cue help help in favor of cue help by @mvdan in 859f1f6
  • cue/encoding/jsonschema: fix staticcheck errors by @NoamTD in b095ecb
  • cmd/cue: parse module.cue file in non-strict mode by @rogpeppe in b44f02f
  • cmd/cue: add test for mod edit strictness by @rogpeppe in 3eafda7
  • cue/load: fix loading when Config.Package does not match default package by @rogpeppe in ac34157
  • cue/load: add tests for issue 3213 by @rogpeppe in 4111b3e
  • cue/load: add Config.AcceptLegacyModules by @rogpeppe in 63d1318
  • mod/modfile: always allow missing major version in module field by @rogpeppe in 1795a49
  • internal/ci: always check that git is clean when we finish by @mvdan in b44ef61
  • cue/format: omit whitespace before the first clause by @mvdan in 95035da
  • encoding/toml: implement support for table arrays by @mvdan in 8a6194a
  • cue/format: add a regression test for issue 1544 by @mvdan in 475f692
  • cue/format: rewrite TestFiles with testscript by @mvdan in 08b1ce0
  • internal/core/adt: fix pointer comparison issue in equalTerminal by @mpvl in 1376fa8
  • internal/core/adt: fix lifetime tracking of shared closeContext by @mpvl in 2785aa4
  • internal/core/adt: update TestX to include language version by @mpvl in 8fdc65e
  • cue/format: preserve comments associated with ellipsis by @NoamTD in 9bd3e17
  • cue/format: add tests for ellipsis comments in fmt -s by @NoamTD in da2a575
  • cue/format: ensure a newline after every comment by @mvdan in b423a27
  • pkg/path: add missing param declaration by @NoamTD in e09cb31

Don't miss a new cue release

NewReleases is sending notifications on new releases.