The OpenNET Project / Index page

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

Netflix опубликовал код утилиты bpftop

27.02.2024 23:33

Компания Netflix представила утилиту bpftop, предоставляющую интерфейс для мониторинга за выполнением eBPF-программ в ядре Linux, реализованный в стиле утилиты top. Утилита показывает показатели производительности, нагрузки на CPU и обработки событий для каждой eBPF-программы. Поддерживается построение графиков для оценки динамики изменения характеристик выполнения во времени. Код bpftop написан на языке Rust и распространяется под лицензией Apache 2.0.

Основные возможности:

  • Отображение списка запущенных eBPF-программ, их идентификаторов, типа и имени.
  • Показ периода и общего среднего времени выполнения каждой eBPF-программы.
  • Расчёт для каждой eBPF-программы нагрузки на CPU и обработанных событий в секунду.
  • Графики времени выполнения, событий в секунду и нагрузки на CPU в 10-секундные отрезки.
  • Ежесекундное обновление списка.

Одной из целей разработки bpftop называется упрощение оптимизации eBPF-программ и возможность динамического наблюдения за эффективностью тех или иных изменений в eBPF-программах. Для получения статистики в bpftop используется системный вызов BPF_ENABLE_STATS и сбор информации каждую секунду. Для снижения накладных расходов статистика собирается только во время работы утилиты.



  1. Главная ссылка к новости (https://netflixtechblog.com/an...)
  2. OpenNews: Проект bpftime развивает реализацию eBPF, работающую в пространстве пользователя
  3. OpenNews: Ещё одна уязвимость в подсистеме eBPF, позволяющая повысить свои привилегии
  4. OpenNews: BumbleBee - инструментарий для упрощения создания и распространения eBPF-программ
  5. OpenNews: Создана организация eBPF Foundation
  6. OpenNews: Представлена библиотека Aya для создания eBPF-обработчиков на языке Rust
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/60676-bpftop
Ключевые слова: bpftop, bpf
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (67) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.2, Анон1212 (ok), 23:57, 27/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    У них же серваки на bsd как нам много лет писали в комментах
     
     
  • 2.3, ebpfsfan (?), 00:00, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    вроде остались только узлы CDN остальное на linux
     
     
  • 3.5, Аноним (5), 00:21, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +11 +/
    > вроде остались только узлы CDN остальное на linux

    О, опять срач намечается ...
    Ты хотел сказать, "узлы, обеспечивающие 15% мирового сетевого траффика - на замшелой бзде, а вот зато все остальное!"


     
     
  • 4.90, Аноним (90), 21:30, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    А остальные 85% трафика на чём?
     
  • 2.4, Аноним (4), 00:21, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +4 +/
    У них действительно есть серваки на FreeBSD, прямо настоящие, в стойках, в разных ДЦ по миру, и выполняющие одну-единственную функцию: взять байты с диска и как можно быстрее положить их в сетевой сокет. Оказалось, что для этого FreeBSD очень даже пригодна. А вот бизнес-логика и всё необходимое, чтобы знать какие именно байты кому отдавать, это уже на линуксах в клауде, как у всех нормальных людей. Слухи ходят, что с появлением в ядре линукса rust, io uring и eBPF FreeBSD могут выкинуть, но пока что таких подвижек не было, а слухам верят только на базаре.
     
     
  • 3.10, михаилка (?), 01:24, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Слухи ходят, что с появлением в ядре линукса rust, io uring и eBPF FreeBSD могут выкинуть, но пока что таких подвижек не было, а слухам верят только на базаре.

    Ну это не слухи, с eBPF и XDP последние преимущества сетевого стека freebsd тупо пропали, да. Будут ли переписывать или нет - вопрос времени.

     
     
  • 4.17, Аноним (17), 01:58, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Это именно что слухи. Официальных и неофициальных заявлений не было.
     
  • 4.29, Аноним (29), 10:32, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А какие там были преимущества у сетевого стека? Разве что Netgraph, но это про гибкость, а не про скорость.
     
     
  • 5.32, Аноним (32), 12:00, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Никаких не было. Они там разве не переписывали куски под свои проприетарные нужды? Т.е. никакого отношения к обычной фряхе и не имеет тот код.
     
     
  • 6.89, Аноним (89), 21:22, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Никаких не было. Они там разве не переписывали куски под свои проприетарные нужды?

    Для SaaS, GPLv2 как бэ, точно так же позволяет "переписывать куски под свои проприетарные нужды"

     
     
  • 7.93, Аноним (32), 23:24, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Гугл так и поступает. Возможно, тут дело в том, что линукс намного сложнее и значительно дороже в сопровождении (синхронизация с апстримом) и не каждый может себе это позволить. Я много раз слышал этот аргумент от основных потребителей фряхи.
     
  • 5.94, Роман (??), 20:15, 01/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    один из авторов этого вот CDN от Netflix на Фряхе, где-то писал что ему в том числе было проще работать с ядром Фряхи [для допилки дров] и коммунити во Фряхе.
     
  • 3.12, Аноним (12), 01:27, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А разве у Linux сетевой стек хуже/менее производительнее чем у BSD? Я слыхал, у них там с многопоточностью проблемы. (Я ничего не утверждаю, просто хочу знать почему так).
     
     
  • 4.13, Фняк (?), 01:36, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Выходит что хуже, если для того чтобы сравняться с фряхой нужны дикие костыли в виде eBPF(просто вдумайтесь - в нулевом кольце выполняется прикладной код) и io uring. На фре ведь они обходятся без этого всего
     
     
  • 5.14, Аноним (17), 01:48, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    На фре оно без eBPF запрогано сразу патчем к ядру.
     
  • 5.30, Аноним (29), 10:39, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ну не было бы eBPF, были бы соотвествующие под решаемую проблему модули ядра. Всё равно, выпонялся бы код, только сразу машинный. А раз код для выполнения в ядре, то нефиг позволять никому, кроме рута, его туда вгружать.
     
  • 4.16, Аноним (17), 01:56, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Там нет никакой многопоточности в том виде, в каком у неё проблемы. Задача I/O bound. У фряхи ядро значительно примитивнее, чем линуксовое, а потому проще поддаётся модификации. Напомню, что когда нетфликс выбирал фряху, в линуксе не было адекватных подсистем для их задач, а у команды был опыт эксплуатации и, главное, модификации фряхи. Сегодня аыбор мог бы быть (или не быть) иным.
     
  • 4.25, leap42 (ok), 10:02, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Много лет был хуже. С тех пор линуксовую сеть уже 2 раза переписали почти целиком. Сейчас разница маленькая. Просто в случае с Netflix нет смысла мигрировать, у них уже есть экспертиза по фраяхе. С нуля бы и они Linux взяли.
     
  • 3.92, Ivan_83 (ok), 22:46, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > с появлением в ядре линукса rust, io uring и eBPF

    Это всё никакого отношения к use cases в которых работает у них фря не имеет.

     

  • 1.36, Аноним (36), 12:30, 28/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Растаманы как всегда в своём репертуаре, дофига ненужных зависимостей
     
     
  • 2.37, Аноним (37), 12:37, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >wasi

    Это линуксовая программа для выполнения от рута, какой к чёрту WASI?

    >winapi, winapi-i686-pc-windows-gnu, winapi-x86_64-pc-windows-gnu
    >windows-sys, windows-targets, windows_aarch64_gnullvm, windows_aarch64_msvc, windows_i686_gnu, windows_i686_msvc, windows_x86_64_gnu, windows_x86_64_gnullvm, windows_x86_64_msvc

    Мало того, что программа для линукса зачем то требует виндовые зависимости, так ещё и все сразу, и почему-то в виде пакетов. Растаманы в своём репертуаре, не могут определиться, под какую целевую платформу они собирают, и поэтому тащат всё в виде мусорных пакетов

     
  • 2.39, Fyjy (-), 12:50, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Хм... луди делают для себя, под свои задачи.
    С чего ты взял что эти зависимости не нужны?

    Пользоваться или нет - это твое право.
    Но можешь показать мастеркласс и переписать на правильный язык с правильными зависимостями))

     
     
  • 3.41, Аноним (41), 12:55, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Да, под свои задачи. Как Гугл — Базель под свои задачи сделал. И систему сборки Android, и Tensorflow. И нам теперь всем этим дерьмом приходится пользоваться. Как и bpftopом. Вместо
     
     
  • 4.87, Аноним (4), 18:37, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > нам теперь всем этим дерьмом приходится пользоваться

    Кто-то заставляет? Не пользуйся раз не нравится. Как будто кроме гугла нигде больше софт разрабатывать не умеют.

     
     
  • 5.88, Аноним (88), 20:38, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >Как будто кроме гугла нигде больше оплачивать разработку бесплатного софта не умеют.

    Умеют, но почему-то всегда получается блоатварь, выгодная исключительно корпорации и её партнёрам.

     
  • 2.40, Аноним (40), 12:53, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >bitflags (2 версии)
    >Generate types for C-style flags with ergonomic APIs.
    >const A = 0b00000001;
    >ergononic API

    /0

     
  • 2.42, Аноним (41), 12:57, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >compact_str
    >A memory efficient string type that can store up to 24* bytes on the stack.

    В Расте даже базовых вещей нет.

     
  • 2.43, Аноним (41), 13:00, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >itoa
    >fast conversion of integer primitives to decimal strings

    Похоже на велосипед.

     
  • 2.44, Аноним (41), 13:03, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >memoffset
    >A crate used for calculating offsets of struct members and their spans.
    >This functionality currently can not be used in compile time code such as const or const fn definitions.

    Bullshit bingo. Мало того, что не в стандартной библиотеке, так ещё и в рантайме считает.

     
  • 2.45, Аноним (41), 13:07, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >static_assertions
    >Assertions to ensure correct assumptions about constants, types, and more.

    То, что в C++ — в стандартной библиотеке. Хорошо хоть, что тут ещё смогли в compile time.

     
  • 2.46, Аноним (46), 13:10, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >rustversion
    >This crate provides macros for conditional compilation according to rustc compiler version, analogous to #[cfg(...)] and #[cfg_attr(...)].

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

     
  • 2.47, Аноним (47), 13:15, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >version_check
    >This tiny crate checks that the running or installed rustc meets some version requirements. The version is queried by calling the Rust compiler with --version. The path to the compiler is determined first via the RUSTC environment variable. If it is not set, then rustc is used. If that fails, no determination is made, and calls return None.

    Ещё один пакет для проверки версии раста, на этот раз путём вызова бинарника. Да, любой пакет изтгигантского дерева зависимостей при компиляции может делать с вашей маоиной что ему угодно, хочет — профиль затереть, хочет - пароли спереть, хочет — с вашего компа кибератаки совершать, хочет — 0day заюзать и поруткитить всю сборочную инфраструктуру, а с прогами, собранными на ней — и весь мир. Это вам не сишка.

     
  • 2.48, Аноним (48), 13:19, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >stability
    >This crate provides attribute macros for specifying API stability of public API items of a crate.
    >The Rust standard library has a concept of API stability and custom attributes for managing that on a per-item basis, but most of these attributes are not available for normal crates to use, with the exception of the #[deprecated] attribute.
    >Currently, only the #[unstable] attribute is available. Please see the documentation of that macro for an explanation on what it does and how to use it.

    То есть
    1. ничего принципиально нового не предоставляют, лишь овторяют то, что и так предоставляет стандартная библиотека
    2. но обязательно нужна сторонняя зависимость — потенциальный бэкдор

     
  • 2.49, Аноним (48), 13:24, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >either
    >The enum Either with variants Left and Right is a general purpose sum type with two cases.

    То есть std::pair<std::optional<LeftT>, std::optional<RightT>. Из-за этого целый пакет городить? Они долбанулись.

     
  • 2.51, Аноним (51), 13:38, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >num_enum
    >Procedural macros to make inter-operation between primitives and enums easier

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

     
  • 2.54, Аноним (54), 13:58, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >num_cpus
    >get Returns the number of available CPUs of the current system.

    аналог std::thread::hardware_concurrency

    >get_physical Returns the number of physical cores of the current system.

    аналогов нет, жуткие костыли на каждую платформу. Кажется было что-то в pthreads.

     
  • 2.55, Аноним (54), 14:16, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >equivalent

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

    >anyhow
    >This library provides anyhow::Error, a trait object based error type for easy idiomatic error handling in Rust applications

    по-видимому тоже должно быть частью стандартной библиотеки

    >cfg_if
    >A macro for defining #[cfg] if-else statements.

    Должно быть частью стандартной библиотеки.

    >cfg_aliases
    >You use the the cfg_aliases! macro in your build.rs script to define aliases such as x11 that could then be used in the cfg attribute or macro for conditional compilation:

    Связка функциональности с целевой платформой должна делаться не в макросах, а в Cargo.toml

     
  • 2.56, Аноним (54), 14:19, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >castaway

    Замена static_cast видимо.

    >cassowary

    Либа для линейного программировения. Зачем она этой утилите?

     
     
  • 3.80, Solver (?), 15:58, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    cassowary - это для ui layout - для вычисления позиции виджетов с учётом их вложенности и ограничений
     
  • 2.57, Аноним (37), 14:33, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >allocator-api2

    Выделение памяти. Должно уже быть в стандартной библиотеке.

    >hermit-abi
    >hermit-abi is small interface to call functions from the Hermit unikernel.

    Вы уж определитесь, под какую платформу собираете.

    >pkg-config

    Поиск зависимостей через pkg-config. Должен быть частью Cargo, а не отдельным пакетом с кастомными програмами. выполняющимися во время сборки.

     
  • 2.58, Аноним (58), 14:41, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >zerocopy
    >FromZeroes indicates that a sequence of zero bytes represents a valid instance of a type

    аналог конструктора в  C++

    >FromBytes indicates that a type may safely be converted from an arbitrary byte sequence
    >AsBytes indicates that a type may safely be converted to a byte sequence

    std::bit_cast

    >Unaligned indicates that a type’s alignment requirement is 1

    Зачем это, это по-умолчанию должно идти.

    Ну и прочие фичи C++ вроде move semantics.

     
  • 2.59, Аноним (58), 14:44, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >itertools

    std::ranges + rangesv3

     
  • 2.60, Аноним (60), 14:49, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >unicode-ident, unicode-segmentation, unicode-width

    Нафигатсистемной утилите с английской локализацией вся эта возня с юникодом? Я понимаю, что имена процессов можно повесить любые, но это уже ССЗБ и должно быть explicitly out of scope.

    >heck
    >This library exists to provide case conversion between common cases like CamelCase and snake_case. It is intended to be unicode aware, internally consistent, and reasonably well performing.

    Зачем эта функциональность в этой утилите?!

     
  • 2.61, Аноним (60), 14:52, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >crossterm_winapi

    Программа не для винды, какой winapi?!

     
  • 2.62, Аноним (60), 14:54, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >strum

    Вроде-бы легитимно, аналог magic_enum и nameof, но это должно быть в стандартной библиотеке.

    >strum_macros (2 версии)

    Почему требуются 2 версии?!

     
  • 2.63, Аноним (60), 14:58, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >hashbrown

    Велосипедный аналог контейнера стандартной библиотеки.

    >once_cell

    std::unique_ptr

     
  • 2.64, Аноним (60), 15:00, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >scopeguard

    Лишь бы C++ с его try-catch-finaly не использовать!

     
  • 2.65, Аноним (60), 15:03, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >thiserror, thiserror-impl
    >This library provides a convenient derive macro for the standard library’s std::error::Error trait.

    Очередной костыльный обход недоделок ядра языка и его стандартной библиотеки.

     
  • 2.66, Аноним (60), 15:05, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >indoc
    >This crate provides a procedural macro for indented string literals.

    Должно быть частью ядра языка и без каких-либо извращений.

     
  • 2.67, Аноним (60), 15:08, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >ryu
    >Pure Rust implementation of Ryū, an algorithm to quickly convert floating point numbers to decimal strings.

    Это работа стандартной библиотеки, и детали реализации алгоритма конвертации вообще не должны волновать программиста, которому либу как чёрный ящик предоставили.

     
  • 2.68, Аноним (60), 15:11, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >lazy_static
    >A macro for declaring lazily evaluated statics.
    >Using this macro, it is possible to have statics that require code to be executed at runtime in order to be initialized.

    В C++ - из коробки. Лишь бы на нормальном языке не писать.

     
  • 2.69, Аноним (60), 15:13, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >memchr
    >This library provides heavily optimized routines for string search primitives.

    Должно быть в стандартной библиотеке.

     
  • 2.70, Аноним (70), 15:21, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >parking_lot parking_lot_core
    >This library provides implementations of Mutex, RwLock, Condvar and Once that are smaller, faster and more flexible than those in the Rust standard library. It also provides a ReentrantMutex type.

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


     
  • 2.71, Аноним (71), 15:24, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >proc-macro2

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

     
  • 2.72, Аноним (71), 15:27, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >proc_macro_crate

    интроспекция зависимостей в Cargo.toml во время компиляции. Не вижу ни одного легитимного применения.

     
  • 2.73, Аноним (71), 15:29, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >redox_syscall

    Отсутствует нормальная документация = вообще не понятно, для черо нужен.

     
     
  • 3.85, anonymous (??), 17:11, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Это аналог winapi для операционной системы redox.

    Видимо, качается для единственной операции: "проверить, что компилируемся не для redox".

     
  • 2.74, Аноним (74), 15:32, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >quote

    предназначен для обфускации.

     
  • 2.75, Аноним (48), 15:39, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >mio

    Очередная велосипедная библиотека асинхронного ввода-вывода.

    >signal-hook

    обработка сигналов, должна быть частью станд. библиотеки

    >signal-hook-mio

    интеграция с mio, должна быть частью самого mio

    >signal-hook-registry

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

     
  • 2.76, Аноним (76), 15:46, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >vsprintf

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

    >indexmap

    Упорядоченные множества и отображения в порядке вставки, должны быть частью станд. библиотеки.

     
  • 2.77, Аноним (76), 15:48, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >smallvec

    Массивы на стеке. Должно быть частью языка и стандартной библиотеки.

     
  • 2.78, Аноним (76), 15:50, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >lock_api
    >This library provides type-safe and fully-featured Mutex and RwLock types which wrap a simple raw mutex or rwlock type. This has several benefits: not only does it eliminate a large portion of the work in implementing custom lock types, it also allows users to write code which is generic with regards to different lock implementations.

    Судя по описанию — очередные костыли из-за угрёбищности станд. библиотеки.

     
  • 2.79, Аноним (76), 15:53, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >autocfg
    >A Rust library for build scripts to automatically configure code based on compiler support. Code snippets are dynamically tested to see if the rustc will accept them, rather than hard-coding specific version support.

    Должно быть частью cargo, а не внешним пакетом, который приделан сбоку и пересобирается.

     
  • 2.81, Аноним (76), 16:03, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >paste

    Либа для какой-то чёрной магии на макросах.

    >syn (2 версии)

    Парсер Rustового кода в AST в виде макроса.

     
  • 2.82, Аноним (76), 16:04, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >log

    Слой абстракции, абстрактный интерфейс. Должен быть частью стандартной библиотеки.

    >libc

    ffi-биндинги к glibc. должны быть частью станд. библиотеки.

     
  • 2.83, Аноним (83), 16:06, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >cc

    Компиляция сишного кода и статическая линковка его к остальной части либы на расте. Зачем писать на расте, если всё равно пишете на C? И опять же: выполнение произвольных команд при сборке пакета должно быть абсолютно запрещено.

     
  • 2.84, Аноним (84), 16:11, 28/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Может быть легитимно
    >ahash - хэш-функция
    >circular-buffer
    >libbpf-rs
    >libbpf-sys
    >toml_datetime, toml_edit

    если они конфиги программы в TOML хранят
    >winnow

    комбинатор парсеров, нужен для редактора TOML.
    >crossterm

    для вывода текста с контрольными кодами
    >ratatui

    аналог libcurses
    >lru

    LRU-кэш

    >nix (2 версии)
    >Rust friendly bindings to the various *nix system functions.

    Зачем нужно — понятно. Но нахрена 2 версии?


    Опять же: всё это дерьмо статически слинковано, отсюда жор памяти и места и прочих ресурсов. И проблемы с обновлениями. Netflix безусловно виноваты в недостатках Rust и её экосистемы — ведь это Netflix выбрала их в качестве основы для своего продукта.

     

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



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

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