github cue-lang/cue v0.11.0

16 hours ago

This release includes the new matchN and matchIf validators, many fixes to evalv3 including a new cycle algorithm, a new experimental toposort field ordering, and many improvements to JSON Schema support.

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

Evaluator

A number of crashes, regressions, and other bugs have been fixed in the new evaluator, which can be enabled by CUE_EXPERIMENT=evalv3. Thanks to all who have tested the new evaluator and reported bugs!

CL 1201897 lands a new cycle algorithm in CUE_EXPERIMENT=evalv3, which is much simpler than the old algorithm and is needed to unlock further bug fixes and performance improvements.

CL 1198922 adds a new matchN built-in validator, necessary implement a host of validators such as the JSON Schema equivalents of not, oneOf, and anyOf. See the new how-to guide for it.

CL 1200942 adds a new matchIf builtin, similar to matchN, which makes it significantly easier to implement the if, then, and else keywords in JSON Schema.

CL 1202685 tweaks cuecontext.New to follow CUE_EVALUATOR=evalv3 when the cuecontext.EvaluatorVersion option is not used.

CLs 1202903, 1203264, 1203267, and 1203528 fix a number of bugs where CUE_EXPERIMENT=embed was not working as described in the proposed design.

CL 1199898 relaxes the evaluator to allow referencing required fields via selectors, rather than failing like we do with optional fields. This should help with the transition of CUE schemas from regular to required fields, such as those decoded from JSON Schema.

⚠️ CL 1200221 removes support for arithmetic operators on lists, and CL 1200221 teaches cue fix to rewrite most of them. We have added a doc page with more details and examples.

CL 1202746 teaches CUE_STATS_FILE to start reporting the evaluator version being used, which is useful information when looking at performance stats.

Field ordering

A new experiment is introduced via CUE_EXPERIMENT=toposort which enables a more principled ordering of CUE fields as produced by cue export and cue eval. The intention is to ensure the old and new evaluators order fields of structs in the same way, in order to build confidence and ease the transition to the new evaluator. There are still a few wrinkles to work out, and the question of iteration order in comprehensions over structs remains to be tackled. An issue for gathering feedback is available.

Modules

⚠️ CL 1199541 wraps up the CUE modules experiment by dropping support for CUE_EXPERIMENT=modules=0, now that the new mode has been the default since CUE v0.9.0, and we are not aware of any remaining regressions.

CL 1201522 fixes a bug where imports did not work properly when using cue/load.Config.Package = "*".

Go API

⚠️ CL 1203193 adds a new experiment via CUE_EXPERIMENT=decodeint64 which causes cue.Value.Decode to default to int64 rather than int when decoding CUE integer values. This ensures consistent behavior with 32-bit architectures.

⚠️ CL 1203192 tweaks the signature of cue.Index so that it accepts int64 as well as int for consistency with 32-bit architectures.

CL 1202744 tweaks cuecontext.EvalVersion so that the zero value is not a valid evaluator version, as that could lead to unintentional behavior.

⚠️ CL 1202244 tweaks the cue.Value API to consider open lists as concrete, aligning with the spec.

⚠️ CLs 1201768, 1201933, 1201934, 1201936, and 120193 remove pieces of the encoding/openapi Go API which have been deprecated for some time and already have reasonable alternatives available.

⚠️ CL 1201962 removes fields from cue/build.Instance and cue/load.Config which have been deprecated and unused for some time.

⚠️ CL 1201963 removes APIs from encoding/json and encoding/yaml which have been deprecated for some time and already have reasonable alternatives available.

⚠️ CLs 1202285 and 1202286 remove the cue.Value.Subsumes and cue.Value.Split methods, which have been deprecated and hidden for years.

CL 1200507 deprecates astutil.Cursor.Import, which is now superseded by astutil.Sanitize.

Encodings

A significant amount of work has gone into improving JSON Schema support, fixing many bugs and producing better CUE output, as well as leveraging the new matchN and matchIf builtins. While this work is still in progress, we already expect an overall improvement compared to v0.10.0. This work will also form the basis for CUE modules for well-known services that will be published to the Central Registry.

The TOML support first released in v0.10.0 is further polished by decoding CUE nodes with positions as well as adding support for TOML dates and times.

⚠️ CL 1199541 wraps up the new YAML decoder experiment by dropping support for CUE_EXPERIMENT=yamlv3decoder=0, allowing the 8400 lines of code in internal/third_party/yaml to be removed.

CL 1200901 improves filetype tags, as described by cue help inputs, so that unknown tag=value pairs cause failures, and invalid pair combinations aren't silently ignored.

CLs 1200899 and 1200924 split JSON Schema's strictness option into StrictFeatures and StrictKeywords which allows erroring when unimplemented features are used, but not when unknown keywords are used. --strict is also superseded by jsonschema+strict:.

CL 1201111 teaches default filetype tags to be applied in the default auto interpretation mode as well.

CL 1201113 adds the StrictFeatures and StrictKeywords options to OpenAPI, mirroring the options added to JSON Schema.

CL 1201910 allows configuring how encoding/jsonschema maps URLs to values within a package.

CL 1201935 refactors encoding/openapi so that it can directly use the existing CUE value encoder for JSON, rather than a parallel encoder of CUE syntax trees to JSON which had to be maintained separately.

CLs 1201807, 1201808, 1201824, and 1201826 improve the performance of encoding CUE values to JSON, resulting in as much as a 10x improvement in wall time and memory usage for deeply nested CUE values.

Builtins

CL 1201474 adds a new encoding/toml package with Marshal and Unmarshal APIs, following the addition of TOML support in v0.10.0.

CL 1202104 adds the net.URL and net.AbsURL validators, needed by JSON Schema.

⚠️ CL 1201115 removes strconv.ParseComplex, which never worked in any past CUE release and does not seem like an useful API to have in its current form.

CL 1194425 tweaks the yaml.Validate and json.Validate functions to allow non-concrete CUE values as schema parameters.

CL 1199602 adds a list.MatchN function, surfacing the matchN built-in validator for use in the JSON Schema decoder.

⚠️ CL 1199881 tweaks uuid.Valid so that it is consistent with uuid.Parse in terms of what UUID formats are accepted.

cmd/cue

⚠️ CL 1203289 moves cuepls to cue lsp, enabling users to install one binary rather than two, and avoiding potential version discrepancies.

⚠️ CL 1199634 drops support for the deprecated short form of cue cmd; users of cue foo should now call cue cmd foo.

CL 1204223 adds a cue login --token flag to log into a CUE registry with a token which was generated via the web interface or API, for use in automated environments like CI.

CL 1200351 fixes a bug in cue fix where it would not operate on directories with multiple packages.

CL 1200498 fixes a bug in cue fix where added imports would end up with mangled names.

CL 1200554 teaches cue fix to work on standard input and output, like other sub-commands.

CL 1201709 fixes a minor regression introduced in CUE v0.9.0 where cue help cmd mycmd ./mypkg stopped showing a valid command's help text.

Full list of changes since v0.10.0
  • internal/ci: bump pinned Go to 1.23.3 by @mvdan in cb9ba43
  • internal: switch CI and the e2e tests to cue login --token by @mvdan in 7edac8b
  • internal/core/adt: fix handling of ellipsis in evalv3 by @mpvl in c97d709
  • internal/cue/adt: add tests for issue 3572 by @mpvl in a2490a2
  • cue: dereference value during lookup by @mpvl in 09d70c4
  • cmd/cue: actually support a registry argument in login by @mvdan in 4eba0f7
  • cmd/cue: add cue login --token flag by @mvdan in 09a02a6
  • encoding/jsonschema: add a small reproduction for CL 1204137. by @haoqixu in d96b60d
  • lsp: only support a single WorkspaceFolder for now by @myitcv in d823cf0
  • lsp: allow integration tests to expect an Initialize error by @myitcv in 2583c58
  • lsp: fix base test to be based on CUE module by @myitcv in c5d3d64
  • lsp: fix rooting of CUE modules by @myitcv in 9ff8990
  • lsp: add initial README by @myitcv in 40be904
  • Revert "encoding/jsonschema: simplify closedness" by @rogpeppe in 5bdd8e3
  • encoding/jsonschema: simplify closedness by @haoqixu in 9b22a3c
  • encoding/jsonschema: explicitly close or open structs by @haoqixu in e3e1c9f
  • cmd/cue: clarify cue mod tidy --check help text by @jpluscplusm in 82995bb
  • encoding/jsonschema: allow any format in OpenAPI mode by @rogpeppe in cbde66b
  • openapi: do not add nil CommentGroup by @rogpeppe in 0d2173f
  • cmd/cue: add test for cue def panic with openapi by @rogpeppe in e1d0ccd
  • encoding/jsonschema: support int32 and int64 formats in OpenAPI by @rogpeppe in 62a9beb
  • encoding/jsonschema: implement "date" format by @rogpeppe in 2dab7e3
  • internal/core/adt: shorter validator error message by @rogpeppe in af459f1
  • update to use latest published githubactions schema by @rogpeppe in 93c1d7e
  • internal/core: expose topological sorting API by @cuematthew in 8ff9db9
  • encoding/jsonschema: check regexp syntax up front by @rogpeppe in 1476fc7
  • encoding/jsonschema: better constraints for additionalProperties and patternProperties by @rogpeppe in 85f5ca8
  • encoding/jsonschema: add test for field with regexp metacharacters by @rogpeppe in 1300a2d
  • encoding/jsonschema: add test case for empty field by @rogpeppe in 8850ea7
  • encoding/jsonschema: check regressions on a per-version basis by @rogpeppe in 47c1559
  • encoding/jsonschema: better treatment of arrays by @rogpeppe in fc9a5a5
  • internal/core: add explicit txtar test by @cuematthew in b780c0a
  • all: enable new sorting algorithm by @cuematthew in edad6fc
  • cue: Keep Vertex if returned from conversion of Go to CUE by @cuematthew in dbef7c5
  • internal/core: add support for toposort to evalv2 by @cuematthew in c374e6c
  • internal/core: extract sorted features from Vertex by @cuematthew in 65a15e2
  • internal/core: sort graph topologically by @cuematthew in c6feea9
  • internal/core: calculate elementary cycles by @cuematthew in 9ddb0ec
  • internal/core: build graphs of Features by @cuematthew in 5855903
  • cue: polish Go docs further by @mvdan in b3eed8b
  • cue: teach old cue.Instance APIs to support @embed by @mvdan in deed7d5
  • cue: improve docs around AnyIndex and AnyString by @mvdan in 73d4e25
  • cue/testdata: add regression test for a cycle bug fixed in evalv3 by @mvdan in b96d6c1
  • internal/core/runtime: external attributes can use any concrete field name by @rogpeppe in 0f6c51b
  • internal/ci: run most tests on 32 bits too by @mvdan in 0516cc6
  • cue: add experiment to default to int64 in Value.Decode for integers by @mvdan in 00bd25b
  • cmd/cuepls: remove by @myitcv in dd85ce4
  • cmd/cue: add hidden lsp command by @myitcv in 9faab39
  • update golang.org/x deps for v0.11.0-alpha.5 by @mvdan in e83de3e
  • cmd/cue,README: revamp introductory text by @mvdan in c20ee10
  • cue/interpreter/embed: error when embed is not in a module by @rogpeppe in edef548
  • cue: add test for embedded file not in a module by @rogpeppe in 06d0c73
  • cue: support Index calls with int64 by @mvdan in 8b2affe
  • cue/stats: start reporting which CUE evaluator version was used by @mvdan in 956d746
  • internal/core/adt: catch if OpContext.Version is unset by @mvdan in 52c4418
  • internal: separate the zero EvaluatorVersion value from EvalV2 by @mvdan in f17356d
  • cue/errors: add package example by @mvdan in 80f4f23
  • internal/core/adt: impove arcType update logic by @mpvl in d28f285
  • internal/core/adt: add tests for issue 3533 by @mpvl in 7e82983
  • internal/core/adt: allow errors in inline structs by @mpvl in 62b21c8
  • internal/core/adt: add test case for selection problem by @mpvl in 9f46e1a
  • internal/core/adt: reimplement close for v3 by @mpvl in 02d5751
  • internal/core/adt: rename Closed to RecursivelyClosed by @mpvl in a6d8d34
  • interpreter/embed: do not require CUE_EXPERIMENT=embed by @rogpeppe in ea70704
  • internal/core/adt: fix logic error leading to panic by @mpvl in e58994d
  • tools/fix: merge calls to list.Concat by @cuematthew in 6167d7d
  • internal/core/adt: remove p1 error by @mpvl in 12ac20b
  • internal/core/adt: remove further evaluatingArcs logic by @mpvl in 8f42ad0
  • internal/core/adt: allow pending arcs to be updated by @mpvl in 9b07aba
  • internal/core/adt: evaluate nodes that are otherwise not evaluated by @mpvl in 5bf9ef4
  • internal/core/adt: get rid of use of evaluatingArcs status by @mpvl in 769017e
  • internal/core/adt: fix some references under projections by @mpvl in 6418113
  • internal/core/dep: fix differences by @mpvl in cc04ebe
  • internal/core/adt: disable possible assertion by @mpvl in 2fc301a
  • internal/core/adt: fix disjunction finalization by @mpvl in 62865d3
  • internal/core/adt: fix bug in notification by @mpvl in 1a30763
  • internal/core/adt: add indirection for closeContext by @mpvl in 0fa94ff
  • internal/core/adt: support bulk adding of conjuncts by @mpvl in b990eb7
  • internal/core/adt: more abstractions over Conjuncts by @mpvl in d21405c
  • internal/core/adt: better error positions by @mpvl in 6e0525b
  • internal/core/adt: introduce HasConjunct by @mpvl in 2bce38d
  • pkg/path: fix path issue by @mpvl in e9c005d
  • cue: resolve a few staticcheck warnings by @mvdan in 537f744
  • cue/interpreter: move test helpers to the right file by @mvdan in d9fda8c
  • cue/load: simplify registry example by @mvdan in 457a112
  • cue/load: fix @if attributes in command line-specified files by @rogpeppe in 4642d77
  • cmd/cue: add test case for issue 3250 by @rogpeppe in 0b6d0da
  • cue/cuecontext: cuecontext.New observes evalv3 experiment by default by @mpvl in be8ed35
  • cmd/cue/cmd: undo panic when multiple commands are run in one process by @mvdan in 860906a
  • cmd/cue/cmd: add a Go test covering the exposed API by @mvdan in 1f8fb57
  • internal/core/adt: fix hang on cyclic pattern constraints by @mpvl in b010875
  • internal/filetypes: default jsonschema strictFeatures to false by @rogpeppe in 3c40786
  • encoding/jsonschema: use allowedTypes in if/then/else constraints by @rogpeppe in 16986b2
  • encoding/jsonschema: add if/then/else test by @rogpeppe in 72023e6
  • encoding/jsonschema: disallow $schema at non-root for earlier versions by @rogpeppe in 2c6ed18
  • encoding/jsonschema: correct treatment of $ref by @rogpeppe in 4543183
  • encoding/jsonschema: simplify matchN expressions with only one possibility by @rogpeppe in 1508ef8
  • encoding/jsonschema: use latest schema version by default by @rogpeppe in 1a4b0d0
  • encoding/jsonschema: remove unused state fields by @rogpeppe in ded6fc3
  • internal/core/adt: less special handling for non-rooted by @mpvl in f5f947e
  • internal/core/adt: fix structural cycle error in list.Sum by @mpvl in 48b5a22
  • internal/core/adt: add RawFunc by @mpvl in cf2f66e
  • internal/core/adt: always allow definition in closed struct by @mpvl in 4e8e027
  • internal/core/adt: add tests for issue 3491 by @mpvl in 9ba55dc
  • cue: remove the hidden Value.Split method by @mvdan in 0dd7f69
  • cue: remove the hidden Value.Subsumes method by @mvdan in 80ddde3
  • cue: advance deprecation of Iterator methods by @mvdan in d170b1c
  • internal/core/adt: fix error type of MinFields for v3 by @mpvl in 44cceca
  • encoding/jsonschema: use CUE_UPDATE=force by @rogpeppe in ad21c10
  • encoding/jsonschema: use uint not number for min/maxLength by @rogpeppe in cff7484
  • encoding/jsonschema: always write external_teststats.txt by @rogpeppe in 66344b2
  • internal/core/adt: pass CloseInfo to validators by @mpvl in 369bc9b
  • internal/core/dep: distinghish inline structs by @mpvl in a50fa63
  • internal/core/adt: adapt handling of inline structs by @mpvl in 99407a4
  • all: annotate priority of bugs marked by TODO_V3 by @mpvl in 90b5c9d
  • internal/core/adt: more usage of Status by @mpvl in d581f90
  • internal/core/dep: dereference node in dynamic mode by @mpvl in 8399737
  • cue: open lists are still concrete by @rogpeppe in 1eb6216
  • internal/core/adt: closedness fix related to comprehension by @mpvl in cd2107a
  • internal/core/adt: hoist allows from injectClosed by @mpvl in 6916b5b
  • internal/core/adt: fix closedness for failing if by @mpvl in 89acced
  • encoding/openapi: add test cases for non-empty lists by @rogpeppe in 655236e
  • internal/core/debug: dereference non-rooted by @mpvl in 4ae206d
  • internal/core/adt: use depth counters for ancestor tracking by @mpvl in c558da0
  • internal/core/adt: fix cycle in patterns by @mpvl in 16df890
  • internal/core/adt: add tests for ring-shaped cycles by @mpvl in 695d6d3
  • internal/core/adt: derive status from shared value by @mpvl in f8c5520
  • internal/core/adt: distinguish point of cyclicity by @mpvl in af68c6c
  • internal/core/adt: more shallow evaluation of lists by @mpvl in 2d4a895
  • internal/core/adt: fix simplifcation of validators by @mpvl in 86fdd97
  • internal/core/adt: optimize slice by @mpvl in b51914f
  • internal/core/adt: add some defensive code by @mpvl in 4eaa7b2
  • internal/core/adt: add tests for more structure sharing by @mpvl in 29b466e
  • internal/core/export: add some testing infrastructure by @mpvl in 6e0f579
  • internal/core/export: document bug in export by @mpvl in 2eedbd1
  • internal/cuetdtest: add DevOnlyMatrix by @mpvl in b44f5e0
  • internal/core/export: remove exclusions of fixed bugs by @mpvl in a37223b
  • cue: derefernce more values by @mpvl in 1700400
  • encoding/protobuf: update txtpbfmt dependency by @TvdW in 4330d60
  • all: resolve a few more staticcheck warnings by @mvdan in 50ed297
  • internal/diff: drop last uses of cue.Value.Struct by @mvdan in 84646f6
  • internal/diff: drop cue.Value.Struct in diffStruct by @mvdan in 74c79f6
  • encoding/jsonschema: implement regex format by @rogpeppe in 95fd2e9
  • encoding/jsonschema: implement date-time format by @rogpeppe in c54ac60
  • encoding/jsonschema: implement URL-related formats by @rogpeppe in 44cdfe7
  • encoding/jsonschema: factor format checkers into their own file by @rogpeppe in 527594a
  • pkg/net: add URL and AbsURL by @rogpeppe in be87d05
  • internal/core/adt: set more precise types for validators by @mpvl in 37937f6
  • internal/core/adt: add tests for Issue 3474 by @mpvl in 575f1ed
  • cue: avoid repeated work in Value.MarshalJSON with lists by @mvdan in 8a6ed2c
  • internal/diff: clean up code a bit ahead of dropping deprecated APIs by @mvdan in 8009b56
  • internal/ci: bump Go and goreleaser for alpha.3 by @mvdan in 5ffd573
  • update dependencies before alpha.3 by @mvdan in 402aeda
  • internal/ci: cue fmt by @rogpeppe in bdab4b2
  • internal/ci: pass access token to releaser step by @rogpeppe in 20d6573
  • internal/ci: rename and clarify the e2e logins.json secret by @mvdan in 992127e
  • internal/cueconfig: note the difference between token expiry fields by @mvdan in 186763c
  • cmd/cue: truncate expiry timestamps to seconds by @mvdan in a3fb8e8
  • internal/ci: use githubactions schema from registry by @rogpeppe in 093a2c6
  • internal/core/adt: new cycle algorithm by @mpvl in 92330b4
  • internal/core/debug: report more structure sharing by @mpvl in a0138fb
  • internal/core/debug: add cycle detector by @mpvl in 06141e4
  • internal/core/adt: bail on empty node by @mpvl in 4140094
  • internal/core/adt: split updateCyclicStatus based on version by @mpvl in bf54346
  • cmd/cue: store token expiry timestamps in UTC in logins.json by @mvdan in 6b73188
  • cmd/cue: test storing access token expiry in login by @mvdan in 25e0884
  • cmd/cue: add more sanity checks for produced logins.json files by @mvdan in 791420a
  • encoding/json,encoding/yaml: remove long deprecated cue.Instance APIs by @mvdan in f0c77ed
  • cue/build,cue/load: remove deprecated fields by @mvdan in 02a694e
  • encoding/openapi: unexport OrderedMap by @mvdan in 9f2c2fe
  • encoding/openapi: remove OrderedMap.Set by @mvdan in 3fb46c3
  • encoding/openapi: marshal JSON via cue.Value.MarshalJSON by @mvdan in e7d9d47
  • encoding/openapi: remove most public API surfacing OrderedMap by @mvdan in 90c9c95
  • encoding/openapi: remove Config.All by @mvdan in b24335b
  • cue: reuse adt.OpContext in Value.structValOpts by @mvdan in 91b12ec
  • internal/core/export: swap sort.Slice APIs for slices.Sort by @mvdan in 0078d26
  • cue: reuse adt.OpContext in MarshalJSON recursion by @mvdan in 9c3e156
  • cue: clarify status of zero Path value by @rogpeppe in 32b169a
  • encoding/jsonschema: allow mapping URLs to values within a package by @rogpeppe in 5cc6175
  • encoding/jsonschema: clearer internals by @rogpeppe in 19eea7f
  • cue: only use internaljson.Marshal where necessary by @mvdan in da2e501
  • cue: use append-like funcs inside Value.MarshalJSON by @mvdan in fed4998
  • cue: recursively marshal JSON values directly by @mvdan in 3f1e72b
  • cue: use unwrapJSONError in the entrypoint API only by @mvdan in 01b0064
  • cue: marshal a Value as JSON null directly by @mvdan in 97f622b
  • internal/core/convert: do not roundtrip MarshalText to JSON by @mvdan in 7ba104c
  • cue: add large Value.MarshalJSON benchmark by @mvdan in b37ab01
  • encoding/openapi: drop use of cue.Runtime from tests by @mvdan in c8b32e9
  • encoding/openapi: drop support for Config.ReferenceFunc by @mvdan in e339345
  • cue: remove unneeded fields from goField by @mvdan in 1b45c99
  • internal/tdtest: use sync.OnceValues by @mvdan in 774e40e
  • all: remove a few unused parameters spotted by unparam by @mvdan in ffafd61
  • cmd/cue: fix cue help cmd mycmd ./mypkg by @mvdan in 222b689
  • cmd/cue: hide the --strict global flag by @mvdan in 842fa25
  • encoding/jsonschema: ignore empty fragment when comparing schema versions by @rogpeppe in 2221b7f
  • encoding/jsonschema: add tests for empty fragments in metaschema URIs by @rogpeppe in 1ea9b25
  • update golang.org/x dependencies by @mvdan in 7c32807
  • cmd/cue/cmd: use the new goproxytest.NewTestServer by @mvdan in 687464e
  • mod/modconfig: use oauth2.Token directly for the wire format by @mvdan in 7352390
  • pkg/tool/http: prevent TestTLS from being chatty by @mvdan in 5ffaf1a
  • cue/load: make imports work in "all package" mode by @rogpeppe in 43a1e12
  • cue/load: add test for imports in "all package" mode by @rogpeppe in deae2a0
  • internal/mod/modload: better error message for not-found module by @rogpeppe in 082fd40
  • cmd/cue/cmd: add test for cue mod get with non-existent module by @rogpeppe in f1b72f5
  • pkg/encoding/toml: add new builtin package for encoding/toml by @mvdan in 2b56c50
  • pkg: sort input packages in a consistent order when generating by @mvdan in 9583e29
  • internal/vcs: avoid using os.Environ in a test helper by @mvdan in 7ec0e5b
  • cmd/cue: help mod edit: fix copy/paste error by @jpluscplusm in bdd40af
  • internal/ci: go generate after go test by @mvdan in 818f8bf
  • encoding/jsonschema: do not let cue/load walk up to the git root by @mvdan in cad9ae4
  • pkg: generate register.go automatically as well by @mvdan in 3ade70e
  • pkg: drop packages.txt from gen.go by @mvdan in 1e19a97
  • cue/load: deduplicate underscore import of ./pkg by @mvdan in 6ba366c
  • pkg: drop cue/build and pkg/internal from gen.go by @mvdan in 11e06e1
  • encoding/jsonschema: allow impossible subschemas by @rogpeppe in e33439b
  • pkg: use more go/types logic in code generation by @mvdan in 2fceb5c
  • cue: remove testdata/gen.go by @mvdan in 93c1124
  • encoding/gocode: use many fewer go/packages.LoadMode bits by @mvdan in 99160fd
  • encoding/gocode: simplify testdata/gen.go by @mvdan in 80a862c
  • all: linkify more godoc references by @mvdan in 445082e
  • encoding/jsonschema: remove space in date-time format name by @rogpeppe in f7462ee
  • encoding/jsonschema: add test for date-time format by @rogpeppe in e90555f
  • internal/ci: ensure that GitHub and Gerrit agree on the list of tags by @mvdan in ffdf382
  • pkg/strconv: remove ParseComplex by @mvdan in 6280b9e
  • pkg: do not treat unknown Go types as adt.TopKind by @mvdan in 7a26789
  • encoding/jsonschema: detect Perl regexps by @rogpeppe in 67f9dfa
  • encoding/jsonschema: initial support for format keyword by @rogpeppe in 9000dc3
  • encoding/jsonschema: non-string regular expressions should error by @rogpeppe in f811ee7
  • encoding/jsonschema: show optional test stats separately by @rogpeppe in a227239
  • encoding/openapi: implement strict mode by @rogpeppe in 6f4cd7b
  • encoding/jsonschema: always allow x- keywords by @rogpeppe in 239b405
  • encoding/jsonschema: use StrictFeatures in external tests by @rogpeppe in bef55cb
  • internal/encoding: set bool tags when interpretation is Auto by @rogpeppe in af57269
  • cmd/cue: add test for issue 3446 by @rogpeppe in b43d5b9
  • internal/ci: add workflowDispatch step template by @jpluscplusm in dcfca1b
  • pkg: replace some string handling with go/types logic by @mvdan in 143be90
  • internal/ci: test cuelang.org when CUE tip updates by @jpluscplusm in a558a4b
  • internal: phase out DecorateError in favor of errors.Wrap by @mvdan in ef83860
  • internal: remove MaxDepth by @mvdan in 14e8875
  • internal: simplify GetPackageInfo into an *ast.Package getter by @mvdan in c9df291
  • internal: phase out PkgInfo.IsAnonymous by @mvdan in 44b4ab5
  • cmd/cue: use parser.PackageClauseOnly in 'get go' by @mvdan in d34eb57
  • internal/cuetxtar: error on txtar files with duplicate file entries by @mvdan in 74a06f8
  • internal/filetypes: default strictFeatures to true by @rogpeppe in 15fbf7f
  • encoding/toml: support decoding timestamps by @mvdan in 2f82fb4
  • encoding/jsonschema: implement if/then/else keywords by @rogpeppe in 7648cbd
  • internal/core/compile: add matchIf builtin by @rogpeppe in 276d940
  • encoding/jsonschema: fetch the test suite GitHub repo via a zip by @mvdan in 7a3260c
  • all: fix up more godocs to use links by @mvdan in 0aeef9f
  • encoding/jsonschema: allow whole floats for unsigned numbers by @rogpeppe in 3a11f99
  • encoding/jsonschema: implement minProperties by @rogpeppe in 8507a5a
  • cmd/cue: support different jsonschema strictness modes by @rogpeppe in c35f470
  • internal/filetypes: better checking of filetype-dependent tags by @rogpeppe in 6264e29
  • internal/filetypes: simplify by @rogpeppe in fcf3306
  • cmd/cue: add test for filetype attributes by @rogpeppe in 7ced6fd
  • encoding/jsonschema: split Strict mode by @rogpeppe in 3831017
  • internal/encoding: remove Decoder.ID method by @rogpeppe in cdf67fa
  • encoding/jsonsschema: use openAPI not vset(VersionOpenAPI) by @rogpeppe in 4ca4c84
  • internal/astinternal: use reflect.Value.IsNil consistently by @mvdan in 6341362
  • internal/filetypes: avoid struct-valued defaults by @rogpeppe in f4f38bf
  • internal/cmd/cue-ast: add "join" command by @mvdan in 62b3cfa
  • internal/cmd: repurpose cue-ast-print into subcommands by @mvdan in ae5dfea
  • doc: fix trybot badge in README by @myitcv in 641d9b7
  • internal/cueexperiment: mark YAMLV3Decoder as deprecated too by @mvdan in f514f64
  • cue: add a regression test for a structural cycle bug fixed in evalv3 by @mvdan in e29900a
  • internal/core/adt: limit error propagation to cross package by @mpvl in fbcadd9
  • internal/core/adt: use setBaseValue to set Vertex.BaseValue by @mpvl in abb6364
  • fix vet fmt mismatch errors by @rogpeppe in 3988f4f
  • internal/filetypes: rename top level "tags" field by @rogpeppe in 3413f77
  • internal/core/adt: add tests for validator dedupping by @mpvl in 2662ebe
  • internal/core/validate: fix validation of disjunctions for evalv3 by @mpvl in 2fb6f45
  • internal/ci: switch to '.yaml' workflow file extension by @myitcv in 2d329b5
  • internal/core/adt: ensure pattern is evaluated by @mpvl in e97c624
  • internal/core/adt: do not copy frozen flags by @mpvl in aeb3bf3
  • internal/core/adt: disable non-critical panic by @mpvl in 8ebddc1
  • internal/ci: set GOTOOLCHAIN=local as part of installGo by @myitcv in bb24c7c
  • encoding/jsonschema: add OpenAPI 3.0 version support by @rogpeppe in d7852d7
  • all: remove support for list arithmetic by @cuematthew in 46fb300
  • internal/astinternal: more compact representation of relative positions by @rogpeppe in 6f4983e
  • encoding/jsonschema: add keyword TODOs by @rogpeppe in 33fe828
  • encoding/jsonschema: implement "not" by @rogpeppe in e7175ba
  • internal/astinternal: simpler internal API by @rogpeppe in 32865bc
  • cmd/cue: remove mention of CUE_EXPERIMENT=modules from help by @rogpeppe in ecbcf34
  • internal/cueexperiment: prevent disabling modules experiment by @rogpeppe in a51a98f
  • pkg/tool/file: use 0o777 as the default Mkdir permissions by @mvdan in a7ccc0a
  • internal/envflag: support deprecated flags by @rogpeppe in 05b9b02
  • all: rely on umask when creating files and directories by @mvdan in 2da59f2
  • encoding/jsonschema: commit external test stats by @rogpeppe in d20e479
  • encoding/jsonschema: encode oneOf etc using matchN by @rogpeppe in bfce150
  • encoding/jsonschema: verify result is concrete in external tests by @rogpeppe in 2e19c1f
  • encoding/jsonschema: run external tests in matrix by @rogpeppe in e2685dd
  • encoding/jsonschema: prepare for matrix test runs by @rogpeppe in 9959a3e
  • encoding/jsonschema: add location information to test output by @rogpeppe in 1a2e26e
  • cmd/cue: support cue fix - to fix CUE via stdin and stdout by @mvdan in c0fdf75
  • all: remove mentions of cue-sh(/tools) by @myitcv in 67443fb
  • ast/astutil: deprecate Cursor.Import by @cuematthew in 691ee74
  • pkg/tool/exec: Run does not exececute shell commands by @mvdan in 1e65cee
  • tools/fix: avoid name-mangled imports by @cuematthew in 1440b9e
  • tools/fix: correct the ast walker so sub-expressions get fixed by @cuematthew in d0617b5
  • cmd/fix: allow fix to load all packages in a directory by @cuematthew in 5936450
  • internal/core/compile: various fixes to matchN by @mpvl in e505402
  • internal/core/adt: add tests for matchN by @mpvl in 30a8854
  • encoding/jsonschema: avoid test regressions by @rogpeppe in 9956f16
  • internal/core/adt: fix validators in embeddings by @mpvl in 3deadce
  • internal/core/adt: add tests to prepare for bug fix by @mpvl in 0ffb5d2
  • encoding/jsonschema: add external test suite by @rogpeppe in 484dd8e
  • internal/cuetdtest: move testing.T out of M by @rogpeppe in 3ae664e
  • cmd/cue: remove obsolete TODO about empty module paths by @mvdan in e48fb9d
  • cue: remove support for legacy protobuf attributes by @mvdan in 985855f
  • encoding/jsonschema: export Version by @rogpeppe in de41586
  • encoding/jsonschema: move txtar tests into subdirectory by @rogpeppe in df2c869
  • tools/fix: rewrite list addition and multiplication by @cuematthew in 3d36560
  • encoding/toml: decode syntax tree nodes with positions by @mvdan in b123f2b
  • encoding/toml: add debugprint txtar tests for the decoder by @mvdan in edc117e
  • internal/astinternal: print relative positions as well by @mvdan in 6e5ec5a
  • internal/astinternal: revise API with more options by @mvdan in ae3ad16
  • internal/core/adt: allow referencing required fields by @mpvl in 710b438
  • all: use a few more godoc links by @mvdan in a4ebf4d
  • internal/core/adt: add tests for referencing required fields by @mpvl in a525801
  • encoding/jsonschema: support minContains and maxContains keywords by @haoqixu in 4093ccf
  • cue: add a regression test for a default elimination bug fixed in evalv3 by @mvdan in dcfc2d4
  • cue: add regression test for a cycle error position bug fixed in evalv3 by @mvdan in 8908d06
  • pkg/list: re-test with CUE_UPDATE=1 by @mvdan in 7e29e3d
  • encoding/jsonschema: add docs about test file conventions by @rogpeppe in 5409884
  • encoding/jsonschema: decode contains as list.MatchN by @haoqixu in 3138301
  • internal/astinternal: don't panic on nil pointers in DebugPrint by @mvdan in 221cfaf
  • internal/astinternal: add DebugPrint cuetxtar tests by @mvdan in 094b9e9
  • internal/astinternal: add DebugPrint from cue-ast-print by @mvdan in 937093c
  • cmd/cue: add mod registry example to help text by @mvdan in 9f620c2
  • all: remove obsolete TODOs assigned to me by @mvdan in eeec3f5
  • cue/literal: use strings.Repeat directly by @mvdan in 0389e8a
  • internal/core/adt: fix bug that ignores field type by @mpvl in a3f1a0f
  • internal/core/adt: require nodes for indexing by @mpvl in 196dc98
  • internal/core/adt: expose v3 optional field bug by @mpvl in 4967eb4
  • pkg/uuid: use google/uuid.Validate in Valid by @mvdan in e525f29
  • pkg/uuid: add more valid and invalid test cases by @mvdan in a19cab1
  • internal/core/adt: switch on DebugDeps for TestEvalAlpha by @mpvl in 9aabfcb
  • pkg/list: add MatchN validator function by @haoqixu in 48431d8
  • all: resolve a few more staticcheck warnings by @mvdan in 2f19b1a
  • all: remove last unnecessary uses of cue.Runtime by @mvdan in 68f856f
  • all: make use of stringer in more places by @mvdan in a20e523
  • internal: adapt to testing.TB.Context in Go 1.24 by @mvdan in b5ac87c
  • internal/encoding: use encoding/yaml rather than pkg/encoding/yaml by @mvdan in 186b6e2
  • cmd/cue: add testscript to cover exporting CUE comments by @mvdan in d2ce0e3
  • internal/pkg: make Schema an alias for cue.Value by @mvdan in c8f5a21
  • cue/benchmarks: move benchmark code out of testdata by @cuematthew in d52859e
  • internal/core/adt: allow any CUE value in json/yaml.Validate by @NoamTD in 1b01c83
  • internal/cuetxtar: simplify ordering by @mpvl in 2a84338
  • internal/cuetxtar: fix ordering bug by @mpvl in eb3b539
  • encoding/jsonschema: support instance tests by @rogpeppe in bbe2f81
  • encoding/jsonschema: more consistent test data by @rogpeppe in cb1dc6b
  • internal/core/adt: fix COMP counter issue by @mpvl in 43d722b
  • internal/core/adt: decrement counter for defunct tasks by @mpvl in 6335c46
  • internal/core/adt: do not finalize let by @mpvl in 3965579
  • internal/cuetxtar: ensure ordering of files in txtar is consistent by @mpvl in 358b945
  • pkg/encoding/yaml: add more validation tests by @mpvl in f889101
  • internal/core/adt: allow non-concrete values in builtins by @mpvl in 8326e67
  • pkg: add some tests that pick defaults in builtins by @mpvl in 0a41a20
  • core/adt: identify duplicate errors when pairwise-combining by @cuematthew in 5a77ce1
  • evaluator: regression test for order independent eval fixed in evalv3 by @myitcv in 81d6f8b
  • internal/core/compile: add matchN builtin validator by @mpvl in 1c2b105
  • internal/core/adt: fix disjunctions in data mode by @mpvl in 769f37a
  • encoding/jsonschema: avoid unnecessary alias to root by @rogpeppe in ae3987d
  • cmd/cue: drop support for the deprecated short form of cue cmd by @mvdan in 4eb3d53
  • cmd/cue: refactor help texts and topics by @mvdan in 7e589e3
  • cmd/cue: skip the mod_registry testscript as it's flakey by @mvdan in 54ef570
  • cmd/cue-ast-print: allow reading stdin by @rogpeppe in b52cd92
  • encoding/jsonschema: support boolean-valued schemas by @rogpeppe in 616f91a
  • encoding/jsonschema: better version support by @rogpeppe in 67f508f
  • internal/ci: update goreleaser version by @mvdan in 98a17d4
  • all: remove two deprecated APIs by @mvdan in ea43f81
  • internal/third_party/yaml: delete the old YAML decoder by @mvdan in 4dbaf28
  • cmd/cue: prepare get go for GODEBUG=gotypesalias=1 by @mvdan in a9ce855
  • internal/cueversion: bump for v0.11 by @mvdan in 0b27120
  • internal/core/export: update via CUE_UPDATE=1 go test by @mvdan in 938c8de

Don't miss a new cue release

NewReleases is sending notifications on new releases.