LINUX.ORG.RU

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

 , , ,


1

4

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

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

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

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

★★★★★

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

Ты утверждаешь, что «Си близок к асму». Что такое близок, в таком случае?

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

АПХАХАХАХАХАХАХАХАХАХАХАХАХ ГОСПОДИ ОТКУДА ЖЕ ТЫ ВЫЛЕЗ-ТО

Это ты сейчас детсад демонстрируешь, недоросль?

/me тихо рыдает в тряпочку.

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

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.3. 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.

A volatile declaration may 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 shall not be ‘‘optimized out’’ by an implementation or reordered except as permitted by the rules for evaluating expressions

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

А что про «часто» - так это следствие, как правило, вышеописанного (посмотри во что твой for в машинных кодах порой превращается без волатайла)…

Sm0ke85
()
Последнее исправление: Sm0ke85 (всего исправлений: 3)
Ответ на: комментарий от no-such-file

А зачем на них влиять? Это реалтайм веб-сервис с гарантией обработки за 100мс? Я таких не знаю ни одного. Можно пример?

Выше всё написано. Потому что будет значительное количество недовольных пользователей. Как минимум.

Если у тебя 10% запросов тормозят из-за GC, то ты просто криворукий и не умеешь в правильное распределение нагрузки.

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

Кто реально занимается разработкой таких сервисов, тому и объяснять ничего не нужно: и сами сталкивались, и кучу статей читали, и доклады видели.

А теоретикам объяснять бесполезно. С опреленного момента времени, у меня складываеся впечатление, что на ЛОР - огромное количество теоретиков, которые вообще не работают в IT, или точно не разработчики. Является он, например, админом, и понятия не имеет о сложностях разработки. т.к. самое большое, что писал - bash скрипт на 1000 строк, или Perl-скрипт. Но хрипя и брызгая слюной указыает эти «неудачникам-снобам»: низя Rust! Низя ORM! Низя то! Низя это! Мне не нравится!

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

тогда представь на обозрение высокоуровневый ЯП по твоему мнению ближе к асму…

Всё ещё не понимаю, что такое «близко к асму», но пусть будет, например, C– (Си минус минус). А если ещё ближе, то LLVM IR. Съел?

Или это не близко к асму? Что такое близко к асму-то?

я тебе и говорю что «может» вести себя анамольно

Там нет никакой «анамольности». Всё происходит ровно так, как написано в стандарте.

hateyoufeel ★★★★★
() автор топика
Последнее исправление: hateyoufeel (всего исправлений: 1)
Ответ на: комментарий от no-such-file

Это реалтайм веб-сервис с гарантией обработки за 100мс? Я таких не знаю ни одного. Можно пример?

Любой видео стриминг типа нетфликса или ютуба.

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

Всё ещё не понимаю, что такое «близко к асму», но пусть будет, например, C– (Си минус минус). А если ещё ближе, то LLVM IR. Съел?

Я уверен что простых ЯП море, но то что ты перечислил работает в некоей среде (по-умолчанию, медленнее, сложнее, больше ресурсов требует), но победил Си: из-за практически прямого преобразования в машинный код (буквально 1 команда С бывает = просто 1 команде асм), а также понятный стандарт (ты можешь сегодня скомпилировать иходники 20-летней давности), прямое обращение к памяти, возможность напрямую использовать асм, легковесный компилятор, практически отсутствующий рантайм по сравнению с остальными ЯП - это все делает Си самым близким к асму, по сути «надстройкой над асм с небольшим рантаймом»…

Там нет никакой «анамольности». Всё происходит ровно так, как написано в стандарте.

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

И вот дополнение для понимания «аномальности»:

https://en.wikipedia.org/wiki/Volatile_(computer_programming)

Standards defects While intended by both C and C++, the current C standard fails to express that the volatile semantics refer to the lvalue, not the referenced object. The respective defect report DR 476 (to C11) is still under review with C17.[7]

Compiler defects Unlike other language features of C and C++, the volatile keyword is not well supported by most C/C++ implementations - even for portable uses according to the C and C++ standards. Most C/C++ implementations are buggy regarding the behavior of the volatile keyword.[8][9] Programmers should take great care whenever using the volatile keyword in C and C++.

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

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

Про UI любой сложности — преувеличение.

Вовсе нет. Любые капризы можно сделать.

Gdi, wine

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

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

Я же написал критерий win/linux/osx, какой win32?

Win32 + wine на лялехе и маке и нативно на Windows же. У меня так Winamp работает, когда половина плееров отваливаются каждый апдейт.

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

Чуть реже, чем всегда, GUI-программе нужны простейшие контролы

Если только нужна спарстанская софтина, то ок. Но если нужно делать по замыслам дизайнера, с плавными переходами, анимациями и свистоперделками, то qml божит. И мне думается синтаксис qml приятнее, чем на web/html/js/css делать.

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

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

Электронная подпись в Adobe Acrobat Reader — достаточно серьезно для работы?

sarumeister
()
Ответ на: комментарий от no-such-file

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

mittorn ★★★★★
()
Последнее исправление: mittorn (всего исправлений: 1)
Ответ на: комментарий от no-such-file

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

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

Нет, эта проблема присуща всем языкам с GC

А как же всяческие асинхронные gc?
gc не обязательнол должен ставить раком все потоки, как делает это в java

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

Да какой нафиг wine? На выходе херня с вырвиглазным видом. Где там дизайн любой сложности на win api?

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

Опиши кейс, как и для чего оно используется?

Кейс электронной подписи в Adobe Acrobat Reader? Врачи, юристы, нотариусы, немного корпоративный сектор и бухгалтерия.

Тут важно, что обладатель крипто-токена должен быть линукс-энтузиастом — чтобы работать с Adobe Acrobat Reader под линуксом, а не на виндовз и не на макбуках. И если я правильно помню, под убунту он идет как snap-пакет два в одном: wine+виндозный ридер. И если не ошибаюсь, этим пакетом подписи не получится ставить. Надо взять отдельно wine, отдельно накатить туда виндозный акробат-ридер и туда же виндозный драйвер крипто-токена.

Думаю, не надо объяснять, что компания Адобе — флагман дизайна. Что пдф-документы ближе к полиграфии, чем к гиковским PNG. Соответственно, у Adobe Acrobat Reader референсный рендеринг пдф и референсная валидация электронных подписей внутри.

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

Это отличная идея!

Отличная от чего? На каждый вызов каждый раз проверка на ошибка/не ошибка. При этом в 99.9% там нет ошибки и проверка просто жрёт время проца.

Нет, UB ты не получишь. Получишь панику (вызов panic!()).

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

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

Отличная идея до такой-же степени, как и ручные лайфтаймы. Примерно никто не пользуется в свежем коде этой «отличной» идеей. Аналогичная фигня будет и с проверками каждого чиха. Современное «фигак-фигак и в продакшн» прям заставляет забивать на всё это вот… В противном случае и в С проверяли-бы коды возврата. Но это всё не отменяет слов про обработку исключений, которые легко видно в коде и в результате неотловленного исключения получится падение программы, в отличии от .unwrap где-то в чепыжах кода.

Можешь.

Нет не можешь. Зависимости зависимостей и зависимости зависимосетй зависимостей ты не контроллируешь никак без патчей.

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

Q-Master
()
Последнее исправление: Q-Master (всего исправлений: 1)
Ответ на: комментарий от sarumeister

Так подожди, адоб акробат ридер позволяет подписывать pdf-ки своим ключем и потом открывать на других компах и проверять, что подписал именно тот, чье имя указано в подписи? Типа как https у сайта? А где хранится цепочка сертификатов в таком случае? В самом адоб акробат ридере?

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

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

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