LINUX.ORG.RU

История изменений

Исправление witaway, (текущая версия) :

А интероп про который ты говоришь, это не ABI вообще, а API

Подожди. Ясное дело, что обёртка, которую ты пишешь на другом языке это API. Но разве в процессе самого импорта методов в другой язык он не должен знать внутренние соглашения и структуры языка целевой библиотеки? Это, сколько понимаю, тоже вопрос ABI.

Если правильно понимаю твои слова, я могу вообще без каких-либо экстернов писать библиотеку на расте, на плюсах - и импортить в си, питоны, шарпы и обратно плюсы да расты. Не всё ведь так просто. Вроде бы сишные соглашения и интерфейсы нынче считаются стандартными, если хочешь бесплатный интероп откуда захочешь.

В тех же самых растах, я глянул, нужно для этого писать

#[no_mangle]
pub extern "C" fn rust_function() -> i32 {
    42
}

Тем более, если линковка у нас не статическая, а динамическая…

Честно, я до конца не вдупляю до конца твою мысль.

Исправление witaway, :

А интероп про который ты говоришь, это не ABI вообще, а API

Подожди. Ясное дело, что обёртка, которую ты пишешь на другом языке это API. Но разве в процессе самого импорта методов в другой язык он не должен знать внутренние соглашения и структуры языка целевой библиотеки? Это, сколько понимаю, тоже вопрос ABI.

Если правильно понимаю твои слова, я могу вообще без каких-либо экстернов писать библиотеку на расте, на плюсах - и импортить в си, питоны, шарпы и обратно плюсы да расты. Не всё ведь так просто. Вроде бы сишные соглашения и интерфейсы нынче считаются стандартными, если хочешь бесплатный интероп откуда захочешь.

В тех же самых растах, я глянул, нужно для этого писать

#[no_mangle]
pub extern "C" fn rust_function() -> i32 {
    42
}

Тем более, если линковка у нас не статическая, а динамическая…

Честно, я до конца не вдупляю до конца твою мысль.

Исходная версия witaway, :

А интероп про который ты говоришь, это не ABI вообще, а API

Подожди. Ясное дело, что обёртка, которую ты пишешь на другом языке это API. Но разве в процессе самого импорта методов в другой язык он не должен знать внутренние соглашения и структуры языка целевой библиотеки? Это, сколько понимаю, тоже вопрос ABI.

Если правильно понимаю твои слова, я могу вообще без каких-либо экстернов писать библиотеку на расте, на плюсах - и импортить в си, питоны, шарпы и обратно плюсы да расты. Не всё ведь так просто. Вроде бы сишные соглашения и интерфейсы нынче считаются стандартными, если хочешь бесплатный интероп откуда захочешь.

Тем более, если линковка у нас не статическая, а динамическая…

Честно, я до конца не вдупляю до конца твою мысль.