geospec-engine

中文文档
0.5.1发布于 2026/11/04Apache-2.0TypeScriptES Module零依赖构建来源已验证

便携式GeoSpec本机引擎

中文使用文档
文档目录5 节
  1. 公共接口
  2. 恒等与数值策略
  3. 已配置的BRep特性度量
  4. 开发和包装
  5. 可信记录和剩余资格

geospec-发动机

GeoSpec的单线程Rust分析引擎,带有自有的OCCT BRep桥和Rust歧管后端。

每个稳定版本都通过对其精确候选版本的发布资格认证 发布: 节点、CPython和浏览器矩阵、S10探测器和 回归运动。 next 预发行版不合格。结果是 可再生的。多线程,显式SIMD配置文件和GPU执行 延期。

公共接口

消费者入口执行
节点geospec-engine/node达尔文arm64和Linux x64/arm64 glibc NAPI插件
浏览器或节点WASMgeospec-engine 或 /wasm一个结合Rust/OCCT的WASM模块
Pythongeospec_engine_nativeCPython 3.13/3.14扩展
本地签名记录geospec-engine/trust在v1合同之外; 请参见 trust/

JS出口 Engine, canonicalize 和 ProtocolError. WASM条目也是 出口异步 initialize;在构造热机之前调用它。它 接受附带的模块位置或显式WASM字节/URL。节点加载 没有WASM初始化的平台插件。

发动机操作包括 ingestMesh, ingestSubject, subjectHandle, releaseSubject, processRequest, canonicalPlan, evaluatePlan 和 close。 Python公开相应的snake_case字节操作。主机发送普通 Uint8Arrays (Python: bytes);Rust拥有验证,规范 计划、测量和结果序列化。资源伴随主要 对象按照摄取请求声明的顺序。

控制契约是协议 3,注册表 5, geospec-jcs-v1。 功能和允许的域来自引擎的初始化响应; 注册中心成员资格本身并不意味着每个主题/配置文件都支持查询。 支持的家族包括网格度量/完整性,STEP拓扑和事件, BRep特性和PMI,空间/CSG分析,以及单独的有界证明查询。 不支持或不充分的证据反而会产生明确的拒绝/错误 比一个几何过关,包括下否定。

进入和保留限制默认为入口配置文件 (geospec-entry-config-v1: 64 MiB的主题和资源,128 MiB的总二进制, 2 000 000个顶点,4 000 000个三角形,65 536次出现,256 MiB保留 分析,256个网格条目,256个可重复使用的CSG固体,32个保留的受试者)。一个 host在构造引擎时可以选择其他限制:Node new Engine(cacheOptions, executionPermits, limits), WASM new Engine(execution, limits) 和Python GeoSpecEngine(limits=...) 接受 maxSubjectBytes, maxResourceBytes, maxTotalBinaryBytes, maxVertices, maxTriangles, maxOccurrences, maxMeshBytes, maxMeshEntries, maxSolidEntries 和 maxRetainedSubjects (Python中的snake_case)。

每个限制必须是一个正整数,并且主题和资源限制必须 不超过总数的;其他的拒绝 invalid-request. 本地主机 可提高限制,以适应机器和任务。WASM默认值保持不变 条目配置文件,它适合wasm32地址空间。初始化响应 报告有效限制。除入口概要文件以外的任何配置 带有 geospec-host-config-v1-… 配置文件id从它的值派生,所以a 运行记录,限制它的使用。提高限制改变不了容忍或拒绝 规则。

超过限制的输入拒绝使用 limit-exceeded. 这个错误还包含 GEOSPEC_RESOURCE_LIMIT 或 GEOSPEC_ANALYSIS_LIMIT 有了极限类,单位, 限制和要求: capacity 在JS, capacity_code 和 capacity_details 在Python中。

maxMeshBytes 还限定了网格的工作记忆水密性分析 (toBeWatertight我宣布 watertight 在 toHaveMeshIntegrity, analyzeMesh 并进行网格重叠观察)和材料分析 在连接的组件后面。这一要求的分析需要更多的拒绝 与 GEOSPEC_ANALYSIS_LIMIT 在它分配超过限制之前,命名什么 它需要: Watertight scratch needs …; the analysis limit is 256 MiB (268435456 bytes).

使用 geospec/assertion-client 对于独立的JS主机组成, geospec/vitest Vitest的积分和车轮的积分 geospec 外观 以及Python的pytest插件。这些客户端保留来自的规范声明/结果 同样的引擎。Jest集成被推迟。现有的虚拟机运行程序有 在合格的产品组合中自动编译绑定。普通的撰写 测试使用 loadModel 从 geospec/model 和 expectGeo 从 geospec,而不是 一种发动机选择方言。完整的聊天资格仍然与 engine-package资格。

恒等与数值策略

规范计划将有序的主题、要求、极性、预算和数字绑定在一起 概要文件。规范JSON使用UTF-16键排序和有限的binary64呈现。 canonicalize 将JSON编码;它没有使语义声明规范化。确切的字节 平等适用于演示引擎配置文件,而不是不分青红皂白 在不同的数字后端或遗留版本之间。

mesh-buffer-v1 包含ASCII GSM1,小端u32顶点/三角形计数, 然后是f64坐标和u32三角形索引。文件摄取另外承认 STEP和glTF/GLB,声明坐标帧和资源标识。所有 glTF网格承载的三角形基元 EXT_mesh_manifold 对其 声明的POSITION访问器形成一个材料分区;单独的网格, 实例化节点和未声明的原语保持独立的操作数。 坐标、单位和变换必须由摄取契约表示; 单独的内容散列不能建立几何正确性。

OCCT删除了一些没有模式绑定的STEP属性值,例如 a的定义 PROPERTY_DEFINITION 这就是a CHARACTERIZED_ITEM_WITHIN_REPRESENTATION. 这台发动机只允许有间隙 列表,每个都有一个属性,没有GeoSpec事实读取,以及每个声明 然后受试者携带一个 GEOSPEC_STEP_SCHEMA_GAP 信息诊断每一种差距,与 details 命名步骤 entity, attribute 和 count 的 受影响的实体。该通知不改变索赔状态、主题散列或许可 诊断。

近似测量使用每个匹配器声明的公差和阈值 语义。浮点数不能保证一个数学上精确的标量 几何学。精确证书仅适用于其声明的允许域。

已配置的BRep特性度量

的数字过滤器 toHavePlanarFace, toHaveCylindricalFace 和 toHaveCircularHole 下 evidence.witnesses.measurementContract.profile = "geospec-feature-metric-nominal-v1"。 这些过滤器比较后端标称binary64测量值。平等使用 abs(measured - expected) <= tolerance;零容忍意味着名义上的平等, 不是一个精确的几何证书。地区条件保存作者 >, >=, < 和 <= 操作符,而不通过容差扩展它们。独立的 精度校准不添加运行时误差框或隐式epsilon。

平面法线分量和偏移量保持它们的共享符号约定。 圆柱轴标号选择分量的最大绝对方向,用 X /y/z顺序;标签不建立精确的轴向对齐。分析平面 或气缸后端标识仍然需要相应的库存。

测量合同只涵盖数字过滤器。圆孔会员 而通/盲拓扑需要单独的限定条件:电流 反向圆柱体和边界派生的库存不是合格的拓扑结构 证明。这种限制也阻止了将这些测量视为连续的 密封,间隙,插入,壁或无效保证。F1和F2证书 保留它们单独声明的允许域和验证契约。

开发和包装

使用工作区固定的pnpm/Nx工具链。原生Rust版本使用1.88.0; 混合构建需要其单独固定的Rust/Emscripten/OCCT工具闭包。 从工作区根目录:

pnpm nx run geospec-engine:build-node
# Set GEOSPEC_MIXED_INPUTS to a verified geospec-mixed-build-inputs-v1 manifest.
pnpm nx run geospec-engine:build-wasm
pnpm nx build geospec-engine
pnpm nx run geospec-engine:assemble-package
pnpm nx run geospec-engine:build-python
pnpm nx run geospec-engine:build-python314

build-wasm 和 build-mixed-wasm 选择相同的组合引擎构建驱动程序。 它检查声明的工具/输入哈希值,并写入构建收据。便携 wasm32-unknown-unknown 核心编译检查对于可移植性仍然很有用,但是 它的旧wasm- binding工件不是由这个包裹运送的。

Assembly生成带有精确版本可选的本地根/平台tarball 平台的依赖;它不发表。轮子包括Python断言 和pytest入口点。单独的构建收据不能建立已安装的包 正确性,支持平台或性能提升。

每个产品都建立在自己的主机上: ci-native 构建Darwin ARM64插件 在macOS, ci-wasm 在x86_64 Linux上构建WASM模块,并且 build 包 放置于 out/ci/. 根包包含两个入口点。

源和重链接套件来自相同的主机: scripts/ci-artifacts.mjs native-part 在macOS和 mixed-part 在Linux上,在 ci-wasm,每个写 他们的份额,以及 merge-parts 将它们连接成 out/relink/. 综合达尔文 prepare 和 ensure-delivery 路线拒绝。一个显式的 TAU_GEOSPEC_NATIVE_ASSEMBLY_ROOT 可以选择合格的总成;它的包 布局和许可证关闭仍然有效。一个松散的工作区插件不是 一个组装。

所拥有的SDK安装是只读的,其字节码缓存被阻塞,因此 编译器字节码不能更改其记录的输入,即使作为根运行也是如此。 Emscripten选择的构建缓存保留在该SDK之外。

相关的Nx检查包括 typecheck, lint, clippy-rust, format-rust, check-wasm 中明确的一致性/基准目标 project.json。 严格的Clippy是静态正确性检查,而不是覆盖率度量。 当前一致性输入连接保留原始语料库并应用a 哈希固定,通过记录ID独立批准当前配置文件权限。

可信记录和剩余资格

describeTrustedInputs 派生权威机构可以独立确定的身份; evaluateTrustedPlan 运行经批准的声明性计划并签署其完整 通过呼叫者拥有的签名者验证记录。 trust/verify.py 验证 记录独立提供的政策和新的挑战。 执行记录的身份验证不是任意设计意图的证明 或者是关于敌对评估宿主的保证。

所需的首次发布目标是Darwin ARM64 with Node 24/26, CPython 3.13/3.14和Chromium/Firefox/WebKit。完全符合当前产品,至关重要 覆盖范围、安全/隔离资格、可重复的包封闭、 噪声感知性能门和UI/桌面集成仍然是发布门。 这里没有要求全引擎加速或完全释放资格。

版本与发布记录

geospec-engine 共发布 64 个版本,首次发布于 2026/10/12;过去 12 个月发布了 64 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.5.1latest2026/11/04今天
0.5.1-next.361next2026/11/03今天
0.5.1-next.3512026/10/305 天前
0.5.1-next.3472026/10/295 天前
0.5.1-next.3422026/10/295 天前
0.5.1-next.3402026/10/295 天前

其他发布通道:bootstrap → 0.0.0,next → 0.5.1-next.361。

关于 geospec-engine 的常见问题

geospec-engine 是什么?

便携式GeoSpec本机引擎

如何安装 geospec-engine?

在项目目录运行 npm install geospec-engine,或使用 pnpm add / yarn add / bun add。

geospec-engine 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

geospec-engine 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

geospec-engine 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=24.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

geospec-engine 可以商用吗?

geospec-engine 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

geospec-engine 还在维护吗?

最新版本 0.5.1 发布于 2026/11/04(今天);至今共发布 64 个版本,其中过去 12 个月发布了 64 个;首次发布于 2026/10/12。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。