Dla naszego klienta poszukujemy Senior Rust / Qt Developera, który dołączy do prac nad projektowaniem, implementacją i zwiększaniem niezawodności biblioteki QtBridge Rust.
Praca koncentruje się na rozwoju biblioteki i mechanizmów współpracy Rust z Qt. Początkowe priorytety obejmują model obiektowy, bezpieczeństwo pamięci, system typów oraz makra.
Zakres obowiązków
- Projektowanie i rozwój biblioteki QtBridge Rust oraz zwiększanie jej niezawodności i gotowości do zastosowań produkcyjnych.
- Tworzenie kodu w Rust oraz — tam, gdzie wymaga tego integracja — w C++.
- Rozwój modelu obiektowego i mechanizmów zapewniających bezpieczeństwo pamięci na styku Rust, C++ i Qt.
- Praca nad systemem typów, makrami atrybutowymi oraz generowaniem kodu podczas kompilacji.
- Rozwijanie mechanizmów udostępniania typów Rust silnikowi QML.
- Implementacja i utrzymanie testów oraz dokumentacji biblioteki.
- Analiza i rozwiązywanie problemów zgłaszanych w publicznym backlogu projektu.
- Realizacja zadań przydzielanych na poziomie poszczególnych zgłoszeń, z aktualizacją priorytetów w kolejnych sprintach.
Wymagania
- Doświadczenie w tworzeniu oprogramowania na poziomie senior.
- Dogłębne zrozumienie mechanizmów ownership, borrowing, lifetimes oraz zasad bezpieczeństwa pamięci.
- Bardzo dobra znajomość systemu typów Rust, w tym traits i generics.
- Praktyczna znajomość makr proceduralnych, w szczególności makr atrybutowych, oraz generowania kodu.
- Znajomość C++ umożliwiająca rozwój i debugowanie warstwy integracyjnej.
- Znajomość Qt, w szczególności modelu obiektowego, QObject, QMetaObject oraz mechanizmów współpracy z QML.
- Rozumienie zagadnień FFI, zarządzania czasem życia obiektów i wymiany danych między językami.
- Umiejętność tworzenia testów, dokumentowania API i dbania o jakość kodu bibliotecznego.
- Samodzielność w analizie problemów technicznych i pracy z istniejącym kodem.
Mile widziane
- Doświadczenie z CXX, CXX-Qt lub innymi rozwiązaniami integrującymi Rust z C++.
- Udział w rozwoju bibliotek, frameworków, bindingów lub narzędzi programistycznych.
- Doświadczenie w analizie i weryfikacji kodu
unsafe Rust. - Znajomość narzędzi do wykrywania problemów z pamięcią i niezdefiniowanego zachowania.
- Doświadczenie w projektach open source i pracy z publicznym backlogiem.
- Praktyka w tworzeniu aplikacji Qt Quick / QML, pomagająca zrozumieć potrzeby użytkowników biblioteki.