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)
Mám už i trochu problém s Golangem. Původní myšlenka byla, že jedna knihovna umí jednu věc a nebudou nikdy potřeba verze. Dneska je to jinak, máme moduly, což je sice fajn, ale netuším, proč někteří autoři potřebují až 4 verze knihoven k tomu, abych se připojit k databázi, která je golang native.
Pokud někdo potřebuje zásadně změnit knihovnu, tak má vydat novou verzi pod novým názvem. Tohle byla původní myšlenka.
Ono s tím při implementaci verzování stoprocentně počítat nelze. Co je pro jednoho chyba je pro jiného očekávané chování. Co je pro jednoho oprava chyby pro jiného je breaking change.
Sémantické verzování popisuje, jak se to bude chovat pro většinu lidí, přesněji jak si vývojáři myslí, že se to bude chovat pro většinu lidí. Ale nikde není zaručeno, že to tak bude zrovna pro vás. Bohužel si spousta lidí myslí, že sémantické verzování je něco naprosto přesného, na co se dá 100% spoléhat. Nedá.
> Pokud někdo potřebuje zásadně změnit knihovnu, tak má vydat novou verzi pod novým názvem. Tohle byla původní myšlenka.
Jako že major verze se má pro účely verzovacího systému strčit do jednoho stringu spolu s názvem knihovny?
Ale jo, pro megakorporát, který je známý svým monorepem a "not invented here" sydromem to může i fungovat.