Size: a a a

Rust — русскоговорящее сообществo

2020 October 17

MP

Mag Pie in Rust — русскоговорящее сообществo
он opt-in
источник

AT

Anton TrionProg in Rust — русскоговорящее сообществo
хм. получается, что если sizeof(void*) в анриале пишет 8, то анриал 64 битный и функции, которые я там создаю без флагов, не могут юзать 32 битные соглашения, а следовательно лишь: win64, vectorcall, sysv5, но последний для линукса и BSD. Т.е. выбирать надо лишь из двух? и что же это за extern "C" такой?
источник

AT

Anton TrionProg in Rust — русскоговорящее сообществo
Всем спасибо за помощь. Попробую что-то предпринять. Вдруг получится.
источник

MP

Mag Pie in Rust — русскоговорящее сообществo
Anton TrionProg
хм. получается, что если sizeof(void*) в анриале пишет 8, то анриал 64 битный и функции, которые я там создаю без флагов, не могут юзать 32 битные соглашения, а следовательно лишь: win64, vectorcall, sysv5, но последний для линукса и BSD. Т.е. выбирать надо лишь из двух? и что же это за extern "C" такой?
источник

DF

Dollar Føølish in Rust — русскоговорящее сообществo
Ну нет, не только
источник

AT

Anton TrionProg in Rust — русскоговорящее сообществo
в данном случае я говорил о расте
источник

DF

Dollar Føølish in Rust — русскоговорящее сообществo
В с++ это подразумевает как минимум ворнинг при использование типа не std::is_trivial
источник

DF

Dollar Føølish in Rust — русскоговорящее сообществo
В параметре или возвр значении
источник

DF

Dollar Føølish in Rust — русскоговорящее сообществo
В общем корректная терминология для всего этого дела: gives a function C linkage
источник

Э

Эрик in Rust — русскоговорящее сообществo
Anton TrionProg
Привет. Нужна помощь с FFI. Странная хрень творится. В общих словах, DLLшка на расте должна вызвать функцию в екзешнике на C/C++. Поэтому функция на С становится колбеком и я её вызываю на расте.

Трабла в том, что возникают проблемы с возвращением этой функцией значения. Какой-то мусор возвращается(если число большое, маленькое срабатывает, возращение u32 работает), а если Option<ptr>, то вообще сегфолт. Вообще, функция должна возвращать указатель, но он, будучи 8мибайтным, ломается.

Сигнатура
pub type FooCallback = extern "C" fn(*mut c_void, Position2D) -> u64

На крестах:
u64 foo(SomeClass* class, Position2D position) { ..}

Position2D это структура, содержащая x:i32, y:i32

Вызов колбека растом:
let foo:FooCallback = ..//Я пропущу, там специальной функцией присваивается.
let value = foo(some_class, position);

Вот вроде всё работает, а внезапно сегфолт. Есть идеи? Может я забыл где-то приписать какой-то extern?

И что за хрень, что Option<*const c_void> весит 128 байт?!
На что ты возвращаешь указатель?
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
Anton TrionProg
Привет. Нужна помощь с FFI. Странная хрень творится. В общих словах, DLLшка на расте должна вызвать функцию в екзешнике на C/C++. Поэтому функция на С становится колбеком и я её вызываю на расте.

Трабла в том, что возникают проблемы с возвращением этой функцией значения. Какой-то мусор возвращается(если число большое, маленькое срабатывает, возращение u32 работает), а если Option<ptr>, то вообще сегфолт. Вообще, функция должна возвращать указатель, но он, будучи 8мибайтным, ломается.

Сигнатура
pub type FooCallback = extern "C" fn(*mut c_void, Position2D) -> u64

На крестах:
u64 foo(SomeClass* class, Position2D position) { ..}

Position2D это структура, содержащая x:i32, y:i32

Вызов колбека растом:
let foo:FooCallback = ..//Я пропущу, там специальной функцией присваивается.
let value = foo(some_class, position);

Вот вроде всё работает, а внезапно сегфолт. Есть идеи? Может я забыл где-то приписать какой-то extern?

И что за хрень, что Option<*const c_void> весит 128 байт?!
Option<*const> состоит из 8 байтов указателя + 1 байт тэг, по скольку размер должен быть кратным выравниванию (а оно у *const  — 8) то размер становится 16 байтов, все логично.

Чтобы сработала оптимизация тэга, нужна дырка в указателе (NonNull)
источник

d

diabolo in Rust — русскоговорящее сообществo
Anton TrionProg
хотя, вспоминаю.. всё-таки были у меня некие аллокейты. Надо будет посмотреть и вызвать до них.
посмотри как это делается крейтом cxx, там можно что-то почерпнуть, хоть он пока и игрушечный
источник

A

Andrew in Rust — русскоговорящее сообществo
Переслано от Andrew
Всем Привет.
Кто желает выступить с докладом на онлайн митапе?
источник

p

polunin.ai in Rust — русскоговорящее сообществo
Andrew
Переслано от Andrew
Всем Привет.
Кто желает выступить с докладом на онлайн митапе?
что за митап? когда?
источник

A

Andrew in Rust — русскоговорящее сообществo
polunin.ai
что за митап? когда?
Пока только ищем докладчиков. с датой не определялся
источник

SS

Stanislav Sagan in Rust — русскоговорящее сообществo
Вышел tokio 0.3.0
Пора обновляться)
источник

p

polunin.ai in Rust — русскоговорящее сообществo
ну я бы выступил с рассказом про новую архитектуру teloxide, но она еще не готова) если успеем доделать, то могу выступить, но то будет скорее всего ближе к концу января.
источник

KR

Kai Ren in Rust — русскоговорящее сообществo
Stanislav Sagan
Вышел tokio 0.3.0
Пора обновляться)
wait for ecosystem
источник

D

Dima in Rust — русскоговорящее сообществo
Посоветуйте встраиваемый аналог веб сервера на Rust, нужно что-то вроде spring-boot,  но и более простые аналоги подойдут
источник

H

Hirrolot in Rust — русскоговорящее сообществo
polunin.ai
ну я бы выступил с рассказом про новую архитектуру teloxide, но она еще не готова) если успеем доделать, то могу выступить, но то будет скорее всего ближе к концу января.
будет круто
источник