LINUX.ORG.RU

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

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

Несовместимость может появиться и в runtime, так что намного надёжнее тесты и CI, это сейчас доступно всем и защищает от кучи других проблем.

Короче у меня от этой кроссплатформенности голова кругом

Это только по первости. Не концентрируйся на этом, просто не пользуйся платформозависимыми конструкциями и API. Пару раз может быть наступишь на грабли если привык к какой-то платформоспецифичной гадости, потом запомнишь и не будешь больше использовать. Если не уверен в переносимости функции - просто открывай соответствующий man и ищи там conforms to.

~$[POSIX - ISO/IEC/IEEE 9945:2009] - 100% совместимости : используйте -v для подробностей

~$[POSIX - ISO/IEC/IEEE 9945:2009/Cor 2:2017] - 2 ошибки совместимости : используйте -v для подробностей

~$[и так далее всякие ISO C 99/11 куча всего] ~$[Word 8] - Работа невозможна! ~$[Word 16] - Работа невозможна!

Обо всём этом тебе даже знать не нужно. Тебе нужно чтобы оно собиралось gcc/clang (и возможно cl) на 64 (и возможно 32) битах x86 (и возможно arm) linux/osx/windows (и возможно какой-нибудь bsd для полноты) и потом работало.

  • Travis покрывает gcc+clang и linux+osx
  • Appveyor покрывает cl (можно и gcc/clang до кучи)+windows

По желанию там можно добавить санитайзеры и cppcheck. Можно сделать CI в coverity, в своё время там был крутой статический анализ.

Итого если ты что-то сломал на любой платформе, узнаешь об этом в течение пары минут.

Я лично разрабатываюсь под FreeBSD что ещё увеличивает покрытие.

Остаются биты и архитектуры. Тут про изкоробочное я не в курсе, но если это нужно, для CI можно погуглить на тему использования 32битны докерных образов, кросскомпиляции и запуске под qemu. На самом деле не обязательно тестировать это покоммитно - достаточно приёмки перед релизом, а так как это нужно относительно редко можно использовать и менее удобные вещи, вплоть до ручного тестирования под виртуалками, эмуляторами и на реальном железе.

Я лично пользуюсь штатными средствами опять таки FreeBSD - делаю порт и собираю с запуском тестов в poudriere подо все архитектуры которые qemu умеет эмулировать.

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

Несовместимость может появиться и в runtime, так что намного надёжнее тесты и CI, это сейчас доступно всем и защищает от кучи других проблем.

Короче у меня от этой кроссплатформенности голова кругом

Это только по первости. Не концентрируйся на этом, просто не пользуйся платформозависимыми конструкциями и API. Пару раз может быть наступишь на грабли если привык к какой-то платформоспецифичной гадости, потом запомнишь и не будешь больше использовать. Если не уверен в переносимости функции - просто открывай соответствующий man и ищи там conforms to.

~$[POSIX - ISO/IEC/IEEE 9945:2009] - 100% совместимости : используйте -v для подробностей

~$[POSIX - ISO/IEC/IEEE 9945:2009/Cor 2:2017] - 2 ошибки совместимости : используйте -v для подробностей

~$[и так далее всякие ISO C 99/11 куча всего] ~$[Word 8] - Работа невозможна! ~$[Word 16] - Работа невозможна!

Обо всём этом тебе даже знать не нужно. Тебе нужно чтобы оно собиралось gcc/clang (и возможно cl) на 64 (и возможно 32) битах x86 (и возможно arm) linux/osx/windows (и возможно какой-нибудь bsd для полноты) и потом работало.

  • Travis покрывает gcc+clang и linux+osx
  • Appveyor покрывает cl (можно и gcc/clang до кучи)+windows

Итого если ты что-то сломал на любой платформе, узнаешь об этом в течение пары минут.

Я лично разрабатываюсь под FreeBSD что ещё увеличивает покрытие.

Остаются биты и архитектуры. Тут про изкоробочное я не в курсе, но если это нужно, для CI можно погуглить на тему использования 32битны докерных образов, кросскомпиляции и запуске под qemu. На самом деле не обязательно тестировать это покоммитно - достаточно приёмки перед релизом, а так как это нужно относительно редко можно использовать и менее удобные вещи, вплоть до ручного тестирования под виртуалками, эмуляторами и на реальном железе.

Я лично пользуюсь штатными средствами опять таки FreeBSD - делаю порт и собираю с запуском тестов в poudriere подо все архитектуры которые qemu умеет эмулировать.