Implementation limitations
Read each limitation in its reference page.
- Current implementation limitation
- Non-const identifiers accepted in defaults
- Variadic declaration placement is not checked
- Repeated parameter names are not yet rejected by SELF
- SELF accepts a variadic default initializer
- Bare lambda parameters remain accepted by SELF
- SELF retains named arguments and required parameters after defaults
- SELF omits the application host when no factory is called
- Host writes have no structured failure conversion
- Recursive display limit
- SELF skips a bare-CR boundary
- SELF accepts the retired block-comment spelling
- SELF consumes bare CR inside a line comment
- SELF accepts uppercase numeric spellings
- SELF accepts physical CR inside single-line strings
- SELF preserves physical CR in multiline text
- SELF misses indentation checks after physical CR
- SELF retains indentation on blank source lines
- SELF still accepts the removed p tag
- SELF still exposes the removed Path members
- SELF rejects ordinary Duration literals
- SELF still accepts semicolon separators
- Combining-name continuation in SELF
- Default-ignorable letter exclusion in SELF
- Source NFC validation and diagnostic in SELF
- Duration operations await ordinary value support
- Runtime initialization diagnostic assertions
- Local let redeclarations bypass the duplicate-name check
- Cyclic and forward aliases can retain unresolved placeholders
- The checker still joins the discarded then type
- Repeated let annotations reach the checker
- Grouping hides an admitted constant receiver call
- Current SELF uses a different entry initialization diagnostic
- Public 5.21.3 shares collection storage
- Match-case arrow consumed as a lambda
- Multiple rest elements in generated SELF output
- An else-less if yields its then value at run time
- SELF still accepts a deferred call without a block
- SELF still accepts unary plus
- SELF still accepts record field shorthand
- SELF still accepts a return without an arm block
- SELF still accepts an omitted rest pattern
- Record patterns in let stop the SELF runtime
- SELF still selects for behavior from expression position
- SELF has no graphemes member
- SELF still accepts pipeline and composition syntax
- SELF still reinterprets bare enum patterns
- SELF does not reject unreachable match cases
- SELF still accepts undelimited control operands
- SELF does not yet parse delimited range patterns
- SELF does not call nullary constructor values
- SELF checks discarded if let branch values against the unit result
- SELF retains the selected if let branch value
- Open-type exhaustiveness is not checked by SELF 5.21.3
- Computed map-key collision in the installed run path
- Default values bypass the declared field check
- SELF omits the repeated enum variant check
- Boolean literal kind misses static duplicate detection
- Contextual refinement can erase incompatible siblings
- Plain comprehension pattern names bypass duplicate checking
- Record context can retarget a same-named foreign declaration
- Generic conformance awaits implementation
- Structural updates still accept repeated explicit fields
- Explicit protocol receiver binders
- Imported manual conformance in SELF
- SELF rejects enum types in direct union payloads
- SELF does not parse or register newtype derivation
- SELF drops component context in collection construction
- SELF reserves prelude-spelled enum variants and dispatches their patterns by spelling
- SELF does not resolve enum constructor candidates across union members
- Protocol function signatures and call plans
- Ordinary function bodies in protocol implementations
- Protocol-owner implementations for existing types
- Normalized generic and imported conformance overlap
- SELF does not publish and resolve user protocol bindings across modules
- SELF leaves protocols outside the shared module binding table
- SELF has no manual JSON conversion methods
- SELF exposes the old JSONValue.decode receiver member
- SELF inspects nested representations instead of dispatching their conformance
- SELF requires an acyclic JSON schema tree
- SELF rejects Map and Set equality capabilities
- SELF derives Order from a smaller domain and declaration order
- SELF excludes float and Result from JSON conversion
- SELF rejects the refutable comprehension during checking
- Completed groups can bypass an expired deadline
- SELF checking retains outer control targets inside arms
- Private immutable values in record defaults
- SELF does not check every resolved public type
- SELF rejects a private alias before expanding its public type
- Current SELF rejects free statements in imported files
- Current SELF rejects modules with no exports
- Current SELF skips the entry readiness pass
- Current SELF accepts redundant import aliases
- SELF requires literal timeout syntax
- SELF still rejects empty groups and empty structural type syntax
- SELF rejects exported destructuring before ordinary pattern checks
- Imported collection values share storage in 5.21.3
- Imported bindings can be assigned through in 5.21.3
- Result error inference does not yet require TPZ5022
- Derived Show stops on a record without fields
- SELF still diagnoses an unterminated block comment
- The public release does not emit TPZ0007
- Open matches still reach runtime in the current compiler
- Host input failure production is pending
- Host close failure production is pending
- Host output failure production is pending
- Alias-cycle rejection is not enforced
- Final variadic position is not enforced
- Extern ABI admission omits TPZ5031
- Comprehension mismatch uses the general diagnostic
- The public release does not emit TPZ5712
- SELF accepts a covered match case
- SELF multiple-rest emission differs from the established refusal
- Public 5.21.3 aborts on deep lambda recursion
- Type checking without a mode flag in the current CLI
- Named metadata commands and long options in the current CLI
- Separate option values in the current CLI
- One occurrence of each option in the current CLI
- One registry materialization command in the current CLI
- One JSON format selector in the current CLI
- Canonical JSON for compiler status in the current CLI
- Canonical JSON for diagnostic explanation in the current CLI
- Canonical JSON for benchmark report in the current CLI
- Canonical JSON for embedded component report in the current CLI
- Dependency declarations use tables in the current CLI
- The current CLI treats a missing command as help
- Legacy Path constructors and normalization remain available
- Type-specific iteration helpers remain exported
- Named CSV rows still overwrite duplicate headers
- Byte and JSON observations still require method calls
- Legacy collection observation calls remain accepted
- SELF still exposes scaledPoints
- Constructor overflow retains the intrinsic source location
- The verification alias remains exported
- SELF still exposes scalar typesetting distances
- SELF still declares KoreanCluster
- SELF still exports the integer millipoint function
- Empty last lines skip the short-line penalty
- Cost overflow retains an internal source location
- SELF still accepts Map.getOr
- Collection emptiness methods remain available
- Byte sequence emptiness still depends on a method-shaped length
- SELF still accepts Set.contains
- The null predicate remains available
- The standard record still stores a float multiplier
- Letter capacity still floors a floating point product
- SELF has no graphemes member
- The current parser accepts extra integer spellings
- Date construction currently accepts year zero
- ISO parsing currently accepts year zero
- Day arithmetic currently reaches year zero
- Bytes.slice still clamps invalid bounds
- Hex decoding still accepts uppercase digits
- Public 5.21.3 shares buffer storage between aliases
- Public 5.21.3 writes through buffer aliases
- DEFLATE decoding rejects valid block forms
- Gzip decoding requires a fixed header
- Gzip decoding rejects Huffman blocks
- Zstandard decoding accepts raw blocks with a fixed frame form
- URL normalization retains default ports and dot segments
- The URL parser accepts decimal ports above 65535
- URL parsing rejects whitespace before preprocessing
- URL parsing accepts forbidden domain characters
- URL parsing rejects supported authority forms
- URL components retain unencoded Unicode text
- Empty query separators create an empty-name entry
- Malformed query escapes are rejected during URL parsing
- The pattern parser lacks counted and lazy repetition
- The pattern parser rejects flags and extended escapes
- Regex character shorthands use ASCII classes
- The alternate named capture spelling remains accepted
- A numeric backreference is interpreted as a literal
- A group choice can prevent a valid complete match
- Iteration emits an empty match at the end of a nonempty match
- A fixed step budget faults on a valid longer search
- Match offsets count Unicode scalars instead of UTF-8 bytes
- The capture array omits the complete match
- Replacement strings are inserted literally
- Transformations include the adjacent empty match
- The released paragraph declarations precede the typed contract
- Released classification inputs retain scalar distances and value variants
- Released classification inputs retain scalar distances and value variants
- Released classification inputs retain scalar distances and value variants
- Released classification inputs retain scalar distances and value variants
- Released classification inputs retain scalar distances and value variants
- Released classification inputs retain scalar distances and value variants
- The public paragraph records still use scalar distances
- The paragraph measurer rejects an empty item array
- A negative drop cap inset bypasses current policy validation
- Paragraph examples await typed measurements and constructor calls
- Measured widths still lack extent validation
- Paragraph examples await typed measurements and constructor calls
- FixedPoint still ignores nonsoft penalty widths
- Penalty widths still lack range validation
- Paragraph examples await typed measurements and constructor calls
- Released justification records use scalar distances and value variants
- The released final line threshold is evaluated on nonfinal lines
- The nonfinal minimum score can use a negative deficit
- The current justification width omits selected insertions
- Integral decimal and exponent spellings still project to int
- JSON collection observations still require calls
- Some JSON errors point after the offending input
- The public writer still rejects float types
- The public compiler still treats JSON as a derive marker
- The public TOML reader does not implement several TOML 1.0 forms
- The public reader admits malformed separators and reopened tables
- The public TOML error omits its column
- The public TOML writer emits a scalar root
- The public TOML value retains the float token
- The public converter accepts an out of range integer as a float
- The public conversion error lacks a child path
- The public toJson member has no Result wrapper
- The public writer omits the final LF and the empty field quote
- The public named writer returns text without validating duplicate columns
- Joined child text is validated after concatenation
- Root parents and empty suffixes are lost
- Extension replacement changes dotfile names and accepts leading dots
- Standard input is replayed from a cached payload
- Opening checks existence without acquiring a regular file handle
- File operations reopen and replace paths without a cursor
- Host failures can omit the public operation and path
- The comparison example reaches an unavailable nullary constructor
- Option assertion examples encounter the nullary constructor gap
- The current multiplication path checks scale before normalization
- The current checker treats rounding modes as noncallable values
- The current division path rejects a representable zero quotient
- The current checker treats rounding modes as noncallable values
- The public host has the earlier Lispex API
- The earlier artifact decoder remains exported
- The public host has the earlier Lispex API
- The public host has the earlier Lispex API
- The public host has the earlier Lispex API
- The public host has the earlier Lispex API
- The public host has the earlier Lispex API
- The public host has the earlier Lispex API
- The public host has the earlier Lispex API
- The public host has the earlier Lispex API
- The public host has the earlier Lispex API
- The public host has the earlier Lispex API
- The public host has the earlier Lispex API
- The public host has the earlier Lispex API
- Storage cleanup does not retain every live owner
- Deferred errors can leave a successful process result
- LSP can accept an incomplete header at end of input