A length bound on text names its unit: text has three lengths.
text_bound.zg
# A length bound on text names its unit (decided 2026-09-22): text has three lengths.fngreet[lent'name':str.utf8[min1,max10graphemes]]{std::print.useful["hi ",'name',newln];}MAIN{let'thai':str.utf8[min1,max10graphemes]="เกี่ยว";# 4 graphemes (เ|กี่|ย|ว), 6 points, 18 bytes: fitslet'ascii':str.utf8[min0,max5bytes]="hello";# 5 bytes: fitsgreet[lend'thai'];greet[lend'ascii'];letmut'line':str.utf8[min0,max20bytes]=str.empty;change'line'='line'++"twelve chars";# 12 bytes: fitsstd::print.useful[str.bytes[lend'line'],newln];let'short':=to.stored.str.utf8[min0,max3bytes][12345]otherwise"?";# into a bounded text: fails out_of_rangestd::print.useful['short',newln];}