SDL2通常是所述,因为它破坏了SDL1.2的向后兼容性。
这意味着在不同版本的SDL2中,API和ABI保持向后兼容。
然而,我没有找到任何权威来源证实这是事实。
例如,对于GLIBC,Red有一个网页声明:
GNU C库( glibc )的不成文规则之一是,针对旧版本的glibc构建的程序将继续针对较新版本的glibc工作。
这种保证对于可移植性非常有用,因为它意味着程序可以针对较早版本的GLIBC进行编译,并运行在任何平台上,至少在该版本或任何更新版本的GLIBC上运行。
我为SDL2找到的最接近这种保证的是_Py_SDL2的发行说明,一个单独的项目,它传递对“向后兼容性”的引用:
改进了与旧版本的SDL2版本…的兼容性现在正确包装以保持与以前的SDL2版本的向后兼容性。 …为以前的SDL2发行版…提供向后兼容性
Github上有也是两种问题,它们在使用SDL2的上下文中传递对“向后兼容性”的提及,但实际上根本没有直接绑定到SDL库。
是否有任何官方或权威来源记录或保证不同版本的SDL2向后兼容?
也就是说,如果我编译一个程序来与旧版本的SDL2进行动态链接,那么假设它能在提供更新版本的SDL2的平台上工作安全吗?
发布于 2022-10-26 07:47:58
正式声明
看来,在开发SDL2时所达到的第一个目标之一是稳定ABI,明确地使它在SDL 3、根据对最初的作者和SDL的主要开发人员之前不会发生重大更改:
slouken正规的3 '13 截至今晚,SDL2.0是ABI锁定! 这意味着在SDL 3之前,API不会发生破坏性的更改。 干杯!
我们痴迷于SDL2有一个向后兼容的ABI。无论你是使用蒸汽运行时SDK构建你的游戏,还是使用SDL2的任何旧版本,它都应该与随蒸汽一起发布的版本一起工作。
开发SDL 3的计划了一个类似的过程:
slouken 22天前发表评论(2022年10月4日,格林尼治时间18:45 ) 我们目前的计划是在第一个SDL3发布之前立即进行所有的ABI破坏更改,所以我们从一开始就有一个稳定的ABI。
经验性
如果我们继续使用abi-laboratory.pro,我们可能会发现,SDL2或多或少地遵守了它在每个版本中都具有完美的ABI兼容性的承诺:

每个版本之间的特定更改还可以通过单击百分比来报告。
https://stackoverflow.com/questions/74202942
复制相似问题