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)
Ответ на: комментарий от NextGenenration

Чуть выше писал про зацикливание. A ссылается на B, B ссылается на A. Что Arc, что Rc считают ссылки.

Ага:

For example, a tree could have strong Arc pointers from parent nodes to children, and Weak pointers from children back to their parents.

Еще?

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

Кто сказал что зацикливание возможно исключительно между родителем и детьми? Или слабые указатели можно проставить автоматически?

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

Ну? Так в чём проблема? Вам не нравится что там мини GC в кишках?

Изначально я возражал против сообщения vertexua

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

Который в свою очередь поддержал dave

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

Фактически программы на rust могут как содержать сборщик мусора, так и не содержать. Это наиболее точное утверждение.

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

Это как с процессорами amd: кто-то когда-то давно поджарил на нём яичницу и некоторые люди до сих пор продолжают боятся amd. Не только старых, но и новых процессоров.

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

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

Ы.

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

Исходя из этой темы, единственный кто не в теме - это вы.

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

Кто сказал что зацикливание возможно исключительно между родителем и детьми?

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

Или слабые указатели можно проставить автоматически?

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

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

и откуда там мягкий знак? что за мода добавлять мягкий знак которого в английском языке нет.

Уважаемый полиглот не обратил внимание, что речь идет об испанском языке, а именно на нем говорят в странах Латинской Америки, в том числе и в Мексике?

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

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

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

Повеселил с утра)

В плане управления памятью rust очень напоминает современный си++, где почти не нужно писать явных delete. Можно сказать, что в rust есть деструкторы, но называются они иначе: Drop.

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

Отсюда утверждение о том, что в safe rust почти нет ручного управления памятью. В unsafe же rust - его до фига, как в сишке.

Так понятнее?

Единственное, чего мне сейчас очень не хватает в rust, так это оптимизации PGO. Без этого вряд ли можно серьезно говорить о том, чтобы догнать и перегнать код, скомпилированный компиляторами си++.

Скажи лучше, ты знаком с языками rust и cи++, чтобы делать такие выводы космического размаха?

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

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

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

Май нэйм из Вася Пупкин энд ай пранаунс pijul эз пайджал!

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

PGO. Без этого вряд ли можно серьезно говорить о том, чтобы догнать и перегнать код, скомпилированный компиляторами си++.

Самая странная претензия к Rust в этом топике.

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

как встраиваемый язык

Ты вообще не понимаешь, о чем говоришь.

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

У меня перфекционизм по поводу одной вычислительной штуки. Тебе не понять!)

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

исключение, подтверждающее правило

Нет. Наличие исключения из правила подтверждает правило при условии упоминания этого исключения в правиле. Т.е. если бы ты сказал «ничего, кроме xmonad!», аргумент «а xmonad?» подтверждал бы твою правоту. А так - нет, не подтверждает.

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

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

Это еще почему?

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

речь идет об испанском языке, а именно на нем говорят в странах Латинской Америки

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

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

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

В этом треде откуда-то набралось идиотов, которые требуют абсолютно точных формулировок.

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

И как оно по-португальски будет? Пижул? Название кстати плохое не потому что пробивает русских школьников на ржаку, а потому что хз как его произносить. Вот америкосы (белые) точно не скажут пихуль.

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

В unsafe же rust - его до фига

Не совсем так. В unsafe rust его обычно тоже нет.

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

> Я не могу в безопасном коде одновременно иметь несколько изменяемых переменных.

Можешь, в Rust есть Arc и Rc.

Уточнение: без типов с interiour mutability не заработает

~~@~~

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

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

Нет, население Бразилии — чуть меньше половины в Южной Америке. Заметная часть остального населения говорит по-испански. И вся Центральная Америка — тоже испанский. Ну и, практически второй официальный язык США (во всяком случае, дубляж на испанском видел в самых неожиданных [для русского] местах).

Так что, pijul может вызывать некоторые проблемы по-первому разу, но, в целом, это английский, там традиционно читают, «как принято», а не «как написано». Поэтому, например, Luján — это Луха́н, а не как-то ещё.

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

не 57%, а 37% (данные за 2017 г.)

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

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

У тебя hg головного мозга и застарелая обида на git. git конечно не червонец, но загонять на индекс, никогда его по делу не использовав, такая себе история.

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

Но ведь тебе больно, что отношение распростронённости hg и git не отвечают твоему мнению об архитектурной их стройности.

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

Доктор, я знаю, что ТНБ на стороне больших батальонов, а не стройных архитектур. И, прикинь, я с самого начала понимал, что Git выиграет - проблема была в том, что им было невозможно пользоваться, когда я выбирал DVCS.

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

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

Ого, то есть на 20-й минуте дошёл до стадии принятия, это успех.

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

Так работает же. Осталось осознать принятие, полноценно попользоваться и жить дальше.

aedeph_ ★★
()
Ответ на: комментарий от quantum-troll

Ручки у тебя из жопки, растаман фигов.

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

Лолшто? Приятно услышать мнение диванного эксперта виндогитюзера!

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

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

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

Это пять! Мое почтение многоуважаемый, хуль Вы так поздно в треде отписались? Как боженька все разложил.

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

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

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

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

Ну да ну да. Зачем же нужен чекер? Не для того ли, чтоб тупой юзер не мог иметь, допустим, ссылку на элемент вектора, но при этом сам вектор удалить? А на счёт GC: хотелось бы посмотреть на реализацию персистивных структур данных на Расте. ИМХО, те кто утверждают что GC не нужен и что Раст заменит С/С++ — инженеры так себе.

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