adimetrius писал(а):
1. Я правильно понимаю, что формат COFF - это внутренности DLL; Формат ELF - это внутренности файла .so?
Не совсем, COFF - формат объектного, загрузочного файла и разделяемой библиотеки, обычно используемый в Windows,
ELF - формат объектного, загрузочного файла и разделяемой библиотеки, обычно используемый в Unix.
adimetrius писал(а):
2. А почему не использовать дополнительное расширение вместо дополнения собсно имени файла?
ObjLoader.coff Вместо ObjLoader_Coff
ObjLoader.elf вместо ObjLoader_Elf
Тогда коллеги, любящие _, смогут продолжать это использовать в именах модулей, как позволяет язык.
Легко, это не является проблемой, вот в А2 эти интересные соглашения развили до имен модулей.
Как я уже говорил, проблемой является вездесущее наличие имен вида ModuleName_ProcName. Нужно разделять имена Модуля от имен процедуры.
Аргументацию Ермакова и Вашу считаю убедительной, и в следующей версии МультиОберона имена будут вида:
ModuleName__ProcName / ModuleName__TypeName__ProcName
А платформо-зависимые модули:
ObjLoader.elf.odc / ObjLoader.coff.odc
adimetrius писал(а):
3. А что такое платформо-зависимый модуль? Или платформо-зависимая реализация модуля? Кажется, это нигде точно не оговаривалось. Вот, например,
Files -> System/Mod/Files.odc + Code/Files.ocf + Sym/Files.osf
HostFiles -> Host/Mod/Files.odc + Host/Code/Files.ocf + Host/Sym/Files.osf
Ничто внутри каркаса ББ не "знает" о том, что существует модуль HostFiles (исходный текст и артефакты компиляции) для платформ: Windows, Linux, FreeBSD, OpenBsd. Для всех процедур внутри каркаса - существует только один модуль HostFiles, расположенный в Host/Mod Host/Code Host/Sym.
При этом, все HostFiles - совершенно независимые (друг от друга) модули. Нельзя говорить о "реализации модуля HostFiles для платформы Windows" и "реализации HostFiles для платформы FreeBSD". Они друг другу ничего не обязаны.
Больше того, вполне можно сделать сборку ББ, в которой не будет модуля HostFiles. А реализации Files.File и Files.Directory будут где-то в другом модуле (или модулях).
О "зоопарке" платформенных модулей HostFiles знает только скрипт, сделанный А.Ширяевым на баше и живущий в гит-репозитории. И он же этим зоопарком управляет: следит за тем, где какая реализация хранится, и когда куда нужно "подложить" нужную реализацию.
************************
А что вы подразумеваете под платформо-зависимой реализацией или платформо-зависимым модулем? (в ваших постах упоминается и то, и другое)
Я не ограничиваюсь BlackBox. Но даже если ограничиваться только BlackBox, то там HostFiles не отделаться. Там Kernel - платформо-зависимый.
А у меня этих Kernel'ов 15 уже сейчас. Для 64 там сборщик мусора другой. И для Omf, Oml, и для 1.6, и проч, и проч.
А начнете делать что-то кроссплатформенное (с импортом из новых сишных хедеров), то HostFiles Вам будет мало. Как сказал один человек, "помидорами не отделаетесь".
P.S. Правда, Kernel к модульной загрузке не относится, но OmcObjLoader.coff - точно