Το έργο rars είναι μια δωρεάν υλοποίηση εργαλείων RAR γραμμένη σε Rust που υποστηρίζει τόσο την αποσυσκευασία όσο και τη δημιουργία αρχείων RAR. Τα εργαλεία υποστηρίζουν τόσο τις παλαιότερες μορφές RAR 1.3/1.4 με την υπογραφή "RE~^" όσο και την τελευταία έκδοση, RAR 7. Διατίθενται προηγμένες λειτουργίες, όπως διαχωρισμός σε τόμους, προστασία με κωδικό πρόσβασης, κρυπτογράφηση κεφαλίδας, συνημμένο σχόλιο, φίλτρα RARVM, ευρετήρια για γρήγορο άνοιγμα και μηχανισμοί για την επιδιόρθωση κατεστραμμένων δεδομένων. Ο κώδικας διανέμεται με τις άδειες MIT και Apache-2.0. Οι συνδέσεις Python βασίζονται στη βιβλιοθήκη PyO3, υλοποιώντας ένα API τύπου rarfile για προβολή, δοκιμή και εξαγωγή αρχείων, καθώς και ένα API τύπου RarBuilder για τη δημιουργία ή την επανασυσκευασία αρχείων.
Το μοναδικό χαρακτηριστικό του έργου είναι ότι υλοποιεί τη μορφή RAR χωρίς τη χρήση του βοηθητικού κώδικα unrar, ο οποίος διανέμεται με άδεια χρήσης. Αυτή η άδεια χρήσης απαγορεύει τη χρήση κώδικα unrar για την αναδημιουργία του αλγορίθμου συμπίεσης RAR ή την ανάπτυξη ενός αρχειοθέτη συμβατού με RAR. Λόγω αυτού του περιορισμού, οι περισσότεροι δωρεάν αρχειοθέτες περιορίζονταν στην αποσυμπίεση αρχείων RAR και στη δημιουργία αρχείων RAR που απαιτούνταν χρησιμοποιώντας ιδιόκτητα εργαλεία από το RARLAB.
Έχει δημιουργηθεί ένα ξεχωριστό αποθετήριο, το rar-research, το οποίο περιέχει προδιαγραφές για τις μορφές RAR 1.3/1.4, RAR 1.5-4.x και RAR 5.0/7.0, καθώς και σημειώσεις σχετικά με τους αλγόριθμους που χρησιμοποιήθηκαν, τα φίλτρα, τις μεθόδους επαλήθευσης και ανάκτησης ακεραιότητας, την κρυπτογράφηση, τον διαχωρισμό τόμων και τους μηχανισμούς προστασίας. Δεδομένου ότι δεν υπήρχε επίσημη, ολοκληρωμένη προδιαγραφή κατά τη στιγμή δημιουργίας του έργου rars, η τεκμηρίωση αναδημιουργήθηκε χρησιμοποιώντας κώδικα unpacker, παλιές υλοποιήσεις, αρχεία δοκιμών και ανάλυση δυαδικών εκδόσεων του RAR για DOS και... Windows.
Η υλοποίηση δημιουργήθηκε χρησιμοποιώντας τα εργαλεία τεχνητής νοημοσύνης OpenAI Codex 5.5 και Claude Opus 4.7 στον ελεύθερο χρόνο μου για μια περίοδο περίπου πέντε εβδομάδων. Στο πρώτο στάδιο, χρησιμοποιήθηκαν μοντέλα για τη συστηματοποίηση των πληροφοριών μορφοποίησης και τη συμπλήρωση κενών στην περιγραφή, μετά την οποία δημιουργήθηκε κώδικας Rust με βάση την ανακατασκευασμένη προδιαγραφή. Για τη βελτίωση της προδιαγραφής και τη βελτίωση της υλοποίησης, πραγματοποιήθηκαν δοκιμές σε πραγματικά αρχεία και σύγκριση με υλοποιήσεις αναφοράς.
Σημειώνεται ότι τα εργαλεία Τεχνητής Νοημοσύνης είχαν καλή απόδοση στη μετάφραση τυπικών περιγραφών σε κώδικα και στην τακτική εφαρμογή μεγάλου όγκου λειτουργιών, αλλά απέτυχαν να παρέχουν αρχιτεκτονικό έλεγχο. Χωρίς αυστηρή εποπτεία, τα μοντέλα Τεχνητής Νοημοσύνης έτειναν να παρακάμπτουν τις δοκιμές, να περιπλέκουν τον κώδικα και να παραβλέπουν προφανή ζητήματα που επηρεάζουν τη χρηστικότητα. Σύμφωνα με τον συγγραφέα, σε ένα έργο αυτής της κλίμακας, οι δοκιμές, η τεκμηρίωση και τα σχόλια έγιναν όχι μόνο εργαλεία επαλήθευσης αλλά και ένας τρόπος καθοδήγησης της δημιουργίας κώδικα.
Η ανάπτυξη επιταχύνθηκε μετά την εισαγωγή της λειτουργίας "/goal" στο OpenAI Codex, η οποία επιτρέπει στον παράγοντα AI να εργάζεται σε μία μόνο εργασία για μεγάλα χρονικά διαστήματα, συμπιέζοντας το περιβάλλον και συνεχίζοντας την εκτέλεση μετά την υπερχείλισή του. Σε αυτήν τη λειτουργία, το Codex εκτελέστηκε για περισσότερες από έξι ώρες αρκετές φορές και μία φορά για περίπου 16 ώρες, εφαρμόζοντας ένα σημαντικό μέρος της υπόλοιπης λειτουργικότητας, όπως ανάκτηση δεδομένων, κρυπτογράφηση και αρχεία πολλαπλών τόμων. Συμπεριλαμβανομένης μιας σημαντικής επιδότησης token, δαπανήθηκαν 40 λίρες για το έργο.
Όσον αφορά τη συμπίεση, το RARS υστερεί σε σχέση με το WinRAR κατά μέσο όρο 5-10%. Όσον αφορά την ταχύτητα συμπίεσης και αποσυμπίεσης, το RARS είναι σημαντικά πιο αργό από το WinRAR λόγω της έλλειψης ολοκληρωμένων βελτιστοποιήσεων. Ωστόσο, το έργο περιλαμβάνει ήδη μια λειτουργία "--features fast", η οποία χρησιμοποιεί βελτιστοποιήσεις που βασίζονται σε SIMD για την επιτάχυνση της συμπίεσης και της αποσυμπίεσης, αλλά βασίζεται στο πειραματικό API std::simd, το οποίο είναι διαθέσιμο μόνο σε δοκιμαστικές εκδόσεις της αλυσίδας εργαλείων Rust. Έχει επίσης υλοποιηθεί μια λειτουργία "--features parallel", χρησιμοποιώντας τη βιβλιοθήκη Rayon για την παράλληλη συμπίεση μεμονωμένων αρχείων.
Ο Evgeny Roshal, δημιουργός του RAR, σχολίασε τη χρήση της αντίστροφης μηχανικής παλαιών δυαδικών αρχείων RAR στην ανάπτυξη αρχείων .rar, η οποία απαγορεύεται από τη συμφωνία άδειας χρήσης. Σύμφωνα με τον Evgeny, δεν έχει ακόμη αποφασίσει τι θα κάνει σχετικά με αυτό και σκοπεύει να περιμένει τη γνώμη της win.rar GmbH.
Πηγή: opennet.ru
