Size: a a a

2020 April 27

MB

Mikail Bagishov in rust_offtopic
Soul
в Rust же компиляторное управление памятью, какой тут может быть интероп с нормальными языками, которые не знают о концепции феодального владения переменной
Компиляторное управление?
источник

EG

Emmanuel Goldstein in rust_offtopic
Но этого как раз нет, есть только с C.
источник

AZ

Alex Zhukovsky in rust_offtopic
Soul
в Rust же компиляторное управление памятью, какой тут может быть интероп с нормальными языками, которые не знают о концепции феодального владения переменной
лайфтайм моего лайфтайма не мой лайтфайм?
источник

S

Soul in rust_offtopic
А после оптимизаций даже Rust не знает, что там завернуто с памятью у dll на Rust
источник

MB

Mikail Bagishov in rust_offtopic
Кстати, еще не изобрели JSON calling convention?
источник

S

Soul in rust_offtopic
Mikail Bagishov
Компиляторное управление?
Ну да. Псевдоавтоматическое, с утечками памяти и указателями в unsafe, а также лайфтаймами и ломкой на этапе компиляции, если компилятору не нравится, как ты отвладел вон той переменной
источник

MB

Mikail Bagishov in rust_offtopic
Soul
Ну да. Псевдоавтоматическое, с утечками памяти и указателями в unsafe, а также лайфтаймами и ломкой на этапе компиляции, если компилятору не нравится, как ты отвладел вон той переменной
Термин плохой
источник

MB

Mikail Bagishov in rust_offtopic
Компилятор только вызовы drop расставляет и drop glue генерирует
источник

G

Gymmasssorla in rust_offtopic
Mikail Bagishov
Термин плохой
+
источник

p

polunin.ai in rust_offtopic
Alex Zhukovsky
--crate-type=lib, #[crate_type = "lib"] - A Rust library will be produced. This is an ambiguous concept as to what exactly is produced because a library can manifest itself in several forms. The purpose of this generic lib option is to generate the "compiler recommended" style of library. The output library will always be usable by rustc, but the actual type of library may change from time-to-time. The remaining output types are all different flavors of libraries, and the lib type can be seen as an alias for one of them (but the actual one is compiler-defined).

--crate-type=dylib, #[crate_type = "dylib"] - A dynamic Rust library will be produced. This is different from the lib output type in that this forces dynamic library generation. The resulting dynamic library can be used as a dependency for other libraries and/or executables. This output type will create *.so files on linux, *.dylib files on osx, and *.dll files on windows.

--crate-type=cdylib, #[crate_type = "cdylib"] - A dynamic system library will be produced. This is used when compiling a dynamic library to be loaded from another language. This output type will create *.so files on Linux, *.dylib files on macOS, and *.dll files on Windows.
Ни слова нет про то что уб а что не уб
источник

EG

Emmanuel Goldstein in rust_offtopic
Кстати, интересно.
Представим себе, что я сделал dylib с двумя функциями:
fn call(struct: MyComplexStructure) {
   ...
}

extern "C" fn call_serialized(struct: *const u8, len: usize) {
   let struct: MyComplexStructure = serde_very_fast::deserialize_from_c_array(struct, len);
   call(struct)
}
Я подключил библиотеку, выяснил, что версия ABI не совпадает, и вызываю только функцию call_serialized().
источник

EG

Emmanuel Goldstein in rust_offtopic
Я имею право это делать или всё сломается?
источник

AZ

Alex Zhukovsky in rust_offtopic
polunin.ai
Ни слова нет про то что уб а что не уб
The resulting dynamic library can be used as a dependency for other libraries and/or executables.
источник

AZ

Alex Zhukovsky in rust_offtopic
если бы там было УБ то оно не было бы can be used
источник

AZ

Alex Zhukovsky in rust_offtopic
Soul
в Rust же компиляторное управление памятью, какой тут может быть интероп с нормальными языками, которые не знают о концепции феодального владения переменной
источник

p

polunin.ai in rust_offtopic
Alex Zhukovsky
если бы там было УБ то оно не было бы can be used
Ну вызывать процедуры можно точно
источник

p

polunin.ai in rust_offtopic
А ещё #[repr(C)] структуры
источник

AZ

Alex Zhukovsky in rust_offtopic
polunin.ai
А ещё #[repr(C)] структуры
для repr C есть отдельный cdylib
источник

AZ

Alex Zhukovsky in rust_offtopic
очевидно он должен отличаться от dylib
источник

p

polunin.ai in rust_offtopic
Alex Zhukovsky
для repr C есть отдельный cdylib
cdylib если нужно вызывать Раст код из других языков
источник