Skocz do zawartości

Leaderboard

Popular Content

Showing content with the highest reputation since 18.02.2026 in all areas

  1. Używanie kodu Rust z projektu C++ mam już sprawdzone ;), polega na wykorzystaniu FFI w celu zapewnienia bezpieczeństwa typów. Po stronie Rust, kod źródłowy obiektu dzielonego (DLL), z niego wyjdzie np. libdylib.so: #![crate_type = "dylib"] extern crate libc; use std::ffi::CStr; #[no_mangle] pub fn hello_world(name: *const libc::c_char) { let buf_name = unsafe { CStr::from_ptr(name).to_bytes() }; let str_name = String::from_utf8(buf_name.to_vec()).unwrap(); println!("Hello, {}!", str_name); } Poprzez wykorzystanie specyfikatora "no_mangle", symbol dla funkcji hello_world będzie wyglądał tak, jak np. przy użyciu extern "C" w C++, czyli będzie miał wycięte informacje o typach, etc - "_hello_world". Taką DLL'kę lub obiekt dzielony można załadować standardowo, jak każdy inny obiekt. Po stronie C++: #include <iostream> #include <dlfcn.h> int main() { void* lib = dlopen("./target/release/libdylib.so", RTLD_LAZY); if(!lib) { std::cout << "can't open libdylib.so\n"; return 1; } void* func = dlsym(lib, "hello_world"); if(!func) { std::cout << "can't locate function hello_world()\n"; dlclose(lib); return 1; } typedef void (*hello_world_fun)(const char* somestr); hello_world_fun hello_world = (hello_world_fun) func; hello_world("C++"); dlclose(lib); return 0; } (dlopen to jest to samo co LoadLibrary, a dlsym to jest to samo co GetProcAddress). Wyjście programu: $ ./test Hello, C++! Na Linuxie można też zlinkować wygenerowany obiekt dzielony do exeka pisanego w C++, więc możliwe jest stworzenie takiego programu, wołającego funkcję z Rust'a bezpośrednio, bez potrzeby ładowania dynamicznego: #include <iostream> #include <dlfcn.h> extern "C" void hello_world(const char* ptr); int main() { hello_world("C++"); return 0; }
    1 point
  2. Tak właściwie to był były stażysta Mozilli, który studiuje na tym wydziale i dwóch pracowników Mozilli - jeden pracujący zdalnie z Polski i drugi, który przyleciał z San Francisco. Jestem dopiero na pierwszym roku i dopiero co zaczynam studia, ale mój wydział co chwilę jest witany przez coraz to kolejne firmy - poza wyżej wspomnianą Mozillą wiadomo mi jeszcze o Intelu, Google'u i NVidii. Poza tym były też eventy, w których udział brały mniejsze firmy. A z tego co mi wiadomo od starszych znajomych, to dopiero początek i rok się dopiero rozkręca Jakbyś był ciekaw co to za wydział, to mówię tu o Wydziale Matematyki, Informatyki i Mechaniki Uniwersytetu Warszawskiego
    1 point
  3. Dziś Mozilla odwiedziła mój wydział na uczelni i opowiadała m.in. o Ruście. Szczerze mówiąc wiele o tym języku jeszcze nie wiem, ale planuję go opanować (i zorganizować na wydziale warsztaty sprowadzając ludzi z Mozilli, by inni też mieli okazję poznać Rusta ). Z tego co zapamiętałem z prezentacji, to Rust powstał na potrzeby tworzenia bezpiecznego kodu dla Firefoxa (niektóre części kodu przeglądarki już korzystają z Rusta) i Mozilla pracuje nad nowym silnikiem do zrównoleglenia przetwarzania stron internetowych (projekt Servo, który był wyżej wspomniany). Poza wspomnianą ciekawą obsługą pamięcią poprzez mechanizm ownership, bardzo spodobał mi się zerowy narzut na czas wykonania i pamięć (kod kompilowany jest do kodu maszynowego) i możliwość przemiennego wykorzystywania bibliotek napisanych w C++, tzn. można w Ruście korzystać z bibliotek C++ i co ciekawsze - na odwrót także. Jak będę mieć więcej wolnego czasu z ciekawości sprawdzę jak to się sprawuje (chyba, że ktoś mnie tu uprzedzi ), bo zgodność binarna jakby nie patrzeć jest zależna od konkretnego kompilatora.
    1 point
  4. Do tej pory pisałem jakieś małe narzędzia, które w sumie równie dobrze możnaby napisać w Pythonie lub Ruby, ale nadal się tego języka uczę ;). Gdy zacząłem się nim interesować, to był trochę większy problem niż teraz, bo składnia języka się zmieniała, a gdy się mniej więcej ustabilizowała, to zaczęła się zmieniać standardowa biblioteka. Teraz jest już w miarę spokojnie i można zaczynać do niego podchodzić bardziej na poważnie, jak tylko znajdę trochę czasu to będę kontynuował naukę ;).
    1 point
×
×
  • Utwórz nowe...