Показать HN: Zeekstd — реализация формата ZSTD Seekable на Rust=news.ycombinator.com=

Показать HN: Zeekstd – реализация формата ZSTD Seekable на Rust ( github.com/rorosen ) Здравствуйте,

Я хотел бы поделиться реализацией на Rust формата поиска Zstandard, над которым я работаю.

Обычные сжатые файлы zstd состоят из одного кадра, что означает, что вам нужно начать распаковку с самого начала. Формат seekable разбивает сжатые данные на ряд независимых кадров, каждый из которых сжимается по отдельности, так что для распаковки раздела в середине архива zstd требуется распаковать максимум один кадр дополнительных данных, а не весь архив.

Я начал работать с seekable-форматом, потому что хотел возобновить загрузку больших сжатых файлов zstd, которые распаковываются и записываются на диск на лету. Сначала я создал и использовал привязки к функциям C, которые доступны в upstream[1], однако, я довольно быстро наткнулся на первую ошибку сегментации (сейчас она исправлена) и обнаружил, что функции позволяют только базовые вещи. Присмотревшись к реализации upstream, я заметил, что она использует функции основного API, которые теперь устарели, и не позволяет получить доступ к низкоуровневым контекстам (де)компрессии. Мне это кажется реализацией PoC/demo, которая не поддерживается так же, как основной API zstd, возможно, поэтому она находится в каталоге contrib.

Мой вариант использования, по-видимому, требовал полной переписывания формата seekable, поэтому я решил реализовать его с нуля на Rust, используя привязки к расширенному API сжатия zstd, доступному с zstd 1.4.0.

Результатом является единый контейнер библиотеки зависимостей[2] и контейнер CLI[3] для формата seekable, который похож на обычный инструмент zstd.

Любые отзывы будут высоко оценены!

[1]: https://github.com/facebook/zstd/tree/dev/contrib/seekable_f… [2]: https://crates.io/crates/zeekstd [3]: https://github.com/rorosen/zeekstd/tree/main/cli

perching_aix 4 минуты назад [–]
Правильно ли я понимаю, что “обновленная версия спецификации” – это ваше собственное обновление спецификации, а не официальная редакция? Не удалось найти соответствующую официальную редакцию спецификации, по крайней мере, ни с таким номером версии, ни с какой-либо другой. Немного запутанно.


Рассмотрите возможность подачи заявки на набор в YC на осень 2025 года! Заявки принимаются до 4 августа

Source: news.ycombinator.com

Leave a Reply

Your email address will not be published. Required fields are marked *