未检查数组

UncheckedArray[T] 类型是一种特殊的 array “数组”,编译器不检查它的边界。这对于实现定制灵活大小的数组通常很有用。另外,未检查数组可以转换为不确定大小的 C 数组:

  1. type
  2. MySeq = object
  3. len, cap: int
  4. data: UncheckedArray[int]

生成的 C 代码大致是这样的:

  1. typedef struct {
  2. NI len;
  3. NI cap;
  4. NI data[];
  5. } MySeq;

未检查数组的基本类型可能不包含任何 GC内存,但目前尚未检查。

未来方向: 应该在未检查的数组中允许 GC内存,并且应该有一个关于 GC 如何确定数组的运行时大小的显式注解。