LINUX.ORG.RU

Pijul 0.11

 , , ,


3

6

Вышла новая версия Pijul — свободной системы управления версиями, основанной на теории патчей и написанной на языке Rust.

Pijul развивает идеи Darcs — Pijul быстрее, лучше, в нём решена проблема экспоненциальной сложности слияния и поддерживаются ветки (для всех, кто спросил и еще спросит «чем оно лучше Git» - ссылка на FAQ)

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

Улучшения в версии 0.11:

  • Добавлено частичное клонирование подкаталогов: pijul clone --path и pijul pull --path. При этом скачиваются только те патчи, которые затрагивают указанный подкаталог.
  • Добавлен парсер ~/.ssh/config — теперь Pijul будет автоматически использовать настройки псевдонимов хостов, SSH-прокси, ключей и т. д.
  • Внутренняя архитектура переведена на использование библиотеки Tokio — де-факто стандарта для асинхронного программирования на языке Rust. Минус велосипеды, новичкам будет проще разобраться в коде Pijul.
  • Исправлено много мелких и две крупные ошибки. Одна из них приводила к падению производительности при использовании pijul record, другая в некоторых случаях приводила к изменении содержимого патчей и файлов после клонирования.

Для нужд Pijul автором также развиваются вспомогательные библиотеки:

  • Thrussh — реализация клиента и сервера SSH на языке Rust.
  • Pleingres — клиентская библиотека, реализующая сетевой протокол PostgreSQL на языке Rust.
  • Sanakirja — хранилище «ключ-значение» на языке Rust, основанное на B-деревьях и поддерживающее транзации (аналог LMDB). «Sanakirja» по-фински означает «словарь».

Автор также разрабатывает Pijul Nest — аналог GitHub на основе Pijul и Rust. К сожалению, Nest пока не является свободным проектом.

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



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

первая фс - частный случай второго. По-твоему выходит, что первая структура, которая «по определению должна допускать ссылки», может содержать циклы. Так?

Нет. Структура без циклов - частный случай структуры, допускающей циклы.

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

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

Зачем? Чтобы порог входа повыше был?

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

И это по-прежнему не идиоматический код.

Там вообще не про идиоматичность, не путай. А про «страшный и ужасный» синтаксис Rust на примере лайфтаймов.

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

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


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

Да, читается странно. Я расшифрую.

Это как 5-конечная отвёртка-звёздочка. Сама по себе она не нужна. Но если вместе с ней изобрести винты-звёздочки, и завинтить этими винтами все айфоны, то она внезапно окажется очень нужной. Хотя можно было не извращаться, а взять обычные винты и обычную отвёртку.

Также и с гитом. Сам по себе индекс не нужен. Коммитить отдельные куски файла можно и без него: hg commit -i так и делает — просто спрашивает, какие куски файла я хочу скоммитить. Но да, мы в гите придумали бесполезную штуку, а потом с её помощью героически решили проблему, которую намного легче и понятнее было решить без неё.

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

Чтобы получился еще один хаскель. Вот тогда это будет язык так язык, вылитый хаскель!

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

Спорить с тобой дальше не хочу. Ты слишком сильно веришь borrow-checker. Это еще одна стат. проверка кода встроенная в сам язык, еще одна эврисика. Хочешь гарантий, посмотри в сторону ats-lant. Только там ты задолбаешься воевать с теоремами, да и синтаксис там тоже марсианский, как в расте. И написана она одним человеком, но хорошо теоретически подкованным.

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

История исправлений веселая. Ссылки, циклы, ссылки, циклы... Ненене, Недевид Неблейн, ты уж определись.

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

Залогинься.

Хорошая шютка, таащ майор модератор.

Я уж определился.

Нет, ты давно уже поплыл как затычка в теме.

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

История исправлений веселая.

Залогинься.

Хорошая шютка, таащ майор модератор.

Ну а что? Анонимусам история правок не видна, так что ты регистрант, пишущий из-под анонимуса.

ты давно уже поплыл как затычка в теме.

Я так понимаю, что спор о циклах закончен? Ну и славно.

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

Ну а что? Анонимусам история правок не видна.

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

Я так понимаю, что спор о циклах закончен? Ну и славно.

В том то и дело, ты не знаешь о чем спор, толи о циклах, толи о ссылках. Ленин в ссылке. Или в цикле?
Взял и обвинил привилегированного члена в незнании. Вот такой, вот, я анонимус.

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

В том то и дело, ты не знаешь о чем спор, толи о циклах, толи о ссылках

Ну как же...

Pijul 0.11 (комментарий)

обнаружить и разбить цикл не должно составить проблем.

Сразу видно, д'Артаньян. Обнаружить - это поиск в глубину ( сложность O(n) )

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

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

Ну как же...
<Тут ссылка, создающая цикл>

А ты харош. Просто кросавчег. Тролль -65536 уровня
Лучше изучай свою систему, привилегированный ты наш. Я никогда не регистрировался здесь.

anonymous
()

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

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

Cmake на винде со всеми проверками работает сильно дольше

yoghurt ★★★★★
()

Чем он лучше git?

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

Но в винде fork() и exec() делаются через адские хаки с CreateProcess.

Кто-бы сомневался, что в винде всё сделано через одно место. Если у windows (или какого-нибудь фотошопа) были открытые исходники, то я уверен, что там бы нашли столько багов и «фич», что ядро Linux и весь GNU-образный софт оказался бы верхом совершенства и духовной чистоты.

gtk3 ★★★
()

Вы лучше скажите, чем оно лучше Darcs?

Давайте разберем по пунктам

Pijul быстрее

За счёт чего? Я знаю, что в хаскеле GC, а в расте линейные типы. Но нормальные GC уже давно не тормозят, если памяти с избытком. В DCVS для чего отказываться от GC, сколько же оно жрёт? О_о

лучше

Ок

в нём решена проблема экспоненциальной сложности слияния и поддерживаются ветки

Что мешало запилить эти фичи в оригинальный проект? Незнание Haskell? Несговорчивый редиска - автор Darcs? NIH синдром? Something else?

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

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

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

Если у windows были открытые исходники, то я уверен, что там бы нашли столько багов и «фич»

Они открыты, в некотором роде. Гуглить «Windows Research Kernel sources». Да и утечки исходников много раз были. Что-то не много багов нашли... Помню какой-то баг в парсинге картинок. Что-то ещё?

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

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

Вот! Как раз таки GC тормозят, когда памяти с избытком. Парадокс. Хотя все ожидаемо. Видимо растет сложность алгоритмов.

Поэтому все интереснее системные языки, такие как C++ и Rust.

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

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

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

Pijul быстрее

За счёт чего? Я знаю, что в хаскеле GC, а в расте линейные типы.

Во-первых, другие алгоритмы; во-вторых, в Rust нет ленивости, за счет которой потребление памяти Darcs иногда уходило в небеса (подробностей не знаю, но так говорил разработчик).

И в Rust афинные типы.

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

По той же ссылке на SO рассказывают про ZwCreateProcess.

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

Это винда, детка...

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

Меня использование впихуля вообще не интересует. Но интересует, получится ли у его авторов подтвердить целесообразность использования Rust.

Скорее это может получится (или нет) у более известного hg, который начали переписывать на rust https://www.mercurial-scm.org/wiki/OxidationPlan

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

и при этом будут работать без сборщика мусора!

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

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

Что мешало запилить эти фичи в оригинальный проект? Незнание Haskell? Несговорчивый редиска - автор Darcs? NIH синдром? Something else?

/me разбил себе нос фейспалмом

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

Скорее это может получится (или нет) у более известного hg, который начали переписывать на rust

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

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

И по той же ссылке написано, что они пробовали её использовать, но не вышло

Главная причина — это поддержка Win98.

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

В книгах всяких реверсеров описано достаточно подробно.

Непонятно даже, действительно ли это форк, в смысле, продолжает ли новый процесс работу из точки вызова (как это делает fork) или перезапускается из entry point (как это делает CreateProcess)

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

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

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

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

Это как хаскель и си сравнить. Оно настолько хорошее и принципиально иное, что даже неюзабельно.

И не смотря на неюзабельность си на нём тонны софта

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

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

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

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

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

Умные указатели прекрасно ломаются от циклических ссылок. Дальше наступает несколько типов типа слабых и сильных ссылок и прочие радости

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

Это как хаскель и си сравнить. Оно настолько хорошее и принципиально иное, что даже неюзабельно.

И не смотря на неюзабельность си на нём тонны софта

Он намекал на хаскель :)

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

Большая часть населения земли - неграмотные идиоты, а разработчики ПО относят себя к грамотным, стало быть могли бы и напрячь извилину.

Сколькими языками владеешь ты, о мудрейший?

А вам рекомендую попробую вообразить в уме, как вы предлагает своему руководителю процесс перевода вашего офиса с венды на ОС «Пидора». Можете даже привести аргументы, что весь мир срал на русских, еще смешнее будет звучать. «Иван Иваныч, нужен закупить 10 дистрибутивов Пидоры и Пихуля». Угу.

И в чём проблема? Матерится значит можно, но вот название какое-то произнести - непосильная задача, да?

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

В книгах всяких реверсеров описано достаточно подробно.

Можно, кстати, ссылку или хотя бы цитату этого подробного описания?

Конечно, использовать функции по книгам реверсеров — тот ещё мазохизм. Но да ладно, лучше так чем никак.

Только вот... так оно не работает.

Главная причина — это поддержка Win98.

Это одна из причин. Для Ъ:

two attempts to use ZwCreateProcess on NT-based systems failed for one reason or another.

А конкретнее:

It's a bad idea because it doesn't work. You can certainly create a forked child with NtCreateProcess, but without being able to connect it to csrss and the rest of the win32 subsystem, this new process is useless.

Увы.

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

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

И объект висит в памяти до конца времён программы. Идеально.

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

You can certainly create a forked child with NtCreateProcess, but without being able to connect it to csrss and the rest of the win32 subsystem, this new process is useless.

CreateProcess работает не через NtCreateProcess, а святым духом, раз у него получается подключиться к win32 subsystem?

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

Да потому что на сишке с перлом могут писать десятки разных людей многие годы

Пишут-пишут, да никак не напишут.

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

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

Этого мало https://ultradefrag.net/doc/man/Windows NT(2000) Native API Reference.pdf#pag... ?

Благодарю.

SectionHandle

Optionally specifies a handle to an image section that grants SECTION_MAP_EXECUTE access. If this value is zero, the new process inherits the address space from the process referred to by InheritFromProcessHandle

Кстати, что подразумевается под «inherits the address space»? Shared? CoW? Каких сегментов — код, стек, данные (которые из)?

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

Специально для страдальцев по счётчикам ссылочек в Rust возможна поддержка других сборщиков мусора https://boats.gitlab.io/blog/post/shifgrethor-i/ . И это всё средствами языка.

Отныне можно писать на языке без сборщика мусора с использованием сборщика мусора. Прекрасно, да?

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

Отныне можно писать на языке без сборщика мусора с использованием сборщика мусора. Прекрасно, да?

Пока нельзя. И, если будет можно, это будет отвратительно, ибо фрагментация экосистемы.

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

Там вродее завезли async/await «искоробки».

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