LINUX.ORG.RU

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

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

Все попытки разукрасить C очень печальны. На С пишется мало нового софта, а если пишется, то одна из причин выбора C = переносимость, в том числе на старые и не-ширпотребные платформы/компиляторы.

Поэтому любое нарушение обратной совместимости означает, что новыми фичами примерно никто не будет пользоваться. Ровно тоже самое с дополнительными «стандартными» функциями. Т.е. все эти нововведения приводят только к росту ifdef/endif, либо вообще игнорируются.

Тем не менее, я бы сделал три вещи:

  1. Распространить действие __restrict с аргументов на все указатели.
  2. Стандартизировать и сделать обязательными все независимые от архитектуры builtin-ы GCC.
  3. Максимально зачистить все случаи UB и implementation defined, т.е. привести в соответствие с de-facto (хотя и так уже навели порядок).

Короче, __restrict и GCC как de-facto стандарт )

+Чуть забыл про __unaligned или __builtin_assume_unaligned().

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

Все попытки разукрасить C очень печальны. На С пишется мало нового софта, а если пишется, то одна из причин выбора C = переносимость, в том числе на старые и не-ширпотребные платформы/компиляторы.

Поэтому любое нарушение обратной совместимости означает, что новыми фичами примерно никто не будет пользоваться. Ровно тоже самое с дополнительными «стандартными» функциями. Т.е. все эти нововведения приводят только к росту ifdef/endif, либо вообще игнорируются.

Тем не менее, я бы сделал три вещи:

  1. Распространить действие __restrict с аргументов на все указатели.
  2. Стандартизировать и сделать обязательными все независимые от архитектуры builtin-ы GCC.
  3. Максимально зачистить все случаи UB и implementation defined, т.е. привести в соответствие с de-facto (хотя и так уже навели порядок).

Короче, __restrict и GCC как de-facto стандарт )