尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
SenRi FFI:统一跨语言外部函数接口
SenRi FFI统一跨语言外部函数接口为什么会有这个项目写一个需要调用原生 C 库的工具时JavaScript 和 Python 的 FFI 方案各自为政。Node.js 有 node-ffi-napiDeno 有 Deno.dlopenBun 有内置的 ffapiPython 有 ctypes 和 cffi。同样一个 C 函数在 Node 里用一种写法到 Deno 里换一种到 Python 里再换一种。每个平台都在重复造轮子每个开发者都在重复学一套新的 API。SenRi FFI 要解决的就是这个问题。它是什么一个统一的外部函数接口库。不管你在 KossJS、Node.js、Bun、Deno 还是在 Python 里调用 C 函数的方式是一样的。// JSconstlibnewLibrary(libtest.so)constaddlib.bind(add,int32,[int32,int32])add(1,2)// 3# PythonlibLibrary(libtest.so)addlib.bind(add,int32,[int32,int32])add(1,2)# 3同样的 API同样的类型名称同样的调用方式。能做什么类型系统int8 到 int64、float32 到 float64、pointer、cstring、void跨语言名称一致不需要记各平台的映射表。结构体自动处理布局和对齐支持紧凑排列、嵌套、位域。定义一次JS 和 Python 都能用。指针从原生内存读写基本类型和 C 字符串支持偏移量操作。回调把 JS 或 Python 函数包装成 C 函数指针传给原生库调用。内存管理alloc、free、addressOf以及 errno 和 strerror 获取错误信息。异步KossJS 原生异步Deno 和 Node 走 Worker 线程Bun 有 Promise 包装带警告。架构适配器模式。每个运行时有一个对应的适配器自动检测当前环境选择合适的那个。如果你想换底层 FFI 引擎实现 LibraryLike 接口就能注入自定义后端也支持部分实现配合内置适配器回退。核心逻辑跟适配器解耦加新运行时不难。技术栈JS 包用 TypeScript 6.x、Vitest 4.x底层 FFI 引擎是 koffi。Python 包支持 3.13用 Hatchling 构建、Ruff 做检查后端支持 ctypes内置和 cffi可选。测试库用 Rust 写 cdylib统一提供给两个语言包调用。项目结构senri_ffi/ ├── packages/ │ ├── senri_ffi_js/ # JS/TS 包 │ │ ├── src/adapters/ # 运行时适配器 │ │ ├── src/types/ # 类型定义 │ │ ├── src/async/ # 异步支持 │ │ └── ... (library, pointer, struct, callback, memory) │ └── senri_ffi_py/ # Python 包 │ ├── src/senri_ffi/adapters/ # ctypes / cffi │ └── ... └──test-lib/ # Rust 测试库谁适合用需要在 Node、Deno、Bun、KossJS 之间共享 FFI 代码的项目同一个原生库要同时给 JS 和 Python 项目调用想做跨语言 SDK不想给每个语言单独写绑定对类型安全和统一 API 有要求的团队现状项目持续开发中。测试覆盖包括单元测试JS 用 VitestPython 用 Pytest和集成测试通过 Rust 测试库验证跨语言一致性CI 自动跑。相关链接项目地址github.com/TT23XR-Studio/senri_ffiKossJS 文档docss.sxxyrry.qzz.io/SenRi FFI/TT23XR Studio 官网tt23xr.sxxyrry.qzz.io/Apache-2.0 许可证欢迎使用和贡献。
RELATED

相关推荐

Windows Server 2016 IIS 10.0 网站部署全流程:从安装配置到ASP.NET Core/PHP实战

Windows Server 2016 IIS 10.0 网站部署全流程:从安装配置到ASP.NET Core/PHP实战

1. 项目概述:从零搭建一个可访问的网站 如果你刚接手一台安装了Windows Server 2016的服务器,或者正准备将开发好的网站项目上线,那么配置IIS并部署网站就是你的第一道关卡。这听起来像是系统管理员的基础工作,但很多开发者或运维…

📅 2026/9/5 22:34:04
运放输出偏置伺服电路设计:原理、实战与避坑指南

运放输出偏置伺服电路设计:原理、实战与避坑指南

1. 从“漂移”说起:为什么你的精密电路总在“跑偏”?如果你玩过精密测量或者高保真音频,大概率遇到过一种让人头疼的现象:电路明明设计得没问题,元器件也都是正品,但输出的直流电压就是不稳定,它…

📅 2026/9/2 8:26:32
深度解析徐州城乡建设局网站:如何通过官方平台高效获取城建政策与便民服务指南

深度解析徐州城乡建设局网站:如何通过官方平台高效获取城建政策与便民服务指南

在这个数字化的时代,我们每个人的生活都与“城市”这两个字紧紧绑在一起。早上出门,你关心的是哪条路在修,会不会堵车;周末想给孩子找个好公园,你会问哪里环境好;家里要装修或者买房子,你最在意的就是周边的配套设施和未来的规划。而在这一切的背后,有一个声音最权威、…

📅 2026/9/8 1:06:33
MORE NEWS

更多资讯

📰

Jev TypeSafe AI 决策系统架构解析与生产落地实践

1. 拆解 Jev 的核心命题:为什么“决策系统”需要一次架构级重写第一次看到“Jev”这个名字,加上“TypeSafe AI”“AI 决策系统”这几个关键词,我脑子里第一反应是:又一个把类型系统往 AI 上套的学术玩具?但把热词里那些…

📰

从零搭建AI日报闹钟:定时抓取+DeepSeek生成+企业微信推送全链路

1. 为什么我要折腾一个“AI 日报闹钟”每天早上到工位,第一件事是打开各种信息源:项目群消息、待办清单、行业动态、昨天遗留的代码评审、今天要跟进的客户。信息是散的,人是懵的。我试过用待办软件、用笔记工具、用各种聚合阅读器&#xff0…

📰

JEPA:用状态跃迁向量重构世界模型的自监督学习范式

1. 这不是又一个“大模型变体”,而是重构感知与推理底层逻辑的尝试JEPA——联合嵌入预测架构(Joint Embedding Predictive Architecture),这个名字刚出现时,我第一反应是:又一个缩写堆砌的论文术语。但真正…

📰

一次关于子查询的优化:用 TaoToken 统一 Key 打通 SQL 调优工作流

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

Codeg分屏视图实操指南:一个界面同时监控多个AI编程Agent的工作

Codeg分屏视图实操指南:一个界面同时监控多个AI编程Agent的工作 【免费下载链接】codeg Collaborative multi-agent AI coding workspace: aggregate sessions from Claude Code, Codex, OpenCode, Pi, Grok Build, etc. Desktop app, self-hosted server, or Docke…

📰

windows下git使用教程1(安装与使用)

git版本:2.53.0.2 1.什么是git Git 是一款开源的分布式版本控制系统,由 Linus Torvalds 于 2005 年开发,核心作用是追踪文件(尤其是代码)的修改历史、管理多人协作开发流程,确保代码版本可追溯、可回滚&a…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬