LINUX.ORG.RU

188
Всего сообщений: 449

Почему Discord сменил Go на Rust. Блог разработчика.

Группа Разработка

В статье автор описывает успешный проект Discord, в котором Rust используется для потоковой обработки в Go Live и их Elixir NIFs’ сервере.

Автор пишет
«Хочу отметить, что мы потратили очень мало усилий на оптимизацию реализации на Rust. Но даже только с базовой оптимизацией Rust оказался быстрее супероптимизированной реализации на Go. Это заметный плюс для Rust, показывающий, насколько легко писать эффективные программы, используя Rust, по сравнению с глубоким погружением в Go.»

>>> Why Discord is switching from Go to Rust

 , ,

grim ()

Релиз MPD-клиента Ymuse 0.17

Группа Мультимедиа

Выпущено обновление молодого и динамично развивающегося GTK-клиента для Music Player Daemon — Ymuse 0.17.

( читать дальше... )

Ymuse — это клиент для MPD, написанный на Go/GTK3 и доступный как в виде snap-пакета, так и в deb и rpm.

>>> Подробности

 , , , ,

yktoo ()

Будущее ownCloud в микросервисах: ownCloud Infinite Scale

Группа Open Source

ownCloud переходит на новую, созданную с нуля архитектуру, используя бэкенд в виде микросервисов на Go и фронтенд на Vue.js, распределённое файловое хранилище с помощью EOS от CERN, и отказывается от использования базы данных.

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

ownCloud заявляют, что отказ от старого движка на PHP с использованием базы данных и POSIX-совместмых файловых систем в пользу нового стека технологий даёт прирост в производительности до 10 раз. В процессе создания этой версии фокус был сосредоточен на параллелизме: если движку на PHP приходилось ждать окончания выполнения функций, то Go позволяет выполнять их одновременно.

Если прошлая архитектура движка не решала проблемы масштабируемости дискового пространства, то сейчас же основным способом хранения файлов предлагается программное обеспечение промышленного масштаба — EOS. Оно было разработано CERN и используется для их архива данных размером в 200 петабайт. В то же время всё ещё доступны опции для хранения файлов с помощью Samba, объектного хранилища S3 и поверх обычных файловых систем. Хранение данных на EOS ориентировано на множество дисков, обеспечивая избыточность и отсутствие единой точки отказа.

Основным способом аутентификации выбраны внешние провайдеры, вроде LDAP и Active Directory, но в то же время всё ещё доступна опция для локального хранения идентификаторов пользователей.

Новый фронтенд с использованием фреймоворка Vue.js так же сосредоточен на производительность и параллельное выполнение задач. По сравнению с прошлой итерацией, интерфейс претерпел изменения в дизайне и стал меньше.

Для взаимодействия с бэкендом используется механизм gRPC. Бэкенд и фронтенд полностью независимы друг от друга, а для балансировки их трафика используется веб-сервер Traefik. Ввиду этого изменения, ownCloud подразумевается расширять таким же образом: с помощью микросервисов, обращающихся к бэкенду с помощью gRPC и балансировки их трафика с помощью Traefik. Такая модульная архитектура, сосредоточенная на вызовах gRPC, также свела на нет необходимость в использовании реляционной базы данных.

На данный момент проект всё ещё на стадии технического превью и выпускает новые версии каждые три недели. Проект распространяется под лицензией Apache License 2.0.

>>> Подробности

 , , , ,

commagray ()

Релиз MPD-клиента Ymuse 0.16

Группа Мультимедиа

Вышел очередной релиз молодого, но перспективного GTK-клиента для Music Player Daemon — Ymuse 0.16.

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

Ymuse — это клиент для MPD, написанный на Go/GTK3 и доступный как в виде snap-пакета, так и в deb и rpm.

>>> Подробности

 , , , ,

yktoo ()

SFTPGo 2.0.0

Группа Open Source

Вышла новая версия SFTPGo — SFTP-сервера с обширными возможностями, написанного на языке Go. Помимо протокола SFTP, сервер также поддерживает FTP/S и WebDAV. В качестве внутреннего хранилища поддерживаются локальные ФС, зашифрованные ФС, S3-совместимые хранилища, хранилища Google Cloud и Azure Blob Storage, а также другие SFTP-сервера. SFTPGo может быть запущен в portable режиме, а также имеет веб-интерфейс для администрирования.

Основные изменения в релизе:

  • Новая версия REST API v2 с поддержкой роли администратора.

  • Прозрачное шифрование хранимых данных (Data At Rest).

  • Поддержка KMS: учетные записи и ключи теперь могут хранится во внешней KMS (Vault, GCP KMS, AWS KMS).

  • SFTP теперь может использоваться как реализация внутреннего хранилища, позволяя использовать сервер в режиме SFTP-прокси.

  • Двунаправленная аутентификация через TLS (TLS with client certificate authentication) для FTP, WebDAV, REST API и web-админки.

  • Встроенный блокировщик: пользователь может настроить политику автоблокировки подозрительных клиентов.

>>> Подробности

 , , ,

cocucka ()

Первый выпуск Peer-to-Peer клиента федеративной сети Matrix

Группа Open Source

Состоялся выпуск экспериментального клиента Riot P2P.

Riot — изначально клиент для федеративной сети Matrix. P2P-модификация добавляет в клиент реализацию сервера и федерацию без использования централизованного DNS посредством интеграции libp2p, которая также используется в IPFS. Это первая версия клиента, которая сохраняет сессию после перезагрузки страницы, но в следующих мажорных обновлениях (например, 0.2.0) данные всё равно будут удалены. Поэтому использовать клиент для чего-то важного не рекомендуется.

В клиенте реализована федерация, создание комнат и отображение глобального (бессерверного!) каталога комнат.

При этом основная сеть Matrix, использующая DNS, и сеть Matrix на libp2p пока что не могут федерироваться и взаимодействовать друг с другом.

Для использования клиента достаточно нажать кнопку входа, после чего вы получите сгенерированный ID в сети. Экспорт данных пока не поддерживается.

Так как это нестабильная презентация возможной концепции, вы можете столкнуться с неприятностями:

  • Вы не сможете зайти в свой аккаунт или взаимодействовать с другими клиентами, если сервер, запущенный в виде Service Worker, будет убит браузером по истечении времени ожидания. Такая проблема замечена у Firefox, который делает это спустя 30 секунд бездействия].
  • На уровне сети libp2p действуют ограничения на количество выполняемых действий по времени, что может вызвать проблемы с федерацией.

( читать дальше... )

Существует также вариант Riot P2P для Android, основанный на коде старого приложения. В будущем планируется перевести его на актуальный RiotX.


Кроме того

  • Представлен проект TARDIS (Time Agnostic Room DAG Inspection Service) — отладчик линейного графа событий (DAG) для Matrix-комнат на основе Riot P2P.

  • В проекте Conduit (разрабатываемом сообществом сервере на языке Rust) теперь реализованы шифрование и вложения.

  • Появился экспериментальный сервер на Scala — Mascarene.

>>> Подробности

 , , , ,

commagray ()

Go 1.13

Группа Разработка

Вышел язык программирования Go 1.13, основные нововведения:

  • Язык Go теперь поддерживает более унифицированный и модернизированный набор префиксов числовых литералов, в том числе для двоичных, восьмеричных, шестнадцатеричных и мнимых литералов.
  • Совместимость с Android 10.
  • Поддержка TLS 1.3 включена по умолчанию в пакете crypto/tls.
  • Поддержка Error wrapping.
  • Unicode 11.0 теперь доступен из пакета Go Unicode.

Это последний выпуск, который будет работать на Native Client (NaCl).

>>> Подробности

 

MaxPower ()

Выпуск tl 1.0.6

Группа Open Source

tl — кроссплатформенное веб-приложение с открытым кодом (GitLab) для переводчиков художественной литературы. Приложение бьёт загружаемые тексты на фрагменты по символу новой строки и располагает их в две колонки (оригинал и перевод).

Основные изменения:

  • Плагины времени компиляции для поиска слов и словосочетаний в словарях;
  • Пометки в переводе;
  • Общая статистика по переводу;
  • Статистика сегодняшней (и вчерашней) работы;
  • В фильтре по содержимому теперь можно использовать регулярные выражения (RE2);
  • Если нажат Ctrl при создании варианта перевода, оригинал копируется в перевод;
  • Экспорт на notabenoid (и его клоны), импорт с него, обновление, сравнение;
  • Ссылки на следующую и предыдущую книгу в режиме перевода;
  • Фильтр по названию на главной;
  • Поиск и замена с предварительным просмотром изменений;
  • Плагин для поиска по уже переведённому (по всем книгам);
  • И другое.

>>> Подробности

 ,

opennota ()

Nixery ― ad-hoc реестр контейнеров на базе Nix

Группа Open Source

Nixery – это Docker-совместимый реестр контейнеров, способный создавать образы контейнеров с помощью Nix.

В настоящее время основное внимание уделяется целевому созданию образов контейнеров.

Nixery поддерживает создание образов по запросу, основанных на image name. Каждый пакет, который пользователь включает в образ, указывается в качестве пути компонента имени. Компоненты пути ссылаются на ключи верхнего уровня в nixpkgs и используются для создания образа контейнера с использованием функциональности Nix – buildLayeredImage.

Мета-пакет shell предоставляет базу образов со основными компонентами ядра (такими, как bash и coreutils).

Пример доступен по ссылке.

>>> Подробности

 , , ,

anonymous ()

hugo v0.56.0

Группа Open Source

Hugo – это статический генератор HTML и CSS веб-сайтов, написанный на Go.

Улучшения следующие:

  • Templates:

    • Добавлена функция Merge.
    • Развернут интерфейс
    • Возможность конвертации цифровых значений в float64 и их сравнения.
    • БОльшая детализация ошибок в Where.
    • Возврат сообщения об ошибке при неверном вводе в In.
  • Core:

    • Добавлен symdiff тест.
    • Тестовый файл добавлен в .gitignore.
    • Предотвращена возможность параллельной перенастройки серверов.
    • Добавлены OutputFormats.Get тесты.
    • Добавлены тесты для in/uniq с использованием Pages.
    • Добавлены тесты для Permalinkable.
    • Добавлен тест для исходных ресурсов в шорткодах.

И многое другое.

>>> Подробности

 ,

anonymous ()

Юбилейная DevConfX пройдет 21-22 июня в Москве - началось голосование за доклады секции Backend

Группа Конференции и встречи

Юбилейный десятый DevConf пройдет в этом году 21-22 июня в X-perience Hall.

Как всегда - Вы решаете, кто попадет в программу секции Backend - голосуйте за интересные доклады, список заявок под катом

( читать дальше... )

>>> Подробности

 , , , ,

devconf ()

tinygo 0.6.0

Группа Разработка

TinyGo – это компилятор языка Go, предназначенный для использования в таких областях, как микроконтроллеры, WASM, а также разработки утилит командной строки.

TinyGo использует утилиты и библиотеки, написанные в проекте Go, при этом предоставляя альтернативный метод компиляции программ на основе наработок проекта LLVM.

( читать дальше... )

>>> TinyGo.org

 , ,

anonymous ()

Syncthing 1.1.0

Группа Open Source

Состоялся релиз Syncthing – открытого кроссплатформенного средства, созданного для замены проприетарных облаков и средств синхронизации чем-то открытым, доверенным и децентрализованным. Syncthing написан на языке Go и распространяется на условиях Mozilla Public License 2.0.

Исправления

  • Удален minHomeDiskFreePct на свежих конфигурациях
  • Исправлена ошибка процесса-монитора, при которой сигнал SIGTERM не передавался процессу syncthing
  • Исправлена деградация производительности хеширования при использовании больших блоков

Улучшения

  • .desktop файл теперь содержит нужные ключевые слова
  • Исправлен владелец директорий

Изменения API

Добавлена новая опция copyOwnershipFromParent, установленная по умолчанию в false (оставляет старое поведение, когда информация о владельце не копируется).ormation.

Использование больших блоков включено по умолчанию для новых директорий.

>>> Страница проекта

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

>>> Подробности

 , , ,

Deleted ()

Caddy 0.11.5

Группа Open Source

Caddy — HTTP/2 веб-сервер с автоматическим HTTPS.

Изменения:

  • Поддержка TLS 1.3
  • Сборка по умолчанию с 1.12
  • Более организованный вывод во время запуска
  • Внутреннее изменение: пути теперь скрыты от других middleware.
  • Статические файлы: Разрешен метод HEAD
  • Максимальная версия TLS установлена в 1.3 (1.2 все еще мининимальная версия по умолчанию)
  • tls: Улучшена обработка пустого email для ACME
  • tls: Удалены шифры CBC из установок по умолчанию
  • Другие небольшие изменения и исправления.

>>> Подробности

 , , ,

Deleted ()

Syncthing v1.0.0

Группа Open Source

Состоялся первый мажорный релиз Syncthing – открытого кроссплатформенного средства, созданного для замены проприетарных облаков и средств синхронизации чем-то открытым, доверенным и децентрализованным. Syncthing написан на языке Go и распространяется на условиях Mozilla Public License 2.0.

Особенности

Безопасность && приватность

  • Приватность – пользовательские данные хранятся только на устройствах пользователя.

  • Децентрализованность – отсутствие центрального сервера исключает возможность компрометации данных его владельцем.

  • Шифрование – защита передачи данных основана на широко известных и проверенных протоколах, с поддержкой perfect forward secrecy.

  • Аутентификация – каждый узел идентифицируется по криптографическому сертификату, при этом только явно доверенные сторонние узлы могут подсоединяться к вашему кластеру.

Использование

  • Графический интерфейс на основе Web GUI.

  • Кроссплатформенность – в рамках единой кодовой базы поддерживаются GNU/Linux, Android, FreeBSD, Solaris, OpenBSD, macOS, Windows, а также все остальные операционные системы и архитектуры, поддержка которых включена в Go.

  • Простота – Syncthing не требует длительной настройки, он просто работает, как в рамках локальной сети, так и глобальной.

  • Каждое устройство имеет уникальный идентификатор, передавая который возможно давать доступ к файлам и директориям.

Изменения с прошлого выпуска

Исправления ошибок

  • Исправлено некорректное предупреждение в случае одинакого префикса у параметра –home и указанного пути.
  • Ошибка в нормализации пути файла больше не приводит к некорректному протоколированию имени файла.
  • Исправлена обработка некоторых системных событий, приводивших к некорректным состояниям обработчика событий.

Улучшения

  • Добавлена опция для ограничения количества одновременных сканирований директорий.

  • Добавлены опции усиления безопасности при работе с systemd.

  • В графическом интерфейсе теперь отображаются ограничения скорости.

  • Возможность отображения локально измененных файлов для директорий, настроенных только для приема файлов.

>>> Страница проекта

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

>>> Анонс

 , , ,

Deleted ()

Исправления безопасности в языке Go

Группа Разработка

Go — язык программирования с открытым исходным кодом.

Вчера вышли версии 1.11.3 и 1.10.6, где закрыты три недавно обнаруженные проблемы безопасности.

Изменения:

  • устранена возможность удаленного выполнения команд с использованием команды go get -u;
  • исправлена уязвимость выхода за пределы каталога, позволявшая внедрять вредоносные файлы;
  • устранена возможность тратить вычислительные мощности, загружая в crypto/x509 цепочки сертификатов неограниченной длины.

>>> Подробности

 ,

sadsadpepe ()

Biscuit: монолитное POSIX-совместимое ядро на Go

Группа Open Source

Ядро было написано аспирантом MIT Cody Cutler в рамках исследования «The benefits and costs of writing a POSIX kernel in a high-level language» и доступно на GitHub странице MIT PDOS (Parallel and Distributed Operating Systems group at MIT CSAIL) под лицензией MIT.

Biscuit неплохо документирован и содержит 27 тысяч строк на Go, из которых всего 90 функций содержат небезопасные вызовы («unsafe»), необходимые для задач вроде доступа к регистрам процессора. Есть также небольшой загрузчик, написанный на ассемблере.

( читать дальше... )

>>> Подробности

 , ,

Deleted ()

Выпуск tl 1.0.5

Группа Open Source

tl — кроссплатформенное веб-приложение с открытым кодом (GitHub) для переводчиков художественной литературы. Приложение разбивает загружаемые тексты на фрагменты по символу новой строки и располагает их в две колонки (оригинал и перевод).

Основные изменения:

  • Новый инструмент «Aligner» для выравнивания несовмещённых текстов оригинала и перевода пофрагментно;
  • Из режима чтения теперь можно прыгать к конкретным фрагментам в интерфейс перевода;
  • Последняя посещённая страница каждого перевода теперь запоминается;
  • Запоминается текущая страница при переходе в режим чтения или к заметкам и обратно;
  • Кнопка [...] теперь нажимается и позволяет прыгнуть на конкретную страницу;
  • Страница администрирования (на которой была только кнопка «Backup») объединена с главной;
  • Типографика теперь исправляется только в том случае, если во фрагменте перевода есть кириллица;
  • Столбец «Last activity» на главной автоматически обновляется с течением времени;
  • И другое.

>>> Подробности

 ,

opennota ()

Релиз парсера PHP, написанного на Go

Группа Open Source

php-parser — библиотека для синтаксического разбора исходников PHP в абстрактное синтаксическое дерево. Может использоваться для создания статических анализаторов, утилит рефакторинга и сбора метрик.

Список изменений можно посмотреть по ссылке.

>>> Подробности

 , , ,

z7zmey ()

gopass 1.7

Группа Open Source

Спустя полгода с прошлой значительной версии состоялся очередной выпуск gopass — усовершенствованной реализации pass, консольного менеджера паролей, написанной на языке Go.

gopass, в отличие от изначального проекта, поддерживает не только хранение базы паролей в зашифрованном виде, но и множество пользовательских PGP-ключей в пределах одной базы, управление множеством баз с помощью точек монтирования, хранение базы в бинарном виде, проверку качества и оффлайн проверку на утечку паролей, записи в формате K/V и YAML, отображение вывода с помощью пейджера, JSON API, уведомления и встроенную синхронизацию с помощью Git.

В этой версии, помимо исправлений ошибок и незначительных изменений, добавлен новый способ шифрования базы с помощью NaCL и экспериментальной библиотеки с реализацией OpenPGP на Go, интеграция с Vault, Consul и HIBP, отображение истории и возможность указать получателя при генерации и редактировании пароля.

>>> Подробности

 , ,

commagray ()