github cue-lang/cue v0.18.0-rc.2

pre-release2 hours ago

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

Language

A CUE file which belongs to no module can now declare the language version it is written for with a @version attribute, placed ahead of any other file attribute and the package clause, so that a reproducer or a standalone file written for an older version runs as written without creating a module for it. The attribute is an error in a file of a module which declares a language version, as the module file decides the version of its files. cue fix adds the attribute when it enables an experiment in such a file, recording the version the file was migrated at.

@version(v0.17.0)

package p

⚠️ The functions experiment

The experiment now follows the revised proposal on function contracts: an implementation unified with a function type must accept every argument the type admits, callbacks are checked where they are passed, and two function literals with different bodies no longer compose when unified, undoing the change announced in v0.18.0-alpha.3. Some configurations which evaluated before are now rejected; the proposal lists them and how to fix them.

Evaluator

A reference unified with a definition or with a disjunction of definitions, as in deps: [...#Node] with #Node: #Task | #Group, is now shared with the value it refers to rather than evaluated again under every path, so that a dependency graph typed this way is evaluated once per node rather than exponentially in its depth, regardless of the order in which the fields are declared (#4512, #4513).

Exporting a struct holding many unifications of empty or single-field structs no longer takes memory exponential in their number.

The != and =~ bounds and the builtin validators of a field in an inline struct or a let which is read through a reference, such as by an interpolation, are now checked, where they were silently dropped. This surfaces conflicts which earlier releases accepted, such as a let inside a definition which sets an integer on a field declared as a float with a default (#4510).

cmd/cue

The new cue mod upgrade command moves a module to a new language version, rewriting every CUE file of the module for that version, including those under cue.mod, before recording the version in cue.mod/module.cue. Files are rewritten without loading them, so a package whose import cannot be resolved is converted all the same, and a file which cannot be converted stops the upgrade before anything is written unless --force is given. cue fix without package arguments now fixes every file of the module the same way, from any directory inside it, and the explicitopen rewrite fixes several cases where it closed a value which the original left open.

The new --language-version flag of the commands which read CUE outside a module, among them cue eval, cue export, cue vet, cue fmt, cue fix, cue import, and cue get go, selects the language version for files which belong to no module, including standard input. It is only a fallback: the files of a module which declares a language version keep that version, and a file's own @version attribute takes precedence. CUE generated by cue import, cue get go, and cue get crd targets the chosen version.

cue cmd now reports the errors within a command which declares no tasks, such as a comprehension or dynamic field which failed to declare them, alongside no tasks found (#3536). Its memory use no longer grows with the number of tasks which return a result, as tools/flow now releases each earlier configuration once the tasks depending on it have completed: the peak memory of a command running 40 such tasks drops from about 500MB to about 125MB (#4509).

LSP server

The language server now understands the function literals of the functions experiment. References in a function's body, parameter constraints, defaults, and result type resolve, so go-to-definition, find references, rename, and completion work inside a function literal, and a rename of a parameter covers every literal unified with the function. The label of a labeled argument resolves to the parameter it binds, through references, imports, and partial applications, and completion at a call offers the callee's labeled parameters. Hovering a parameter or a call label shows the parameter's constraint, and a position inside a function literal is no longer treated as part of the value of the field the literal belongs to.

Encodings

The YAML decoder no longer swallows the key following a sequence which ends with an empty entry and is not indented relative to its own key.

The JSON Schema decoder no longer keeps a repeated allOf conjunct twice when merging changes it, such as a disjunction holding a nested allOf. The syntax returned by encoding/jsonschema's Extract and ExtractCRDs and by encoding/protobuf's Extract now follows the style of cue/format.Simplify, with labels unquoted where possible, so that Go API users see the same CUE that cue import prints (#4117).

Go API

cue/load.Config.LanguageVersion sets the fallback language version for input which belongs to no module, as the --language-version flag does, and the new cue/build.Instance.TargetLanguageVersion reports the version which cue.Value.Syntax targets for an instance.

Programs embedding CUE could be far larger than necessary, as the text/template builtin and cue/stats looked up methods by name, which stops the Go linker from discarding unused exported methods anywhere in the binary; one reported binary was 66MiB rather than 25MiB (#4514). cue/stats no longer does so, and building with the cuenotemplate build tag leaves the text/template package out of the standard library so that the linker discards unused methods again, at the cost of CUE code importing text/template failing.

Full list of changes since v0.18.0-rc.1
  • internal/cuetest, internal/tdtest: remove helpers unused for a year by @mvdan in 7f4677e89f48d05b27037791bf692bd66ef2147e
  • internal/mod, mod/modcache, internal/robustio: remove dead code by @mvdan in ea80d962c698a134e5f8c07da69ace64262ac35c
  • internal/encoding, encoding/jsonschema: remove code unused for a year by @mvdan in 36d7c489211854ab82f5666407b373df85800c2f
  • cue/build: remove Instance.parent, unused since 2018 by @mvdan in 96a74fcf41c1c6023fa407432f6f26506d54f3ad
  • internal/core, internal/pkg: remove code unused for over a year by @mvdan in 3522302b1fe47e089420011b7b916f2b2158e543
  • internal/core/adt: remove code unused for over a year by @mvdan in 1e995c0fb17dfe9ebbd741ed452402487d78876e
  • cue/load: join relative package arguments as OS paths by @mvdan in 6f0cb0b2a5e6d7d02bd5b6d50067cc3184f1075c
  • cue/load: test relative package arguments with a Windows directory by @mvdan in f120b87ce2d83b9ca403a70063846b037a941bdb
  • internal/mod/modload: keep the not-tidy error with a module replace by @mvdan in 753c83a108c24510ed888805cd6b9b3d0923ac83
  • cmd/cue: test mod tidy --check on an untidy module with a replace by @mvdan in 80c573f15e5505b916ad71af2dde9b201946da6c
  • cmd/cue: test the login device flow in-process under synctest by @mvdan in c7b8aa50cf23180e0751b28366b188230f35334a
  • internal/cueconfig: send token requests without client credentials by @mvdan in 606fb98e44a6ce16fcebf4d3c966dcf612ffaf67
  • cmd/cue: test that login polls once per interval by @mvdan in 129cdd1dd6a7acce108be96b6de6d208d9ded3b6
  • cmd/cue: make the get go Sizeof test independent of GOARCH by @mvdan in a173f1e172f6fc8e8f5b13f6ccc7e7af35564f7e
  • cmd/cue: purge function bodies and literals before parsing for get go by @mvdan in 91b3b42e2ada61feaa96405d187106db8e1722c4
  • all: drop leftovers from fixed upstream bugs by @mvdan in 47fe4588662a46ba5c9460bf8eb412bf5373aedd
  • mod/modregistrytest: add Www-Authenticate via ociserver's WriteError by @mvdan in 955ceddb8ce17d3eff7dc50d6ecac03e16a6b53b
  • update goccy/go-yaml and go-internal to their latest master by @mvdan in dd012c04cb116d8c8e4225ac05d87d15e7a91d02
  • encoding/yaml: test an empty entry ending an unindented sequence by @mvdan in 86e457de93e41adc1ac6618701e871c1ff682aa2
  • internal/golangorgx/gopls/lsprpc: stop dialing when the context is done by @mvdan in 03fa39c17ac2a022a223deab15448707ec4f1221
  • internal/golangorgx/gopls/lsprpc: test dialing with a done context by @mvdan in 9048c82042e35b8cc62a5c32c0a88f00b6c5cfb6
  • internal/golangorgx/gopls/lsprpc: dial auto-started daemons with backoff by @mvdan in e2bf2cd8e3f9366708d1558af32d8f9cbd6278f3
  • internal/lsp/cache: size Windows path buffers in UTF-16 units by @mvdan in 18296837d51e1c6e2d77d12360a27b364fa9e2f7
  • cue/parser: keep the experiments error from ParseExpr by @mvdan in 9f52fc0dc61ac93312d03ffd44f3f04c5811d0d4
  • cmd/cue: skip a cue struct tag which is not a valid expression by @mvdan in 55b1aa733ccd47f15d253bb40cd9c2897933bc8b
  • cmd/cue: test a cue struct tag which is not a valid expression by @mvdan in c1ad13bb1c4550eadb78d788551b3139d24d6586
  • cue/parser: return a partial result from ParseExpr on error by @mvdan in f675ba8aba1afe5df0011eac0b7156f8236381e3
  • cue/parser: add a test for the result of ParseExpr on error by @mvdan in 45f83f5a12c0beda629e5b297f45e5b5a4afe731
  • cue/parser: recover from an empty index expression by @mvdan in eceb2036bec7fcea79f02a0075e344892a8cfd0d
  • cue/parser: add tests for an empty index expression by @mvdan in 4521c99ab5dac3ba06e93c5c47284c04c8c54494
  • cue/parser: mark a line comment at the end of a file by @mvdan in 8c3f924baf616e3364a64227984ea23d0cd0a065
  • cue/parser: add a test for a line comment at the end of a file by @mvdan in e5fdcfc6158a6c3bdb74bde3e5c454a3a89aed03
  • cue/literal: quote DEL as \x7f in bytes literals by @mvdan in faee5c01bdff9f21bbbe51399d6c13721dfcda00
  • cue/literal: do not panic on a surrogate escape in an unterminated string by @mvdan in 835795d0263fb8ef754bc174b996673eb9c582e5
  • cue/literal: add a test for a lone surrogate escape in Unquote by @mvdan in d21508c247a0a688a23989ddd9e4ba4250fdedde
  • cue/scanner: give a specific error for curly quotation marks by @mvdan in 859b2873bf4b13fb364a410b0f349b3b7c823086
  • cue/scanner: report a specific error for UTF-16 input by @mvdan in 6a70da3add33170e166142807f34a7a1180f196c
  • cue/scanner: add a test for scanning UTF-16 input by @mvdan in fc0431bb8e03af90b3b6eac5b529243e255ddf73
  • cue/scanner: reset all state in Init by @mvdan in d2153de1218e7e2a664e16616be899b24443e73c
  • cue/scanner: add a test for Init not resetting all state by @mvdan in 37f1922a78d86bda96320a25432f1c2e0e861d47
  • pkg/tool/file: treat a path below a file as missing in RemoveAll by @mvdan in a658cc931b7a094c86770105706def9ec20758d4
  • pkg/tool/file: test RemoveAll on a path below a file by @mvdan in f48e2faabe0f6d48790512e3e2cd9e2e9f793eab
  • internal/core/compile: share the predeclared numeric ranges by @mvdan in b9aa65ece6dadec81864df0cd678bd228da80590
  • internal/core/adt: remove TestScheduler and the code only it reached by @mvdan in 0709bc1c7c44933b88c9f7055ee61f568f11dc8d
  • cue/testdata: test unifying separately tightened builtins by @mvdan in 49f1ddc8f0e5b67b0003b90cec5724753595d19e
  • cue/testdata: test a deduplicated disjunct keeping its replaced IDs by @mvdan in f52780793f8b3d66a58f322351ea2d6442ffeede
  • internal/core/adt: test the empty node externally by @mvdan in 1d2215692c79df18fe1ec639dbf7836e5bf0a9fb
  • internal/core/adt: check the counter indices of conditions at compile time by @mvdan in 9adfd5812ebb2752d34476d1f018870232cfd7f4
  • internal/core/adt: move tests on the exported API to adt_test by @mvdan in 995234781a2e4876c57a69e0e9a08ad9c940fb38
  • specs/aec4f: record the second to fourth review rounds by @mpvl in 6a5e51b1bc221c7f2a0642dc2dc6a3e033ab0467
  • internal/core/adt: compare function types nested in parameters by @mpvl in b1a2a677b6c95c797720c937065eff42d53f2864
  • specs/aec4f: process review comments and record the posting-ready proposal by @mpvl in 4f603007ba3b294d789d34759daa3e2b4ed86d1a
  • internal/core/adt: report errors arising in a call at the calling field by @mpvl in d68b47c89012fc44cc6836645d45291ca834ca3b
  • specs/aec4f: disallow composing distinct implementations (D-005) by @mpvl in 9909ffaa3daf43ca64e72bf7e96bf0fc14b36938
  • internal/core/adt: do not unify distinct function implementations by @mpvl in d234ba1415f3423670f3dfd6c21dedab5ba18af5
  • specs/aec4f: record increment 2 and reconcile the catalog by @mpvl in ba3b39026072d914e936739b4c1b8f00c13753fd
  • internal/core/adt: remove ExternalFunc by @mpvl in 967949176f41321e68901922fb41031bb3a4aa33
  • ee/cue/gofunc: register Go functions as builtins with declared signatures by @mpvl in cf63707c2095b58be454d458cb4253ec6b255506
  • cue: decode integers into uintptr by @mpvl in 25b5e42d498a87590b7cbbe124814adedf6f81cc
  • internal/core/adt: check callback entitlement and declare builtin results by @mpvl in b74d3b868197c3a63c99a8e1dc17027fb02c50d7
  • specs/aec4f: record the first increment and reconcile the catalog by @mpvl in 018bee1b458f0cd633d8ff1fc629f462752fe240
  • internal/core/adt: check declared compatibility of function implementations by @mpvl in 44378c99dbc565762d0d6d56ac0cba65f1a1dffe
  • specs/aec4f/specify: specify function contracts by @mpvl in 0a64f4a2e8897ae638b423bd1809ec0e87872b18
  • aec4f: docs: tag function-contracts-callers-providers-and-bridges by @mpvl in 96ecabad2ce81f2445025e3771b77fd8d4237a29
  • aec4f: docs: route to specify by @mpvl in 9cb4f95a1c698b887af27db68cf630e711021d49
  • aec4f: docs: declare function-contracts-callers-providers-and-bridges by @mpvl in ca5525d65cf297c3b1c6212a60e2f7ff9035c6b8
  • internal/core/toposort: keep the frontier between batches free of duplicates by @mvdan in f4f95c1989a3e9398048b936dc33a76d334d0810
  • internal/core/toposort: test sorting fields across empty unifications by @mvdan in d14052bd621ee5e8ccd685c284da724a3a4451a4
  • internal/core/toposort: record export stats in the txtar tests by @mvdan in 998da548b6ba68257afd0ee773fc7c94c24395d8
  • cue/stats: count the edges requested when sorting fields by @mvdan in 50036734127e7782cce5b895b42c4e26ab361107
  • cue: count the contexts which export a value in the stats totals by @mvdan in 5bd2aad9738be91c435eb9cc489420169f95b3be
  • cmd/cue: test the stats which cue def reports by @mvdan in 35b46efc6e0e9aab012232819b4a2d8c3b83f0d3
  • encoding/jsonschema: merge a conjunct before checking for duplicates by @mvdan in fc6c9f4920eea8e8a68e7f0153a77b4bb887a9f5
  • encoding/jsonschema: test a repeated conjunct holding a nested allOf by @mvdan in 32f9bc8433c99017c0ae98c0029b14534aab9bea
  • encoding/jsonschema: move the struct builder to an internal package by @mvdan in 9ee77f27a86c23927083dabf6df29da25b737f29
  • encoding/jsonschema: cover allOf merging and version sets via txtar by @mvdan in 977626fecda5939c74eb76a0e8148a4da786e271
  • internal/core/adt: finalize a shared forward reference before a disjunction by @mvdan in 2c65d6f9690e54e6334d450a9c88aeac7e0f46f3
  • internal/core/adt: stop evaluating a disjunct's arcs once one fails by @mvdan in 1de060ce551b11ab23d47c8da9639b7d7fa06566
  • internal/core/adt: keep sharing through a disjunction of types by @mvdan in c065604817bc6ea2acb79f3fefdebe099a36607e
  • internal/core/adt: keep sharing a reference unified with its definition by @mvdan in f5c2707ed7278508d635b6adb9209017db2bdee4
  • cue/testdata: test the cost of a dependency graph typed by a definition by @mvdan in a40f6be105b9e2328da634eb3b436e8ab055dd21
  • internal/cuetxtar: add the shareID:todo form of the sharing assertion by @mvdan in 34828dce6568573e3c6a2eea6fb6bebbb4d5e89e
  • cue: see through structure sharing in Value.Err and Value.Len by @mvdan in 74c32e7bbe3f6028c200972b27e9c51eb9d116e8
  • cue,cmd/cue: test Err and Len through structure sharing by @mvdan in 35b3ef58e38116b75aa13a05932d4479f270f4ff
  • internal/core/adt: print rune by name by @mvdan in eafc399b0e6156e5335b1cd28045ac515a7292f1
  • internal/core/export: qualify shadowed predeclared numeric types by @mvdan in 0019bfc755a0623b725b32ddf56baa9189bcf8bd
  • internal/core/export: test the printing of predeclared numeric types by @mvdan in 7d2b95a7df130f4148cede2fa4e313a181b65b19
  • cmd/cue/cmd: build the registryconfig help text with fewer allocations by @mvdan in fcb66bf6dd7cd1a94bfb716ea42611d3d7a2bd2c
  • all: build costly package-level values on first use by @mvdan in c90f88a1926c180b53276d8e6ae115334c8099fc
  • all: build package-level paths without parsing them by @mvdan in f3d9171bf1b158dcd0931f59e70add0809d4a60c
  • internal/core/export: balance inDefinition when skipping struct fields by @mvdan in 9fb680361a9f05c089bfdc074fee4def508e6e77
  • cue: test exporting a closed definition after a skipped definition by @mvdan in 2d8b7d306e4689b229f4acf0ffa7f45eca6db91e
  • internal/core/adt: fix two discarded return values by @mvdan in bdcf2bf4b2212adbb44cd4d8b3a745d69b0fed3e
  • internal/golangorgx/gopls: fold pathutil into protocol by @mvdan in 1d144d4ab08371be5d3b984cffb87d2e952848f8
  • internal/core/adt: complete nodes read through a let once the referrer is known by @mvdan in d8302e9d2c82bd77e2d07eabbad9468912612600
  • internal/mod/modpkgload: stat a path which fails to read as a directory by @mvdan in 9cc46dcb4df285725d3b4dd2312f20d8cf88b8a5
  • internal/mod/modpkgload: test a submodule file on a non-OS file system by @mvdan in 1d97f85dc7be26c89d7a00e5a10c417513e23b32
  • internal/mod/modpkgload: treat ENOTDIR as no directory by @mvdan in aba4303a07b9e3b33f84db4b06b9b2b9cbca1814
  • internal/mod/modpkgload: test a file at the path of a submodule by @mvdan in 92a339dee93c2a3b3aedf1fb401a37c3cea24923
  • specs/aeeg6: specify language version selection for CUE outside modules by @mpvl in 6044db6c53529b596891106e7403d72d49619c1c
  • internal/lsp: report @Version attributes in module files by @mpvl in 22097e2bd916c09840098df76bc88f95c1d4b21b
  • tools/fix: record @Version when adding an experiment outside a module by @mpvl in 9d04fa39eaa87e740b6961bb3069392449ffea4a
  • all: add the @Version file attribute for CUE outside a module by @mpvl in 9afc1f251d43596cd0fb6b624e7f007500cdbe65
  • cmd/cue: add --language-version for CUE outside a module by @mpvl in 27bd1e192cfbe47eb721a916257cf2ba02402570
  • cue/load: add Config.LanguageVersion for CUE outside a module by @mpvl in 1e968822e1645259a034269bbd1d5fefb56639ba
  • pkg: add a cuenotemplate tag so the linker can discard unused methods by @mvdan in 80c756a8be8c311aab467affbe691dd7eac67caf
  • cue/cuecontext: test dead code elimination in an embedding program by @mvdan in 0f4cbc0f8cc5fe113ae6f9638eb6a24025d0b73c
  • internal/core/adt: write the debug graph page without html/template by @mvdan in 334aac778251b77713717e9869f8f62e84ce90a9
  • cue/stats: write Counts.String without text/template by @mvdan in 1e1eb5d93bbfef059e69b448f1734170e91636ad
  • specs/adn4b: reconcile the catalog by @cuematthew in ac0831ee9d4ba15a76c9abb2e36f3a92f28dbc9a
  • internal/lsp/hover: show parameters and stop at function literals by @cuematthew in 2e8403ae752ba08203adad0564356de4dd958683
  • unstable/lsp/eval: resolve labeled arguments to parameters by @cuematthew in d1beecf1c752200d3619bda1b7e7b4a0000eed7d
  • unstable/lsp/eval: replace exactly the path element a completion is for by @cuematthew in 5b058cb32d2e770c30745a3d4b755ddda8e01533
  • unstable/lsp/eval: record completion ranges for path elements by @cuematthew in ddaf4e18c9ae5eeff766d1bed90c1fec5e8974cb
  • unstable/lsp/eval, internal/lsp: resolve names inside function literals by @cuematthew in 5b0e6ef8dc2dad1acdc325ea25c6dbd7f7317ca5
  • cue/ast: extend a function literal missing its ")" to its last parameter by @cuematthew in 6d7d3b13b7ecac228b682cd770d6befbca0268df
  • cue/ast: record where a function literal missing its ")" ends by @cuematthew in 3384ec71956a78a1601c58a505c7664981f909d1
  • unstable/lsp/eval, internal/lsp: record behavior inside function literals by @cuematthew in 07245e8416345a2140f233e6cb93cbcfaa40a6bd
  • specs/adn4b: specify and plan functions in the LSP by @cuematthew in e5e36841b1e2b53d262d94c2317e45839363d34b
  • adn4b: docs: declare functions-in-the-lsp by @mpvl in 0c58f7e9f892bd203d706aa9c5ad8ddf7539dc61
  • internal/core/adt: share forward references into closed structs by @mvdan in 362a8693e00e5954ff84bb37e664c96a8b064ffd
  • internal/core/adt: test sharing of a forward reference into a closed struct by @mvdan in 93ef534ea826baffd34dffdd955424ce8d1cf9fa
  • internal/tdtest: find table entries without go/packages by @mvdan in 5b5b7e1d99cb8f0d2b0ff5eff3c504501a73c0f0
  • internal/vcs: ignore the system git config in TestEnv by @mvdan in ae63210a79060eaff160b4de23a2889cdb913760
  • pkg/list: turn the Range Go tests into a txtar case by @mvdan in 4ffffc959d9df71a02cdda46811c1d31ef9d541d
  • encoding/jsonschema: build each external test instance once by @mvdan in 0de23ee87ef6cfe02e4dd2c92dc011a9579c8349
  • internal/cuetxtar: propagate field coverage with a worklist by @mvdan in f9d6da6fc2e640e806e7ff2091788ac5ac5014e1
  • internal/cuetxtar: permute compiled declarations instead of the AST by @mvdan in ea3415bff5894e9884e5fd0181509db91084fb4c
  • cmd/cue/cmd: run the test binary as cue in TestInterrupt by @mvdan in 27c7bbc9882e016639dde0ea562644da42cf9ba9
  • cmd/cue/cmd: locate pprof once in the pprof testscript by @mvdan in 67f1c0380223c9d1299b7103f3ca6169f8c833d6
  • cmd/cue/cmd: let testscript Go builds hit the build cache by @mvdan in 9d37f0083b831e8fc3e15cf90759d427bd864cde
  • internal/vcs: disable git's auto maintenance in TestEnv by @mvdan in 2243ce3d4abdd82d777d04cf84ff5cbf294737bf
  • cue/parser: test nesting depth limits just past them by @mvdan in 08ee361571ee9662de7f453e05585618e11f6603
  • pkg/encoding/openapi: turn TestMarshalSchemaError into a txtar case by @mvdan in 62051ab12b9ce7d697c41284561f961fcb8dffb0
  • cmd/cue/cmd/integration: move TestFormatFile into the workspace package by @mvdan in bd490f312f979406da9a3e5fce05e61f681fb0ef
  • internal/cuetest: move CUE_FORMAT_TXTAR into its only user by @mvdan in de54659dd7f49226c9e29e8ca8810fa89cdc6185
  • internal/ci: drop the CUE_UPDATE=1 cross-check run by @mvdan in 022703ee498c0b9392db1958c445b488a03870f6
  • internal/cuetest: unexport the update-only and drop the diff-only predicate by @mvdan in 49c73b6d5446c446a5687cf1e52b025e501b1904
  • private/cmd/projector: update scripts via cuetest.UpdateScripts by @mvdan in fa9847c9fe83357e483c28d3483fb06d624e7327
  • internal/cuetest: route every golden update through shared sinks by @mvdan in ac26e242b040776832afa72bdfe2e2cff76deaf2
  • pkg/math: take the MultipleOf remainder in the exact context by @mvdan in 8021f66af8d86ecb63ea88132fac1bcfb1e0b246
  • update apd to its latest master by @mvdan in ef2ee05d0bd7d6928051af7148424ba963ce7d6c
  • internal/astinternal: append to the debug output without fmt by @mvdan in fb0586cc264a5950149a8de3cbde091bbe8b24d3
  • cue/load: stop adding overlay parent directories once one exists by @mvdan in 7fb23c46b65a31265a1814b9c7a3839f54c87e80
  • cmd/cue/cmd, pkg/tool/http: compile two regular expressions lazily by @mvdan in f091c80769e10abeb2a2f3565bdf709a4b89978b
  • mod/module: check the major version with no regular expression by @mvdan in cf1137140d2a9550d84573023157fc2b806dad8e
  • internal/ci/checks: read the commit with a single git command by @mvdan in 74b5a977c62f3c2e6cd879114d3a8b36c4b32199
  • internal/golangorgx/tools/jsonrpc2: write each framed message at once by @mvdan in ea60d50d218196e1cff28b8883a753570cfa09b8
  • mod/modconfig: move the User-Agent transport out of internal/cueversion by @mvdan in f52adf827c01c60415fcd3f2e60bad791b5ad674
  • private/internal/projection: configure fixture git globally in tests by @mvdan in b886644613f049e9de17e18eb55043fe5c21f5d6
  • private/internal/projection: list HEAD's blobs once in the agreement test by @mvdan in 59d8aaf3eab6728861094b808a6cadfe0f89a4a4
  • private/internal/projection: run the build gate only in its own tests by @mvdan in b0196266bbfc4872241d5dc590b756814ae783ba
  • update apd to its latest master by @mvdan in ceb2e988c72a0b690c751966dc8b5eb935cc3d82
  • pkg/tool/file: remove dangling symlinks in RemoveAll by @mvdan in 54f782b9a4db2f1c4d7b8c05c70543590a4b2354
  • pkg/tool/file: test RemoveAll on a dangling symlink by @mvdan in 982a9e5936a174b1dfdaef736a4f875541c1a693
  • cue/inject/wasm: stop reading the deprecated ast.Func.Args field by @mvdan in b63e6d9042bb64e274c5d10b00e0d38aef238eae
  • internal/mod/modpkgload: use path.Join for an io/fs symlink stat by @mvdan in 0238d9c4ff50233ee8bf63dcdf43a9408515805a
  • cue/load: drop or fix two checks which tested the wrong variable by @mvdan in 3d33679a34e70d8e935b7ac85879da8f8c7e07e1
  • internal: fix two unhelpful panic messages by @mvdan in 9c06f3e4ee85b983cf350f57d715c3ad43ed6980
  • internal/core/compile: resolve "__" range aliases in LookupRange by @mvdan in 79fdc6716f8b222d07726798e1be404c40132d0f
  • all: generate String methods which missed constants with stringer by @mvdan in a01fa9b846eb89b0b3b7435d7af2f573776812b8
  • internal/tdtest: load dependencies from export data by @mvdan in 46f7b72379e412139e80b0a4f30e764efc4c080a
  • internal/tdtest: report mismatches whose field cannot be named by @mvdan in accc3013d8775e6049c28afc2897428259b898bc
  • internal/tdtest: test mismatches whose field cannot be named by @mvdan in 8edd49b21afcd6d47e4fb22587b09e77a6523b7b
  • internal/tdtest: fix updating integer fields and rows without keys by @mvdan in 5d8e794f6f45c6f8976c350741efcf940975afb4
  • internal/tdtest: test updating fields by @mvdan in d9e96ae6de291d1ec3ccbe4df16c9ec23b602258
  • internal/cuetxtar: read the body of the CUETXTAR_GC_URI response by @mvdan in f00bd766f53363c3ca9694b9dbbca13e0c958983
  • internal/core/adt: check validators of a scalar once its conjuncts are in by @mvdan in ea10fd2e0d4dcb7614a212f0c3760888a9f2215f
  • cue/testdata/eval: test validators of a used scalar of an inline struct or let by @mvdan in 44ec0a9c3614e5acff4f07dfb93ca1978018ec17
  • encoding/jsonschema: fix the errors for dependency values of wrong kinds by @mvdan in cab7b3488ce086d1b350cb9007d7be59c0a63885
  • encoding/jsonschema: test dependency keywords given the wrong kinds by @mvdan in 7f651a9d443257c3444e4b48120fdffcd7a76e52
  • encoding/jsonschema: keep test skips found by description when vendoring by @mvdan in b04bb8e9b8e418bfa5e17ea25655889f212e9e6f
  • internal/encoding: do not mutate the caller's Config in NewDecoder by @mvdan in 4294380d0394e12a323c7a5f05c532e552959dd9
  • internal/encoding: test that NewDecoder keeps the caller's Config by @mvdan in 3b540fda55e4512d90a926c432e2aabff00ec50d
  • internal/encoding/yaml: return errors for invalid literals by @mvdan in b2564e723a34a960a86a93c43c0181ebf7223f97
  • internal/encoding/yaml: test encoding invalid number and string literals by @mvdan in d84cf685ae5ced30d3cb17d6a65f7dfd1e76af1c
  • internal/core/adt: wrap a failed dynamic field key's error once by @mvdan in 6482e2e6317dc44cd853f4e994e81240c593b4c8
  • cmd/cue: report a command's errors when it has no tasks by @mvdan in b90b20fa38d6ee5c5ffec62bc56573773675d19c
  • cmd/cue: test cue cmd with comprehensions which fail to declare tasks by @mvdan in d775dda743fd705fdf9cac5ed91647949e302bdd
  • CONTRIBUTING.md: define an agreed approach and ask for reproducers by @mvdan in 474e2a8d32feda57aa2b576ff8605665f6a05366
  • tools/fix: widen closings below an open literal or a definition path by @mvdan in 002243307b89950bd8229f2b1ca5653b6468b14c
  • tools/fix: add tests for closings below an open literal or a definition path by @mvdan in 4270366aabf83ee09be2ee18b6774618298ba237
  • update x/tools to its latest master and staticcheck to v0.8.2 by @mvdan in e6c8a6a9f3b31dc40f71b03984bd611addc0fc23
  • update go-digest to its latest master by @mvdan in 563ad1f9ddc9ac669b5b6e35e3d42d1814edebde
  • CLAUDE.md: note the Go version that lifts the go mod tidy workaround by @mvdan in 9a0a6daa26c3d3d3d6417e78410c1e7f5b5b4de3
  • cmd/cue/cmd: note the Go version that lifts the TestVersion skip by @mvdan in 49f8ca1894c92192077fa84418d46ac881cb1398
  • cmd/cue/cmd: update pflag to drop the IsBoolFlag workaround by @mvdan in cfbaed97c1f42e7d877e50c29ead0a5f5201b43f
  • internal/ci/checks: mark test helpers with t.Helper by @mvdan in 300c321a4cefb0e223714606a2b688acd977a337
  • all: mark test helpers with t.Helper by @mvdan in 2a8e3907c643b70456798de6a985990f322387ac
  • all: use t.Context in tests by @mvdan in e5e362a614b83ec57437bbcfd70cc5a10efd01d8
  • all: use b.Loop in benchmarks by @mvdan in 5a76449a2a32a36e8eab02eb8f354e15a136cd92
  • cmd/cue/cmd/integration/workspace: make test failures clearer by @mvdan in 8dde008a68484e6b90c50bd367164c61c1fd2f02
  • private/encoding/cue/wire: describe tests in the present tense by @mvdan in a22c95d00ce4ea8d870b33c341fb4d9edf4e3759
  • internal/core/export,pkg/internal/builtintest: do not modify export.All by @mvdan in 236029e8bb4a59f1b7623d40e7145ef5f6b8c99d
  • cue/errors,unstable/encodingregistry: describe tests in the present tense by @mvdan in 013574a7c19beac49f10770a218a0ef5a8b5270c
  • encoding/protobuf: produce syntax in the style of format.Simplify by @mvdan in 9fadf8c6abf1a6bfb341558e796342efcf84317f
  • encoding/jsonschema: produce syntax in the style of format.Simplify by @mvdan in 55b172ea1f2eb5056612af88d15e432c0671b609
  • cue/format: keep [string]: _ where string may be shadowed by @mvdan in 7e46530c22aac3562241d1e7a6df8e6f63506972
  • cue/format: test the Ellipsis rewrite with string bound locally by @mvdan in c7ec4c4e6bb9b08b9a7b2afafa6de69a69ccfd1e
  • cue/format: keep import and package quoted at the top level of a file by @mvdan in d8d6238e589d247abe305e058a4791d567a05d69
  • cue/format: test unquoting import and package labels at the top level by @mvdan in 6276ac10d0b34e3001fb98b29196c96c1bd03e53
  • cue: fix checks in Decode, Default, and LookupPath tests by @mvdan in 437fecb039bfb1e66db13c5299314bbca7a6ef10
  • cue/parser: remove empty table tests by @mvdan in c8d122a0777164b7a41781c641ab2f3dde3e11cc
  • tools/flow: fix a goroutine leak and a panic in tests by @mvdan in 3c129a07b56c8fc29c0a47fadd89606182b27364
  • cmd/cue/cmd: fail TestInterrupt when the command ignores SIGINT by @mvdan in e2203001fdca8a79b12610bc6301002482195be0
  • private/internal/projection: make the classify/lint agreement cases real by @mvdan in 7bf00f91e80944f7f2d1ef659c062c025b04a532
  • internal/diff: require memoization to fire in TestMemoization by @mvdan in c336b8c8c179b8c1045e3e1039c2bac80e739cfc
  • internal/task: make two test checks able to fail by @mvdan in 06e92f862a32a94e042461ca7aab67b700521a05
  • internal/core/adt: remove the unused DebugDeps flag by @mvdan in c2bada3e8a8dde0bd2cda8e4abfc2e93323f47c3
  • specs/ad41p/tasks: record the completed validation phase by @myitcv in 7377da04d616ec55d4de355cdd7009aafe9ba7a8
  • CLAUDE.md: point at the classify query for debugging the lint by @myitcv in d1c9dd607585c274ae1d55a87d4b3ecf941fddc6
  • private/cmd/projector: exit 2 on usage errors by @myitcv in a8e27fef1bf6c1c0baeb2d2f0fc10bea7669b5bc
  • private/cmd/projector: validate directory expansion and JSON output by @myitcv in 94c0a48895b3744e246face2776faf97fc15bd46
  • private: report classification provenance in classify answers by @myitcv in 3fac991fdd9eb744150f0cbdee4607381b244d7e
  • private/cmd/projector: complete the classify output goldens by @myitcv in c012d2687334ba9237c1f326551db334cabad13e
  • specs/ad41p/tasks: reconcile the task list with the landed code by @myitcv in 0c117992ff8602610f08f05dab7aae8a78455281
  • tools/flow: release earlier configurations as tasks complete by @mvdan in 81d8907c7ff6f75f7be5b6e3ec1788ff5acdb303
  • tools/flow: test that earlier configurations are released by @mvdan in 214cf0bfc7b297b91141f1587eff9e8a3fe27e25
  • encoding/protobuf/...: stop tests after a reported error by @mvdan in e04606132f82f56de2d82bc4391a0461ef36cfb7
  • encoding/json: stop a pointer test from panicking on a nil error by @mvdan in 2c4740fe85e8484189a390873ccfbf50007b6059
  • cmd/cue/cmd/integration/workspace: fix a log pattern that never matched by @mvdan in 3d49447dc690eaae12eea6356a75a6a3998e8c6a
  • internal/lsp/rangeset: compare TestAdd against literal ranges by @mvdan in 45d613a4e64880a28bacbaaff20eacfc78ceae9d
  • unstable/lsp/eval: assert non-nil values before using them by @mvdan in 2c9c0aca2d40dc116b70cf68c3729ee19f0e323e
  • internal/lsp/fscache: drop a token.File check which cannot fail by @mvdan in 3112331c7989a77ac57cedb6b8c217281ff22776
  • cue/inject/wasm: return errors from the testscript setup by @mvdan in 9858c77ab3178d305055441d2cddd139724f24f0
  • private/cmd/projector: support updating the script test goldens by @mvdan in 4a3bbf8301af7f9d23f5b3b81f8bc13a8612657b
  • internal/httplog: close test servers by @mvdan in 5f80f2e73a75a92529347fef2d1d1672c51b4e6a
  • internal/anyunique: remove a test which only exercises maphash by @mvdan in ee2d80f1df3c5e57b2a035a966b17ae92b0c3186
  • internal/cuetdtest: forbid tests from enabling table updates by @mvdan in 0a1439ad3a0baf7bd0c96fc2e4ad030973b47aeb
  • mod/modconfig: close test servers and avoid a hang on failure by @mvdan in b374fdb3fe5f35f12d78be09108878fc66f6e67c
  • mod/modcache: do not call FailNow from fetch goroutines by @mvdan in 0c7e2b6ab187ee549c0ad78d786e2a91256ea954
  • unstable/...: fix copy-paste mistakes in tests by @mvdan in a3ef0ca24131d8644f3505a31ee7d5930269f96a
  • internal/cuetxtar: remove a duplicate test case by @mvdan in ac2c33ffc46e14ac4dacf2b899245831e74a5790
  • mod/modfile: fix copy-paste mistakes in tests by @mvdan in c7062d5574e3dba3773aa3b1a810f3d086a9ce94
  • encoding/...: fix copy-paste mistakes in tests by @mvdan in 38a50570e993fcb2a6b3c1295a1365ccb100a3dd
  • pkg/...: fix copy-paste mistakes in tests by @mvdan in 41d546eb936c900fc27f836c270610d892b843ce
  • internal/_e2e: fix copy-paste mistakes in tests by @mvdan in ecf133f55b572208a551bdb4119540147465e9c9
  • cmd/cue: fix copy-paste mistakes in tests by @mvdan in 9748136263a883b57487aaf9048e159bdffabd94
  • internal/core/...: fix copy-paste mistakes in tests by @mvdan in e4dc43a0c54300681b48ad518e0038780d12a1f2
  • cue/...: fix copy-paste mistakes in tests by @mvdan in 52eea819420611fbf7a870493ff51510738c5cd3
  • .claude/skills/projection: use the bot accounts for two pushes only by @mvdan in 3eca855b8ba5d00a04ba6f2bd0d821effc68a855
  • internal/task: do not keep a task's value in its runner by @mvdan in 2722e9a8bcb94ee01e2392b63548050c044d4aec
  • internal/task: test that a chain of tasks releases earlier configurations by @mvdan in 4c0bbb5d83dc15c0aba4c27ecce08d09c5f4a1ba
  • internal/core/adt: clear the buffers of recycled nodeContexts by @mvdan in 65c4ef483ef703fb280ff5c7ce3a0b5014ba8406
  • internal/core/adt: test that an OpContext releases earlier evaluations by @mvdan in 77402f1c25ef4852436318b061ca47014723afd8
  • tools/fix: add the missing out/errors.txt sections by @mvdan in 475efc3545ae9a43e082ac5d4edce8a27ffe8e73
  • ae052: record the implementation, the reviews and the corpus runs by @mpvl in d1a71a11190f7dd6a7e87f2f1dd69b5bd7aaa51f
  • cmd/cue: unhide cue mod upgrade by @mpvl in 4ce395cda0ad5d6103e35726689bb46025144549
  • tools/fix: leave a definition's aliased body unwrapped by @mpvl in aa9c4d5bfeb615d7aaa3509a43220fc6b96bcdc2
  • cmd/cue: upgrade and fix every file of the module, loading nothing by @mpvl in f6f3ef50cf59fca3f0465c15ec7ba40f5bd4d17f
  • internal/mod/modimports: let AllModuleFiles take options by @mpvl in d6710f2b4bc5dd78610872fbfe4e264ca47b4d5a
  • tools/fix,cue/ast/astutil: report every file that fails, not just the first by @mpvl in 4d25b08a77062f41f81705778a131b68157ec4f4
  • ae052: specify and plan cue mod upgrade for real modules by @mpvl in c4cba5976ef004fc3e671c204c450988d8ad8122
  • cue/load: keep every package a wildcard matches by @mpvl in 6ae2acc4b0fc6c853f92c8649be0b1c95bf0c7a0
  • cue/load: test that ./... keeps the packages it matches by @mpvl in d7bf40bf10512a4a3e25d113f497ed5784b5495b
  • internal/core/convert: keep every digit of a big float by @mvdan in a18d4b99cc6f5c247cbfe4c7f14888956b47eb22
  • internal/core/convert: test converting precise big floats by @mvdan in f5c5ea7efa8d462e7598056311f55ba052ed414b
  • cue/literal: keep the leading zero of a signed number by @mvdan in e80490bbb550387e6cbf1b26e48fb2f2e53b76b9
  • cue/literal: test parsing zeros with a sign or multiplier by @mvdan in 06e3b9ec0a94760f5e0b1512178c9b2c5f27b9fb
  • internal/pkg: report marshaling errors without a CUE error by @mvdan in 7624017bd70c195d81636496b10f3e955ae52335
  • tools/fix: maintain the out/errors.txt section of the fix archives again by @mvdan in 504e5c52fae084fcaad21916c5a8f7ee873f2808
  • all: enable staticcheck's U1000 check by @mvdan in dc6ac58dc4acb0657f617bfba611d450ccfba683
  • pkg/encoding/openapi: replace deprecated openapi.Gen by @mvdan in e8ab5ba9a84025b08cc977cbb071cc7e00df48c6
  • cue/parser: remove the no-op safePos by @mvdan in b486e8962d00828fbfc8d3ce3ce5dda79fbc92e4
  • cmd/cue/cmd: replace deprecated cobra SetOutput in tests by @mvdan in f0600474c1cd5e770b716b0d495574ce0ff17ecb
  • all: mark deliberate uses of deprecated APIs by @mvdan in ba4b73df6c3397f7264a6f4a9f0b1d912534de20
  • internal/value: do not allocate in Context for a cue.Value by @mvdan in c1c0261bf1bb5fab13927ec2d127d8d5ca537b4a
  • all: use internal/value.Context over the deprecated Value.Context by @mvdan in d78f2c13e404f2f017552c677e03785c0988f1e9
  • cmd/cue/cmd/integration/workspace: test two modules as folders by @mvdan in 859b5242192341ccf4f3f2ed47551f2d21dd7876
  • internal/cuetxtar: remove unused position formatting hook by @mvdan in 1f1d787c2cff3fac4eb1aeb303742e3d5178a60b
  • encoding/jsonschema: remove unused code by @mvdan in 4b921499396f5789e96ae59ef87bf42d12616297
  • internal/core,tools/trim: remove unused code by @mvdan in 540a5601f47c7cdc4596b47e38aae874832a2107
  • .claude/skills/projection: push as the project's bot accounts by @mvdan in 151162c2675b6acc222f81c92179e98d75e32a2a
  • private/internal/projection: stop creating release tags by @mvdan in d79bfd482738922115b32e238f8da385a812b68e
  • specs/acqav: tag releases by hand rather than from declarations by @mvdan in aaf4e15c813462166410fe22b843d709eb7bad7b

Don't miss a new cue release

NewReleases is sending notifications on new releases.