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

pre-releaseone hour ago

Evaluator

Fix two regressions introduced in earlier v0.18 pre-releases: a hang when selecting through optional fields of an inline struct, as in {x: y?: z?: int}.x.y.z (#4561), and __reclose structs written by cue fix which could stay open depending on evaluation order.

Fix a hang when a comprehension ranges over a field which is part of a structural cycle; the cycle is now reported as an error.

cmd/cue

Fix a panic in cue def when an aliased field refers to itself from within a quoted label of the same name, and avoid new names clashing with an import which cue def adds.

Modules

Fetching modules through a registry proxy which compresses its responses or omits Content-Length now works.

LSP server

The language server no longer fails to load a package whose directory holds a symbolic link to a directory, a broken link, or an unreadable file, and no longer blocks on a FIFO (#4491).

Fix a regression introduced in v0.17.0 where finding definitions and references failed through an import of a package from a transitive module dependency (#4553).

Go API

Fix a data race in cue.Iterator.Next and cue.Value.LookupPath on a value shared between goroutines, as well as spurious cycle errors and a panic in cue.Value.MarshalJSON when a for clause ranges over a field sharing a definition.

Fix a panic in cue.Value.Unify on a field of a definition which other fields share (#4549).

cue.Value.Subsume no longer overflows the stack when comparing recursive definitions such as #A: [...#A], and with cue.Final it now accepts data lists such as [] against [...string] under the openlists experiment (#4545).

Fix regressions introduced in earlier v0.18 pre-releases: in cue/format, an explicit indent width of zero indented with spaces, and an unsupported node type gave empty output rather than an error; and subsumption failed between open lists of different lengths.

cue/parser no longer takes quadratic or worse time on some pathological inputs, such as deeply nested parentheses, calls, or function signatures, long runs of invalid bytes, and many comment groups.

Don't miss a new cue release

NewReleases is sending notifications on new releases.