Планы по внедрению "легких" Фортран-массивов. Унификация и упрощение API.
О метаданных и контроле: проблему наследственных проверок предлагается решить следующим образом.
В реестр добавляются "классовые" таблицы для проверок метатаблиц входящих данных. Их ключами являются метатаблицы для соответствующих типов ("классов") массивов, элементами -- true. Например, таблицы могут соответствовать "полным" и "легким" массивам. Для проверки isA(val, class) достаточно найти class[getmetatable(val)]. Для ускорения "классовые" таблицы можно хранить по ссылке и/или по имени. Вместо "наследования" получаем проверку интерфейса.
О полных и легких массивах.
Текущие массивы являются полными. Предлагается ввести легкие массивы, содержащие в себе userdata из c_ptr на массив, выделенный средствами Фортрана (!), и его размер. Для легких массивов обязательной является операция "очистки", которая записывает NULL в c_ptr, чтобы избежать дальнейшего доступа по "повисшему" указателю.
Необходимо как минимум ввести классовые таблицы для полных и легких массивов, исходя из разной их структуры.
NB: Легкие массивы не будут гарантированно работать из-за особенностей семантики Фортран.
Единое API для работы с указателями
Нужна функция, которая бы получала индекс UD в стеке, проверяла бы метатаблицу на соответствие (см. выше -- если нужно), далее определяла бы тип хранения и в зависимости от него извлекала Фортран-указатель.
Переписать всё через неё.