【Rust日报】2022-03-08 Fornjot: 世界需要另一个CAD程序

2022-03-24 13:31:36 浏览数 (1)

Fornjot: 世界需要另一个CAD程序

Fornjot (Code-CAD in Rust) - Weekly Dev Log - 2022-W09

关于Fornjot

Fornjot是一个早期项目,旨在创建新一代的Code-CAD应用程序:因为世界需要另一个CAD程序。

这个项目的目标是创建一个有如下特色的CAD应用程序:

  • 使用代码优先的方法;
  • 是开源的;
  • 广泛使用,支持所有主要平台;
  • 基于一个新的CAD内核,用Rust语言编写;
  • 提供一个全面的功能集;
  • 以及对不同建模语言的支持;

这个目标还没有实现。事实上,还远远没有! 但Fornjot正在一步一步地慢慢变得更好。

Fornjot正在积极开发中,但仍然是实验性的。目前的工作重点是提供一套稳定的基本CAD功能。

基本建模功能

在这一点上,Fornjot支持基本的2D形状(由线段、圆和它们之间的有限组合组成的草图),沿着直线路径扫过这些2D形状以创建3D形状,以及对构造实体几何(CSG)的一些非常不完整的支持。

短期到中期的优先事项是提供固体CSG支持、更灵活的草图和更灵活的扫描(沿着圆或螺旋)。长期计划是不断增加更高级的CAD建模功能,以支持甚至复杂的模型和工作流程。

平台支持

截至目前,Fornjot在Linux、Windows和macOS上运行。该项目主要是在Linux上开发的,所以其他平台可能会有bug。

中短期的计划是增加对网络平台的支持,因此Fornjot可以在浏览器中运行。长期来看,计划是增加对主要移动平台的支持。

导出到3MF

支持将模型导出到3D制造格式(3MF),这在3D打印中使用。

Kira(游戏音频库) v0.6.0 - 完全重写以支持流媒体声音和更精简、更优雅的API

kira (game audio library) v0.6.0 - complete rewrite with streaming sound support and a leaner and more elegant API

关于Kira

Kira是一个与后台无关的库,用于为游戏创建富有表现力的音频。它提供了用于平滑调整声音属性的参数,一个灵活的混合器,用于将效果应用于音频,以及一个时钟系统,用于为音频事件精确计时。

平台支持

  1. Kira主要用于桌面平台。大多数测试是在Windows上进行的,但它也被成功地用在了Linux上。
  2. Kira也可以在wasm环境中使用,但有以下限制:
    • 静态声音不能从文件中加载;
    • 不支持流媒体声音,因为它们会大量使用线程;

代码示例

代码语言:javascript复制
use kira::{
	manager::{
		AudioManager, AudioManagerSettings,
		backend::cpal::CpalBackend,
	},
	sound::static_sound::{StaticSoundData, StaticSoundSettings},
};

// Create an audio manager. This plays sounds and manages resources.
let mut manager = AudioManager::<CpalBackend>::new(AudioManagerSettings::default())?;
let sound_data = StaticSoundData::from_file("sound.ogg", StaticSoundSettings::default())?;
manager.play(sound_data.clone())?;
// After a couple seconds...
manager.play(sound_data.clone())?;
// Cloning the sound data will not use any extra memory.

项目地址:https://github.com/tesselode/kira


turbofish: 飞驰的海洋生物

Pronunciation of <[_]>

turbofish,通常用于在Rust表达式中为泛型类型、函数或方法指定参数。

这里有个小网站可以通过泛型参数自定义turbofish的形状,它的小尾巴还能游动哦:

  • turbofish-int
  • turbofish-slice

使用Rust实现一个有大小限制可过期的LRU缓存

Implementing a size-bounded LRU cache with expiring entries for my DNS server (in Rust)

跟着作者一起学习,如何使用Rust编程语言为DNS服务器实现一个有大小限制的LRU缓存,并有过期的条目。


From 日报小组 odd-cat

0 人点赞