Skip to content

Entity Runtime 0.27.0

Choose a tag to compare

@b10x-bot b10x-bot released this 06 Oct 16:42
· 144 commits to main since this release
4bf7351

Added

  • A service/1 rule may read the length of a declared string field, argument or nested property as <path>.count, counted in Unicode scalar values with no normalization (é composed is 1, e plus a combining accent is 2), in every position where an array's or a map's count is read. A path into a json field, a union payload, an undeclared member or a quantifier element still resolves to nothing, so recorded decisions replay unchanged, and a stored value under a declared string that is not a text has no length. Registration refuses count on any other scalar kind, a segment past a length, and a length read through a quantifier element or used as a projection key, each naming its path; every definition an earlier release registered still registers, and kernel/1 is unchanged.
  • A service/1 string field, argument or nested property may declare alphabet: "<characters>". A value is valid only when every Unicode scalar value in it is one of those characters; the empty text always is. There is no normalization and no case folding, so a composed é is refused by an alphabet holding e and a combining accent. A value outside its alphabet is a validation error at its path naming the first offending character, its code point and its position, alongside the value's other errors, and a default outside it is refused at registration. Registration refuses alphabet on any other kind, empty, repeating a character, or in a kernel/1 definition, each naming its path. Generated OpenAPI and AsyncAPI schemas carry it as x-alphabet. A definition without an alphabet keeps its bytes. An alphabet on an operation's declared response field is admitted but not yet enforced: responses are not checked against their declared schema today, for max_length either.