
Rust基金会正式启动了强化C++互通计画,目的在于加强两种系统语言之间的互通性,以支援双语言的应用程序开发。该计画希望透过技术改进和社群协作,让开发人员在同一专案中,更自由地选择使用Rust或C++,并减少因为操作限制所产生的开发负担。
C++是发展历史长久的系统语言,其足够成熟且具有良好的资源管理能力,长期被应用于嵌入式系统和高效能运算等用例。而Rust则因其记忆体安全,以及对并行运算支援等特性为人所知,成为实作高效能且减少未定义行为的选择。
但是随着产业对安全性和效能的共同要求,混合两者使用成为系统稳定性和开发效率的重要策略之一,但是因为当前C++与Rust的互通性技术还不够成熟,无法使两者良好整合。Rust基金会认为,互通性瓶颈使得现有C++系统无法顺利整合Rust,同时也限制Rust程序码在C++既有框架中的灵活应用。为此,Rust基金会运用各组织捐献的资源,启动C++互通计画,希望在短期内改善现有工具,并在长期发展上深化语言层面的支援,同时促进双方社群的合作。
短期计画将针对目前市场上被广泛使用的互通工具进行强化,包括cxx、bindgen与cbindgen,这三个专案将成为短期计画的核心。bindgen功能是让Rust直接呼叫C函式,cbindgen工具则反过来让C程序可以呼叫Rust函式,而cxx则是目前C++和Rust互通的主力工具。
Rust基金会表示,虽然这些工具一定程度上解决了互通性问题,但是却没办法处理更进阶的需求,像是C++中複杂的类型系统和特殊功能。C++互通计画短期目标要解决这些工具的效能和安全性,降低开发者在Rust与C++间呼叫函式和传递资料的困难度。Rust基金会将动员组织人力和资源,优先解决一些因为缺乏负责人或是合作,而导致长期停滞的技术问题。
长期策略方面,计画会从根本提升两个语言的操作基础,这牵涉到语言设计、编译器的支援,以及标準函式库的变更。Rust基金会正在与C++标準委员会建立更紧密的合作关係,针对更高层次的问题进行讨论,以找到双方皆认可的解决方案。
这些问题例如是否能够建立更丰富的介面层,以支援两个语言间的类型转换和资源管理,降低资料丢失的风险。由于这类的基础设施议题需要广泛的专业知识和支援,基金会将招集社群和专案团队的主要成员共同参与,以加速推动发展过程。
Rust基金会强调C++互通计画社群合作的重要性。当初Rust被设计为C++的替代选项,但是现在基金会认为,两个语言的角色应该是互补而非竞争。透过在标準委员会层级的交流与合作,可使开发者同时受惠于Rust的安全性和C++的效能。