Skip to content

Releases: cue-lang/cue

v0.11.0-alpha.5

06 Nov 16:51
Compare
Choose a tag to compare
v0.11.0-alpha.5 Pre-release
Pre-release

This release introduces a new toposort evaluator experiment, fixes multiple bugs with the embed experiment, and includes more JSON Schema improvements.

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

Evaluator

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.

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

CL 1203264 fixes a bug where CUE_EXPERIMENT=embed would work when outside of a CUE module, which should not work as it can lead to security risks.

CL 1203267 fixes a bug where CUE_EXPERIMENT=embed would not work with attributes attached to quoted field names.

CL 1203528 fixes a bug where CUE_EXPERIMENT=embed would not work with the cue cmd subcommand at all.

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.

cmd/go

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

Encodings

JSON Schema spec compatibility is improved further by fixing a number of bugs and adding missing features.

Full list of changes since v0.11.0-alpha.4

v0.11.0-alpha.4

25 Oct 08:17
Compare
Choose a tag to compare
v0.11.0-alpha.4 Pre-release
Pre-release

This release fixes dozens of bugs in the old and new evaluators and includes more JSON Shema improvements.

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

Evaluator

Over a dozen closedness and cycle detection bugs have been fixed in CUE_EXPERIMENT=evalv3, including a few which caused panics or endless evaluation.

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

CL 1202903 fixes embed.New so that it works without needing to set CUE_EXPERIMENT=embed as well.

CLs 1202120 and 1202211 fix a number of issues where validators like matchN or struct.MinFields would give incorrect results.

Go API

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

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

Encodings

JSON Schema spec compatibility is improved further by fixing a number of bugs and adding missing features.

Builtins

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

Full list of changes since v0.11.0-alpha.3
  • 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...
Read more

v0.10.1

22 Oct 14:04
Compare
Choose a tag to compare

This release includes fixes for two bugs which were uncovered and resolved in the last few weeks.

cmd/cue

CL 1202646 fixes a panic for users of the cmd/cue/cmd Go API.

CL 1202738 fixes a bug when using @if attributes in files specified directly as command line arguments.

v0.11.0-alpha.3

02 Oct 11:28
Compare
Choose a tag to compare
v0.11.0-alpha.3 Pre-release
Pre-release

This release adds a new cycle algorithm to the new evaluator, removes some long-deprecated Go APIs, and includes multiple improvements to the existing encodings.

Evaluator

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.

Go API

CLs 1201768, 1201933, 1201934, 1201936, and 120193 remove encoding/openapi Go APIs 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.

Encodings

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.

Full list of changes since v0.11.0-alpha.2
  • 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

v0.11.0-alpha.2

24 Sep 15:36
Compare
Choose a tag to compare
v0.11.0-alpha.2 Pre-release
Pre-release

This release includes a new matchIf built-in validator, many more improvements to JSON Schema and TOML support, as well as some fixes.

Evaluator

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.

Modules

CL 1201493 gives a better error message when a module is not found.

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

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.

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 1200932 turns on JSON Schema's new StrictFeatures option on by default, a saner default as we know which features we have not yet implemented and so the schema cannot be interpreted correctly.

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 1200888 adds support for decoding TOML dates and times.

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 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.

cmd/cue

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.

v0.11.0-alpha.1

05 Sep 16:34
Compare
Choose a tag to compare
v0.11.0-alpha.1 Pre-release
Pre-release

This release includes a new matchN built-in validator, many fixes for the new evaluator, and a significant amount of work on JSON Schema.

Evaluator

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

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 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 1199684 teaches the evaluator to allow non-concrete values to be passed as parameters to certain builtin functions such as yaml.Validate.

CL 1199723 deduplicates errors when pairwise-combining them, as the duplication could result in large memory usage.

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.

Go API

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 builtin. 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.

CL 1199938 teaches the TOML decoder to produce CUE nodes with positions, allowing errors to include positions within TOML files.

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.

Builtins

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 1199634 drops support for the deprecated short form of cue cmd; users of cue foo should now call cue cmd foo.

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.

Full list of changes since v0.10.0
  • 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...
Read more

v0.10.0

15 Aug 08:47
Compare
Choose a tag to compare

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
Read more

v0.10.0-rc.1

07 Aug 14:51
Compare
Choose a tag to compare
v0.10.0-rc.1 Pre-release
Pre-release

This release candidate includes fixes to the evaluator and various encodings.

Evaluator

CLs 1198736 and 1198860 fix two panics uncovered in the new evaluator, enabled via CUE_EXPERIMENT=evalv3.

Encodings

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 1198831 teaches the JSON Schema encoding to decode required properties as CUE required fields.

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 1199025 teaches the TOML decoder to include positions in error values.

CL 1198819 fixes the decoding of TOML keys with underscore prefixes.

Full list of changes since v0.10.0-alpha.3
  • 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

v0.10.0-alpha.3

01 Aug 08:52
Compare
Choose a tag to compare
v0.10.0-alpha.3 Pre-release
Pre-release

This release includes fixes to the evaluator and APIs as well as initial support for the TOML encoding.

Evaluator

CL 1198356 fixes a panic in the new evaluator relating to the new mechanism for tracking closedness information.

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.

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.

Builtins

CL 1198636 tweaks the existing path.Match and tool/file.Glob builtins 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 *.

Go API

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 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.

Full list of changes since v0.10.0-alpha.2
  • 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

v0.10.0-alpha.2

24 Jul 11:52
Compare
Choose a tag to compare
v0.10.0-alpha.2 Pre-release
Pre-release

This release includes many fixes and enhancements, particularly for modules. It also starts requiring Go 1.22 or later, as Go 1.23.0 will be released very soon.

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.

Go API

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

Full list of changes since v0.10.0-alpha.1
  • 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