Jaké jsou vůbec garance kompatibility?
Ptám se, protože přidání nových implementací může rozbít existující kód (nevím, jestli to dokonce nemůže změnit jeho význam).
Kromě linkeru přidali i impl (implementace) nějakých traitů. Když ta změna šla do nightly, tak rozbila nějaké testy - viz issue 143164.
Tady je ten mechanizmus popsaný v Breakage from new trait impls. A píší tam i
This kind of breakage can be ok, but a crater run should estimate the scope.
Ale říkám, jestli je jedno, kolik věcí ta změna rozbije, nebo velké rozbíjení už zamítnou?. A pak také, zda může nastat situace, kdy se změní chování existujícího kódu. AFAIK v Haskellu to možné bylo, ale tam byl systém typových tříd a jejich instancí o dost bohatší než v Rustu.
Jakákoliv změna významu by byl bug, pro takovou míru nekompatibility jsou tu edice (A ani tam si nevybavuju situaci, kdy by se stejný kód kompiloval s jiným výstupem).
Po několika letech zaměstnání jako Rust vývojářka na čistě Rust codebase si nevybavuju na situaci, kdy by mi nové implementace traitů rozbily build, takže to bude asi spíš vzácnost. Na co spíš občas narazím jsou nové defaultní linty, ale to je snadná oprava (A pochopitelně by se tomu dalo předejít nastavením)