LINUX.ORG.RU

DNF будет переписан на языке C

 


0

3

DNF — пакетный менеджер, используемый в дистрибутиве Fedora. Его предшественник Yum был полностью написан на Python, в DNF же на данный момент низкоуровневый функционал вынесен в отдельные C-библиотеки (hawkey, librepo, libsolv и libcomps).

Начиная с этого момента, код DNF будет постепенно переписываться на C в рамках отдельного проекта libhif; функционал hawkey уже влит в libhif.
Пока в libhif реализовано скачивание метаданных, разрешение зависимостей и исполнение RPM-транзакций; в будущем планируется доработка libhif для поддержки других базовых функций пакетного менеджера.

Внедрение libhif со встроенным hawkey ожидается к релизу Fedora 25.

>>> Подробности

★★★★★

Проверено: tailgunner ()
Последнее исправление: Wizard_ (всего исправлений: 3)

Ответ на: комментарий от WARNING

Если что, обновлял не я, а человек с прямыми руками. Повторить потом такое не смогли.

Да, конечно, у него руки прямые, только растут они прямо из попы...

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

Смысл поста не в том, что будешь покупать конкретно ты.

Смысл в том, что современные корпорации заинтересованы в «устойчивом развитии» бизнеса.

Для покупателя это означает, что он будет постоянно покупать новые девайсы.

Соответственно, под это затачивается всё: 1. технологии производства (аппаратную часть разрабатывают так, чтобы средний срок службы девайса падает с 10 лет до пяти, а потом и до трёх); 2. методологии управления проектами (agile,scrum,etc); 3. инструменты разработчиков (ЯП, IDE, etc).

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

под это затачивается всё: 1. технологии производства (аппаратную часть разрабатывают так, чтобы средний срок службы девайса падает с 10 лет до пяти, а потом и до трёх)

О, ты вроде разрабатываешь устройства - говоришь о своем опыте?

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

Я разрабатываю в основном для промышленности, там средний срок службы 8-10 лет.

А вот в бытовухе можно сократить...

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

А. Вы же тот парень, который видел заговор Google в том, что из Rust 'а выпилили сборщик мусора и понесли его на нижний уровень. Вопросов больше не имею. Мне в масонской ложе с такими как вы разговаривать не советовали.

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

Пример из жизни:

Робот-пылесос проработал гарантийный срок + месяц.

После «вскрытия» обнаружилась характерная ососбенность «дизайна»: в блоке питания был поставлен «облегченный» радиатор на «линейном» преобразователе, то есть место под нормальный радиатор было, но производителю не надо качественно, ему надо «устойчивое развитие».

Еще пример: один знакомы работает на предприятии, которое занимается ремонтом медтехники, так вот они ставили в блоки питания эмитаторы электролитических конденсаторов, которые в «выходили из строя» через определенный срок.

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

Здорово, а теперь покажи как ты на этой либе запишешь 1h + 100ms.

Зачем так писать? :-) Мне не надо страдать хренотенью :-)

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

Под «аппаратную часть разрабатывают так, чтобы ...» подходит только первая история. Если не применять бритву Хэнлона.

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

Не обращайте внимание. У лисперов проблемы с рассудком.

Нет проблем, поэтому писать 1h + 100ms на Лиспе в голову не приходило :-) Лол :-)

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

Зачем так писать? :-) Мне не надо страдать хренотенью :-)

Если бы я тебя попросил написать 1:1 я бы не добавлял слово «как». У тебя задача - сложить час и 100 миллисекунд, ты говоришь, что ты возьмешь эту библиотеку, окей, продемонстрируй решение.

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

На самом деле грамотно «ослабить» конструкцию, это искуство, которым владеют в основном международные корпорации.

В России это не умеют, в основном применяют методы, аналогичные второй истории.

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

У тебя задача - сложить час и 100 миллисекунд, ты говоришь, что ты возьмешь эту библиотеку, окей, продемонстрируй решение.

Это у тебя задача сложить час и 100 миллисекунд :-) С такими идиотскими задачами, как и с задачами сложения вафлей с табуретками, не ко мне :-) Лол :-) Для работы с интервалами удобнее использовать другую либу, обёртку над local-time:

(t+ (time-interval :hours 1) (time-interval :nanoseconds 1000000))
:-)

anonymous
()

На том же питоне пишут, потому что проще, быстрее и удобней. Код лаконичный, хорошо читаемый и поддерживаемый - для прикладного программирования самое то. Автор начинал проект по собственной инициативе - решать какие-то свои задачи, корпорации тут ни при чем. В общем со своим классом задач питон справляется нормально, не везде же нужна оптимальная производительность, где-то ей можно несколько и пожертвовать, зато выиграть во времени разработки, развертывания, кроссплатформенности и тп.
Кстати ещё можно вспомнить о прозрачности - в вашем любимом дистрибутиве полно питоновского, перлового и другого скриптового софта, в который благополучно доводилось лазить и модифицировать. И не надо разбираться, как что собирать, просто правишь, перезапускаешь приложение и все подхватывается.

pkkk
()

блин, как мне нравятся лоровцы ))) Автор новости изящно набросил на «языковой вентилятор» и понеслась. И ни одна сцобакко, не прочитала, что будет на сцях переписана только часть кода DNF. Из классической тривиальной оптимизации питонского софта раздули срач с языкомерками :)

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

Но заговора нет. Причины вполне прозаичны: 1. У корпораций достаточно капиталла и знаний, чтобы сделать девайс под определенный срок службы. 2. Устойчивое финансовое положение компании требует определенных входящих денежных потоков (REV $/год), у компании есть определенныя аудитория(N), и есть цена продукции(P). 3. Дальше маркетологам ставится задача, чтобы юзеры обновляли девайсы 1 раз в N*P/REV лет, разработчикам , технологам и прочим задачу ставят аналогично.

И под это же дело погромистам вбивают в голову что программы

требуют долгой поддержки и активного внедрения фич.

и прочий scrum.

shkolnick-kun ★★★★★
()
Ответ на: комментарий от Weres

У меня Nexus 5 2013-го года выпуска. Всё работает без тормозов

потому что питона там нет

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

С такими идиотскими задачами, как и с задачами сложения вафлей с табуретками, не ко мне

Ну вафли с табуретками, да, странно складывать, а часы, например, с минутами люди практически каждый день складывают. Или секунды с миллисекундами. Но видимо это не твой случай.

удобнее использовать другую либу
обёртку над local-time:

Ну все верно, это же лисп, тут обертки не только над сишными либами, но и над другими лисповыми. Кстати это та самая обертка?

https://github.com/slyrus/time-interval

Что ж, всего четыре года как «стабильная», целых 13 коммитов, гораздо лучше чем кладбище в http://www.cliki.net/time.

:nanoseconds 1000000

А чо, миллисекунды не завезли? ;) Можно конечно было бы сказать, что и не надо, но ты же налажал c ручной конвертацией. Хотя да, ты и не хотел точно 100 мс отмерять, это просто пример, а идиоты не понимают, LOL.

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

Покромсавших себе ноги профессионалов тоже дофига, от банальной человеческой ошибки никто не застрахован.

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

При этом, удаление самого emasc не приводит к удалению остальных пакетов, а удаление emacs24 приводит только удалению libm17n-0 libotf0 m17n-db, но не emacs24-bin-common emacs24-common.

--auto-remove не спасает разве?

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

Если языков программирования несколько, то это становится головной болью.

по-настоящему крупных проектов, написанных на одном-единственном языке мало

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

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

оно и видно, что профессиональная деформация уже необратима

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

Мне стаило интересно, проверил:

sudo apt-get install emacs
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  emacs24 emacs24-bin-common emacs24-common emacs24-common-non-dfsg imagemagick-common libgif7
  liblockfile-bin liblockfile1 liblqr-1-0 libm17n-0 libmagickcore-6.q16-2 libmagickwand-6.q16-2
  libotf0 m17n-db
Suggested packages:
  emacs24-el m17n-docs libmagickcore-6.q16-2-extra gawk
Recommended packages:
  ghostscript gsfonts
The following NEW packages will be installed:
  emacs emacs24 emacs24-bin-common emacs24-common emacs24-common-non-dfsg imagemagick-common
  libgif7 liblockfile-bin liblockfile1 liblqr-1-0 libm17n-0 libmagickcore-6.q16-2
  libmagickwand-6.q16-2 libotf0 m17n-db
0 upgraded, 15 newly installed, 0 to remove and 0 not upgraded.
Need to get 24.2 MB of archives.
After this operation, 105 MB of additional disk space will be used.
Do you want to continue?

затем

sudo apt-get autoremove emacs
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  emacs emacs24 emacs24-bin-common emacs24-common emacs24-common-non-dfsg imagemagick-common
  libgif7 liblockfile-bin liblockfile1 liblqr-1-0 libm17n-0 libmagickcore-6.q16-2
  libmagickwand-6.q16-2 libotf0 m17n-db
0 upgraded, 0 newly installed, 15 to remove and 0 not upgraded.
After this operation, 105 MB disk space will be freed.
Do you want to continue? [Y/n]

Все как положено.

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

Если сперва сделать просто remove emacs, а затем autoremove - результат такой же.

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

По настоящему крупных, как я описал выше - да. Но обычно между ними сетевое разделение, а тут речь идет банально о одном дереве проекта, в который хотять вмешать что-то на кардинально другом ЯП

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

лучше уж профессиональная деформация в сторону суровой оптимизации софта, чем бурная деятельность неосиляторов, которые только вчера освоили «программирование» в скриптах, а сегодня уже полезли клепать поделия из говна и палок.

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

(t+ (time-interval :hours 1) (time-interval :seconds .1))

Т.е. точно налажал. Кстати, а нафига она такая библиотека нужна?

(t+ (time-interval :seconds 59.9) (time-interval :seconds 59.9))

#<TIME-INTERVAL 0Y 0MO 0W 0D 0H 0MI 119.8S 0NS {10092D1BA3}>

Если оно не обрабатывает переполнения, но зачем-то хранит отдельно значения.

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

но зачем-то хранит отдельно значения.

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

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

Кстати да, встречал вполне себе осиляторов, которые с С++ свалили на «скриптовый» Haskell, например. Можешь прокомментировать?

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

Но видимо это не твой случай.

Нет, это не мой случай :-)

Ну все верно, это же лисп, тут обертки не только над сишными либами, но и над другими лисповыми.

Пфф :-) В цепепе каждая вторая либа - тупая обёртка над сишной либой, либо над цепепешной :-) Его и создавали ради того, чтобы писать обёртки над сишными либами, действительно думая, что сделали крутой инструмент, который позволяет free*() запихивать аж в деструкторы, чтобы вручную не писать :-) И это сделало цепепе высокоуровневым ЯП :-) ЛОЛ :-)

Кстати это та самая обертка?

Ага :-)

Что ж, всего четыре года как «стабильная», целых 13 коммитов

Ну загляни в SBCL, там уже под 10000 коммитов, а поле всё ещё не пахано :-) Оценивать программы по кол-ву коммитов на гитхабе могут только дилетанты :-)

А чо, миллисекунды не завезли? ;)

Ну, как видишь :-) Это не проблема :-) Включать в каждый файл муть «using namespace std::chrono::literals», в каждый инклюд унылые #defin THIS_IS_INCLUDE_HPP_, перед каждым определением члена-класса This_is_my_stupid_namespace::Anotherone::StupidClass::stupidFunction() const noexcept, бороться с инклюдами, тратя по полдня на тупорылую огранизацию средненького проектишки - вот проблема :-) А миллисекунды завести - то дело минуты :-) Лол :-)

Можно конечно было бы сказать, что и не надо, но ты же налажал c ручной конвертацией. Хотя да, ты и не хотел точно 100 мс отмерять, это просто пример, а идиоты не понимают, LOL.

Задрот детектед :-) Лол :-)

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

Да откуда столько гонора то? Со стороны выглядит как-то смешно даже. Ну да, вы молодец, разрабатываете софт с «суровыми» оптимизациями. Ну и что? Все эти разглагольствования о том, кто занимается программированием, а кто «программированием» — смешны и выдают в вас, то ли неуверенного в себе человека, то ли тролля. На школьницу вы не тянете, а то тоже, как вариант мог бы быть.

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

Задрот детектед :-) Лол :-)

Бокопор, который не может выписать константу в код детектед, Лол :)

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

Бокопор, который не может выписать константу в код детектед, Лол :)

Да ложил я на тот код с прибором :-) Нашёл код, тоже мне :-)

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

Бокопор, который не может выписать константу в код детектед, Лол :)

Константа в коде уже была:

(+ 60*60*60*1000 100)
Сам найдёшь? :-)

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

И что самое смешное, этот идиот еще и возмущается, что ему предлагают писать 1h + 100ms.

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

смущает то, что в языке с «выразительной системой типов» нужно *вручную* подсовывать в единицу трансляции «using namespace std::literals»

И много языков, которые неявно импорты разруливают?

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

С точки зрения «эффективного менеджера», лучше бурная деятельность тысяч GO-хомячков, и нескольких черовеков с

профессиональная деформация в сторону суровой оптимизации софта

, которые будут делать производительные библиотеки.

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

Так ты и тут налажал :) Ну ты и тупой :)

Сложно заурядному цепепешнику вместить в себя, что константы можно объявлять в Лиспе так:

(defconstant 60*60*60*1000 (* 60 60 60 1000))
Жаль тебя :-)

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

Сложно заурядному цепепешнику вместить в себя, что константы можно объявлять в Лиспе так:

Ты лишний раз на 60 умножил, и так этого и не понял, даже когда тебе явно указали, что ты лажанулся.

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

(defconstant 60*60*60*1000 (* 60 60 60 1000))

Простите, а что значит эта константа? Это не количество миллисекунд в часе.

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

И много языков, которые неявно импорты разруливают?

А чего ты сразу за другие языки начинаешь разговор, когда самые глубокие проблемы цепепе как языка и технологии начинают выставлять на обозрение? :-)

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

Ты лишний раз на 60 умножил, и так этого и не понял, даже когда тебе явно указали, что ты лажанулся.

А, ну да :-) Ну ничего, бывает :-) Как-то пох :-)

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

А чего ты сразу за другие языки начинаешь разговор, когда самые глубокие проблемы цепепе как языка и технологии начинают выставлять на обозрение? :-)

Вот это глубокая проблема? ОК.

«Разговор за другие языки» начинаю потому что мне интересно увидеть где сделано лучше и сравнить самостоятельно. Возможно, узнав что-то новое/интересное в процессе. И понять действительно ли можно было сделать лучше или это разумный компромисс, в имеющихся условиях.

А ещё мне интересное какое вообще отношение импорты имеют к «системе типов».

Правильно я понимаю, что ответа нет?

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

Круто, если теперь работает нормально. У тебя до этого emacs стоял?

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

Вот это глубокая проблема? ОК.

Когда по 100 раз на день пишешь эти дебильные юсинг в каждый файл, то это становится проблемой не только языка, но и бедолаги программиста :-)

«Разговор за другие языки» начинаю потому что мне интересно увидеть где сделано лучше и сравнить самостоятельно. Возможно, узнав что-то новое/интересное в процессе. И понять действительно ли можно было сделать лучше или это разумный компромисс, в имеющихся условиях.

Резонно :-)

А ещё мне интересное какое вообще отношение импорты имеют к «системе типов».

Ну смотри :-) В цепепе действует правило Кёнинга :-) Слыхал, надеюсь? :-) Так вот и поиск имён в рамках разрешения перегрузки связан именно с системой типов :-) Зачем, передавая в качестве аргументов функции, определённой в области видимости суффиксы «ms», программист всё равно вынужден писать директиву using namespace? :-) Тут даже не зачем, а почему? :-)

Правильно я понимаю, что ответа нет?

В Лиспе, например, такой проблемы нет вообще :-) Все конфликты имён разрешаются на этапе загрузки символов пакета :-) И в Си такой проблемы нет - там нет пространств имён :-)

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