Skip to content

release: dsc 0.8.1 - #107

Merged
samifouad merged 1 commit into
mainfrom
release/0.8.1
Sep 10, 2026
Merged

release: dsc 0.8.1#107
samifouad merged 1 commit into
mainfrom
release/0.8.1

Conversation

@samifouad

Copy link
Copy Markdown
Member

Version bump only — 9 commits since v0.8.0.

Two additions, both unblocking downstream work

Generic receiver methods (#101, merged as #105). A receiver method can now be declared on a generic type, with the parameter bound by the receiver:

fn (s Signal<T>) get() T
fn (s mut Signal<T>) set(next: T) void

Before this, Signal<T> could hold a value and expose a field but could not have methods — true of the data, false of the interface. This is what deka#771 needs to port ui/* out of hand-written JavaScript.

Bounds are inherited from the struct declaration, so struct Holder<T: Named> plus fn (x Holder<T>) still sees the bound; declaring parameters on both the receiver and the method is now an error rather than silently ambiguous.

bytes member catalog (#92, merged as #106). bytes gets .length, and only .length. RFD 15 lists nine operations but never commits to member-access versus free-function shape, and that call belongs to deka#756 — so this adds what was unambiguous and provably missing, and leaves slice/concat alone rather than shipping language surface ahead of its design.

This one shrinks a ratchet

deka's expected-failures.txt carries unsafe-textencoder-encode and unsafe-uint8array-literal against dsc#92, with the removal condition recorded in the file. Once deka bumps its scripts/dsc-version past this release, those two lines must come out — the runner treats a listed fixture that starts passing as a hard error. The fix has to prove it shipped.

Gate

cargo test --workspace — 34 suites, 0 failures

(First run failed on node is required to execute emitted JavaScript/usr/local/bin is not on the non-interactive PATH. Environmental, not a product failure, and it was hiding in the tests that execute emitted JS, which are the most valuable ones here.)

After merge

Tag v0.8.1 from main, verify by reading --version off the downloaded artifact, then bump deka's dsc pin.

-(version): 0.8.0 -> 0.8.1, every workspace crate in lockstep.

Two additions, both unblocking work downstream:

Generic receiver methods (#101/#105). A receiver method can now be declared on
a generic type, with the parameter bound by the receiver:
fn (s Signal<T>) get() T. Before this, Signal<T> could hold a value and expose
a field but could not have methods -- true of the data, false of the interface.
This is what deka#771 needs to port ui/* out of hand-written JavaScript.

bytes member catalog (#92/#106). bytes gets .length, and only .length. RFD 15
lists nine operations but never commits to member-access versus free-function
shape, and that call belongs to deka#756 -- so this adds what was unambiguous
and provably missing, and leaves slice/concat alone rather than shipping
language surface ahead of its design.

The bytes fix shrinks a ratchet: deka expected-failures.txt carries
unsafe-textencoder-encode and unsafe-uint8array-literal against #92, and the
lines come out when deka bumps its dsc pin past this release.

Gate: cargo test --workspace, 34 suites, 0 failures.
@samifouad
samifouad merged commit 960c5ed into main Sep 10, 2026
4 checks passed
@samifouad
samifouad deleted the release/0.8.1 branch September 10, 2026 08:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant