Зависимости библиотеки
От: _NN_ www.nemerleweb.com
Дата: 06.02.19 12:33
Оценка:
В связи с соседней ветке, хотелось бы придти к общему мнению насчёт дополнительных зависимостей.
На данный момент есть одна для .NET Core/Standard и для зависимости старых версий .NET.

Предлагаю разделить проблему на две:
  • Внешние зависимости для .NET 4.5 и выше.
    На данный момент нет никаких проблем с этим кроме .NET Core/Standard с одной зависимостью.
    Тут либо обойти для них через рефлексию либо оставить.
    Так как .NET Core/Standard всё вынесено в пакеты и так, достаточно просто требовать наименьшую версию пакета. (уже сделано)

  • Внешние зависимости для .NET 4.0 и ниже.
    Здесь вариантов я вижу тоже два:

    1. Либо тащить всё в CodeJam и получить конфликты имён.
      Например если добавить интерфейс IReadOnlyDictionary, а проект имеет свой IReadOnlyDictionary получим приятные слова в адрес CodeJam.

    2. Выделить часть CodeJam, которая требует внешние зависимости в отдельный пакет.
      Так в проекте, использующий CodeJam, будет явно видно какая зависимость используется.
      Мне кажется. этот вариант наиболее предпочтительный.
  • http://rsdn.nemerleweb.com
    http://nemerleweb.com
    Re: Зависимости библиотеки
    От: Sinix  
    Дата: 06.02.19 18:52
    Оценка:
    Здравствуйте, _NN_, Вы писали:

    _NN>* Выделить часть CodeJam, которая требует внешние зависимости в отдельный пакет.

    _NN>Мне кажется. этот вариант наиболее предпочтительный.

    А чем плох вариант с использованием готовой либы (theraot) для fw 4.5 и ниже?
    Re[2]: Зависимости библиотеки
    От: _NN_ www.nemerleweb.com
    Дата: 07.02.19 08:13
    Оценка:
    Здравствуйте, Sinix, Вы писали:

    S>Здравствуйте, _NN_, Вы писали:


    _NN>>* Выделить часть CodeJam, которая требует внешние зависимости в отдельный пакет.

    _NN>>Мне кажется. этот вариант наиболее предпочтительный.

    S>А чем плох вариант с использованием готовой либы (theraot) для fw 4.5 и ниже?

    Ничем не плох, только нужно решить, что этот вариант нам подходит.
    Проблемы будут в случае если проект использует свою реализацию слоя совместимости и не захочет переходить на Theraot или другую зависимость.
    Хотя вполне возможно, что проблема надуманная и стоит решать только тогда, когда кто-нибудь попросит.

    Ветка с Theraot в принципе готова к слиянию.
    Если есть замечания, то самое время.
    http://rsdn.nemerleweb.com
    http://nemerleweb.com
    Re: Зависимости библиотеки
    От: Ночной Смотрящий Россия  
    Дата: 07.02.19 17:24
    Оценка:
    Здравствуйте, _NN_, Вы писали:

    _NN>Выделить часть CodeJam, которая требует внешние зависимости в отдельный пакет.


    Тем самым зависимости CodeJam заменяются на кучу зависимостей самого CodeJam. Я уж не говорю про тонну "удовольствия" гадать, какой именно из пакетов CJ тебе нужен.
    Удобство CJ в том, что ты просто подключаешь пакет и сразу же получаешь комфортное и привычное окружение. А вот эта программистская привычка все нарезать на кирпичики и разложить по полочкам превращается в кучу лишних телодвижений.
    ... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
    Отредактировано 07.02.2019 17:26 Ночной Смотрящий . Предыдущая версия .
    Re[2]: Зависимости библиотеки
    От: IT Россия linq2db.com
    Дата: 07.02.19 19:03
    Оценка:
    Здравствуйте, Ночной Смотрящий, Вы писали:

    НС>Тем самым зависимости CodeJam заменяются на кучу зависимостей самого CodeJam. Я уж не говорю про тонну "удовольствия" гадать, какой именно из пакетов CJ тебе нужен.


    Обычно все пакеты одной библиотеки имеет смысл обновлять совместно. Разве нет?

    НС>Удобство CJ в том, что ты просто подключаешь пакет и сразу же получаешь комфортное и привычное окружение. А вот эта программистская привычка все нарезать на кирпичики и разложить по полочкам превращается в кучу лишних телодвижений.


    Здесь как раз понятно за что пользователи платят за неудобства. Если ты такой хитровывернутый и хочешь пользоваться новыми фичами, но не хочешь/не имеешь возможности обновить версию фреймоврка, то немножко пострадай. Всё честно.

    Если поддержку всего нового пихать в основную библиотеку, то проблемы получает тот, кто вообще как бы не при делах. Например, мне не нужен System.ValueTuple в моих проектах, я не использую FW 4.72, достаточно 4.52, тем не менее я получаю новую зависимость от двух разных пакетов, в которых к тому же разные версии этой зависимости. В результате чего имеем проблемы. Не-не-не. Давайте сами. Хотите новых фич в старом болоте, будьте добры сами разгребать это овнецо.
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[3]: Зависимости библиотеки
    От: Ночной Смотрящий Россия  
    Дата: 07.02.19 19:42
    Оценка:
    Здравствуйте, IT, Вы писали:

    НС>>Тем самым зависимости CodeJam заменяются на кучу зависимостей самого CodeJam. Я уж не говорю про тонну "удовольствия" гадать, какой именно из пакетов CJ тебе нужен.

    IT>Обычно все пакеты одной библиотеки имеет смысл обновлять совместно. Разве нет?

    Я окончательно утерял логику в твоей борьбе с зависимостями.
    ... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
    Re[3]: Зависимости библиотеки
    От: Sinix  
    Дата: 07.02.19 22:17
    Оценка:
    Здравствуйте, _NN_, Вы писали:

    _NN>Ветка с Theraot в принципе готова к слиянию.

    _NN>Если есть замечания, то самое время.

    Круть! Я пстараюсь завтра выкроить время и посмотреть. Огромное спасибо и
    Re[4]: Зависимости библиотеки
    От: _NN_ www.nemerleweb.com
    Дата: 10.02.19 15:21
    Оценка: 139 (2) +1
    Здравствуйте, Sinix, Вы писали:

    S>Здравствуйте, _NN_, Вы писали:


    _NN>>Ветка с Theraot в принципе готова к слиянию.

    _NN>>Если есть замечания, то самое время.

    S>Круть! Я пстараюсь завтра выкроить время и посмотреть. Огромное спасибо и


    У меня тут свободное время было. Как же хорошо позаниматься чем-то отвлечённый от работы
    Сегодня обновлю PR поддержкой .NET Core 1.0, 1.1, .NET Standard 1.6, 1.5.
    Ниже версии поддерживать слишком накладно.
    С этим .NET Standard так перемудрили, "нет слов — одни эмоции".
    http://rsdn.nemerleweb.com
    http://nemerleweb.com
    Re[5]: Зависимости библиотеки
    От: _NN_ www.nemerleweb.com
    Дата: 11.02.19 13:22
    Оценка: 71 (2)
    Таки добил это дело: пулл реквест.
    Теперь спектр у CodeJam покрывает практически все сценарии.
    Минимальные фреймворки: .NET Core 1.0, .NET Standard 1.5, .NET Framework 2.0.
    Кому реально нужен .NET Standard 1.4 и ниже то пожалуйста добавляйте сами
    Получилось практически всё внести, даже CodeJam.Blocks в Core и Standard.

    Жду замечания и пожелания.
    Если проблем не найдём, то объединю ветку с основной.
    http://rsdn.nemerleweb.com
    http://nemerleweb.com
    Re[3]: Зависимости библиотеки
    От: _NN_ www.nemerleweb.com
    Дата: 13.02.19 08:24
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>Если поддержку всего нового пихать в основную библиотеку, то проблемы получает тот, кто вообще как бы не при делах. Например, мне не нужен System.ValueTuple в моих проектах, я не использую FW 4.72, достаточно 4.52, тем не менее я получаю новую зависимость от двух разных пакетов, в которых к тому же разные версии этой зависимости. В результате чего имеем проблемы. Не-не-не. Давайте сами. Хотите новых фич в старом болоте, будьте добры сами разгребать это овнецо.


    Я так понимаю если бы изначально зависимость была бы от более низкой версии System.ValueType проблем бы не было ?
    http://rsdn.nemerleweb.com
    http://nemerleweb.com
    Re[6]: Зависимости библиотеки
    От: _NN_ www.nemerleweb.com
    Дата: 14.02.19 16:03
    Оценка:
    Здравствуйте, _NN_, Вы писали:

    Установил минимально возможные версии всех зависимостей. Пришлось правда требовать более новую версию Theraot.
    Всё собирается и тесты проходят.
    Думаю можно вливать.
    Что скажете ?
    http://rsdn.nemerleweb.com
    http://nemerleweb.com
    Re[7]: Зависимости библиотеки
    От: Sinix  
    Дата: 15.02.19 08:49
    Оценка:
    Здравствуйте, _NN_, Вы писали:

    _NN>Что скажете ?


    Я посмотрю вечером (но не обещаю), по беглому взгляду — , можно вливать.
     
    Подождите ...
    Wait...
    Пока на собственное сообщение не было ответов, его можно удалить.