The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

isomorphic-git, реализация Git на JavaScript

17.05.2018 11:29

Опубликован выпуск проекта isomorphic-git 0.13.0, в рамках которого развивается реализация Git на языке JavaScript, нацеленная на предоставление 100% переносимости с классическим Git и способная выполняться в web-браузере или в качестве модуля для платформы Node.js. Код проекта поставляется под лицензией MIT.

Проект изначально написан на чистом JavaScript (без компиляции в JavaScript при помощи Emscripten) и базируется на применении WebWorkers и ServiceWorkers. Isomorphic-git позволяет читать и записывать данные в локальные Git-репозитории, выполнять операции push и fetch с удалёнными репозиториями, например, с GitHub. Для работы с Git-репозиториями предлагается утилита isogit, поддерживающая большую часть команд git. Для встраивания отдельных возможностей Git в web-приложения предоставляется модульный API, позволяющий включать только необходимую функциональность. Как и в канонической реализации Git, в isomorphic-git все операции выполняются путём изменения файлов в каталоге ".git".

  1. Главная ссылка к новости (https://news.ycombinator.com/i...)
  2. OpenNews: В рамках проекта Gitlet развивается упрощённая реализация Git на JavaScript
  3. OpenNews: git.js - реализация Git, написанная целиком на JavaScript
  4. OpenNews: Компилятор Emscripten достиг возможности собственной пересборки
  5. OpenNews: GitHub выпустил Git LFS 2.4.0
  6. OpenNews: Выпуск распределенной системы управления исходными текстами Git 2.17
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/48615-git
Ключевые слова: git, javascript
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (59) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 11:34, 17/05/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +21 +/
    Но зачем?
     
     
  • 2.3, Аноним (-), 11:45, 17/05/2018 [^] [^^] [^^^] [ответить]  
  • +11 +/
    Чтобы набраться опыта, изучив тонкости JS. Всяко интереснее чем очередной калькулятор по учебнику.
     
     
  • 3.32, anonymous (??), 20:59, 17/05/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Неужели JS на столько сложен, что его тонкости можно только так изучить? А то тут фанбои совсем другое вещают...
     
     
  • 4.42, Аноним (-), 22:30, 17/05/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    https://youtu.be/RGkIsUBfanQ?t=1m20s

    Ну и дальше смотрите "why javascript is sucks".

     
  • 4.56, Аноним (-), 12:11, 18/05/2018 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Сложен. Но входной порог при этом низкий.
     
  • 4.58, macfaq (?), 12:29, 18/05/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Неужели JS на столько сложен, что его тонкости можно только так изучить?

    Наверное достаточно наличия книжки с названием "Javascript: The Good Parts" чтобы что-то заподозрить (:

     
  • 2.4, Аноним (-), 11:46, 17/05/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Чтобы называться так же, но быть несовместимым, очевидно же.
     
  • 2.14, Bitten Apple (?), 13:09, 17/05/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Для online IDE, например
     
     
  • 3.40, Вареник (?), 21:31, 17/05/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Для online IDE, например

    Непременно в телефоне, а лучше в "умных часах" :)

     
     
  • 4.55, Диносуслик (?), 11:45, 18/05/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Если брать тот же с9, то там нормальный гит, т.к. ОС запускается в контейнерах, гит нормальный и все как полагается.

    Зачем именно в JS - не ясно.

     
     
  • 5.65, Аноним (-), 16:29, 19/05/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Зачем именно в JS - не ясно.

    Скоро электрон перекочует в прошивку и JS сразу станет системным языгом, а старперы с их старыми плюсами и дривнющим си будят завидовать и кусать локди! Вот!

     
  • 2.28, Аноним (-), 18:41, 17/05/2018 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Затем, что под нормальной свободной лицензией, а не под вирусно-несвободным GPL.
     

  • 1.2, Аноним (-), 11:37, 17/05/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +13 +/
    Фронтендеры, успокойтесь уже.
     
     
  • 2.7, callbackjump (?), 12:16, 17/05/2018 [^] [^^] [^^^] [ответить]  
  • –21 +/
    Почему? Почему все думают, что JS медленнее нерушимого Си? Оптимизация движка JS скоро переплюнет оптимизации компилятора Си (кто в 21 веке пашет землю иголкой?), чего уже Rust ментально достиг, ускоряя свои имплементационные возможности стремительно завоёвывая умы думающих программистов.
     
     
  • 3.9, Аноним (-), 12:29, 17/05/2018 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Потому что тесты производительности не обманешь как и тесты на потребление памяти. Потому что си и с++ при правильной организации разработки и наличии статического анализа безопасней js-a. Потому что для С-подобных языков не нужен рантайм.
     
     
  • 4.11, Владимир (??), 12:45, 17/05/2018 [^] [^^] [^^^] [ответить]  
  • +/
    С-подобный это про синтаксис, javaScript как раз к ним и относится, так что вы тут некорректно выразились.
     
     
  • 5.13, Анониммм (?), 13:02, 17/05/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Есть Си-подобный синтаксис, да. Но в данном человек имел ввиду отсутствие вспомогательных средств для обеспечения работоспособности приложение, подобно тому, как работают программы, написанные на Си, и это не является некорректным выражением. Это всё равно что при упоминании экспоненты сразу думать про экспоненциальный рост.
     
  • 4.27, й (?), 18:25, 17/05/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > с++
    > не нужен рантайм.

    ага, а libstdc++ фикция и не существует.
    строго говоря, это такой же рантайм, т.е. имплементация stdlib, без наличия которой в системе ничего не запустится.

     
     
  • 5.29, Anonymus (?), 19:05, 17/05/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Статически линкуй
     
     
  • 6.38, Вареник (?), 21:30, 17/05/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Статически линкуй

    Рантайм - это все что обслуживает выполнение программы, чтобы main() вывело Hello World, но не включая ядро.

    Например: libc - рантайм С. Без разницы, статически или динамически прилинковать - это все равно будет рантайм для С программы.

     
     
  • 7.43, draw1 (?), 22:45, 17/05/2018 [^] [^^] [^^^] [ответить]  
  • –3 +/
    > Рантайм - это все что обслуживает выполнение программы, чтобы main() вывело Hello World, но не включая ядро.

    Ага. Но только во время ВЫПОЛНЕНИЯ, а не во время компиляции (по секрету: поэтому и называется RUNtime).

    После статической линковки можешь удалить то с чем линковал, а "hello, world" будет по прежнему выводиться. А это значит что во время выполнения не используется, то есть это не рантайм. По определению.

     
     
  • 8.46, Аноним (-), 01:42, 18/05/2018 [^] [^^] [^^^] [ответить]  
  • +/
    При чём тут статическая линковка вообще Просто рантайм будет идти вместе с прог... текст свёрнут, показать
     
  • 8.49, angra (ok), 03:08, 18/05/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Когда ты слинковал статически либу, ты фактически сделал ее копию внутрь бинарни... текст свёрнут, показать
     
  • 7.50, Аноним (-), 05:05, 18/05/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Рантайм - это все что обслуживает выполнение программы, чтобы main() вывело Hello World, но не включая ядро.

    а если bare-metal запускаешь вывод Hello World в UART - что будешь считать рантаймом?

     
  • 5.37, Crazy Alex (ok), 21:29, 17/05/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Ерунду говоришь. Без этой либы на плюсах приложение мобрать можно (она и сама на плюсах, собственно). А на джаваскрипте без рантайма жить нельзя. Потому как динамика проклятая.
     
     
  • 6.45, й (?), 00:24, 18/05/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    давай зайдём с другой стороны. есть golang. у него статические линкуемые бинарики со стандартными и не очень библиотеками на выходе. так вот, вопрос: это всё прилинкованное в файл (там зелёные треды, каналы и прочее) -- это, что, не рантайм? рантайм. так вот, у c++ есть такой же. прилинкованный stdlib -- это вполне себе рантайм, т.е. 3rd party code, который выполняется во время исполнения программы. реальные приложения в c++ используют stdlib и ты отлично это знаешь.
     
     
  • 7.51, Anonim (??), 07:38, 18/05/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    stdlib это стандартная библиотека функций. после компиляции линкуется не она целиком а только те кусочки которые ты явно вызываешь. + ты можешь использовать любой другой набор функций или написать свой или не использовать вообще ничего.
     
  • 6.47, angra (ok), 02:54, 18/05/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Собрать то конечно можно, вот только окажется, что значительная часть функционала плюсов у тебя отсутствует и практически любую программу, включая helloworld, надо переписывать.
     
  • 3.12, Аноним (-), 13:00, 17/05/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Интерпретатор JS, написанный на C, станет быстрее С? Дак пусть сразу быстрее асмы делают, что мелочиться то.
     
     
  • 4.17, Аноним (-), 13:48, 17/05/2018 [^] [^^] [^^^] [ответить]  
  • +/
    А написанным на самом JS ещё быстрее!
     
  • 4.22, Аноним (-), 15:21, 17/05/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Внезапно: а почему бы и нет? См. пример с PyPy.
    Порой чувствуешь себя умнее сишников, объясняя им такие банальные вещи.
     
     
  • 5.31, нурок (?), 19:18, 17/05/2018 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Внезапно: а почему бы и нет? См. пример с PyPy.
    > Порой чувствуешь себя умнее сишников, объясняя им такие банальные вещи.

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

     
  • 5.33, anonymous (??), 21:03, 17/05/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Внезапно: а почему бы и нет? См. пример с PyPy.
    > Порой чувствуешь себя умнее сишников, объясняя им такие банальные вещи.

    Текущие версии PyPy транслируются из RPython в Си и компилируются (c) википедия

     
     
  • 6.44, Аноним (-), 23:36, 17/05/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ну и? Что мешает проделывать аналогичное с кодом на JS на лету? Собственно, это сейчас и делается, но все равно находятся ламеры у которых в голове не укладывается.
     
     
  • 7.60, Доктор (??), 15:19, 18/05/2018 [^] [^^] [^^^] [ответить]  
  • +/
    ключевое слово "emscripten"

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

     
     
  • 8.62, Аноним (-), 15:42, 18/05/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Это совсем другое направление компиляции, плюс тормозить может из-за того что дв... текст свёрнут, показать
     
  • 3.30, нурок (?), 19:14, 17/05/2018 [^] [^^] [^^^] [ответить]  
  • +/
    ну вот не любят люди лишних прослоек.. ощущения не те..
     
  • 3.41, Вареник (?), 21:34, 17/05/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > стремительно завоёвывая умы думающих программистов.

    Это типа определять творческость креаклов по принципу заднепроходности.

    А "думание программиста" - по переписыванию чужого готового на языке-изврате.

     
     
  • 4.53, Аноним (-), 10:16, 18/05/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Просто оголтелая бестолочь с жс головного мозга, кроме как на вопли о крутизне своего язычишки и переписывания всего подряд по нескольку раз, ни на что больше не способна. Это факт.
     
  • 3.52, qrKot (?), 10:10, 18/05/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Потому что есть такая штука: формальная (она же "математическая") логика...
    Учитывая то, что сам JS вполне себе написан на C, т.е., формально является примером валидного C кода, очевидно, что C гарантированно может быть НЕ медленнее JS в 100% случаев.
    При этом в обратную сторону гарантии не работают, т.к. JS- это, собственно, API к C, т.е. некоторое подмножество возможных реализаций. Т.е. JS гарантированно НЕ сможет быть производительней C во всех случаях.
     
     
  • 4.61, Аноним (-), 15:36, 18/05/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Есть, есть Но каким она боком к вашим умозаключениям - непонятно Во-первых, ре... большой текст свёрнут, показать
     
  • 3.54, rshadow (ok), 11:31, 18/05/2018 [^] [^^] [^^^] [ответить]  
  • +/
    И кто только ведется на такой толстый троллинг...
     

  • 1.5, Лайка Ваймуле (ok), 11:55, 17/05/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Это у бородатых фронтендщиков уже спорт такой, типа как Дум на тостере запилить. Ждём появления компиляторов ЦеПлюс на жабаскрипте (если не появились еще).
     
     
  • 2.26, z (??), 17:05, 17/05/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    https://felixhao28.github.io/JSCPP же
     
     
  • 3.36, Вареник (?), 21:26, 17/05/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > https://felixhao28.github.io/JSCPP же

    JS головного мозга...

     
     
  • 4.63, nongnomer (?), 17:30, 18/05/2018 [^] [^^] [^^^] [ответить]  
  • +/
    просто no-life man
     
  • 2.39, Crazy Alex (ok), 21:31, 17/05/2018 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Проблема в том, что они эти тостеры потом в реальные приложения тащат... А дальше - электроны всякие вылезают.
     

  • 1.10, _Vitaly_ (ok), 12:42, 17/05/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Был же https://github.com/creationix/js-git, на который забили из-за сетевых ограничений а браузере.
     
  • 1.15, Аноним (-), 13:36, 17/05/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Нет.
    Пожалуйста.
     
  • 1.18, Аноним (-), 13:52, 17/05/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Не хватает интеграции с Electron
     
  • 1.19, Joekr (?), 13:52, 17/05/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Еще одно подтверждение закона Джеффа Этвуда - "Any application that can be written in JavaScript, will eventually be written in JavaScript".
     
  • 1.20, Аноним (-), 14:57, 17/05/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Но зачем? WebAssemly решает проблемы при нулевых затратах времени!!!!
     
     
  • 2.21, Диносуслик (?), 15:19, 17/05/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Видимо писать начинали тогда, когда про васм еще не слышали ничего
     
     
  • 3.34, Вареник (?), 21:19, 17/05/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > писать начинали тогда, когда

    А дописывали зачем?

     
  • 2.59, КО (?), 12:54, 18/05/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Но как? WA это же кастрат - он не умеет пакеты по сети и файлы. Нет, ну хэш на нем посчитаешь, а все остальное на JS.
     

  • 1.35, Вареник (?), 21:24, 17/05/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    > реализация Git на языке JavaScript, нацеленная на предоставление

    Надо еще переписать на хРусте, на Скале, на голанге, на Лиспе, Эрлагне и Хаскелле, потом на Руби, Перле и Пыхе. Фанатиков обижать нельзя!

     
  • 1.48, Аноним (-), 03:05, 18/05/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Я не совсем в теме, простите за возможно глупый вопрос - значит через JS уже можно обращаться к локальной файловой системе клиента? Или это таки делает Электрон, а JS как и прежде только прокладка между клиентом и API?
     
     
  • 2.57, Аноним (-), 12:17, 18/05/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Зависит от API среды выполнения. Обычные десктопные браузеры дают API для работы с внутренним хранилищем сайта с определенной квотой на дисковое место. За пределы хранилища вылезти не могут. Другие среды дают другие возможности, та же Node - полный доступ к ФС.
     

  • 1.64, .. (?), 02:41, 19/05/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    господа жабаскриптизёры!
    вот у питона есть pypy (питон написанный на питоне)
    а на когда jsjs ? слабО?

    (надеюсь это их займёт на пару лет и мы перестанем видеть новости типа:
    "очередной хипстер-н0ркоман написал очередную ненужную хрень на жабаскрипте")

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру