R 语言函数式面向对象编程的泛化支持

2024-05-28

R语言一直支持S3和S4两种函数式面向对象编程(OOP)系统。S7是一种新的OOP系统,旨在统一S3和S4并促进互操作性。文章介绍了为R语言添加的四个补丁,以便更轻松地实现S7等基于S3的包的功能,包括:chooseOpsMethod()、%*%、nameOfClass()和@,并以S7和reticulate包为例,说明了这些新功能的实用性。

阅读更多
未分类 OOP S7

关于CVE-2024-27322的声明

2024-05-13

R核心团队就网络安全公司HiddenLayer最近报告的序列化错误发表了简短声明。该错误已被报告为漏洞,编号为CVE-2024-27322。R是一种功能齐全的语言,包含与主机操作系统和互联网交互的函数。与任何此类语言一样,有很多方法可以编写具有恶意意图的代码。用户应确保他们只使用来自受信任来源的R代码和数据,并确保运行R的帐户的权限受到适当限制。这些基本的安全原则不限于R语言。在R中编写恶意代码的能力并不意味着该语言本身是不安全的。基本R语言由R核心开发团队中精选的一组高度信任的个人维护,其中大多数人已经在该语言上工作了几十年。像任何开源项目一样,我们依靠广泛的用户群来识别源代码中的错误。我们欢迎所有错误报告,包括那些具有安全隐患的错误报告。HiddenLayer的错误报告就是一个例子。简而言之,promise是用于实现惰性求值的语言对象。在R中构建的promise总是绑定到一个环境,但是HiddenLayer找到了一种通过反序列化一个被黑客攻击的文件来创建一个未绑定promise的方法。这个错误已经在R 4.4.0中修复,任何与之相关的攻击向量都已经被移除。我们拒绝接受与promise或序列化相关的更广泛的安全隐患,这两者都是该语言的核心特性。

阅读更多