< 返回版块

Mike Tang 发表于 2024-09-17 14:40

Symphonia - 纯Rust音频解码和媒体解复用库

Symphonia是一个纯Rust音频解码和媒体解复用库,支持AAC、ADPCM、AIFF、ALAC、CAF、FLAC、MKV、MP1、MP2、MP3、MP4、OGG、Vorbis、WAV和WebM等多种格式。它具有以下特点:

  1. 支持流行音频编码解码,支持无缝播放。
  2. 支持常见媒体容器格式解复用。
  3. 能读取多种元数据和标签格式。
  4. 提供基本的音频操作原语,高效处理音频数据。
  5. 100%安全的Rust代码,最小化依赖。
  6. 高性能,速度不输主流开源解码器。

该库分为多个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,您可以做一些有趣的事情,否则很难实现:

  1. 使用ssh -R将集群上的服务流量转发到本地笔记本电脑。
  2. 使用ssh -L将本地端口的流量转发到集群。
  3. 使用scp或任何SFTP客户端在容器内部本地复制文件。
  4. 从任何支持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语言的现状和挑战。主要内容包括:

  1. 虽然Linux内核社区正在推动将Rust引入内核,但illumos作为另一个操作系统,其开发模式不同,目前还没有在上游版本中引入Rust驱动程序。不过,illumos的一个分支Oxide已经包含了一些用Rust编写的网络驱动。

  2. 与C语言相比,使用Rust开发需要更多时间成本,需要学习绑定生成器bindgen和Rust语言本身。目前Rust在用户态工具上的应用相对较小,但在内核驱动方面还需要更多工作。

  3. Rust的cargo包管理器更多面向软件开发人员,与操作系统发行版的包管理器存在一些差异,如无法直接构建共享库等,这给操作系统打包带来了一些挑战。

  4. 文章最后呼吁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

社区学习交流平台订阅:

评论区

写评论

还没有评论

1 共 0 条评论, 1 页