LINUX.ORG.RU

История изменений

Исправление Siborgium, (текущая версия) :

Почитал. Это полный ******.

Проблема: каст флоатов в целочисленные типы является UB, если значение выходит за рамки допустимых значений целевого типа. Например, inf (но не только).

Решение вменяемого человека: либо ничего не делать, либо ввести [отключаемую] проверку с выбросом исключения в случае возниковения такой проблемы. Так делает большинство языков.

Решение раста: молча сатурируем значения, пользователь никак не уведомляется о произошедшем (ну да, исключений-то нет). Чеки не отключаются, производительность проседает на ~20% в крейтах, активно использующих такие касты. Так делает только Java.

Отлично, просто отлично.

Исходная версия Siborgium, :

Почитал. Это полный ******.

Проблема: каст флоатов в целочисленные типы является UB, если значение выходит за рамки допустимых значений целевого типа. Например, inf (но не только).

Решение вменяемого человека: либо ничего не делать, либо ввести отключаемую проверку с выбросом исключения в случае возниковения такой проблемы. Так делает большинство языков.

Решение раста: молча сатурируем значения, пользователь никак не уведомляется о произошедшем (ну да, исключений-то нет). Чеки не отключаются, производительность проседает на ~20% в крейтах, активно использующих такие касты. Так делает только Java.

Отлично, просто отлично.