LINUX.ORG.RU

Переписать Portage на Go, почему нет?

 , , , ,


1

3

Как издревле известно — портаж работает медленно даже при наличии SSD и различных хаках.

Почему не переписать бы его на таком быстром и легко поддерживаемом языке как Go?
Работать будет минимум в 10 раз быстрее, т.е. если вы ранее ждали разрешение зависимостей 10 секунд, то теперь это будет практически моментально.

Что скажете? Или работает медленно не по причине питона?



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

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

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

О, не ты первый и не ты последний с такой идеей. Взгляни на Paludis (особенно на википедии). Проблема, с моей точки зрения, в том, что portage вжился в генту как explorer.exe вжился в венду.

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

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

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

что же тут сложного, не ракетная наука поди.

не ракетная, но компутерная

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

Проблема, с моей точки зрения, в том, что portage вжился в генту как explorer.exe вжился в венду.

Ну по сути да и нет, действительно, «гента» это только портаж (обслуживание пакетов, симлинков) и openrc, кажется. А вот где портаж участвует в жизни системы кроме того, что связанно с пакетами и куда оно могло вжиться, мне не совсем понятно.

kep
() автор топика

Paludis есть на крестах - заменяет почти полностью (хотя портаж всё равно из системы без крови не выдрать, ну так хоть рядом стоит и не мешает). Работает быстрее портажа, но не реактивно всё же.

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

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

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

пройтись по зависимостям (и их зависимостям), по сути обработав текстовую информацию со строгими критериями (версия не больше, не меньше, равно, с таким флагом или без) — что же тут сложного

Бгг.

Да, сделай это!

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

Да, сделай это!

Не я, но тыщи горутин сделают это.

Сейчас большую часть питоньего трешака переписывают на Голанг, вычисления, наука и прочее, именно по этой причине.

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

Он уже зарелизился и устаканился, сам поначалу из-за этого сторонился. А сейчас ничего, сойдёт.

Вот PHP'шники, к примеру, живут от релиза до релиза, а потом разницу переучивают - и ничего. Раст уже какое-то время как перестал ломать синтаксис.

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

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

Окей.

Ты делаешь какое-то действие с пакетами.

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

Тебе нужно починить и «распутать» этот граф:

1) Определить конфликты (циклы, отсутствующие связиюз-флаги), мешающие распутыванию

2) Понять, какие пакеты необходимо компилять и в каком порядке. Причем, этот порядок тоже будет графом, т.к. компилять можно несколько пакетов одновременно.

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

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

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

Не я, но тыщи горутин сделают это.

Миллионы их, ага.

Сейчас большую часть питоньего трешака переписывают на Голанг, вычисления, наука и прочее, именно по этой причине.

Бгг. Ну давай, начинай. Зафейлишься еще до начала.

tailgunner ★★★★★
()

Работать будет минимум в 10 раз быстрее

Пруф?

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

Для тебя одна секунда — это почти моментально? Да вы, батенька, тормоз.

Что скажете?

Ненужно и не взлетит так же, как не взлетел Cportage и прочие *portage-и

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

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

kep
() автор топика
Ответ на: комментарий от kravich

Я не ОП и расскажу не подробнее, но более ёмко: не осилил.

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

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

Тут выше говорят, что там беда еще в архитектуре. Охотно верю.

Ну и судя по тому, что PyPy дает ускорение далеко не всегда, стоит просто выкинуть все это нафиг и переписать. Можно на том же питоне, но нормально переписать.

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

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

А если по 30-40 минут? Сразу после введения сабслотов портаж тормозил как сучка, потом починили.

hateyoufeel ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

Ты не прав. Кот, по крайней мере, занимается полезным (для него) делом

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

Пиши тогда на Common Lisp. Вот уж что точно менять не будут. И остальные профиты (в поддерживаемости и быстродействии) сохранятся.

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

Stage вроде распространяется в бинарном виде, а Go генерирует статические бинари со всем внутри.

Не то чтобы идея автора была хорошей

vertexua ★★★★★
()

Одобряю вашу идею, начинайте писать.

Deleted
()

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

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

зачем конвертер нужен-то? Программа будет обрабатывать ебилды напрямую/

kep
() автор топика

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

anonymous
()

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

и да, ограничение по версии пакетов это только один из многих параметров..

врочем возможно что я еще раз попробую «взять штурмом эту гору»

ZuBB ★★★★★
()

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

nikolnik ★★★
()

надо перевести все в бинарный вид,сделать «препостройку» деревьев и зависимостей и версий...всего дерева-на сервере

тоесть распаралелить задачу чтоб сервер делал половину работы и отвечал готовой выборкой(отчасти готовой)

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

это касается всех пакетных менеджеров(и учитывая что портраге работает гдето с 10x большей информацией чем пакетные менеджеры-то темболее)

sup9999
()

Когда хоть вы свалите обратно в школу до конца.

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

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

все верно

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

тоесть да нужна сортировка и проработка шаблонов для всего

и сделать систему постройки более крупных шаблонов-сценариев из более мелких...

дофигища работы,просто годы на самом деле

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

новенький?

что?

Дата регистрации: 24.09.2012 15:47:21

kep
() автор топика
Ответ на: комментарий от Freyr69

Странный какой. Альтернативы это всегда хорошо, а к systemd всё гвоздями приколачивают. Одна из догм gentoo это свобода выбора - с systemd дефолтом этого не выйдет.

И да, пакетный менеджер это основа дистрибутива, по сути сам дистрибутив отчасти. Пускай и с трудом, но в gentoo его можно сменить - уже что-то. Можно ли сказать это о, например, apt в debian или rpm в красношапках?

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

apt в debian или rpm в красношапках?

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

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