为什么 SortedSet 在 Ruby 3.0 中从 stdlib 中删除?

Nik*_*hev 5 ruby ruby-std

当我将应用程序切换到 Ruby3+ 版本时,这是一个非常令人惊讶的发现。

尽管这是一个重大版本升级,但仍然..

从 stdlib 中删除已经存在至少 10 年(从 1.9.3 开始?)的Core 数据类型看起来很奇怪。

有什么我不知道的令人信服的理由吗?

它引发的错误:

“该类SortedSet已从set库中提取。您必须使用sorted_setgem 或其他替代品。”

Nik*_*hev 6

经过一番搜索后,我发现了以下内容:

删除 SortedSet 实现 PR

它需要 RBTree 才能正常运行,并且外部依赖项不适合标准库。纯ruby后备实现最初是为了演示如何编写Set的子类,其性能较差,不适合在生产中使用。

我决定它应该作为外部库分发,而不是与 Set 捆绑在一起。


为了保持简短:

由于依赖性和性能原因,SortedSet 已被删除。

来源