scrml.dev v0.7.1
Reference › Errors

E-CHANNEL-SHARED-MODIFIER

The @shared modifier is removed from the language.

Error Compile-time SPEC §38.4 (normative)

What it means

@shared was the old marker for a realtime-synced cell. It is gone. Sync is now structural: a reactive cell declared inside a <channel> body auto-syncs by virtue of where it is declared, and no marker is required. Because the modifier no longer means anything, keeping it would imply a guarantee the compiler is not making — so it is rejected rather than ignored.

Minimal reproducer

This is the exact source compiled against the linked compiler and verified to produce E-CHANNEL-SHARED-MODIFIER.

${
    @shared messages = []
}
<program title="p">
    <p>chat</p>
</>

How to fix

  1. Delete the keyword and declare inside the channel body. <messages> = [] inside <channel> is the canonical synced form.
  2. Use a plain cell if it should not sync. A cell declared outside any channel body stays local. Placement is now the whole signal.

Related

Specification

Normative text: §38.4, §38.4.1, §34. Spec lives at compiler/SPEC.md .

← Reference