Projets de stage d'été de Jane Street : JSQL plus rapide, améliorations des liaisons Torch et gestion de la mémoire interprocessus

2025-08-29
Projets de stage d'été de Jane Street : JSQL plus rapide, améliorations des liaisons Torch et gestion de la mémoire interprocessus

Jane Street met en avant trois projets exceptionnels issus du programme de stage d'été de cette année : l’évaluateur JSQL de Leo Gagnon, qui atteint une accélération de plusieurs centaines de fois grâce à l’indexation ; les liaisons OCaml Torch améliorées d’Aryan Khatri, tirant parti d’OxCaml pour une gestion de la mémoire GPU sûre et efficace ; et la bibliothèque de gestion de la mémoire interprocessus d’Anthony Li, qui élimine la surcharge de sérialisation grâce au comptage de références. Ces projets non seulement améliorent l’efficacité des outils internes, mais contribuent également du code précieux à la communauté open source.

Lire plus
Développement

Chasse au Higgs-Bugson : Débogage d’un problème NFS/Kerberos au niveau du noyau

2025-07-03
Chasse au Higgs-Bugson : Débogage d’un problème NFS/Kerberos au niveau du noyau

Des ingénieurs ont rencontré un bug difficile à reproduire qui provoquait des échecs de copie de fichiers (-EACCES) dans Gord, un système critique de données de trading. La désactivation de Kerberos a résolu le problème, indiquant des problèmes d’authentification. L’enquête a révélé que le noyau obtient les informations d’identification Kerberos via le démon rpc_gssd, mais les journaux n’ont montré aucune anomalie. Des tests approfondis, notamment la création d’un système de fichiers factice en mémoire et l’utilisation de bpftrace pour le suivi du noyau, ont finalement permis d’identifier le problème : une charge élevée du serveur NFS a entraîné des retransmissions de requêtes. Le noyau a mal géré les requêtes/réponses avec des XID identiques mais des numéros de séquence GSS différents, ce qui a entraîné des incohérences de somme de contrôle et des erreurs. L’ingénieur a corrigé le noyau pour éviter la retransmission immédiate en raison d’incohérences de numéro de séquence.

Lire plus
Développement bug du noyau

Représentation mémoire efficace avec les GADTs en OCaml

2025-05-12
Représentation mémoire efficace avec les GADTs en OCaml

Cet article explore l'utilisation des Types de Données Algébriques Généralisés (GADTs) en OCaml pour optimiser la représentation mémoire. L'auteur explique d'abord les limitations du polymorphisme d'OCaml, notamment l'inefficacité spatiale de List.iter lorsqu'il gère différents types de données en raison de la représentation mémoire uniforme. Des tentatives de création d'un type `Compact_array` à l'aide de variantes ordinaires et d'objets échouent en raison de problèmes d'inférence de type et d'allocation mémoire. Enfin, en utilisant les GADTs, l'auteur crée avec succès une représentation mémoire flexible et efficace pour les tableaux de différents types de données, montrant l'utilité des GADTs au-delà de l'écriture de compilateurs, notamment dans les applications hautes performances exigeant un contrôle précis de la mémoire.

Lire plus
Développement optimisation mémoire

Le périple d'une décennie de Jane Street : de Jenga à Dune

2025-01-30
Le périple d'une décennie de Jane Street : de Jenga à Dune

Jane Street a initialement développé Jenga, un système de build OCaml, mais ses limitations ont conduit à une adoption limitée, et même à un retour en arrière sur son statut open source. Ils ont ensuite créé Jbuilder, plus simple, qui a gagné en popularité de manière inattendue grâce à sa vitesse, évoluant finalement en Dune. Après des années d'efforts, l'équipe de Jane Street a migré avec succès son système de build interne de Jenga à Dune pour ses 70 millions de lignes de code, augmentant ainsi la vitesse de build et jetant les bases du développement futur de Dune.

Lire plus
Développement