Définitions des termes techniques utilisés dans ce livre.
Abstraction : Technique permettant de masquer les détails d'implémentation derrière une interface simple.
AES-GCM : Advanced Encryption Standard - Galois/Counter Mode. Algorithme de chiffrement symétrique authentifié.
Async/Await : Paradigme de programmation asynchrone permettant d'écrire du code non-bloquant de manière séquentielle.
Arc (Atomic Reference Counted) : Type Rust permettant le partage thread-safe de données en lecture avec comptage de références atomique.
Borrow Checker : Composant du compilateur Rust qui vérifie les règles d'emprunt (borrowing) à la compilation pour garantir la sécurité mémoire.
Builder Pattern : Pattern de conception pour construire des objets complexes étape par étape avec une API fluide.
Cargo : Gestionnaire de paquets et outil de build pour Rust.
Channel : Mécanisme de communication inter-threads par passage de messages (MPSC: Multiple Producer, Single Consumer).
Clean Architecture : Architecture logicielle séparant le code en couches (Core, Application, Infrastructure, UI) avec des dépendances unidirectionnelles.
Closure : Fonction anonyme capable de capturer des variables de son environnement.
Crate : Unité de compilation en Rust, équivalent à une bibliothèque ou un exécutable.
DPI (Dots Per Inch) : Densité de pixels d'un écran. Les écrans haute résolution (Retina, HiDPI) ont un DPI élevé nécessitant une mise à l'échelle de l'UI.
Debounce : Technique limitant la fréquence d'exécution d'une fonction, n'exécutant qu'après une période d'inactivité.
egui : Bibliothèque Rust d'interface graphique en mode immédiat (immediate mode GUI).
Enum (Enumeration) : Type Rust permettant de définir un type avec plusieurs variantes possibles, chacune pouvant contenir des données.
Event Bus : Pattern de communication découplée où les composants publient et s'abonnent à des événements.
Feature Flag : Technique permettant d'activer/désactiver des fonctionnalités sans modifier le code.
Freemium : Modèle économique offrant une version gratuite avec fonctionnalités limitées et une version payante complète.
Full-Text Search : Recherche dans le contenu textuel complet des documents, pas seulement les métadonnées.
GUI (Graphical User Interface) : Interface utilisateur graphique, par opposition à l'interface en ligne de commande (CLI).
HiDPI : High Dots Per Inch. Écrans haute résolution nécessitant une mise à l'échelle spécifique.
Immediate Mode GUI : Paradigme d'interface graphique où l'UI est entièrement redessinée à chaque frame, sans état persistant des widgets.
Interior Mutability : Pattern Rust permettant la mutation de données à travers une référence immutable, vérifié au runtime.
LRU (Least Recently Used) : Algorithme de cache évincant les éléments les moins récemment utilisés quand le cache est plein.
Lifetime : Annotation Rust indiquant la durée de validité d'une référence.
Macro : Métaprogrammation en Rust permettant de générer du code à la compilation.
Migration (Base de données) : Script de modification du schéma de base de données, versionné et appliqué séquentiellement.
MPSC : Multiple Producer, Single Consumer. Type de channel où plusieurs émetteurs envoient vers un seul récepteur.
Newtype Pattern : Pattern Rust créant un nouveau type wrapper autour d'un type existant pour plus de type safety.
Notarization : Processus Apple vérifiant qu'une application ne contient pas de malware avant distribution.
Offline-First : Architecture où l'application fonctionne d'abord localement, synchronisant avec le serveur quand disponible.
Optimistic Update : Technique appliquant immédiatement un changement à l'UI avant confirmation du serveur, avec rollback si erreur.
Ownership : Système Rust où chaque valeur a un propriétaire unique, transféré lors d'assignation ou de passage en paramètre.
Panic : Erreur irrécupérable en Rust causant l'arrêt du thread (ou du programme si non géré).
Pattern Matching : Construction Rust (match) permettant de déstructurer et comparer des valeurs contre des patterns.
Plugin : Extension ajoutant des fonctionnalités à une application sans modifier son code source.
Port (Architecture) : Interface abstraite dans Clean Architecture définissant un contrat entre couches.
RAII (Resource Acquisition Is Initialization) : Pattern où l'acquisition de ressources est liée à la création d'objet, et la libération à sa destruction.
Repository Pattern : Pattern d'abstraction de la persistance des données, séparant la logique métier du stockage.
Result<T, E> : Type Rust représentant soit une valeur de succès (Ok(T)) soit une erreur (Err(E)).
Semver (Semantic Versioning) : Convention de numérotation de version (MAJOR.MINOR.PATCH) indiquant la nature des changements.
Skeleton Loading : Technique d'UX affichant un placeholder animé pendant le chargement du contenu réel.
SQLite : Base de données relationnelle embarquée, stockée dans un seul fichier.
State Machine : Modèle où un système peut être dans un état parmi un ensemble fini, transitionnant selon des règles définies.
Tantivy : Bibliothèque Rust de recherche full-text, équivalent à Apache Lucene.
Telemetry : Collecte automatique de données d'utilisation et de performance.
Thread-Safe : Code pouvant être exécuté en parallèle par plusieurs threads sans corruption de données.
Tokio : Runtime asynchrone le plus populaire en Rust, fournissant async I/O, timers, et scheduling.
Trait : Interface Rust définissant un ensemble de méthodes qu'un type peut implémenter.
UI (User Interface) : Interface utilisateur, ensemble des éléments visuels permettant l'interaction avec l'application.
UX (User Experience) : Expérience utilisateur, qualité globale de l'interaction avec l'application.
Unsafe : Bloc Rust permettant des opérations normalement interdites, transférant la responsabilité de sécurité au développeur.
VAT (Value Added Tax) : Taxe sur la valeur ajoutée (TVA).
WCAG (Web Content Accessibility Guidelines) : Recommandations d'accessibilité web, applicables aussi aux applications desktop.
White-Label : Produit rebrandable, vendu à d'autres entreprises qui le commercialisent sous leur propre marque.
Widget : Composant d'interface utilisateur (bouton, champ texte, liste, etc.).
Workspace (Cargo) : Collection de crates Rust partageant configuration et dépendances.
? (Question Mark Operator)
: Opérateur Rust propageant automatiquement les erreurs (équivalent à match result { Ok(v) => v, Err(e) => return Err(e.into()) }).
API : Application Programming Interface. Ensemble de fonctions exposées par une bibliothèque ou service.
CLI : Command Line Interface. Interface en ligne de commande.
CRUD : Create, Read, Update, Delete. Opérations de base sur les données.
DMG : Disk Image. Format d'archive utilisé sur macOS pour distribuer des applications.
JSON : JavaScript Object Notation. Format de sérialisation de données textuelles.
MSI : Microsoft Installer. Format d'installateur Windows.
PDF : Portable Document Format. Format de document universel.
TOML : Tom's Obvious Minimal Language. Format de configuration utilisé par Cargo.
UUID : Universally Unique Identifier. Identifiant unique de 128 bits.