Skip to content

v0.18.0-alpha.1

Pre-release
Pre-release

Choose a tag to compare

@cueckoo cueckoo released this 04 Aug 13:58
Immutable release. Only release title and notes can be modified.

Changes which may break some users are marked below with: ⚠️

Language

⚠️ Pattern constraints may no longer be marked as optional or required: [string]?: int and [string]!: int are now rejected by the parser, matching the spec grammar. A pattern constraint is optional by construction, so the markers had no effect; simply remove them (#3716).

The comparison bounds == and != now work with boolean values, so constraints like !=true behave as documented in the spec (#4388).

Fix a spurious parse error for fields named try, such as try: x (#4394).

Evaluator

Several hangs and panics have been fixed: a hang when chaining disjunctions across nested fields (#4453), and panics involving disjunctions (#4447) and pattern constraints with cue eval -e (#4449).

Several bugs causing spurious errors have also been fixed: let bindings referring to their enclosing scope could misresolve or fail as cyclic (#4428, #4440); or() over a cyclic reference could report a spurious structural cycle (#4399); and looking up a field could force the evaluation of unrelated comprehensions and disjunctions, producing errors out of thin air (#4448). Thank you to all who reported these.

"Incomplete value" errors now include the positions of the values involved, making it easier to locate the offending field in a large configuration (#2507).

cmd/cue

⚠️ The new formatter is enabled by default

The formatv2 experiment, announced in v0.17.0, is now enabled by default: cue fmt and the cue/format Go API are backed by a rewritten formatter. The new implementation resolves long-standing issues with the old one, in particular around the alignment of fields and trailing comments and the layout of multi-line expressions, so expect some reformatting when running cue fmt over existing files.

The old formatter remains available via CUE_EXPERIMENT=formatv2=0 for v0.18; v0.17 also accepts the formatv2 experiment name, so the setting can be shared by teams using both versions. Please report any misformatting via the issue tracker, as we intend to remove the old formatter once the new one is stable.

Other changes

CUE packages can now be combined with individual schema and data files in a single invocation, such as cue vet ./schemapkg extra-schema.json data.yaml, and the --package flag now treats individual CUE files the same way as packages (#3341, #3671, #3914).

cue vet now honors all -d/--schema flags rather than only the last one (#3726), and -e expressions now apply only to the selected expressions, avoiding spurious errors from unrelated parts of the input (#3371).

Tool tasks such as exec.Run, file.Read, and cli.Ask now surface evaluation errors in their fields, such as a broken stdin value, rather than silently treating them as unset.

Modules

Imports using a redundant package qualifier, such as foo.com/bar:bar, now resolve correctly in all cases (#4446).

@embed now works in files named directly on the command line within a module, and in packages loaded from dependency modules (#4439).

Wildcard package patterns such as ./.../name now match the package path in full rather than any of its suffixes (#3212), and package directory arguments with a trailing slash or a relative form now behave consistently (#3707).

Module registry errors are clearer: they now name the registry host and the module involved without repeating them at every level (#2952, #3611). cue mod publish now works with registries which reject overwriting existing blobs (#3340).

LSP server

Hovering over a field now shows its value with all conjuncts unified, and doc comments shown on hover now follow the semantic ownership rules of the language, such as attaching to the innermost field of a shorthand like a: b: c (#2672).

The language server is also more robust: it now notices files created on disk which satisfy previously failing imports or @embed patterns, publishes diagnostics for files with syntax errors and clears them for closed files, preserves comments when organizing imports, and fixes several panics and cache staleness bugs.

Encodings

The new yamlgoccy experiment, enabled by default, backs the YAML decoder and encoder with github.com/goccy/go-yaml, which retains more precise position and comment information and resolves a number of parsing bugs, such as the %YAML 1.2 directive being rejected (#3349). The old implementation remains available via CUE_EXPERIMENT=yamlgoccy=0 for v0.18.

The new openapiv2 experiment teaches cue import and cue export to handle complete OpenAPI documents — including paths, servers, and security — rather than only their component schemas. Enable it via CUE_EXPERIMENT=openapiv2; the underlying Go APIs are openapi.ExtractV2 and openapi.GenerateV2.

New output encoding tags: --out yaml+indentSequences=false emits the zero-indent list style favored by Kubernetes and others (#4177), and --out cue+compact or --out json+compact emit compact single-line output.

cue import now prefers hash-delimited strings like #"..."# when they avoid escaping, keeping strings with quotes or backslashes readable (#124).

The JSON Schema encoder can now generate JSON Schema draft-07 and the OpenAPI 3.0 dialect in addition to draft 2020-12. Generation is also improved in a number of ways: format keywords for sized number types (#2529), struct.MinFields and struct.MaxFields (#3605), bytes as base64-encoded strings (#1785), non-concrete comparison bounds (#3742), and distinct names for same-named references (#4277).

The ProtoBuf decoder now resolves unqualified references to types declared in proto files without a package (#4416).

cue get go now supports map keys which are integers or implement encoding.TextMarshaler (#3064), and translates fields of type cue.Value to _ (#3488).

Go API

The new cue.Unify function unifies many values at once, more efficiently than a chain of Value.Unify calls.

The new ast.DocComments and ast.ResolveComments functions report the doc comments that semantically document a node, resolving the field-shorthand convention.

The experimental jsonschema.GenerateMany function generates several schemas at once with a shared pool of definitions, as used by the new OpenAPI generator.

cue.Context.Encode now honors the omitzero JSON struct tag (#4429), and renders multi-line strings from json.Marshaler values as CUE multi-line strings (#3578).

tools/flow now supports tasks in a value below the root of its instance (#2185), and a data race in the task runner has been fixed (#2184).

Fix a panic in Value.Subsume involving validators with unevaluated arguments (#4387), and fix sub-values not being associated with their enclosing package instance (#2577).

The Go code generated from cue.proto is now shipped as the encoding/protobuf/cueproto package, so proto definitions using CUE options can be compiled without extra setup (#581). The compatibility shim at encoding/protobuf/cue is deprecated and will be removed in v0.19.

Full list of changes since v0.17.0
  • .claude: refine the release-notes skill after drafting v0.18.0-alpha.1 by @mvdan in adba4fa
  • cue/load: keep the module root of dependency instances by @mvdan in 2e12f86
  • cue/load: keep FS location when re-parsing with a language version by @mvdan in 242338f
  • internal/core/adt: fix panic on reinserted pattern constraint conjunct by @mvdan in cacb4b8
  • internal/core/adt: fix hang when chaining disjunction cross products by @mvdan in d57c348
  • yaml/goccy: test that a %YAML 1.2 directive is accepted by @cuematthew in a05d05d
  • cmd/cue: add regression tests for @embed in dependency modules by @mvdan in 5c8b3c8
  • internal/mod/modpkgload: canonicalize rewritten replacement import paths by @mvdan in b821e57
  • internal/mod/modpkgload: canonicalize import paths in CanonicalImportPath by @mvdan in 6b78905
  • cmd/cue: add regression tests for imports with a redundant package qualifier by @mvdan in e3287a2
  • internal/core/adt: keep lookups of settled arcs from forcing unrelated tasks by @mvdan in d0182fc
  • cue/testdata/comprehensions: cover a lookup forcing a sibling comprehension by @mvdan in 910bb32
  • update all dependencies ahead of v0.18.0-alpha.1 by @mvdan in 15604e6
  • tools/fix: scope embedding flags to their struct literal by @mvdan in bed18f8
  • tools/fix: add test for sibling struct literals in one scope by @mvdan in f823d02
  • internal/core/dep: track dependencies through the spread operator by @mvdan in a0255e6
  • tools/flow: add test for dependencies through the spread operator by @mvdan in 75f524a
  • tools/fix: keep closing of single close() embeds by @mvdan in bc48f0a
  • tools/fix: add test for single close() embeds by @mvdan in 77bacc1
  • tools/fix: keep wrappers off struct literals in comprehensions by @mvdan in 64ce3ae
  • tools/fix: add test for struct literal field values in comprehensions by @mvdan in 9db7abb
  • tools/fix: classify selector, call, and default embedding flags by @mvdan in 6f25808
  • tools/fix: add test for selector, call, and default embedding flags by @mvdan in 8e2ad07
  • internal/encoding/yaml/goccy: add lenient extraction for the LSP by @cuematthew in 486f8a3
  • internal/encoding/yaml/goccy: fix invalid positions for merged fields and comments by @cuematthew in 82027f4
  • internal/encoding/yaml: add goccy-based encoder behind the experiment by @cuematthew in 175c310
  • internal/encoding/yaml/goccy: copy encoder tests from internal/encoding/yaml by @cuematthew in c922659
  • internal/encoding/yaml/goccy: resolve scalar numbers by syntax rules by @cuematthew in f8ee956
  • internal/encoding/yaml: add goccy-based decoder behind an experiment by @cuematthew in cf81409
  • internal/encoding/yaml/goccy: copy decoder tests from internal/encoding/yaml by @cuematthew in 3a431f7
  • internal/encoding/yaml: test more decoding and encoding edge cases by @cuematthew in d86aa88
  • internal/core/adt: evaluate pattern values when registering them by @mvdan in 4d5f678
  • cue/testdata/cycle: add test for or() collapsing over a cyclic reference by @mvdan in 164e85f
  • cmd/cue/cmd/integration/workspace: use makeMappers in existing tests by @cuematthew in fa53f8c
  • cmd/cue/cmd/integration: replace dot-imports with a named import by @cuematthew in 2f3a5ca
  • lsp/cache: notice on-disk creation of files satisfying failed imports by @cuematthew in 60367ad
  • lsp/cache: add test showing on-disk import creation is ignored by @cuematthew in 1a0b507
  • lsp/cache: reload importers when a missing import comes into existence by @cuematthew in 6a671a2
  • lsp/cache: add test showing imports never resolve retrospectively by @cuematthew in 35026d2
  • lsp/cache: reset the full evaluator component in resetEval by @cuematthew in 86a53f0
  • lsp/cache: add test showing stale references with two embedders by @cuematthew in 0e35d49
  • lsp/cache: never create a package for files under cue.mod by @cuematthew in 8479b71
  • lsp/cache: add test showing bogus package created for cue.mod by @cuematthew in 22668ef
  • lsp/cache: canonicalize internally-built file URIs by @cuematthew in 1c4adbf
  • encoding/jsonschema: give same-named references distinct names by @rogpeppe in e41d650
  • encoding/openapi: add test for #4277 by @rogpeppe in 5196d81
  • lsp/cache: add test showing dead hover in files with spaces in names by @cuematthew in 1bbc1ce
  • lsp/cache: publish diagnostics for files which cannot be parsed by @cuematthew in a3932fa
  • lsp/cache: add test showing no diagnostics for unparseable files by @cuematthew in cd52e62
  • lsp/cache: clear diagnostics for files no longer open in the editor by @cuematthew in a72d1de
  • lsp/cache: add test showing stale diagnostics for closed files by @cuematthew in a0d0d53
  • lsp/cache: preserve comments when organizing imports by @cuematthew in 147510e
  • lsp/cache: add test showing organize imports deletes comments by @cuematthew in 830777f
  • lsp/eval: do not mutate the navigable set while ranging over it by @cuematthew in 4924c91
  • lsp/cache: do not mutate dirtyFiles while ranging over it by @cuematthew in 6e0a8ee
  • lsp/cache: detect CRLF line endings when the first line is empty by @cuematthew in 5262a26
  • lsp/cache: add test showing CRLF misdetected when first line empty by @cuematthew in 0fa4649
  • lsp/fscache: read the content of files which cannot be parsed as CUE by @cuematthew in 57ad75d
  • lsp/fscache: add test showing non-CUE file content is never read by @cuematthew in 74f7576
  • lsp/fscache: do not panic on the root of an overlay FS rooted at / by @cuematthew in 5686a19
  • lsp/fscache: add test showing panic on the root of an FS rooted at / by @cuematthew in 13d3b3c
  • lsp/fscache: make ReadCUE's parse-mode contract match its behavior by @cuematthew in 0f67283
  • lsp/fscache: stably anchor ASTs of files with no declarations by @cuematthew in 7a8bdfd
  • lsp/fscache: add test showing unstable anchoring of empty files by @cuematthew in c3d300e
  • lsp/fscache: cache the parse results of JSON and YAML files by @cuematthew in 98da491
  • lsp/fscache: add test showing JSON and YAML parses are not cached by @cuematthew in 39c3854
  • lsp/eval: do not panic on a pattern constraint with an empty label by @cuematthew in e788adb
  • lsp/eval: add test showing panic on an empty pattern label by @cuematthew in 746e6fb
  • internal/lsp: notice on-disk creation of files matching embeds by @cuematthew in 5c58633
  • lsp: add test showing bad behaviour for changing embed attribute by @cuematthew in fedc4a3
  • tools/fix: keep embedding wrappers out of enclosing structs by @mvdan in 8f4d728
  • tools/fix: add test for embeddings inside comprehension values by @mvdan in 752345a
  • tools/fix: open close() field values inside comprehensions by @mvdan in 42c6ed1
  • tools/fix: add test for close() field values in comprehensions by @mvdan in a703ca9
  • tools/fix: open field values inside comprehensions by @mvdan in 8894549
  • tools/fix: add test for field values inside comprehensions by @mvdan in 468e553
  • tools/fix: rewrite embeddings nested in rewritten embeddings by @mvdan in 3c1136f
  • tools/fix: add test for embeddings nested in rewritten embeddings by @mvdan in 9f90f1b
  • internal/core/adt: keep conjunctOpened when reactivating a resolver by @mvdan in 2e7d1dc
  • cue/testdata: test __reclose spread with derived definition by @mvdan in d2a806c
  • internal/lsp: show unified values in hover by @cuematthew in 9dfdb38
  • internal/core/adt: do not reclaim disjuncts owned by another vertex by @mvdan in 0f2d7e7
  • internal/cuetxtar: split args= tokens on top-level commas only by @mvdan in 2eaec23
  • cue/testdata: cover let-self iteration with a computed sibling label by @mvdan in 59ef4be
  • cue/testdata: cover iterating over a let bound to self by @mvdan in 9211f67
  • pkg/tool/exec: do not panic on an empty cmd string by @mvdan in 55a0874
  • cmd/cue: fix panic in login with no registry hosts by @mvdan in 6d94b2d
  • cue/testdata: cover comprehension chains blocking on non-pushed-down ifs by @mvdan in 0053f49
  • cue/ast/astutil: fix panic on top-level alias in an expression by @mvdan in ac75f31
  • tools/fix: avoid infinite loop on invalid label alias AST by @mvdan in 1ce2b5f
  • tools/fix: avoid spurious let indirection when wrapping value aliases by @mvdan in 7fcbe12
  • tools/fix: add test for spurious let indirection on wrapped value aliases by @mvdan in 7abbf05
  • internal/core/adt: resolve let-self bindings transparently by @mvdan in 997533d
  • cue/testdata/references: test a dynamic field key under a definition let self by @mvdan in 1c20b13
  • tools/fix: drop blank aliases when rewriting for aliasv2 by @mvdan in 7efd3f8
  • mod/modregistry: drop the module.cue check prefix in publish errors by @mvdan in b3135c8
  • internal/mod/modpkgload: name the replacement directory in errors by @mvdan in 46949c7
  • internal/mod/modimports: do not repeat file names in read errors by @mvdan in 4635fed
  • internal/pretty: avoid blank line after comment-only files by @sjh9714 in 2e77fc7
  • internal/core/adt: export ErrorGraphs as a method not a field by @rogpeppe in c4511c7
  • internal/core/adt: export IsValidator as a method not a field by @rogpeppe in 486e2e8
  • internal/core/adt: unexport ReleasePositions, PushConjunct and Format by @rogpeppe in 944b812
  • mod/modcache: do not repeat the module version in parse errors by @mvdan in 280d7b6
  • cmd/cue: add tests for more verbose module error messages by @mvdan in 0b23f6e
  • mod/modregistry: identify modules in errors via a structured type by @mvdan in da71906
  • mod/modconfig: surface auth configuration errors directly by @mvdan in f8a3ab3
  • pkg/tool: surface errors from output fields in file.Read and cli.Ask by @mvdan in 9f9d224
  • pkg/tool: surface errors from exec.Run's dir field by @mvdan in 2bfbe1f
  • pkg/tool: surface errors from exec.Run's stdin, stdout, and stderr by @mvdan in 25f6861
  • pkg/tool: add tests for task fields which fail to evaluate by @mvdan in 8c07411
  • lsp/eval: track patterns, dynamic fields, and field constraints by @cuematthew in 461cd71
  • lsp/eval: add graph API by @cuematthew in 8dadeeb
  • lsp/eval: move lsp evaluator to unstable/lsp/eval by @cuematthew in af1589e
  • pkg/tool/cli: read Ask lines without bufio.Scanner by @mvdan in fe9fbae
  • encoding/protobuf: generate the proto Go code without protoc by @mvdan in 7849721
  • encoding/protobuf: ship the Go code generated from cue.proto by @mvdan in 4d9b6f8
  • .claude: rename release-notes skill and tighten patch-release guidance by @mvdan in e054a6a
  • mod/modfile: do not stack error prefixes for invalid module files by @mvdan in a0114cf
  • cmd/cue: add tests for verbose module error messages by @mvdan in d8d4170
  • .claude: add a skill to backport queued fixes by @mvdan in 7bf897b
  • encoding/jsonschema: generate a format for sized number types by @rogpeppe in a68c4ff
  • encoding/jsonschema: add test for #2529 by @rogpeppe in 9fcc7a3
  • encoding/jsonschema: generate struct.MinFields and struct.MaxFields by @rogpeppe in e90e394
  • encoding/jsonschema: add test for #3605 by @rogpeppe in b47f0b2
  • encoding/jsonschema: generate bytes as a base64-encoded string by @rogpeppe in e58079f
  • internal/core: resolve import instances back to their build instance by @mvdan in c4b7a50
  • encoding/jsonschema: add test for #1785 by @rogpeppe in 90127bc
  • encoding/jsonschema: accept non-concrete comparison bounds by @rogpeppe in 0a0dd77
  • encoding/openapi: add test for #3742 by @rogpeppe in a336345
  • mod/modregistry: do not push blobs which are already present by @mvdan in 4f46930
  • mod/modregistry: add test for pushing already-present blobs by @mvdan in 269f98d
  • cue/load: make relative package paths consistent with absolute ones by @mvdan in 7891307
  • cmd/cue: add test cases for loading a package directory with a trailing slash by @mvdan in 7521996
  • internal/core/adt: add conjunct positions to incomplete value errors by @mvdan in e36c3d9
  • cmd/cue: add test for incomplete value errors lacking positions by @mvdan in a2fa572
  • encoding/json: omit file paths from decode error messages by @mvdan in 3c130f7
  • mod/modregistry: mention the registry host in module operation errors by @mvdan in 3aba071
  • cmd/cue: add tests for module registry errors lacking registry info by @mvdan in acdd98a
  • cmd/cue: convert lsp to standard cobra command handling by @cuematthew in e0620ed
  • cue/cmd: make the lsp subcommand non-hidden by @cuematthew in 68d74d4
  • tools/trim: reach a fixed point in a single pass by @mvdan in bea7f24
  • tools/trim: add regression test for unstable trim output by @mvdan in 041a7c2
  • cue/literal: prefer hash-delimited strings when importing by @mvdan in d073105
  • cmd/cue: add import test for string quoting forms by @mvdan in d7c0998
  • cmd/cue: scope -e to selected expressions for package inputs by @mvdan in 696581a
  • cmd/cue: add test for -e expression scope across input forms by @mvdan in 9476122
  • cue/testdata/references: add test for let-self across inline unification by @mvdan in 806821e
  • internal/core/adt: allow chained re-instantiation of inline conjunctions by @mvdan in 021df7e
  • cue/testdata/cycle: add regression test for spurious inline cycle by @mvdan in 9825a40
  • internal/core/export: emit let bindings for parent-rooted references by @mvdan in 3d08893
  • cmd/cue: add regression tests for issue 2944 stack overflow by @mvdan in 4aeee2b
  • internal/ci: enforce that test outputs are up to date by @mvdan in 0c547ba
  • all: re-run tests with CUE_UPDATE=1 by @mvdan in e07533c
  • cmd/cue: get go supports integer and TextMarshaler map keys by @mvdan in 8125f58
  • cmd/cue: add test for get go with non-string map keys by @mvdan in cc2a73c
  • cmd/cue: get go translates cue.Value to top by @mvdan in d2ac0c3
  • cmd/cue: add test for get go with a field of type cue.Value by @mvdan in 684a042
  • encoding/jsonschema: generate constraints table from graph by @rogpeppe in b7a7c11
  • cue: minor cleanups in decode.go by @mvdan in 6508802
  • cue: drop unused omitempty parsing in the decoder by @mvdan in cb618da
  • internal/core/adt: fix hang on let binding a self-referencing struct by @mvdan in 4c05dcf
  • internal/core/adt: fix hang on self-feeding cycle advancing depth by @mvdan in 1b13c37
  • internal/core/adt: defer field-set freeze for a running resolver by @mvdan in 541e61b
  • internal/core/adt: do not defer resolvers during comprehension clauses by @mvdan in f2197d4
  • cue/testdata/comprehensions: test guard-driven premature finalization by @mvdan in 3aaa504
  • internal/core/convert: support the json omitzero struct tag by @mvdan in 93359f5
  • cmd/cue: add gengotypes test cases for int32 and float64 by @mvdan in 511b891
  • cue/load: match wildcard package patterns in full by @mvdan in f4a2519
  • cmd/cue: expand wildcard package pattern tests by @mvdan in 22eb188
  • internal/filetypes: add openapi allSchemas bool tag by @rogpeppe in e319275
  • cmd/cue: openapi v2 support by @rogpeppe in 29b44c2
  • encoding/openapi: add ExtractV2 for whole-document OpenAPI extraction by @rogpeppe in 3096522
  • encoding/jsonschema: generate fields for incomplete structs by @rogpeppe in 86defc3
  • encoding/jsonschema: add test for #4426 by @rogpeppe in 19eef06
  • tools/flow: add regression test for runner data race by @mvdan in b4a648c
  • tools/flow: fix tasks in a value below its instance root by @mvdan in 15e60b2
  • tools/flow: add regression test for a task at a non-root value by @mvdan in 351ec78
  • internal/core/adt,pkg: bound string, bytes, and list repeat counts by @mvdan in 66e8cda
  • cue/parser: limit expression nesting depth during parsing by @mvdan in f9a2052
  • internal/encoding/yaml: limit the size of YAML alias expansion by @mvdan in bbdcf1d
  • cue: add FillPath inline-reference case to TestFillPathSyntax by @mvdan in d598a85
  • cue: generalize TestFillPathOptional into table-driven TestFillPathSyntax by @mvdan in cfc2b6e
  • encoding/openapi: add GenerateV2 for whole-document OpenAPI generation by @rogpeppe in 296512a
  • lsp/eval: do not resolve interpolations to their interpolated paths by @cuematthew in c413e49
  • lsp/eval: add test showing bad behaviour by @cuematthew in 20b3d27
  • lsp/eval: treat default disjuncts the same as unmarked ones by @cuematthew in 6f1cdb0
  • lsp/eval: add test showing bad behaviour by @cuematthew in 59af0b8
  • lsp/eval: fix resolution into sibling unification operands by @cuematthew in 23b18bc
  • lsp/eval: add test showing bad behaviour by @cuematthew in e384a02
  • cue: document which options apply to which methods by @mvdan in 4259aa3
  • cue: add Unify function to unify many values at once by @mvdan in 4ce52dc
  • cue: add benchmark for unifying many values by @mvdan in 0908d1c
  • internal/core/adt: treat cyclic under-resolved values as incomplete scalars by @mvdan in 38430c4
  • cue/testdata/references: test a comprehension dynamic field under a let self by @mvdan in ba3e3a5
  • internal/core/adt: do not reclaim disjunct arc states before merging by @mvdan in 66afe2b
  • internal/core/adt: improve error for an integer index into a non-list by @mvdan in a2e5b96
  • internal/core/compile: add tests for self inside comprehensions by @mvdan in d199b46
  • encoding/jsonschema: add GenerateMany for schemas with shared definitions by @rogpeppe in 6e4f63c
  • internal/core/adt: do not discard recomputed let cycle placeholders by @mvdan in f9f01a4
  • internal/core/adt: do not insert a dynamic field arc for an invalid key by @mvdan in 1ed9c3c
  • cue/testdata/eval: test a dynamic field with an invalid key value by @mvdan in 97c09c4
  • internal/core/adt: fix hang on dynamic field whose key is under evaluation by @mvdan in 1bf87f0
  • cmd/cue: generate the CUE_DEBUG section of help environment by @mvdan in 7686325
  • encoding/jsonschema: avoid panic on non-string element in "required" by @mvdan in 018ad0c
  • scanner: show details of non-matching whitespace for multiline strings by @mxey in 86e2b5e
  • encoding/protobuf: resolve unqualified references to package-less proto types by @stefan-toubia in 1370131
  • cmd/cue: honor all -d/--schema flags, not just the last by @mvdan in 1535069
  • cmd/cue: add regression test for order-dependent vet -d flags by @mvdan in f19119c
  • internal/core/adt: add regression test for required field in comprehension by @mvdan in ac9a510
  • cmd/cue: sort experiments in help by version by @mvdan in 0fa14b0
  • internal/cueexperiment: require all experiments to declare a preview by @mvdan in 932f243
  • internal/encoding: honor the compact tag for cue and json output by @rogpeppe in 5911aba
  • internal/pretty/style: add options to clear positions and comments by @rogpeppe in f621727
  • internal/filetypes: add a compact bool tag for json and cue by @rogpeppe in ca44adc
  • update deps ahead of the first v0.18 alpha by @mvdan in 31a46d2
  • internal/filetypes: rename yaml's indentSeq option to indentSequences by @mvdan in bb62c62
  • cmd/cue: combine a package with individual schema files by @mvdan in 9b1a864
  • cmd/cue: add test for combining a package, schema, and data file by @mvdan in f4fca4e
  • cmd/cue: treat --package alike for CUE files and packages by @mvdan in a244cce
  • cmd/cue: add tests for export --package with a CUE file by @mvdan in f097bab
  • cue/ast: correct DocComments comment by @cuematthew in 761d2f7
  • internal/lsp: report semantic doc comments, not syntactic by @cuematthew in faf4e36
  • internal/lsp: add test showing faulty doc comments via lsp-hover by @cuematthew in 5732e3a
  • cue/ast: resolve doc-comment ownership for field shorthands by @cuematthew in e3de3e6
  • cue/ast: add tests showing bad behaviour of cue fmt -s by @cuematthew in 0232f79
  • internal/pretty: honour blank lines at section starts by @cuematthew in 5e276ed
  • internal/ci: remove refs/attic tags check by @mvdan in 10e32e8
  • cue/load: support @embed for command-line-argument files in a module by @mvdan in ca436e4
  • internal/cuetxtar: support module-qualified packages in at= paths by @mvdan in f218a19
  • cmd/cue: test loading explicit files within a module by @mvdan in d4196fd
  • internal/pretty: align trailing comments on import specs by @cuematthew in 3bfd593
  • internal/pretty: align trailing comments on arithmetic chains by @cuematthew in ac043fa
  • internal/pretty: add test case for comment alignment in arith chains by @cuematthew in 6d22226
  • internal/pretty: preserve newlines and comments in multi-line interpolations by @cuematthew in 2f004a2
  • internal/pretty: lay out multi-line selector chains by @cuematthew in ed53637
  • internal/pretty: align trailing comments on call arguments by @cuematthew in 4fae534
  • internal/pretty: add support for CUE_UPDATE=1 by @cuematthew in b9ca01e
  • cmd/cue: add YAML option to control sequence indentation by @mvdan in dc3b798
  • internal/mod: resolve module replacements via minimum-version selection by @rogpeppe in eca151a
  • encoding/jsonschema: fix formatting by @rogpeppe in 0d631b3
  • encoding/jsonschema: support generating draft-07 and OpenAPI 3.0 dialects by @rogpeppe in 2f64e3d
  • cue/testdata/eval: test == / != bounds on bool values by @mvdan in 5df974c
  • internal/core/adt: allow != and == bounds on bool values by @srnnkls in 27435c4
  • internal/core: fix Subsume nil-deref on BuiltinValidators with lazy args by @srnnkls in 0ee0433
  • pkg/list: use the shallow arc completion when building the sorter by @mvdan in b953594
  • internal/core/adt: rename and document the CompleteArcs methods by @mvdan in b48f957
  • internal/filetypes: test bool tags set to 0 and false by @mvdan in 5fc893c
  • cue/format: revert manual-AST field alignment fix by @mvdan in ebe6328
  • cue/format: revert list and call argument column alignment fix by @mvdan in 17a029b
  • cue/format: revert spurious empty line fix by @mvdan in d4365c2
  • cue/format: revert default tab width change from 8 to 4 by @mvdan in 7cce9ca
  • cue/format: revert multiline string interpolation indentation fix by @mvdan in 35307ed
  • internal/cueexperiment: default empty version to the language version by @mvdan in 6c6b295
  • cue: clarify documentation for Value.UnifyAccept by @mvdan in a227d33
  • cmd/cue/cmd: add regression test for issue 2966 by @mvdan in af66d31
  • cue/testdata/disjunctions: add regression test for issue 2912 by @mvdan in 961b517
  • cmd/cue: add test for -H showing nested hidden fields in package-less files by @mvdan in 959ee13
  • cue: associate sub-values with their enclosing package instance by @mvdan in 9234095
  • cmd/cue: add regression test for -e suppressing nested hidden fields by @mvdan in 1893c61
  • internal/core/compile: sync again with CUE_UPDATE=1 by @mvdan in f8b421f
  • internal/cuetxtar: strip @test attributes without cue/format by @mvdan in 1cc3d22
  • internal/pretty: keep spaces in aliases by @cuematthew in e55f0ba
  • internal/core/adt: defer fieldSetKnown for a running field-adding conjunct by @mvdan in af6f29b
  • cue/testdata/cycle: add regression test for or() over a cyclic reference by @mvdan in 56d7672
  • cue/format: add smoke tests for the formatv2 experiment by @mvdan in cbcefcb
  • internal/core/convert: render multiline strings when converting json.Marshaler by @mvdan in 0c68eb1
  • cue: add regression test for Encode syntax of strings by @mvdan in 8fe92dc
  • internal/cuetest: make golden-file flags functions for the test cache by @mvdan in fc88d7d
  • cmd/cue: clarify wording of the --force output flag by @mvdan in 9c60757
  • internal/cueexperiment,internal/cuedebug: read env vars for the test cache by @mvdan in 0b7cca8
  • cue/parser: reject optional and required pattern constraints by @mvdan in 944ce33
  • cue/parser: add regression test for marked pattern constraints by @mvdan in 56acd5a
  • pkg/net: add regression test for net.FQDN with RFC 2317 notation by @mvdan in f1dcc62
  • cue/parser: allow try as a field label by @mvdan in 89492a1
  • cue/parser: test all keywords as labels, including try by @mvdan in a6b79e8
  • internal/pretty: ensure < -num does not format to <-num by @cuematthew in e57987a
  • internal/cueexperiment: rename FormatterV2 to FormatV2 by @cuematthew in afc9cab
  • internal/pretty: add Wadler-Lindig pretty-printer for CUE AST by @cuematthew in 635e642
  • internal/core/compile: re-run with CUE_UPDATE=1 by @mvdan in b1f5ada
  • internal/cueversion: bump for the upcoming v0.18 release cycle by @mvdan in 7f2a7d4