Dr. Friedrich
если память не шаришь расходов нет
Если я не шарю память — то я в другом процессе вызываю нативный код, правильно?
Pavel
да и если шаришь не такие они чудовищные.
Dr. Friedrich
Смотря что делаешь 🤷‍♂️
Dr. Friedrich
А в чем проблема с маршалингом?
Основная проблема в том, что, если ты хочешь что-то managed по указателю куда-то передать, то тебе надо это запинить.
Dr. Friedrich
Или сделать копию вообще.
Pavel
Если я не шарю память — то я в другом процессе вызываю нативный код, правильно?
в каким процессе ты что вызываешь зависит от линкера и не только
Dr. Friedrich
Понятно, что оба варианта не очен весёлые
Dr. Friedrich
От линкера внезапно начало зависеть, в каком процессе я что вызываю?
Pavel
если у тебя сишная функция сложения 2 интов , то с какого они в другом процессе начнут вызываться?
Dr. Friedrich
Сложения двух интов, окей
Dr. Friedrich
И она вызывается в моём процессе, так?
Dr. Friedrich
На моём стеке
Pavel
и
Dr. Friedrich
Значит, я с ней пошарил память
Pavel
нет
Dr. Friedrich
Как нет?
Dr. Friedrich
Стек общий у нас с ней?
Dr. Friedrich
Shared stack
Dr. Friedrich
Да и регистры общие
Pavel
она тупо твоя. у нее нет отдельного менеджера памяти что б сним шарит/договариваться
Dr. Friedrich
Любая, пожалуй, calling convention подразумевает, что caller и callee взаимодействуют через шаренные места в стековой и регистровой памяти.
Pavel
а вот когда ты из сишной функции будешь работать с тем что тебе шарп на хипе разместил вот тогда шаринг идет
Dr. Friedrich
она тупо твоя. у нее нет отдельного менеджера памяти что б сним шарит/договариваться
Ну и вообще, я с трудом себе представляю сишный код без отдельного менеджера памяти. Если только чуваки упороли MISRA очень хорошо
Pavel
конкретно сложение работает без менеждера памяти
Dr. Friedrich
Ну да. Но для сложения мне не нужна сишная либа, правильно? :)
Pavel
не факт. мало ли )
Dr. Friedrich
она тупо твоя. у нее нет отдельного менеджера памяти что б сним шарит/договариваться
И тем не менее, я настаиваю, что, вызвав сишный код в своём процессе, я с ним пошарил своё адресное пространство.
Dr. Friedrich
Отдал на поругание, можно сказать.
Pavel
у меня знакомый был он на асме делал поиски символа в строке потому как дельфя это типа делали медлено
Dr. Friedrich
Ему не нужен менеджер памяти, чтобы мне там всё нафакапить
Dr. Friedrich
Он запросто может полезть в те места стека/регистры, про которые мы с ним не договаривались, что я их пошарил
Dr. Friedrich
Допустим, он хотел на стеке массив из десяти байт, а я выделил девять. Бывает!
Vladislav
Ну да. Но для сложения мне не нужна сишная либа, правильно? :)
ну в слр это на плюсах написано наверно 😂
Pavel
И тем не менее, я настаиваю, что, вызвав сишный код в своём процессе, я с ним пошарил своё адресное пространство.
ну тут можно прийти к тому что использование любой функции в твоем приложении шарит память с другой функцией
Dr. Friedrich
ну в слр это на плюсах написано наверно 😂
Вообще-то нет. Складывая числа, ты не вызываешь никакие сишные функции, написанные в CLR. Просто JIT сразу генерит норм ADD инструкцию.
Fail
Потому что вот куски стринга в цлр написаны таки на плюсах
Vladislav
Ayrat
Алярм. Го пилить на неткор 3 на зебре https://m.habr.com/company/mailru/blog/433066/
Ayrat
Кто-то в прошлом году пилил?
Ayrat
@fvnever ?
Romɑn
Но сишарпа нету на JVM, например
как-то скала компилилоась в жаву и в дотнет, но не пошло
Bonart
Bonart
Так же, как в Котлине?
А в котлине есть генерики в рантайме?
Dr. Friedrich
Да.
Bonart
Да.
С этого места, пожалуйста, поподробнее
Fail
Да.
reified?
Dr. Friedrich
reified?
Ага.
Dr. Friedrich
Вроде только для функций работает 🤷‍♂️
Dr. Friedrich
Но если вдруг появляется поддержка в рантайме, то можно добавить и для классов, например (потому что делать почти ничего не надо, всё просто заработает из коробки).
Dr. Friedrich
На самом деле, я пока не смотрел на натив
Ayrat
Вроде только для функций работает 🤷‍♂️
А как котлин функции выглядят из джавы? Так же страшно как фшарп функции из си шарпа?
Dr. Friedrich
Там-то тоже, вроде как, должны быть нормальные генерики кругом
Dr. Friedrich
Ну, есть базовая совместимость на «обычных» классах и методах. А когда ты начинаешь юзать котлиноспецифичные вещи — то совместимость тоже становится странной. Примерно как между C# и F#, да.
Igor
А как котлин функции выглядят из джавы? Так же страшно как фшарп функции из си шарпа?
suspend и inline с refiend стрёмно, остальное вроде почти 1к1 (многие вещи лечатся аннотациями)
Анна
@omgszer спасибо, я почти раскурила неподвижные точки 🤓 Надо будет Пирсом заполировать перед сном, и всё, я окончательно упорот 🙃
Анна
Romɑn
Зацените, новый доклад Рича Хикки, где он рассуждает о различных реализациях концепции null/Maybe/Optional и ищет идеал. Для меня неожиданностью стало, что union types (discriminated unions), вероятно, не идеальная реализация опциональных данных. Интересно ваше мнение послушать. https://www.youtube.com/watch?v=YR5WdGrpoug
Анна
Да, статья огонь!
Надо ещё на A-lang запилить этот комбинатор для закрепления %)
Анна
Чего не сделаешь, чтобы лабы не проверять 🤪
Romɑn
конечно
Vladislav
Dr. Friedrich
Симпатичный код у вас пишут!
Vladislav
Это не мой
Pavel
как-то скала компилилоась в жаву и в дотнет, но не пошло
как то хаскель компилился в нет. тоже не пошло. и sml компилился
x
Печально