Odpověď na názor

Odpovídáte na názor k článku Rust v jádře má první zranitelnost. Názory mohou přidávat pouze registrovaní uživatelé. Nově přidané názory se na webu objeví až po schválení redakcí.

  • 18. 12. 2025 21:41

    vladab

    Za mě je tohle jen technikálie - hraní si se slovíčky. Pokud dělám unsafe operaci, musím (měl bych) zajistit, že budou splněny všechny podmínky pro správnost. Tzn. v tomhle případě bych bral kontrolu vstupních parametrů jako součást unsafe operace, byť technicky nemusí být ta kontrola v unsafe bloku.

    Pokud bych se na ten unsafe blok koukal izolovaně tak je za mě špatně, protože nekontroluje nic - dělá unchecked indexaci indexem kdo ví odkud, to je prostě chyba.

    Možná v kódu, kde je unsafe operací hodně, tak se můžou invarianty kontrolovat na vzdálenějších místech od unsafe bloků, ale to bych považoval za dost nešťastné a minimálně by se to mělo omezovat na privátní rozhraní. A jak jsem psal, pak bych celou strukturu/modul považoval za "unsafe", protože chtěně (by design) ovlivňuje unsafe kód. Ale to je speciální situace a očekával bych, že je pro to dost dobrý důvod, že se invarianty nekontrolují přímo v unsafe bloku (nebo těsně před ním jako v příkladu).

    Z vlastní zkušenosti napíšu tak 1 unsafe blok na cca 5k řádků (a pravděpodobně bych se dokázal obejít i bez něj). A ve wrapech C knihoven, kterých jsem se dotknul, byl IIRC každý unsafe blok "ucelený". Takže nemám zkušenost s kódem, kde by se divoce míchal safe/unsafe.

    Samozřejmě může takový být, jenom 1) říkám, že na "divoký" unsafe kód nejsem expert a 2) dávám příklad z praxe, že jsem takový kód zatím ani nepotkal a je to z mého pohledu okrajová záležitost (to jen aby někdo nenabyl dojmu, že rustí kód je nutně protkaný unsafe a nemá tak smysl safe a unsafe rozlišovat).