Size: a a a

Programming Offtop

2020 October 25

AN

Alexander Nozik in Programming Offtop
Ilmir
Как оно упадёт в рантайме, если при сборке мне линкер скажет, что не может найти нужный символ.
Ну хорошо в линкере
источник

AN

Alexander Nozik in Programming Offtop
Вообще-то линкер - это уже почти рантайм, потому чтобы проверить, что оно там упала, надо подождать пока весь проект перекомпилируется
источник

I

Ilmir in Programming Offtop
Alexander Nozik
Вообще-то линкер - это уже почти рантайм, потому чтобы проверить, что оно там упала, надо подождать пока весь проект перекомпилируется
Саша, не притворяйся дебилом или упрямым бараном. Ни то ни то тебе не идёт. Ты прекрасно понимаешь, в чём разница в сборке проекта и его запуске.
источник

AN

Alexander Nozik in Programming Offtop
Ilmir
Саша, не притворяйся дебилом или упрямым бараном. Ни то ни то тебе не идёт. Ты прекрасно понимаешь, в чём разница в сборке проекта и его запуске.
Я никем не притворяюсь. Ты работаешь в компании, которая тулинг делает. Обертки делаются как раз для того, чтобы у нас была возможность на этапе разработки в тулинге увидеть нарушение совместимости. Если ты говоришь, что "линкер обвалится" - это уже автоматом до свиданья тулинг.
источник

I

Ilmir in Programming Offtop
И да, как 3 шага (собираем в объектники дважды и линкуем) может быть больше 5-ти (генерируем объектники дважды, собираем дважды, линкуем)?
источник

AN

Alexander Nozik in Programming Offtop
И я вообще не вижу проблемы в том, чтобы генерить обертки. Другое дело когда эти обертки не генерятся автоматически. Вот это беда. Поэтому я хочу мост из K-N в K-JVM
источник

VP

Vladimir Petrakovich in Programming Offtop
Alexander Nozik
Вообще-то линкер - это уже почти рантайм, потому чтобы проверить, что оно там упала, надо подождать пока весь проект перекомпилируется
А зачем перекомпилировать то,  что не изменились?
источник

AN

Alexander Nozik in Programming Offtop
Vladimir Petrakovich
А зачем перекомпилировать то,  что не изменились?
Потому что в С++ с инкрементальной компиляцией не завоз.
источник

VP

Vladimir Petrakovich in Programming Offtop
Alexander Nozik
Потому что в С++ с инкрементальной компиляцией не завоз.
С раздельной компиляцией разных файлов там тоже не завоз?
источник

AN

Alexander Nozik in Programming Offtop
Vladimir Petrakovich
С раздельной компиляцией разных файлов там тоже не завоз?
да. Там же любой инклюд - это текстуальная вставка
источник

AN

Alexander Nozik in Programming Offtop
По отдельности можно только отдельные бинарники компилировать
источник

VP

Vladimir Petrakovich in Programming Offtop
Alexander Nozik
да. Там же любой инклюд - это текстуальная вставка
Ну допустим. Но разве весь ABI не определяется хедером? То есть может ли cpp файл влиять на компиляцию другого cpp файла?
источник

AN

Alexander Nozik in Programming Offtop
Vladimir Petrakovich
Ну допустим. Но разве весь ABI не определяется хедером? То есть может ли cpp файл влиять на компиляцию другого cpp файла?
В С++ нет четких правил по хедерам. Их может вообще не быть. И да, в С++20 есть модули, которые как раз это все и организуют. Но когда ими начнут пользоваться, никто не знает
источник

I

Ilmir in Programming Offtop
Alexander Nozik
Я никем не притворяюсь. Ты работаешь в компании, которая тулинг делает. Обертки делаются как раз для того, чтобы у нас была возможность на этапе разработки в тулинге увидеть нарушение совместимости. Если ты говоришь, что "линкер обвалится" - это уже автоматом до свиданья тулинг.
Неа. Обёртки делаются из-за того, что лень парсить сишные хедеры. Или лень генерировать сишное ABI. Взгляни, с другой стороны на интероп Котлина с Джавой. Вот где тут обёртки? И что случится, если в любой стороне поменять АПИ? Кто-то из них ругнётся, либо джавовый либо котлиновский компилятор. Это если говорить о тулинге моего работодателя.
И то, что линкер обвалится - это гораздо лучше ситуации, если обвалится динамический линкер, тупо потому, что при сборке обёртки сгенерировали, в сошник пересобрать забыли. Гораздо лучше, когда такой ситуации вообще не наступает. То есть, когда нет обёрток, потому что от генерации сошника избавиться труднее.
источник

AN

Alexander Nozik in Programming Offtop
Ilmir
Неа. Обёртки делаются из-за того, что лень парсить сишные хедеры. Или лень генерировать сишное ABI. Взгляни, с другой стороны на интероп Котлина с Джавой. Вот где тут обёртки? И что случится, если в любой стороне поменять АПИ? Кто-то из них ругнётся, либо джавовый либо котлиновский компилятор. Это если говорить о тулинге моего работодателя.
И то, что линкер обвалится - это гораздо лучше ситуации, если обвалится динамический линкер, тупо потому, что при сборке обёртки сгенерировали, в сошник пересобрать забыли. Гораздо лучше, когда такой ситуации вообще не наступает. То есть, когда нет обёрток, потому что от генерации сошника избавиться труднее.
Котлин с жавой живут на одном байт-коде. И даже там уже есть некоторые проблемы с обратным интеропом. Взгляни на интероп котлин и TS. Он хорош, но без по крайней мере виртуальных оберток плохо.
источник

I

Ilmir in Programming Offtop
Vladimir Petrakovich
Ну допустим. Но разве весь ABI не определяется хедером? То есть может ли cpp файл влиять на компиляцию другого cpp файла?
Нет. АБИ определяется всем юнитом компиляции. Потому что можно объявить что-то типа extern int errno и пользоваться без #include <errno.h>.
источник

AN

Alexander Nozik in Programming Offtop
Обертка - это элемент тулинга. В частности она дает тебе авто-подстановку и прочие радости. Ты очень редко когда можешь сделать так, чтобы семантика одного языка напрямую транслировалась в семантику другого
источник

I

Ilmir in Programming Offtop
Alexander Nozik
Котлин с жавой живут на одном байт-коде. И даже там уже есть некоторые проблемы с обратным интеропом. Взгляни на интероп котлин и TS. Он хорош, но без по крайней мере виртуальных оберток плохо.
Ты так говоришь, что Раст и Си не живут на одном AMD64 ABI.
источник

AN

Alexander Nozik in Programming Offtop
И я вообще не вижу проблемы в этом, потому что обертку может тихо генерировать система сборки. Вы кстати в котлине тоже что-то вроде обертки генерите - жава стабы.
источник

с#

саша сок #KotlinGang... in Programming Offtop
источник