OTP-004:自动编码器
该提案定义了一种为给定结构自动构建序列化布局的方法。
动机
在 TLB 中设计序列化布局是一项非常冒险的任务。 开发人员必须注意cell的大小限制,并记住每个字段使用的位数。 这是一项非常容易出错的工作,而且很容易出错。 本建议旨在解决这一问题,它提供了一种为给定结构自动构建序列化布局的方法。
技术说明
我们将自编码器定义为一种急切算法,它为给定的结构构建序列化布局。 算法的定义如下:
定义当前单元格中的可用引用和位分别为 `available_references` 和 `available_bits`。注意:必须至少保留一个引用用于序列化尾部,且至少保留一位用于可选标志。根据上下文,可能会保留更多的引用或位。
对于 A 中的每个字段: (size_bits, size_ref) = get_field_max_size(field); if (available_bits >= size_bits && available_references >= size_ref) { Push field to a current cell } else { available_references = (1023 - 1); available_bits = (4 - 1); Allocate a new tail and continue from the current field }
缺点
- 这是一个隐式算法。 目前还不清楚是否需要检查该分配器的结果,以便进行兼容的序列化。