smol实现的executor有三类: thread-local:用于执行! 另外也提供了smol::block_on方法,来执行单个future。下面分别分析各个executor的实现细节。 smol整体结构图 ? 在实现上,这个executor并没有根据cpu的核数创建固定的工作线程,而是每个工作线程必须通过主动调用smol::run来加入工作线程。 spawn出来的task的执行通过smol::run来驱动(blocking executor自带线程池,不需要驱动)。 而目前smol采用了和tokio类似的策略,整个运行时是需要手动启用,否则会产生运行时panic,考虑到目前tokio的这个策略对新用户困扰颇多,smol估计也会有类似的问题,目前已经有人提了几个issue
简介 smol是一个轻量而高效的异步runtime。它采用了对标准库进行扩展的方式,整个runtime只有大约1500行代码。作者stjepang大神是大名鼎鼎crossbeam的作者。 而他之前参与tokio和async-std的开发的经验和思考,产生出了从头开始构建的smol这个库。 实际上在达到和tokio以及async-std相似的性能的前提下,smol代码短线精悍,完全没有依赖mio库,API更加简单,并且没有unsafe代码!而且,它还兼容tokio和async-std。 ; Ok(()) } fn main() -> io::Result<()> { smol::run(async { // 创建listener let = smol::reader(std::io::stdin()); let mut stdout = smol::writer(std::io::stdout());
smol - 一个快捷有短小精悍的Rust异步运行环境库) smol (@stjepang) - A small and fast async runtime for Rust https://github.com /stjepang/smol 这个运行环境库扩展了rust语言标准类库 并结合了异步机制,仅用1500行代码写成! Timers计时器 代码例子:需要在examples文件夹中来运行,具体例子执行如下 -- $ cd examples$ ls$ cargo run --example ctrl-c 兼容性:看这些例子可以明白smol 是怎么可以跟别的异步运行库混用的,包括: async-std,tokio, surf, reqwest 其中有一个非常重要的功能可以无缝的集成全部使用tokio作为依赖的库包,它创建一个global tokio运行库并在smol 里面直接设置内容, 可以通过下面的方式激活这个功能: [dependencies]smol = { version = "0.1", features = ["tokio02"] } 下面是文档生成方式
bun 有一个参数--smol,官方文档说如果加上这个参数,可以少占用内存。这让我怀疑 bun 在各方面之所以速度表现优秀,在于它大量采用了“空间换时间”的优化策略,它在运行之后,内存占用必定很多。 我分别添加--smol 参数与不添加参数,做两次测试,发现内存变化寥寥无几。看来使用 smol 参数与否,并没有明显影响内存占用啊。 也可能是当前这个只打印一行“hello world”的程序太简单了,下面我换一个稍微复杂的博客程序进行测试,首次是一般模式: 使用了 bun,未启用 smol 占用了约 730MB 内存了,好家伙, 然后看启用了 smol 模式的内存占用: 启用了 smol 占用了约 722MB 内存!我不能说 smol 这个参数没有作用,毕竟同样的项目是少了几 MB 的。但减少的实在太少了。 为什么别的运行时都没有 smol 参数,bun 为什么专门搞一个 smol 参数?它大概也预感到了它需要这个东西。
以下是该项目的核心优势: 提供全面指南 深入讲解不同方法论 包含大量可执行 Jupyter Notebooks 以及相关资料 有一些专题还包括与之相关的 Microsoft Learn 模块 smol-ai /developerhttps://github.com/smol-ai/developer Stars: 11.3k License: MIT smol developer 是一个 “初级开发人员” 代理 (即 smol dev),它可以: 根据给定产品规范为您搭建整个代码库;或者为您提供基本构建模块,使得在自己的应用程序中拥有一个小型开发者。 但仍然注重于人类开发者 新增 Library mode,让用户将 “smol developer” 添加到他们自己的项目里 支持 API mode (via Agent Protocol),允许用户调用
smol 和 async-std,实质是近乎一个团队的贡献。起初 stjepang 启动了 smol-rs 项目,目标是使 async-std 灵活的内部设计,可以供其它运行时重用。 后来,async-std 的基础核心,也是基于 smol 的;而 smol 的则直接用到了 async-std 团队创建的 surf、tide 等。 glommio。 smol 在 1 月份做了一次更新,所以虽然进度缓慢,但一直在推动。
https://morestina.net/blog/1432/parallel-stream-processing-with-rayon https://github.com/rayon-rs/rayon smol vs tokio vs async-std Hello,与tokio和async-std相比,我试图更好地了解smol(和相关依赖包)背后的动机。 https://www.reddit.com/r/rust/comments/i5hppj/smol_vs_tokio_vs_asyncstd/ From 日报小组 TOM 社区学习交流平台订阅: Rustcc
/blob/master/docs/design.md GitHub:https://github.com/cberner/redb Rust异步框架评测 主要对 async_std,Tokio 和 smol 结论如下: async_std 和 smol 非常接近标准库,并在某些负载上更优。 Tokio 似乎受到 CPU-bound(Rust)异步任务的不利影响。 async_std:https://async.rs/ Tokio:https://tokio.rs/ smol:https://github.com/smol-rs/smol 文章链接:https:/
周末认真看了一个Huggingface上的热门教程 《构建世界级语言模型的实战指南:先进语言模型训练背后的挑战、决策与现实》:https://huggingface.co/spaces/HuggingFaceTB/smol-training-playbook ,全英 我是配合使用沉浸式翻译阅读的,之前我介绍过 全方位拥抱 DeepSeek,本地部署、AI编程、辅助写作、网页/PDF全文_翻译_ 它也有PDF版本:https://huggingfacetb-smol-training-playbook.hf.space /the-smol-training-playbook-the-secrets-to-building-world-class-llms.pdf 我本想翻译,但是即便是网页版全文翻也非常慢,token消耗太多了
网站链接,https://rustfest.global/ 播放链接,https://watch.rustfest.global/ Rust 异步架构图 关于Tokio,async-std,smol的异步架构图片链接 lesterli/blockchain/master/images/rust/async.png),另附一篇帖子(链接:https://www.reddit.com/r/rust/comments/i5hppj/smol_vs_tokio_vs_asyncstd
Zenoh官方评估了三个异步框架(async_std/Tokio/smol)在异步网络上的性能。对每一种方法进行评估,并与Rust标准库提供的等效同步原语提供的基线性能进行比较。 评估显示,async_std和smol非常接近标准库,并且在某些工作负载上优于标准库。另一方面,Tokio似乎很快就达到了它的极限,即100 msg/s时达到18µs,并且TCP和UDP之间没有差异。
代理 •Smol Developer[36] — 通过CLI代理根据提示生成存储库。使用OpenAI和Anthropic。•Aider[37] — 通过CLI助手和代理生成更改和提交到存储库。 支持Smol Developer[60]。•Morph Rift[61] — 开源的VS Code扩展,允许合并代码生成代理的输出。 34] AskCommand: https://www.askcommand.cppexpert.online/ [35] Butterfish: https://butterfi.sh/ [36] Smol Developer: https://github.com/smol-ai/developer [37] Aider: https://github.com/paul-gauthier/aider [ Developer: https://github.com/smol-ai/developer [61] Morph Rift: https://github.com/morph-labs/rift
可以运行在tokio, async-std, 或者smol上. 用起来就像下面一样简单. fn main() { trillium_smol::run(|conn: trillium::Conn| async move { conn.ok("
smol-ai/GodMode[6] Stars: 3.6k License: MIT picture 这个项目是一个专用的聊天浏览器,只做一件事:通过单个键盘快捷方式 (Cmd+Shift+G) 帮助您快速访问 Significant-Gravitas/Auto-GPT-Plugins: https://github.com/Significant-Gravitas/Auto-GPT-Plugins [6] smol-ai /GodMode: https://github.com/smol-ai/GodMode
smol:一个小且简单的异步运行时。提供可用于包装UnixStream或TcpListener此类的结构的Async特质。 fuchsia-async:在Fuchsia操作系统中使用的执行器。 它本身与async-std和smol不兼容,它们依赖于[async-executor 板条箱](https://docs.rs/async-executor)以及在futures中定义的AsyncRead
async_std的异步零开销发布/订阅、存储/查询和计算框架,Zenoh是用Rust编写的,它利用异步特性来实现高性能和可扩展性; 在这篇博客中,Zenoh官方评估了三个异步框架(async_std/Tokio/smol 评估显示,async_std和smol非常接近标准库,并且在某些工作负载上优于标准库。另一方面,Tokio似乎很快就达到了它的极限,即100 msg/s时达到18µs,并且TCP和UDP之间没有差异。
支持多种数据格式 可以通过 #[derive(Serialize, Deserialize)] 来设置自动派生 提供了示例代码和 API 文档 smol-ai/GodMode[7] Stars: 854 microsoft/Bringing-Old-Photos-Back-to-Life [6] serde-rs/serde: https://github.com/serde-rs/serde [7] smol-ai /GodMode: https://github.com/smol-ai/GodMode
/smolvlm-700m") processor = AutoProcessor.from_pretrained("smol-vlm/smolvlm-700m") # 转换为TorchScript /smolvlm-700m") model = AutoModelForCausalLM.from_pretrained("smol-vlm/smolvlm-700m") # 设置为评估模式 model.eval /smolvlm-700m") model = AutoModelForCausalLM.from_pretrained("smol-vlm/smolvlm-700m") # 设置为评估模式 model.eval from PIL import Image import os import glob # 加载处理器和模型 processor = AutoProcessor.from_pretrained("smol-vlm /smolvlm-700m") model = AutoModelForCausalLM.from_pretrained("smol-vlm/smolvlm-700m") # 设置为评估模式 model.eval
GPT Pilot与Smol developer和GPT engineer有何不同? : https://github.com/Pythagora-io/gpt-pilot#-how-gpt-pilot-works [10] GPT Pilot 与 Smol developer 和 GPT : https://github.com/Pythagora-io/gpt-pilot#hows-gpt-pilot-different-from-smol-developer-and-gpt-engineer -how-gpt-pilot-works [32] : https://github.com/Pythagora-io/gpt-pilot#hows-gpt-pilot-different-from-smol-developer-and-gpt-engineer
OpenAI ChatGPT API一样调用Claude API 支持流式响应 支持claude-v1.3、claude-v1.3-100k模型 可通过Cloudflare Workers或Docker部署 smol-ai