#prog #rust #rustlib #amazingopensource
Symphonia is a pure Rust audio decoding and media demuxing library supporting AAC, ADPCM, ALAC, FLAC, MKV, MP1, MP2, MP3, MP4, OGG, Vorbis, WAV, and WebM.
Features
* Decode support for the most popular audio codecs with support for gapless playback
* Demux the most common media container formats
* Read most metadata and tagging formats
* Automatic format and decoder detection
* Basic audio primitives for manipulating audio data efficiently
* 100% safe Rust
* Minimal dependencies
* Fast with no compromises in performance!
И последний пункт — не пустой звук: согласно бенчмаркам, производительность сопоставима с FFMpeg (правда, тестировался только однопоточный режим)
  
  Symphonia is a pure Rust audio decoding and media demuxing library supporting AAC, ADPCM, ALAC, FLAC, MKV, MP1, MP2, MP3, MP4, OGG, Vorbis, WAV, and WebM.
Features
* Decode support for the most popular audio codecs with support for gapless playback
* Demux the most common media container formats
* Read most metadata and tagging formats
* Automatic format and decoder detection
* Basic audio primitives for manipulating audio data efficiently
* 100% safe Rust
* Minimal dependencies
* Fast with no compromises in performance!
И последний пункт — не пустой звук: согласно бенчмаркам, производительность сопоставима с FFMpeg (правда, тестировался только однопоточный режим)
GitHub
  
  GitHub - pdeljanov/Symphonia: Pure Rust multimedia format demuxing, tag reading, and audio decoding library
  Pure Rust multimedia format demuxing, tag reading, and audio decoding library - pdeljanov/Symphonia
🔥7👍1
  Forwarded from я что-то �� и всё ����
🔁 Bash.org.ru (типа)
1: как откасить от армии?
2: замутить с дочкой военкома
1: а если у него мальчик?
2: ну если ты такой принципиальный то иди в армию
1: как откасить от армии?
2: замутить с дочкой военкома
1: а если у него мальчик?
2: ну если ты такой принципиальный то иди в армию
😁20❤3💩2🤡2
  Forwarded from Agagagagagagagaggagagaggaggaggaga
Вот сейчас все орут с Яндекса, а они дождутся, когда все самые кривые места разойдутся мемасами по телеге, и отрефакторят все косяки, не вложив ни часа в анализ. Stonks, не иначе
🔥34😁5🤡2🌚1
  #prog #rust #rustreleasenotes
Вышла версия Rust 1.67.0! В этот раз заметных изменений не так уж и много. Вот полный список, если что. Как всегда, выпишу только то, что интересно мне.
▪️До стейбла докатилось изменение, о котором я уже писал:
▪️Ещё одно такое изменение: замена реализации MPSC-канала из std.
▪️И ещё одно такого рода: порядок дропа временных значений в цепочках из выражений, соединённых только
▪️И ещё одно:
▪️Трейт Sized стал коиндуктивным. Иными словами, если задача доказать ограничение
Остальное в подробных заметках о релизе.
Вышла версия Rust 1.67.0! В этот раз заметных изменений не так уж и много. Вот полный список, если что. Как всегда, выпишу только то, что интересно мне.
▪️До стейбла докатилось изменение, о котором я уже писал:
#[must_use] на асинхроных функциях теперь предупреждает не только о неиспользуемой футуре, возвращаемой функцией, но и о неиспользуемом возвращённом этой футурой значении.▪️Ещё одно такое изменение: замена реализации MPSC-канала из std.
▪️И ещё одно такого рода: порядок дропа временных значений в цепочках из выражений, соединённых только
&& и соединённых только ||, теперь всегда слева направо, без специального отношения к первому подвыражению.▪️И ещё одно:
NonZero*::BITS.▪️Трейт Sized стал коиндуктивным. Иными словами, если задача доказать ограничение
T: Sized приводит к необходимости доказать это же самое ограничение, образуя цикл в логике, то вместо ошибки компилятор теперь выводит, что тип таки реализует Sized. На практике это означает, что рекурсивные типы, параметризованные типом индирекции, теперь нормально компилируются. Скажем, этот код не компилировался до этого изменения и компилируется после:trait Allocator {
    type Allocated<T>;
}
enum LinkedList<A: Allocator> {
    Head,
    Next(A::Allocated<Self>),
}
▪️Компилятор слегка поумнел в плане вывода типов для замыканий.Остальное в подробных заметках о релизе.
👍11
  Forwarded from я что-то �� и всё ����
  
Оказывается, пайдантик может молча дропнуть создание класса, если немного накосячить с объявлением
Узнала я об этом при попытке проверить работу алиасов. Если базовая модель объявляет поле, а наследник переобъявит его через присваиваение pydantic.Field(alias=...), но *не* укажет тайпхинт, пайдантик дропнет вообще весь класс, как будто его и не было никогда
Причём достаточно одного такого поля, чтобы весь класс улетел в мусорку
Узнала я об этом при попытке проверить работу алиасов. Если базовая модель объявляет поле, а наследник переобъявит его через присваиваение pydantic.Field(alias=...), но *не* укажет тайпхинт, пайдантик дропнет вообще весь класс, как будто его и не было никогда
Причём достаточно одного такого поля, чтобы весь класс улетел в мусорку
🤣13👍4👎3😁1
  Не плачь, ибо плачут только четырнадцатилетние девочки.
Ты взрослый мужчина — рыдай!
Ты взрослый мужчина — рыдай!
👍13🤮5😭5🔥1😐1