Strings And Bytes

Warning

This is the current planned CLEAR stdlib design. Full stdlib implementation and stabilization are not planned until v0.3. Treat these pages as design direction, not as a compatibility promise.

Status: planned, self-host required.

String is UTF-8 text. Byte buffers are byte data. The stdlib should keep that distinction visible even when both are backed by []u8.

Planned String API

APIStatusNotes
lengthintrinsic todayExact string semantics still need naming clarity.
bytesintrinsic todayByte length.
codepointCountintrinsic todayUTF-8 codepoint count.
byteAtintrinsic todayByte-level access.
charAtintrinsic todayCodepoint/text access.
substrintrinsic todaySlice/copy behavior depends on ownership.
split, splitLines, joinself-host requiredCompiler text work.
trim, startsWith?, endsWith?, contains?, indexOfintrinsic todaySearch/predicate helpers.
replace, downcase, upcaseintrinsic todayInitial versions are byte/ASCII oriented.
StringBuilderplannedRepeated concatenation without repeated copies.
format / interpolationplannedExplicit allocation and formatting rules.
tokens = source.splitLines()
    |> MAP { _.trim() }
    |> REJECT { _.empty?() };

Decisions

Source: docs/stdlib/strings-and-bytes.md