Symphonia - 纯Rust音频解码和媒体解复用库
Symphonia是一个纯Rust音频解码和媒体解复用库,支持AAC、ADPCM、AIFF、ALAC、CAF、FLAC、MKV、MP1、MP2、MP3、MP4、OGG、Vorbis、WAV和WebM等多种格式。它具有以下特点:
- 支持流行音频编码解码,支持无缝播放。
- 支持常见媒体容器格式解复用。
- 能读取多种元数据和标签格式。
- 提供基本的音频操作原语,高效处理音频数据。
- 100%安全的Rust代码,最小化依赖。
- 高性能,速度不输主流开源解码器。
该库分为多个crate,默认只启用免版税的开放标准编解码器,其他的可通过feature flag启用。每种格式和编解码器都标注了开发状态。项目计划提供C API和WASM API以支持其他语言调用。此外,该库致力于正确解码媒体、防止拒绝服务攻击、进行模糊测试,并提供强大且易用的API。目前与FFmpeg相比,性能相当且有±15%的差异。该库支持SSE、AVX和Neon等SIMD优化,提供了基本示例和调试工具。
https://github.com/pdeljanov/Symphonia
CPAL - 用纯Rust编写的跨平台音频输入输出低级库
CPAL是一个用纯Rust编写的跨平台音频输入输出低级库。它支持以下功能:
- 枚举支持的音频主机
- 枚举所有可用的音频设备
- 获取当前默认的输入和输出设备
- 枚举设备已知支持的输入和输出流格式
- 获取设备的当前默认输入和输出流格式
- 在选定的设备上以给定的流格式构建和运行输入和输出PCM流
当前支持的主机包括Linux(通过ALSA或JACK)、Windows(默认通过WASAPI)、macOS(通过CoreAudio)、iOS(通过CoreAudio)、Android(通过Oboe)和Emscripten(用于Web汇编)。
该库提供了一些可选的音频后端功能标志,如JACK(在Linux上)、ASIO(在Windows上)和Oboe(在Android上)。在Windows上使用ASIO需要从Steinberg下载ASIO SDK,并通过设置环境变量CPAL_ASIO_DIR来指定路径。还需要安装LLVM并设置LIBCLANG_PATH环境变量。
该库还支持跨平台编译,在Windows上支持MSVC编译器支持的所有交叉编译目标,在Linux和macOS上可以使用MinGW-w64工具链进行编译。
https://github.com/RustAudio/cpal
TensorZero - Rust的LLM解决方案
TensorZero是一个开源平台,旨在帮助大型语言模型(LLM)应用程序从API包装器发展为可防御的AI产品。它通过统一推理、可观测性、优化和实验来实现LLM的数据和学习飞轮。
TensorZero Gateway是一个高性能的模型网关,用Rust编写,为所有主要LLM提供商提供统一的API接口,支持跨平台集成和后备。它处理结构化基于模式的推理,延迟开销小于1毫秒,并内置可观测性和实验功能。它还收集与这些推理相关的下游指标和反馈,并将其存储在你控制的ClickHouse数据仓库中进行分析。
TensorZero Recipes利用这些结构化数据来优化提示词和模型,提供常见工作流的预构建配方,或使用任何语言和平台创建自己的配方。网关的实验功能和GitOps编排能够让你自信地迭代和部署,无论是单个LLM还是数千个LLM。
TensorZero旨在帮助工程师构建、管理和优化下一代LLM应用程序:从真实世界经验中学习的系统。他们提供了快速入门、教程、示例等资源来开始使用。
https://github.com/tensorzero/tensorzero/
kty - 使用Rust语言编写的SSH服务器
kty是一个使用Rust语言编写的SSH服务器,它提供了一个基于TUI的仪表板,将Kubernetes的概念映射到SSH上。它依赖于OpenID提供商进行身份验证,因此您无需在堆栈中引入任何特殊内容。通过SSH,您可以做一些有趣的事情,否则很难实现:
- 使用
ssh -R
将集群上的服务流量转发到本地笔记本电脑。 - 使用
ssh -L
将本地端口的流量转发到集群。 - 使用
scp
或任何SFTP客户端在容器内部本地复制文件。 - 从任何支持SSH的地方访问容器的Shell。
到目前为止,构建kty是一个非常有趣的过程,它突出了Rust生态系统的丰富性:
- ratatui用于TUI。
- russh用于SSH服务器。
- russh-sftp用于SFTP功能。
- kube-rs用于Kubernetes交互。
- tachyonfx用于动画。
https://old.reddit.com/r/rust/comments/1fi9ta4/kty_the_terminal_for_kubernetes/
在illumos操作系统上使用Rust语言的现状和挑战
这篇文章讨论了在illumos操作系统上使用Rust语言的现状和挑战。主要内容包括:
-
虽然Linux内核社区正在推动将Rust引入内核,但illumos作为另一个操作系统,其开发模式不同,目前还没有在上游版本中引入Rust驱动程序。不过,illumos的一个分支Oxide已经包含了一些用Rust编写的网络驱动。
-
与C语言相比,使用Rust开发需要更多时间成本,需要学习绑定生成器bindgen和Rust语言本身。目前Rust在用户态工具上的应用相对较小,但在内核驱动方面还需要更多工作。
-
Rust的cargo包管理器更多面向软件开发人员,与操作系统发行版的包管理器存在一些差异,如无法直接构建共享库等,这给操作系统打包带来了一些挑战。
-
文章最后呼吁Rust社区的开发者加入illumos社区,为用户态工具、安装程序、驱动程序等作出贡献,共同推进Rust在illumos上的应用。
https://wegmueller.it/blog/posts/2024-09-02-rust-on-illumos
C++社区发布了一项提案旨在帮助开发人员编写更安全的代码
经过两年的内存安全压力,C++社区发布了一项提案旨在帮助开发人员编写更安全的代码。这个名为"安全C++扩展"的提案旨在解决C++这种容易出现内存安全漏洞的编程语言的痛点。该提案将为C++添加内存安全功能,如借用检查来防止使用后释放错误,以及初始化分析来保证类型安全性。尽管也有人对C++是否能达到像Rust那样的内存安全水平表示怀疑,但该提案的目标是为C++开发人员提供与Rust一样的内存安全保证,同时降低重写代码到其他语言的成本。接下来的步骤是让整个行业参与进来,完善该提案,为C++的所有功能指定安全版本。减少C++安全漏洞的重要性促使该努力得以付诸实施。
https://www.theregister.com/2024/09/16/safe_c_plusplus/
--
From 日报小组 Mike
社区学习交流平台订阅:
评论区
写评论还没有评论