中国Rust开发者大会参会记录
Amazon:Rust and 生成式AI应用
PyO3,Rust/Py binding,还有其他一些开源工具例如diffuser-rs等
AWS为Rust开发者提供SDK服务,同时还有生成式AI产品Amazon Q
非凸科技:首席架构师乔丹,Rust程序的不同链接方式在交易系统中的典型应用
投研团队都写Rust,策略/工程,但是strategy和facade(前端)依然要两个团队分别维护
- 第一种方式:crate-type=lib,用workspace捏在一个大项目里,dependency指定A依赖B
- 代码有泄露风险
- 第二种方式:crate-type=cdylib,用extern C来指定需要分发出去的代码
- C风格函数无法接受Rust独有类型,FFI
- 第三种方式:crate-type=rlib,保留Rust语言特性,性能无损,无FFI
- 不再开放代码权限,静态链接
- 但是ABI稳定性在长期开发中可能会成为问题,毕竟Rust的工具链一直在更新——不过可以约定公司使用的版本
字节跳动:吴迪,Rust服务端开发
Rust与降本增效——性能高的同时,Review代码的时候极大地减少心智负担,只需要关心业务逻辑
将GO迁移到Rust后,可用性增加,CPU使用率下降,性能提升约50%
要敢于造轮子,社区很多库有的时候没那么完善
Rust可能未来会作为计算基座
JetBrain:交互式debugRust代码
绝大多数人都哦再用println!或者dbg!调试
交互式debug:breakpoint, stepbystep
Sonala:华语区大使李学斌
Bitcoin: proof of work, Ethereum: smart contract (proof of stack), Solana: proof of history
EVM: 以太坊虚拟机,全局竞价,单线执行
SVM:Solana虚拟机,不同的竞价(NTF, DEX等类型)并行在对应队列中单线执行
Sonala的基础交易费非常低,导致会有为了争先交易而产生的泛洪请求。为了保证网络质量采用quic
Vara Network
采用WASM而不是EVM做智能合约,并行采用Actor消息模型
Async维测&定位的探索和思考
Rust,无栈协程,Future用工作线程的栈,没有独立栈空间
协程状态机与函数体里的await位置有关,从而可以记录从pending转而重新执行函数时从哪里恢复
Rust HashMap 比看起来更复杂
场景:开发时序数据库HoraeDB,为了高效并发做了分段HashMap,Rwlock
- 用Vec Buffer提高局部性,减少tlb/cache miss
- 实际分配的内存比with_capacity指定的多
- 先乘 8/7,然后对齐到2^n,这么多个buckets对应的kv空间
- 同时hashmap对内存的随机访问可能会分散在不同的页上
- capacity需要微调合理,否则会内存爆炸
- 尽量不要放太大的东西
Rust和C++互操作及交叉编译 朱树磊 浙江大华
动机
公司legacy code比较多
使用大型C/C++库和中间件
希望使用C++的特性
HPC的CUDA等类C++语言Rust也无法直接调用
跨语言互操作工具包括FFI,bindgen,cbindgen,cpp!
cxx:安全的C++和Rust互操作工具