antonone Napisano Październik 15, 2015 Zgłoś Udostępnij Napisano Październik 15, 2015 Tak może dodam coś na temat Rust, bo wydaje mi się, że jest to jeden z bardziej interesujących języków opracowywanych w ostatnich kilku latach.Killer feature i "materiał eksportowy" w Rust to jest "borrow checker", czyli automatyczny sprawdzacz czasu życia obiektów. Czas życia jest ściśle monitorowany na podstawie tego, kto aktualnie posiada dany obiekt. W jednej chwili tylko jedna rzecz może być właścicielem jakiegoś obiektu, więc nie można sobie np. przekazać tablicy jako argumentu jakiejś funkcji. Trzeba tą tablicę albo "pożyczyć" ("borrow" - wtedy dostęp do niej jest read-only, przez tego co ją pożyczył, i tego, który jest właścicielem, do czasu gdy pożyczenie się zakończy), albo całkowicie "oddać", przy czym wtedy oryginalny właściciel traci dostęp do zasobu i już nie może go używać. To wszystko dzieje się już na etapie kompilacji, a nie działania programu -- jeśli kompilator Rust skompiluje kod, będzie to znaczyło, że przynajmniej istnieje gwarancja na brak ryzyka wystąpienia błędu odczytu pamięci po jej zwolnieniu.Oczywiście temat borrow checkera jest dość obszerny, a powyższy akapit przedstawił jedynie jego prosty zarys, ale może to zachęci kogoś do głębszego zapoznania się z tematem. 4 Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Bartosz Wójcik Napisano Październik 15, 2015 Zgłoś Udostępnij Napisano Październik 15, 2015 Rust się pojawiał zawsze w jakichś newsach, ale czy jesteś w stanie powiedzieć do czego konkretnie nadaje się Rust? Do wielowątkowości bez problemów? Do aplikacji Windows, Linux, Android? PHP aplikacje internetowe, Swift iOS, C urządzenia wbudowane itd. a Rust? Jaki jest główny cel? Czy są jakieś flagowe aplikacje stworzone w Rust? Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
antonone Napisano Październik 15, 2015 Autor Zgłoś Udostępnij Napisano Październik 15, 2015 Muszę dodać nowy post, ponieważ brakuje opcji edycji postów.Jednym z bardziej ciekawych projektów tworzonych w Rust to jest system operacyjny Redox OS. Co prawda zarzuca mu się zbyt częste korzystanie z keyworda "unsafe", który tymczasowo wyłącza borrow checkera, ale z tego co widziałem autor zdaje sobie sprawę z problemu i obiecuje poprawę ;). Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Bartosz Wójcik Napisano Październik 15, 2015 Zgłoś Udostępnij Napisano Październik 15, 2015 Muszę dodać nowy post, ponieważ brakuje opcji edycji postów.Hmm w uprawnieniach userzy mogą edytować własną treść... muszę to sprawdzić! Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
antonone Napisano Październik 15, 2015 Autor Zgłoś Udostępnij Napisano Październik 15, 2015 Wbiłeś mi się między posty ;). Mozilla tworzyła Rusta (przynajmniej na początku) głównie dla swojego engine'u renderującego HTML - Servo, który będzie chyba najlepszym kandydatem do określenia go mianem produktu flagowego. Jest też sporo kodu napisanego przez community, repozytorium bibliotek znajduje się w serwisie crates.io. Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
antonone Napisano Październik 15, 2015 Autor Zgłoś Udostępnij Napisano Październik 15, 2015 Hmm w uprawnieniach userzy mogą edytować własną treść... muszę to sprawdzić!Odpowiedzi mogą być edytowane, ale w pierwszym poście opcji 'edytuj' nie widzę. Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Bartosz Wójcik Napisano Październik 15, 2015 Zgłoś Udostępnij Napisano Październik 15, 2015 Była blokada edycji do 5 minut, zwiększyłem do 60 minut, to dobre rozwiązanie, bo widziałem na paru forach, jak przychodzi jakiś ziomek i wszędzie wstawia "." w swoich postach Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Bartosz Wójcik Napisano Październik 15, 2015 Zgłoś Udostępnij Napisano Październik 15, 2015 Wbiłeś mi się między posty ;). Mozilla tworzyła Rusta (przynajmniej na początku) głównie dla swojego engine'u renderującego HTML - Servo, który będzie chyba najlepszym kandydatem do określenia go mianem produktu flagowego. Jest też sporo kodu napisanego przez community, repozytorium bibliotek znajduje się w serwisie crates.io.No i pytanie czy Rust ma w ogóle szansę na stanie się popularnym językiem czy jego popularność będzie taka jak assemblera? Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
antonone Napisano Październik 15, 2015 Autor Zgłoś Udostępnij Napisano Październik 15, 2015 Ciężko mi określić, czy będzie popularny. Do tej pory zauważyłem, na swoim przykładzie, że jest w nim wysoki learning curve, trzeba się najpierw trochę naczytać, aby zacząć w nim wygodnie pisać. Wpływy z OCaml'a (podobno pierwsze prototypy kompilatora pisane były w OCamlu, teraz Rust jest self-hosting) nie pomagają tym, którzy nigdy w nim nic nie robili. Wydaje mi się, że to, czy będzie popularny czy nie, okaże się dopiero jak Servo zostanie wpięte jako domyślny silnik Firefoxa. Jeśli bezpieczny kod generowany przez Rusta zda egzamin, to kto nie będzie chciał programować w języku który część błędów runtime'owych robionych w C++ łapie już na etapie kompilacji? Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Bartosz Wójcik Napisano Październik 15, 2015 Zgłoś Udostępnij Napisano Październik 15, 2015 A ty sam co robisz w Ruście? Jak to w ogóle odmieniać i czy w ogóle odmieniać? Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
antonone Napisano Październik 15, 2015 Autor Zgłoś Udostępnij Napisano Październik 15, 2015 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ę ;). Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Madaoo Napisano Październik 15, 2015 Zgłoś Udostępnij Napisano Październik 15, 2015 Rust jest ciekawym językiem. Ja go kojarzę z zastosowania do aplikacji webowych, gdzie przy pomocy Iron Frameworka możną tworzyć projekty oparte na architekturze RESTowej. Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
mrowqa Napisano Październik 20, 2015 Zgłoś Udostępnij Napisano Październik 20, 2015 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 Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Bartosz Wójcik Napisano Październik 20, 2015 Zgłoś Udostępnij Napisano Październik 20, 2015 Dziś Mozilla odwiedziła mój wydział na uczelni...To w Polsce takie rzeczy się dzieją? Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
mrowqa Napisano Październik 20, 2015 Zgłoś Udostępnij Napisano Październik 20, 2015 To w Polsce takie rzeczy się dzieją? 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 Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
antonone Napisano Październik 22, 2015 Autor Zgłoś Udostępnij Napisano Październik 22, 2015 (edytowany) 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; } Edytowano Październik 22, 2015 przez antonone 2 Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Rubycom Napisano Listopad 26, 2016 Zgłoś Udostępnij Napisano Listopad 26, 2016 Szukam programisty RUST, nie będę tutaj robił ogłoszenia wiec zainteresowanych zapraszam na stronę: www.rubycom.pl Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.