Size: a a a

2021 June 16

КП

Константин Пунш... in dlang.ru
Сейчас надо было сбилдить C код. Я до этого пытался через установщик визуал студио скачать сдк, но колько я не мучался cmake отказывался его видеть. Установщик DMD имеет в себе этот sdk, и он мне его нормально поставил
источник

Тᅠ

Туночка ᅠᅠ... in dlang.ru
вивод
надо било ставить...
источник

KF

Konstantin Firsov in dlang.ru
Ну допустим, чисто теоретически, что есть способ через version добавлять или отключать фичи. Тогда по смыслу:
tokio = { version = "1.0.2", features = ["net"]} должен быть специализированный модуль tokio.net,  внутри которого version (net) {} или что-то такое и по коду его использование тоже идет через условную компиляцию. Насколько я в курсе, нельзя в version положить определение модуля, т.е. модуль net в любой случае будет объявлен и при "отключении" будет пустым. Наличие такого пустого модуля скорее всего может дать какие-то побочные эффекты, кгм.. например, если флаг версии будет забыт, то совсем неочевидно, почему оно не работает или почему что-то из модуля внезапно конфликует\затеняет, модуль же есть, это выглядит как-то странно и хуже в использовании, чем классическое подключение нескольких модулей\пакетов\etc. Возможно, есть какой-то способ избавиться от такого недомодуля или же как-то настроить его видимость, в зависимости от вкл\откл фичи.
источник

И

Игорь in dlang.ru
Ну это же был пример из раста
источник

KF

Konstantin Firsov in dlang.ru
я подразумевал аналогию.
источник

И

Игорь in dlang.ru
Иметь по модулю на фичу....
источник

KF

Konstantin Firsov in dlang.ru
по логике вещей, здесь невалидный случай, когда пустой модуль без фичи где-то импортируется\инициализируется в приложении вне version с фичей. Для такого импорта должна выдаваться ошибка. Получается version(bla_bla_net) { тело модуля } else { тут ошибка при импорте }. Я экспериментировал с static assert - фейлит всегда, static this() - тоже фейлит назависимо от того, находится ли импорт модуля в блоке version. Ну и стектрейс, если оттуда бросать эксепшен из конструктора не дает никакой инфы, где и как был импортирован модуль, такая себе полезность.
источник

DH

Dark Hole in dlang.ru
Фичи в D если уже и использовать, то для изменения поведения, а не просто для удаления модулей.
источник

EP

Egor Pugin in dlang.ru
есть какой-то яркий пример, где надо переключать фичи для библиотеки?
источник

DH

Dark Hole in dlang.ru
Что значит "яркий"?
источник

EP

Egor Pugin in dlang.ru
когда это действительно нужно
источник

DH

Dark Hole in dlang.ru
Выше был пример между стандартной либой жсон и нестандартной, но более быстрой.
источник

OB

Oleg B in dlang.ru
Игорь мне кажется прямая аналогия фич в rust это dip флаги компиляции
источник

OB

Oleg B in dlang.ru
и это не про json быстрый или не быстрый
источник

DH

Dark Hole in dlang.ru
Разве?
источник

OB

Oleg B in dlang.ru
ну мне кажется что dip это как раз те фичи про которые вы тут говорите
источник

OB

Oleg B in dlang.ru
например исключения без сборщика мусора
источник

И

Игорь in dlang.ru
не, не совсем
источник

OB

Oleg B in dlang.ru
включается dip'ом
источник

DH

Dark Hole in dlang.ru
Не-не, это конфигурация на уровне пакета
источник