LINUX.ORG.RU

C++ модули

 


0

3

Все никак допилится не могут. Хотел бы сразу завернуть поделки, которые рождаются сейчас, в модули. гцц со шлангом говорят, что сыро, cmake там что-то костылит. В общем - кто щупал, можно ли в данный момент взять гцц или шланг + cmake (бэкэнд без разницы) и заюзать их без особой боли, т.е:

  1. без каких либо временных костылей в cmake
  2. без серьезных модульных багов
  3. как там с поддержкой со стороны cmake based tools? Видны ли для них символы из модулей?

В общем - можно ли комфортно пользоваться, или пока не лезть? Тратить время чтобы «просто потыкать» игрушку не хочется.

★★

Последнее исправление: pavlick (всего исправлений: 1)

Пока в стандартный де факто десктопный дистрибутив не завезут компилятор с полной поддержкой модулей, пока в коробку не включат cmake с поддержкой модулей, не вижу смысла что-то пробовать кроме чтения статеек. А как все устаканится, там и 23 год наступит, и новые фичи :)

seiken ★★★★★
()

Имхо модули до след стандарта будут именно просто потыкать, а там можно посмотреть..

zerhud
()
Ответ на: комментарий от seiken

Ах да, и еще надо подождать, пока std:: на модули переведут, но это только с c++23…

seiken ★★★★★
()

Я где-то читал, что модули получились костыльными и особого ускорения компиляции не будет. Чё там слышно?

ox55ff ★★★★★
()
Ответ на: комментарий от ox55ff

Ну вот бенчмарк от 2019г. с тестами gcc и clang:

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1441r1.pdf

  1. Conclusion With the limitations of the capabilities of current compilers one can only conclude that modular builds are very advantageous at lower parallelism levels environments. But that it’s unclear if they are an advantage in highlyparallel build environments. In other words, that modules currently do not scale in the same ways as traditional compilation.
seiken ★★★★★
()

Все никак допилится не могут. Хотел бы сразу завернуть поделки, которые рождаются сейчас, в модули.

Ни слова больше! Пеши:

#IF MODULES_ENABLED
import blahblahblah;
#ELSE
#pragma once
#include "blahblahblah"
#ENDIF

:))

Потом главное не забыть где у тебя импорты модулей, а где — более другие импорты :)

#if defined(_MSC_VER)
    //  Microsoft 
    #define EXPORT __declspec(dllexport)
    #define IMPORT __declspec(dllimport)
#elif defined(__GNUC__)
    //  GCC
    #define EXPORT __attribute__((visibility("default")))
    #define IMPORT
#else
    //  do nothing and hope for the best?
    #define EXPORT
    #define IMPORT
    #pragma warning Unknown dynamic link import/export semantics.
#endif

А потом со всей этой кашей попробуешь взлететь :)

slackwarrior ★★★★★
()

В общем - можно ли комфортно пользоваться, или пока не лезть? Тратить время чтобы «просто потыкать» игрушку не хочется.

Оно пока и будет в стадии «просто потыкать». Т.к. в прод это может попасть

а) только на новом проекте без зависимостей от легаси старья, что есть само по себе кентавр-единорог

б) в составе мутанта из «фромскрач» и легаси обернутого в модули

в) после объяснений чего будет стоить переход на это людям с властью принятия окончательных решений по бюджетам времени и денег ты увидишь их скучные литса и все поймешь :)

slackwarrior ★★★★★
()
Последнее исправление: slackwarrior (всего исправлений: 1)
Ответ на: комментарий от unC0Rr

Спроси автора пасты со стекэксченжа. Но лучше забей. Эт прост иллюстрация какой примерно ужоснах будет в коде пока поддержка модулей будет от частичной до никакой.

slackwarrior ★★★★★
()
Последнее исправление: slackwarrior (всего исправлений: 1)
Ответ на: комментарий от slackwarrior

Кстати да. Труп страуса мог бы и сразу догадаться модули добавить - благо уже середина 80-х была. На крайняк 20 лет назад, когда язык перетряхивали. А сейчас это ужоснах forever

anonymous
()

gcc 11 вроде умеет модули.

luke ★★★★★
()

Я бы посоветовал вам перейти на Python. Там нет утечек памяти и модули создаются очень просто - через файл.

Владимир

anonymous
()
Ответ на: комментарий от anonymous

Извините за этот мой оффтоп. У меня проблемы с головой иногда пальцы сами печатают по клавиатуре я не могу их контролировать. Простите меня.

Владимир

anonymous
()

Скучный язык. Код на нем есть, а смешных мемов - нет. Коммитетские диды все прививают и прививают прикованному к бетонному полу франкенштейну новые органы и конечности, а он и задушить сам себя не в состоянии.

комфортно пользоваться

это не про плюсы, про плюсы - это комфортно страдать

cmake

это дерьмо еще не закопали? удивительно, но когда твой яп - с++, наверное и cmake как манна небесная.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.