Αρχιτεκτονική και φιλοσοφία του TSP
Το Type Server Protocol (TSP) εισάγει ένα μοντέλο επικοινωνίας βασισμένο στο JSON-RPC, το οποίο εστιάζει αποκλειστικά στην παροχή δεδομένων ανάλυσης τύπων. Σε αντίθεση με το γενικότερο LSP, το TSP είναι βελτιστοποιημένο για την ανάκτηση πληροφοριών σχετικά με την ιεραρχία των τύπων, την επίλυση εισαγωγών (import resolution) και τη διαδρομή αναζήτησης (search paths) σε projects Python.
Διαχείριση κατάστασης και snapshots
Η καρδιά του πρωτοκόλλου είναι το σύστημα των snapshots. Κάθε snapshot αποτελεί ένα ακέραιο αναγνωριστικό που αντιστοιχεί σε μια χρονική στιγμή της ανάλυσης. Αυτή η προσέγγιση επιτρέπει στον server να διαχειρίζεται την εγκυρότητα των δεδομένων: όταν συμβαίνουν αλλαγές στο workspace (π.χ. αλλαγές αρχείων ή ρυθμίσεων), ο server προωθεί το snapshot, καθιστώντας τα προηγούμενα αποτελέσματα άκυρα. Οι clients οφείλουν να διαχειρίζονται αυτά τα stale snapshots μέσω του κωδικού σφάλματος ServerCancelled.
Βελτιστοποίηση μέσω multi-connection mode
Για την αντιμετώπιση του σημείου συμφόρησης (bottleneck) που δημιουργείται από την επεξεργασία μεγάλου όγκου ερωτημάτων, το TSP υποστηρίζει την ανοιχτή διαπραγμάτευση (negotiation) για επιπλέον read-only συνδέσεις (IPC). Αυτή η αρχιτεκτονική επιτρέπει την εκτέλεση βαριών ερωτημάτων τύπων σε background workers χωρίς να μπλοκάρεται η κύρια σύνδεση, η οποία παραμένει υπεύθυνη για τον κύκλο ζωής του server και τον συγχρονισμό των εγγράφων.
Τυπολογία αποτελεσμάτων
Το πρωτόκολλο ορίζει μια δομημένη μορφή για τα αντικείμενα τύπων, χρησιμοποιώντας έναν αριθμητικό δείκτη (kind discriminator) για την ταυτοποίηση τύπων όπως Function, Class, Union ή Synthesized. Η χρήση των TypeReference επιτρέπει την αποφυγή πλεονασμού σε αναδρομικές δομές, βελτιώνοντας την απόδοση της σειριοποίησης (serialization) κατά την επικοινωνία μεταξύ client και server.