![]() |
1
2
这是ES5和将行映射到16位unicode字符的算法的限制。在ES6上,它可以扩展到2^21位,覆盖更长的文件。 为了加快行扩散,该算法不比较整个文本,而是用单个unicode字符替换每一行。因此,替换中的每个字符都映射到hashmap中唯一的一行。然而,unicode字符的数量是有限的,当前的实现只是溢出。 这不会导致误报(相同的线路仍然被认为是相同的),但它可能会在自然差异的低概率(每线1/65K)下漏掉一些线路差异。 而且它可以防止补丁被可靠地映射回原始文本行,因为不同的行被映射到同一个字符,所以逆过程将所有这些字符映射到第一个映射行。 通过使用更大的符号目标空间,例如通过使用2或3个字符来表示唯一的线,应该可以将正确的扩散扩展到更大的输入。 |