系统软件与软件安全

研究组关于Go语言FFI机制CGO实证分析论文被Journal of Systems and Software(JSS, JCR Q1)录用

发布时间:2025-09-24  浏览次数:13

  研究组论文An empirical study of CGO usage in Go projects — Distribution, purposes, patterns and critical issuesJCR Q1期刊JSSJournal of Systems and Software )录用!

  陈金宝丁伯尧张昱*, 李清伟唐富根. An Empirical Study of CGO Usage in Go Projects – Distribution, Purposes, Patterns and Critical Issues. Journal of Systems & Software (JSS), vol 231, Jan. 2026. (Online on Sept. 12, 2025) (JCR Q1)

DOI: https://doi.org/10.1016/j.jss.2025.112601

  

论文摘要:

  多语言软件开发将多种语言集成到单个应用程序中,并通过外部函数接口(Foreign Function Interface, FFI)实现无缝交互。虽然 FFI 提升了效率和可扩展性,但它也引入了风险。现有研究主要关注 Python  Java 等语言中的 FFI,而忽略了 Go 中新兴的 FFI——CGO,它带来了独特的风险。为解决这些问题,本研究对 920 个开源 Go 项目中的 CGO 使用情况进行了一项实证研究。本研究旨在揭示与 CGO 相关的分布、模式、目的和关键问题,为开发者和 Go 团队提供见解。本研究设计了CGOAnalyzer 工具,以高效地识别和量化 CGO 相关特性。研究发现:(1) 在被分析的 Go 项目中,有 11.3% 使用了 CGO,且其使用集中在一部分项目中;(2) CGO  4 种主要用途,包括系统级交互和性能优化,同时观察到了 15 种不同的使用模式;(3) 存在 19 种与 CGO 相关的issue,其中包括一个涉及不必要指针检查的关键问题,由于当前 Go 编译工具链的限制,这会带来运行时崩溃的风险;(4) 本研究提出一种临时解决方案可以减少不必要的指针检查,从而降低崩溃风险;(5) 本研究还提交了一项改进 Go 工具链以进行永久修复的提案,该提案已被合并到一个已接受的提案中,将在未来得到解决。我们的研究结果为开发者和 Go 团队提供了宝贵的见解,在提高 Go 工具链鲁棒性的同时,也提升了开发效率和可靠性。



地址:安徽省合肥市蜀山区黄山路443号     电话:0551-63603804         

中国科学技术大学网络信息中心制作维护