The OpenNET Project / Index page

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

Facebook открыл код проекта DotSlash

06.02.2024 23:10

Facebook* объявил об открытии кода утилиты командной строки dotslash, созданной для упрощения распространения набора исполняемых файлов для разных платформ. Утилита рассчитана на выполнение сценариев, автоматизирующих загрузку подходящего для текущей платформы исполняемого файла, проверку его целостности и исполнение. Код утилиты написан на языке Rust и распространяется под лицензиями MIT и Apache 2.0.

Утилита решает задачи, схожие с shell-скриптами для запуска исполняемых файлов для текущей платформы, но при этом избавляет от необходимости включения в комплект исполняемых файлов для всех поддерживаемых платформ. DotSlash также позволяет хранить информацию о собранных исполняемых файлах в репозитории вместе с кодом, при этом размещая сами файлы на отдельных загрузочных серверах, что позволяет избежать роста размера репозитория и снизить нагрузку на систему ввода/вывода при выполнении операций клонирования.

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

Пример DotSlash-сценария для распространения сборок Node.js 18.19.0 для платформ macOS ARM64, macOS x86_64 и Linux x86_64:


#!/usr/bin/env dotslash

{
  "name": "node-v18.19.0",
  "platforms": {
    "macos-aarch64": {
      "size": 40660307,
      "hash": "blake3",
      "digest": "6e2ca33951e586e7670016dd9e503d028454bf9249d5ff556347c3d98c347c34",
      "format": "tar.gz",
      "path": "node-v18.19.0-darwin-arm64/bin/node",
      "providers": [
        {
          "url": "https://nodejs.org/dist/v18.19.0/node-v18.19.0-darwin-arm64.tar.gz"
        }
      ]
    },
   
    "macos-x86_64": {
      "size": 42202872,
      "hash": "blake3",
      "digest": "37521058114e7f71e0de3fe8042c8fa7908305e9115488c6c29b514f9cd2a24c",
      "format": "tar.gz",
      "path": "node-v18.19.0-darwin-x64/bin/node",
      "providers": [
        {
          "url": "https://nodejs.org/dist/v18.19.0/node-v18.19.0-darwin-x64.tar.gz"
        }
      ]
    },

    "linux-x86_64": {
      "size": 44694523,
      "hash": "blake3",
      "digest": "72b81fc3a30b7bedc1a09a3fafc4478a1b02e5ebf0ad04ea15d23b3e9dc89212",
      "format": "tar.gz",
      "path": "node-v18.19.0-linux-x64/bin/node",
      "providers": [
        {
          "url": "https://nodejs.org/dist/v18.19.0/node-v18.19.0-linux-x64.tar.gz"
        }
      ]
    }
  }
}


  1. Главная ссылка к новости (https://engineering.fb.com/202...)
  2. OpenNews: Для GCC подготовлены патчи для сборки универсальных исполняемых файлов
  3. OpenNews: Facebook опубликовал систему сборки Buck2
  4. OpenNews: Facebook опубликовал Hermit, инструментарий для повторяемого выполнения программ
  5. OpenNews: Facebook представил новую систему управления исходными текстами Sapling
  6. OpenNews: FatELF - формат для упаковки в исполняемый файл поддержки разных платформ
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/60562-dotslash
Ключевые слова: dotslash, facebook
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (45) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 23:35, 06/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +30 +/
    Зумеры придумали 'curl something | sh', но с джсоном
     
     
  • 2.2, Урри (ok), 23:36, 06/02/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.6, Вы забыли заполнить поле Name (?), 23:50, 06/02/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Ты что-то имеешь против Джейсона Стейтема?
     
     
  • 3.9, Аноним (9), 23:58, 06/02/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вурхиза
     
  • 2.46, RM (ok), 21:52, 07/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    ну или MS C2R
     
  • 2.47, Аноним (47), 17:18, 08/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    'curl {something} | sudo bash -'
     
  • 2.48, Пряник (?), 14:09, 12/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Не придумали, а переписали на Rust...
     

  • 1.3, Аноним (3), 23:43, 06/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +6 +/
    Юзлесс
     
     
  • 2.7, Вы забыли заполнить поле Name (?), 23:50, 06/02/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    by rust design
     

  • 1.4, Айнаниммм (?), 23:48, 06/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Ам... вот это уровень! Wget, md5 и sh скомпилированные под разные платформы вместе с простеньким скриптом... А если тот же rebol взять для любой платформы (http://www.rebol.com/release-archive.html) то для данного функционала на нём прийдётся кода написать целую строчку!
     
     
  • 2.37, Axel (??), 13:21, 07/02/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Напомню, что ещё есть Red Lang
     
     
  • 3.41, Айнанимм (?), 17:52, 07/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Таки и третий Rebol пилится активно https://github.com/Oldes/Rebol3
     

  • 1.10, RocketShark (?), 00:05, 07/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Что это и зачем вообще оно нужно?
     
  • 1.11, 12yoexpert (ok), 00:21, 07/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +9 +/
    утилита для загрузки троянов, спасибо большое, атдуши
     
     
  • 2.17, Rev (?), 01:25, 07/02/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Тоже об этом подумал. Удобное распространение троянов! :)
     

  • 1.12, cheburnator9000 (ok), 00:24, 07/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Видимо в компании facebook были квоты по требованию к написанию очередной малополезной утилиты на Rust. Они написали curl.rs. https://github.com/facebook/dotslash/tree/main/src это конечно треш, такое пишут студенты в вузах. Хотя если представить что сейчас учится соевое поколение айфонов, то такое они должны писать будучи "senior-developer".
     
     
  • 2.13, cheburnator9000 (ok), 00:27, 07/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    https://github.com/facebook/dotslash/blob/main/src/subcommand.rs#L76 все что оно умеет. Не знаю смеяться или плакать.
     
     
  • 3.21, Бывалый смузихлёб (?), 05:07, 07/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Вы что, это же Высококвалифицированные Инженеры огромной американской ИТ-компании!
    Если они сделали так - значит именно так и надо а если остальные делали иначе - они делали неправильно просто по определению!!11
     
  • 3.32, Витюшка (?), 11:15, 07/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А что здесь не так? Строчка берётся из командной строки и разбирается.
     
  • 2.15, Аноним (15), 01:01, 07/02/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ты не понимаешь, большинство поклонников ржавчины любят его только в теории и обычно пишут на жс. Отсюда общий уровень проектов на этом языке. Это как с перлом, раньше было модно "знать перл", поэтому его пихали повсюду и качество кода от неофитов было никакущее.
     
     
  • 3.18, Аноним (-), 01:43, 07/02/2024 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Ты не поверишь, но большинство топящих за другие языки тоже в лучше случае делали на них лабу в универе.
    Хотя они рассказыват про то, что "вот добавят ржавчину, я код в ядре не могу понять и поменять".
    А типа сейчас он мог бы...
     
  • 3.29, нах. (?), 08:37, 07/02/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Ты не понимаешь, большинство поклонников ржавчины любят его только в теории и обычно пишут на жс.

    на маркдаун они в основном пишут. Вспомнить хоть qwerty.

    > Это как с перлом, раньше было модно "знать перл", поэтому его пихали повсюду и качество кода от
    > неофитов было никакущее.

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

    Правда, частенько выкидывание зависимости от заковыристого модуля и переписывание даже не на перл а на sed/awk давало +100 к скорости работы и надежности решения. Но чтобы написать модуль и выложить его на CPAN и им кто-то стал пользоваться - все же надо было знать перл. Что конечно не гарантировало что знаток еще и кодить умеет.

     

  • 1.14, YetAnotherOnanym (ok), 00:35, 07/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Авторы dotslash и cosmopolitan - кто кого покусал?
     
     
  • 2.24, Аноним (24), 06:59, 07/02/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Космополит - крут, он бинари из интернет не качает.
     

  • 1.16, Аноним (16), 01:23, 07/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Ну то есть даже у рептилоидов не хватило денег на разработку FatELF. Вотакуот.
     
     
  • 2.22, Бывалый смузихлёб (?), 05:10, 07/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Тем не менее, яблочный Mach-O позволял в одном бинарнике хранить код для разных архитектур
    Но не для ОС, разумеется
     
     
  • 3.30, 12yoexpert (ok), 08:56, 07/02/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    на гитхабе куча таких проектов, но откуда об этом знать фанатикам мака?
     
     
  • 4.38, Бывалый смузихлёб (?), 14:52, 07/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Так это не абстрактный гитхабовский васянпроект а часть системы с бородатых времён( вероятно, уже вовсю было когда яблоко только начинало на интоль переходить )
    Вероятно, даже вышеупомянутый FatElf получил название по аналогии с яблочными «толстыми» бинарниками( fat lib / fat bin )

    На винде бы подобное было весьма кстати. Если ещё нет.

     

  • 1.19, X512 (?), 02:03, 07/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Под Линукс наконец изобрели Setup.exe, не прошло и полвека.
     
     
  • 2.39, anonymmm (?), 16:40, 07/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    для этого давно есть docker
     

  • 1.20, Аноним (20), 03:18, 07/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Утилита решает проблему её разраба, но больше ничего.
     
     
  • 2.40, anonymmmeer (?), 16:41, 07/02/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    пару перформанс ревью годовых небось прошёл.
    может даже на архитекторские лычки сумел развести.

    ну и манагер тоже показал успешный успех

     
  • 2.44, Аноним (44), 20:40, 07/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    И так — подавляющее большинство ПО. Либо проблему разраба, либо проблему того, кто ему заплатил. Далеко ходить не надо, Линукс вон и вовсе от скуки появился.
     

  • 1.23, Бывалый смузихлёб (?), 05:16, 07/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    > для платформ macOS ARM64, macOS x86_64 и Linux x86_64
    > #!/usr/bin/env dotslash

    Неудивительно что под винду нет. Ей ведь батник нужен а не юниксовщина
    Итого, супер-пупер-теперь_уже_открытый продукт позволяющий распространять ПО на разных платформах… заранее имеющих на борту что-то башеподобное

    Пытался понять на кой оно надо и в чем ценность, так и не осилил

     
  • 1.25, Аноним (24), 07:00, 07/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Есть Linux x86_64, все остальное от лукавого.
     
     
  • 2.27, Аноним (27), 07:30, 07/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    И как его на Байкал поставить?
     

  • 1.26, Аноним (26), 07:04, 07/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Изобрели Union bind из plan9 но очень по своему :) "Union directories are one of the most widely used organizational features of the Plan 9 name space. For instance, the directory /bin is built as a union of /$cputype/bin (program binaries), /rc/bin (shell scripts), and perhaps more directories provided by the user. This construction makes the shell $PATH variable unnecessary.". Тула "решает" проблему нодджиэсников без дополнительных зависимостей, ну кроме rust :) Интересно, во многих системах rust установлен по умолчанию? :)
     
  • 1.31, Аноним (31), 10:00, 07/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    https://github.com/facebook/dotslash/blob/main/src/platform.rs#L32

    Падает в панике на BSD. Мда.

     
     
  • 2.33, Аноним (15), 11:42, 07/02/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Пользователей у эксбсд не завезли и нет ни малейшего повода тратиться на поддержку посторонней незнакомой платформы, так что тут всё нормально. На самом деле, вполне вероятно, это в большей мере потому, что раст не гарантирует работоспособность в каком-либо виде на tier2 платформах (рип).
     
  • 2.35, Аноним (35), 12:34, 07/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    и правильно делает
    хочешь поддержку BSD? присылай патч!
     
     
  • 3.50, Пряник (?), 14:13, 12/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Для KDE2?
     
  • 2.42, Аноним (42), 18:20, 07/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    под линуксатором потянет :D
    а то после гибели флеша уже не знаю зачем он нужен, помимо дривиров от невидии.
     

  • 1.36, Аноним (36), 13:01, 07/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    '''
    % ./dotslash        
    Could not start dynamically linked executable: ./dotslash
    NixOS cannot run dynamically linked executables intended for generic
    linux environments out of the box. For more information, see:
    https://nix.dev/permalink/stub-ld
    '''
    Понятно
     
     
  • 2.45, Аноним (44), 20:43, 07/02/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Собрать его самостоятельно никсом ты, конечно же, не осилил. Там же целый файл для этого написать надо! Впрочем, на Никсос дотслеш не нужен, никсос сам себе дотслеш.
     

  • 1.49, Пряник (?), 14:11, 12/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Замешательство комментаторов понятно. Но они удивятся, узнав, что работа с текстом - это очень популярное применение языка Rust.
     

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



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

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