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)

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

Все конфликты имён разрешаются на этапе загрузки символов пакета :-)

Ага, пользователем при запуске, LOL. Запускаешь программу на лиспе, а она тебе раз простыню с текстом и необходимостью угадать правильный вариант, а потом еще раз, и еще.

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

В цепепе действует правило Кёнинга :-) Слыхал, надеюсь?

Про ADL слышал, да. Но разве это имеет отношение к системе типов?

В Лиспе, например, такой проблемы нет вообще :-)

Такой нет, есть другие. Например, я слышал, что вложенных пакетов нет.

И в Си такой проблемы нет - там нет пространств имён :-)

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

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

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

дешево? Нормальный радиатор дороже обойдётся.

DarkEld3r ★★★★★
()

АХАХАХАХА НАКАНЕЦТА!

Оно перестанет тормозить?

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

Про ADL слышал, да. Но разве это имеет отношение к системе типов?

Ну это оно и есть :-) Оно имеет отношение к разрешению перегрузки, которая делается на основе системы типов :-)

Такой нет, есть другие. Например, я слышал, что вложенных пакетов нет.

Они не нужны :-) От них больше проблем:

namespace My {
namespace std {
namespace String {
void f()
{
  using namespace std; // имена из My::std
  using namespace ::std; // имена из ::std
}
}
}
}

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

Это в цепепе костыли :-) Там пространства имён ввели для обобщённого программирования, чтобы механизм перегрузки тот же swap вызывал не только из ::std, но и какой-нибудь пользовательский swap :-) В части именования как такового - ничем My_package::f() не лучше My_package_f() :-)

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

От них больше проблем:

И где тут проблемы?

В части именования как такового - ничем My_package::f() не лучше My_package_f()

Лучше, как минимум, тем, что с неймспейсами длинное имя можно один раз заюзать, а дальше писать коротко. А второй вариант каждый раз придётся выписывать полностью.

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

Если бы надо было дешево, то на плате не было-бы посадочного места под хороший радиатор.

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

Никакого баттхёрта, обычная спецолимпиада. Зайди в любой раздел, там этого полно.

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

И где тут проблемы?

Ты, часто пишешь в своём коде ::std::f()? :-) Везде принято писать std::f() :-) Совсем недавно я столкнулся с проблемой вложенных пространств имён, когда программист определил неймспейс с именем неймспейса внешней либы в своём неймспейсе, и класс с именем класса внешней либы в своём неймспейсе :-) И компилятор вывел не то, что нужно :-) Хотя программист указал using namespace Inner; :-)

Лучше, как минимум, тем, что с неймспейсами длинное имя можно один раз заюзать, а дальше писать коротко. А второй вариант каждый раз придётся выписывать полностью.

#define My_package_f f :-)

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

Деформация - это у лисперов.

Полный тред неадекватов набежал в тему о C vs Python.

anonymous
()

Все правильно делают. Просто в RH не обезьяны сидят, которые только GUI на питоне к apt-get умеют ваять (привет, абанту).

Получат быстрые либы, с pure C ABI, с биндингами на все языки практически из коробки (см. GObject Introspection).

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

ОБЪЯСНИТЕ, с чего такой баттхерт на 9 страниц? Я не понимаю.

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

А вообще, вангую что проблемы с производительностью у DNF вовсе не из-за питона. Перепишут на си, будет меньше тормозить, но будет. Это уже не первый раз они его переписывают, и получают ту же проблему. Теперь думают что им волшебная пилюля, в виде смены языка, поможет.

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

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

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

после чего кодом пользуешься, как

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

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

нет. но всякое бывает. говорят, некоторые даже в религию ударяются от тяжёлой жизни. но далеко не все.

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

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

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

Чем отличаются обезьяны, которые гуй быстро кодят на питоне, от обезьян, которые в 2016 году всё ещё перекладывают байтики вручную, как в каменном веке(программирования)?

с биндингами на все языки практически из коробки

Стоп, а зачем нужны все другие языки? Это ж потакание гуеобезьянам?

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

а часы, например, с минутами люди практически каждый день складывают.

Я тоже хочу поучаствовать:

#lang racket
(require gregor gregor/period)
(+milliseconds (hours 1) 100)
или
(+hours (milliseconds 100) 1)
или
(+time-period (hours 1) (milliseconds 100))
в любом случае ответ
#<period of 1 hour, 100 milliseconds>
monk ★★★★★
()
Ответ на: комментарий от anonymous

:nanoseconds 1000000

И, кстати, опять же разница общелиспа и С++, если бы смайлик писал это на С++, то мог бы написать так:

100'000'000

И не ошибся бы с нолями.

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

основные инструменты, которые я использую, написаны на плюсах или си.

но не все. почему бы не взяться за переписывание?

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

даже в религию ударяются

я про наоборот: про тот случай, когда наоборот, из фанатичного плюсоложества выходят во внешний мир во всём его разнообразии

от тяжёлой жизни.

а вот это, кстати, верно подмечено

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

в 2016 году всё ещё перекладывают байтики вручную, как в каменном веке

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

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

а вот это, кстати, верно подмечено

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

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

И не ошибся бы с нолями.

Ошибка с нулями вышла из-за того, что в уме было 1000 мс, а не 100 мс :-) Так что не надо тут тулить свои корявые апострофы из цепепе :-)

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

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

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

Я тоже хочу поучаствовать:

А можешь у себя проверить:

(+hours (time 22) 4)

+hours: contract violation
  expected: time-arithmetic-provider?
  given: 22
  in: the 1st argument of
      (->
       time-arithmetic-provider?
       exact-integer?
       time-arithmetic-provider?)
  contract from: 
      <pkgs>/gregor-lib/gregor/main.rkt
  blaming: anonymous-module
   (assuming the contract is correct)
  at: <pkgs>/gregor-lib/gregor/main.rkt:181.2

Это из доки, к примеру, соседний (+hours (moment 2015 3 8 1 #:tz «America/New_York») 1) отрабатывает без проблем.

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

поэтому считается, что «плюсы - это сложно». на самом деле, там всё элементарно. просто нужно определённое количество извилин и некоторую аккуратность.

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

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

Ошибка с нулями вышла из-за того, что в уме было 1000 мс

Блджад, ты неподражаем, это уже твоя третья лажа - у тебя там 1мс, а не 1000мс. Ты видимо не в курсе, что есть еще и микросекунды. А потом у этих людей цэпэпэ виноват во всех их бедах.

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

Блджад, ты неподражаем, это уже твоя третья лажа - у тебя там 1мс, а не 1000мс. Ты видимо не в курсе, что есть еще и микросекунды. А потом у этих людей цэпэпэ виноват во всех их бедах.

Проблемы балаболов и низкоквалифицированной шпаны меня не интересуют :-) 100 ms = 100 миллисекунд :-) Почему-то было воспринято 1000 ms, а не как 100 ms :-)

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

Проблемы балаболов и низкоквалифицированной шпаны меня не интересуют :-)

Так ты сам такой и есть. Столько ошибок на ровном месте даже школьники не делают.

100 ms = 100 миллисекунд :-) Почему-то было воспринято 1000 ms, а не как 100 ms :-)

Еще раз прочти внимательно, у тебя ни 1000, но 100 не было, а было 1.

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

И когда для такого описания нужно совладать языком со стандартом размером почти в 1300 страниц, чтобы бороться с собственным инструментом, то такого языка стоит избегать всеми возможными способами

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

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

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

Iron_Bug ★★★★★
()
Ответ на: комментарий от anonymous
(require gregor gregor/time)
(+hours (time 22) 4)

; вывод
#<time 02:00:00>

Ты пропустил (require gregor/time), поэтому у тебя time из racket/base, а не из gregor/time

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

видишь ли, даже в 2016-м году камень-таки действительно работает на уровне камня

проблема в том, что в 2016 году «камни» работают на архитектуре 60 (или сколько там?)-летней давности.

поэтому на тысячу питонистов есть один настоящий системщик, который понимает, как нужно байты перекладывать

А ты отлично понимаешь суть. именно, на тысячу - один (в самом лучшем случае).

чтобы все эти питоны не рухнули

дублируем, распределяем - и пофиг на обрушения, рушится всё и всегда, не бывает 100% надёжности

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

Если настолько фанатичный перекладыватель, как некоторые - не освоит исключительно из принципа.

а вот наоборот, увы, не получится.

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

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

Еще раз прочти внимательно, у тебя ни 1000, но 100 не было, а было 1.

Вот как было:

(t+ (time-interval :hours 1) (time-interval :seconds .1))
:-) Тут написано 100 миллисекунд :-)

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

Ты пропустил (require gregor/time)

Я указал (require gregor), как написано в доке. и сходу примеры в работали, кроме этого.

поэтому у тебя time из racket/base, а не из gregor/time

Спасибо за объяснение.

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

видишь ли, некоторые люди не могут освоить простейшие вещи.

95% же

даже тут на ЛОРе полно неосиляторов.

ты так говоришь, будто тут инст блаародных девиц и mit в одном флаконе

«плюсы - это сложно». на самом деле, там всё элементарно. просто нужно иметь определённое количество извилин

понимаешь ли, плюсы - это _очень_ во многом зубрёжка, тут извилины в основном как запоминающее устройство нужно иметь

если их не хватает, то тогда даже питон может оказаться «сложным».

именно

кто-то старается и прикладывает усилия, учится писать на плюсах. это довольно долго.

потому что куча неочевидностей и подводных камней, так что тут без зубрёжки и громадного опыта не обойтись, да

а кто-то усилий не прикладывает и сваливает на тот уровень, который он может освоить.

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

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

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

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

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

мир гораздо сложнее, чем ты себе представляешь.

Лол :-)

1300 страниц - это фигня ваще по сравнению с описанием любого более-менее работящего процессора.

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

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

Это в случае с Си :-) И это действительно гораздо более важные знания, чем умения пользоваться алгоритмами из STL :-) Да и знания Си гораздо важнее, чем знания цепепе для любого серьёзного программёра :-)

ежедневное повышение квалификации - это не прихоть, не достижение, это просто минимальное необходимое требование.

Просто некоторым кажется, что изучение цепепе - это и есть повышение квалификации :-)

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

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

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

проблема в том, что в 2016 году «камни» работают на архитектуре 60 (или сколько там?)-летней давности.

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

А ты отлично понимаешь суть. именно, на тысячу - один (в самом лучшем случае).

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

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

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

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

Ты лучше объясни ему, сколько миллисекунд в часе.

Давай, лучше ты объясни мне, грамотей высшей квалификации :-)

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

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

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