Julia 的 `hash()` 函数是否保证跨会话、平台和版本具有稳定的输出?

Min*_*ark 6 julia

我尝试在 MacOSX 和 Linux 上的多个不同 Julia REPL 会话中运行以下代码,并且总是得到完全相同的输出:

julia> hash(123), hash("123"), hash([1,2,3]), hash((1,2,3)), hash(Set([1,2,3])), hash(:123)
(0x54657e9dbfd649e5, 0xb4e92987fa06fcab, 0xecc5186e7be222c6, 0xafc764e9c2b7cde5, 0x66406071c4c9b92a,
0x54657e9dbfd649e5)
Run Code Online (Sandbox Code Playgroud)

问题:这种行为是由语言保证的吗?或者输出是否会有所不同(就像在 Python 中一样,跨会话、平台和版本)?

注意:这个问题与我关于基于散列的集合顺序稳定性的另一个问题有关,例如SetDict(它密切相关,但不同)。

Ste*_*ski 2

它们不稳定,可能会因版本或平台的不同而发生变化。它们在不同字长的系统之间已经不同。