LINUX.ORG.RU

Mergiraf — новый движок разрешения конфликтов в коде

 , , ,


2

5

Mergiraf – новый движок для git merge, учитывающий синтаксис языков программирования и позволяющий в автоматической режиме решать конфликты, например, в случаях, где изменения в одной строчке производятся над независимыми синтаксическими элементами или где порядок изменений не играет роли. Список поддерживаемых языков программирования и форматов данных весьма обширен. Для работы с исходным кодом используется библиотека Tree-sitter, что также позволяет легко добавлять поддержку новых языков при наличии парсера для TS.

Сам Mergiraf написан на языке Rust, исходный код опубликован на условиях GNU GPL 3.

>>> Документация по использованию

>>> Исходный код

★★★★★

Проверено: hobbit ()
Последнее исправление: unfo (всего исправлений: 6)
Ответ на: комментарий от snake266

Царь конечно был повеселее, да и в языке разбирался и мог портянку кода написать, чтобы доказать что оппонент не прав. А тут… А тут соревнование у кого printf быстрее и отрицание стандарта языка. Я скучаю по старым временам…

Ну так с вами о коде говорить некогда, ибо вон епископ стандарта Си volatile свой славит, говорит его вера самая верная, не до кода ему, да и не в портянках видимо дело… Да и уметь надо в Си, а не портянки пересылать…

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

Сомнительно, особенно если учитывать что ты не указал «железки» и причину «Да не, хорошая работа была»

Может тебе еще фотку из душа скинуть?

а не просраныые лета это на верное как ты: пять лет на том-сем и пошел отседа?

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

snake266 ★★★
()
Ответ на: комментарий от u-235

Так ты же в силу тупости игнорируешь неугодные факты.

Сказал клоун, который заагрился на замечание, что код не работает, и он действительно не работал, ахах, давай, наваливай))))

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

Да и уметь надо в Си, а не портянки пересылать…

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

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

Может тебе еще фотку из душа скинуть?

Да нет, не надо, я и так понял что ты не подумавши ляпнул.

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

Какие вы ребята забавные, когда не вас касается, то «просранные года», а когда вас, то «я вполне доволен».

И «выше по стеку» - это я не понял совсем (по уровню абстракции), хотите из эмбдед в игроделы податься? Просто стек, как бы, дектуется реальностью…

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

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

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

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

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

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

стандарт - это результат, необходимость, следствие, т.е. появилась проблема - появилось решение - зафиксировали в стандарте

В каком же году в стандарте появился volatile?

u-235
()
Ответ на: комментарий от hateyoufeel

Кем исключено? У меня другая информация.

Теперь вижу, ибо присутствует флаг O2.

Любой код – просто указание компилятору. Тем не менее, volatile, const и так далее вполне влияют на выполнение кода.

Это не верно в корне, и ты сам это знаешь.

Какой именно отпечаток налагает? Объясни. Мы почитаем, любопытно жеж!

volitile, по сути, запрещает оптимизировать - отсюда вытекает его сфера применения и сучаи его применения.

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

Пока я не вижу, для чего бы мне Раст. Если вдруг мне придется реализовывать формально верифицированные модели, то буду использовать те языки, в которые генерится модель. Знаю, что какой-нибудь event-B умеет в Аду. Если Раст когда-нибудь обретет хотя бы что-то типа ACSL, то, может быть и он сгодится.

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

gns ★★★★★
()
Ответ на: комментарий от u-235

Еще в первом издании Кернигана, который вместе с задачником Фьюера, был, ЕМНП.

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

Кем исключено? У меня другая информация.

Теперь вижу, ибо присутствует флаг O2.

Молодец! У нас прогресс!

Любой код – просто указание компилятору. Тем не менее, volatile, const и так далее вполне влияют на выполнение кода.

Это не верно в корне, и ты сам это знаешь.

Это верно, и я сам это знаю, потому что я это написал.

volitile, по сути, запрещает оптимизировать - отсюда вытекает его сфера применения и сучаи его применения.

Нет, volatile не запрещает оптимизировать. Volatile переводит обращение к объекту в разряд наблюдаемых побочных эффектов. Да, это сужает класс применимых оптимизаций – в частности, модификацию таких объектов нельзя выкинуть – но не исключает их полностью.

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

Молодец! У нас прогресс!

Интересный ты я посмотрю, так с флагом -O0 или без флага попробуй и все встанет у тебя на места, а то я смотрю ты сам-то в вакууме да еще и в Цпп почему-то сишный код рассматриваешь (кстати, опять в Срр пробуешь, а речь ведешь за С), а тут удосужился показать таки мысли свои… Конечно прогресс, я тебе про это и пишу постоянно…

Это верно, и я сам это знаю, потому что я это написал.

Я намекну, что есть еще дериктивы препроцессора, да и флаги компиляции получается на большинство твоих «указаний» плевать хотели. Ты ж посмотри без флагов во что код превращается в асме и действительно поуказывай например volatile’ом и увидишь разницу… Да и «6.7.4 Type qualifiers» из стандарта намекает, что это что-то отдельное…

Нет, volatile не запрещает оптимизировать. Volatile переводит обращение к объекту в разряд наблюдаемых побочных эффектов. Да, это сужает класс применимых оптимизаций – в частности, модификацию таких объектов нельзя выкинуть – но не исключает их полностью.

На:

An object that has volatile-qualified type may be modified in ways unknown to the implementation
or have other unknown side effects. Therefore, any expression referring to such an object shall be
evaluated strictly according to the rules of the abstract machine, as described in 5.1.2.4. Furthermore,
at every sequence point the value last stored in the object shall agree with that prescribed by the
abstract machine, except as modified by the unknown factors mentioned previously.150) What
constitutes an access to an object that has volatile-qualified type is implementation-defined.

A volatile declaration can be used to describe an object corresponding to a memory-mapped input/output port or an object accessed by an asynchronously interrupting function. Actions on objects so declared are not allowed to be "optimized out" by an implementation or reordered except as permitted by the rules for evaluating expressions.
Sm0ke85
()
Ответ на: комментарий от Sm0ke85

И «выше по стеку» - это я не понял совсем (по уровню абстракции) […]

Да, по уровню абстракции. Думаю или продолжить в High-Performance Computing (совмещал в последнее время с embedded) или податься в системщину или на худой конец в бэкэнд-разработку.

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

В каком же году в стандарте появился volatile?

google в помощь… Ты мысль сформируй, потом пиши, а не сразу пиши…

Для тех, кто в танке, напомню слова одного альтернативно одарённого болтуна:

Вот интересно, а почему по твоему в стандарте вдруг появился volatile, вот не было его и вроде все ок было (и прерывания и многое другое, а volatile не было)…?

Так вот, volatile был в Си всегда.

u-235
()
Ответ на: комментарий от Sm0ke85

так с флагом -O0 или без флага попробуй и все встанет у тебя на места

Зачем мне это делать? Суть в том, что компилятор гарантирует, что для корректного кода поведение будет одинаковым в независимости от уровня оптимизации. Если же поведение различается, то либо в компиляторе баг, либо, куда более вероятно, у тебя в коде баг. Отсутствие volatile является как раз таким багом.

Да и «6.7.4 Type qualifiers» из стандарта намекает, что это что-то отдельное…

В стандарте нет никаких намёков, чувак. Там использует максимально сухой язык. Так недолго дойти и до того, что какой-нибудь пункт стандарта будет тебе намекать пойти убить Джона Леннона.

На:

Ага. Я тебе эту цитату выше уже кидал, а ты плевался и про «the rules of the abstract machine» писал, что нет никакой абстрактной машины, а только железо. Мне кажется, ты приближаешься к TOP 5 моих любимых ЛОРовских шизофреников.

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

Кривые компиляторы, вот почему. В коде имеется side-effect - генерация NPE, но оптимизатор его выкинул.

Tinker
()
Ответ на: комментарий от u-235

Так ты же в силу тупости игнорируешь неугодные факты.

Клоун, чтобы что-то утверждать нужно на руках что-то иметь, ты ж про факты только в бразильских сериалах слышал, ахах)))

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

Зачем мне это делать? Суть в том, что компилятор гарантирует, что для корректного кода поведение будет одинаковым в независимости от уровня оптимизации. Если же поведение различается, то либо в компиляторе баг, либо, куда более вероятно, у тебя в коде баг. Отсутствие volatile является как раз таким багом.

Я верно понял, что ты так и не понял что в том куске стандарта написано?

В стандарте нет никаких намёков, чувак. Там использует максимально сухой язык. Так недолго дойти и до того, что какой-нибудь пункт стандарта будет тебе намекать пойти убить Джона Леннона.

Отчего ж ты по написанному прочитать не можешь тогда? Опять включил режим «фантазер-зер-зер»)))) Ты вон выше опять нафантазировал, что для тебя одного порядка printf и volitile, и делаешь вид, что все Ок, привеД Наполеону передай в следущую вашу встречу по захвату земли Шумерской, ахахах)))…

Ага. Я тебе эту цитату выше уже кидал, а ты плевался и про «the rules of the abstract machine» писал, что нет никакой абстрактной машины, а только железо. Мне кажется, ты приближаешься к TOP 5 моих любимых ЛОРовских шизофреников.

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

Sm0ke85
()
Ответ на: комментарий от u-235

Так вот, volatile был в Си всегда.

Ага, как и Рим был всегда, и в школах крестьян учили, «давай до свидания», ахахах)))

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

Да, по уровню абстракции. Думаю или продолжить в High-Performance Computing (совмещал в последнее время с embedded) или податься в системщину или на худой конец в бэкэнд-разработку.

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

Sm0ke85
()
Ответ на: комментарий от u-235

Ты настолько порвался, что отрицаешь очевидый и легкопроверяемый факт?

Глянь-ка на него, какая «прелесть», 25 раз слово факт написал и ни разу не подтвердил, в лужу получается надул, слово факт из ниоткуда достал и рефлексирует, ахахах))))

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

Sm0ke85
()
Ответ на: комментарий от u-235

Гугол в помощь, смышлёный ты наш.

Только вот мне-то это зачем, не ты ли задался этим вопросом…???

Я в шоке, ребята вас там на фантазеров учили или на кого, это ж не нормально: вкинуть риторический вопрос и не оформить мысль, а потом рассказывать за «факты» и зеркалить фразы… Клоунада форменная, ахахх))

Sm0ke85
()
Ответ на: комментарий от u-235

Гугол в помощь, смышлёный ты наш.

а это для "немощи неспособной даже в «гугл»:

Ключевое слово volatile было добавлено в язык C в 1989 году вместе с выпуском стандарта C++2.0, когда C++ начал определять и стандартизировать язык C. Оно сообщает компилятору, что значение переменной может быть изменено непредсказуемо, например, из-за внешнего воздействия или другого потока. 
Sm0ke85
()
Ответ на: комментарий от Sm0ke85

АХАХАХА, а как же «volatile был всегда»?????

Назови стандарт до c89.

u-235
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.