Skip to content

v0.6.17

@robertvansteen robertvansteen tagged this 30 Oct 12:50
* Let types narrow to literals of identity-bearing object values

A type whose values carry identity implements HasValueIdentity: two of
its values are the same exactly when their identity keys are equal.
IdentityLiteralType is a singleton of such a type, and its shape relates
like a scalar literal: it fits wherever its base fits, two literals with
equal keys are one shape, and unequal literals share no values.

An equality rule declared through Operator::infix() (=, ==, ===, and the
negations != and !==) whose two slots are one identity-bearing type now
reports a dead operation when its operand types share no value, with
core Equality's messages. Comparing a union of bands to a band outside
it can never hold. Rules over other types, and non-equality rules, keep
checking admissibility only.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Give the test job room for mutation testing

The suite and mutation run already took 3.5 to 4.8 minutes on 0.x, so
any change that adds mutants crossed the 5-minute job limit and was
cancelled mid-run.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Assets 2
Loading