4作者: KallDrexx6 个月前
我已经花了大约 9 个月的时间,编写了一个将 .NET 代码转译为 C 代码的工具 (<a href="https:&#x2F;&#x2F;github.com&#x2F;KallDrexx&#x2F;dntc">https:&#x2F;&#x2F;github.com&#x2F;KallDrexx&#x2F;dntc</a>),这纯粹是出于“我想知道我能不能做到”的好奇心(最终目的是希望能够用 C# 而不是 C 进行嵌入式开发)。 在这个过程中,我一直在寻找合适的里程碑来测试这个转译器。当我了解到 Linux eBPF 时,我意识到这最终成为了一个有趣的用例,并创建了 DotnetEbpf 原型。 它允许你完全用 C# 编写 Linux 内核侧的 eBPF 应用程序。虽然由于一些限制,它似乎限制了 C# 的实用性,但它确实提供了比 C 更好的语法,以及单元测试功能(因为每个原生 eBPF 函数都可以用 C# 原生代码填充,这些代码在转译时会被忽略,此外还有泛型功能)。 未来,我希望能够完善在 C# 内核侧和 C# 用户空间侧之间正确连接数据结构的能力(以及从 C# 用户空间应用程序安装 eBPF 内核应用程序的能力),这将使得完全用 C# 编写全栈 eBPF 安全软件成为可能。
17作者: matthewolfe6 个月前
TokenDagger 是 OpenAI 的 Tiktoken(Llama 3、Mistral、GPT-3.* 等背后的分词器)的即插即用替代品。它使用 C++ 17 编写,并带有轻量级的 Python 绑定,保留了完全相同的 BPE 词汇表/特殊标记规则,并且专注于原始速度。 我正在通过从头开始重新实现整个堆栈来学习 LLM 的内部原理。对 TikToken 的 Python/Rust 实现进行性能分析表明,大量时间都花在了正则表达式匹配上。我的大部分性能提升来自于:a) 使用更快的即时编译正则表达式引擎;以及 b) 简化算法,完全放弃对特殊标记的正则表达式匹配。 基准测试代码已包含在内。值得注意的结果显示: * 在单线程上,代码样本分词速度提高了 4 倍。 * 在 1GB 自然语言文本文件上测试时,吞吐量提高了 2-3 倍。
2作者: abbychau6 个月前
我刚刚完成了 MySQL 解析器,它很快将在 MIST 中使用。<p>事情的起因是,目前兼容性最好的 TiDB MySQL 解析器依赖于名为 "parser_driver" 的某些类型。<p>Parser Driver 包含了 TiDB 的类型,但不幸的是,TiDB 不打算将与 TiDB 紧密相关的 MySQL 类型作为独立的 Go 包移出。GitHub issue:16381<p>在我看来,TiDB 本身将所有开源模块混合在一起,形成了一个非常主观的整体。<p>我正在将 MIST 移植到 WASM 二进制文件,而 TiDB 的系统调用将被愚蠢地包含、编译,并在针对 WASM 时导致静态链接失败。<p>因此,我花了几天时间提取现有的解析器包和 parser driver,并将纠缠在一起的 TiDB 类型重新导出到一个真正可跨平台且准备好移植到 WASM 的 MySQL 解析器 Go 包中。<p>仓库:<a href="https:&#x2F;&#x2F;github.com&#x2F;abbychau&#x2F;mysql-parser">https:&#x2F;&#x2F;github.com&#x2F;abbychau&#x2F;mysql-parser</a> 交互式解析器演示:<a href="https:&#x2F;&#x2F;abbychau.github.io&#x2F;mysql-parser&#x2F;" rel="nofollow">https:&#x2F;&#x2F;abbychau.github.io&#x2F;mysql-parser&#x2F;</a>