Pourquoi Discourse n'a-t-il pas été réécrit en Rust ?

Discourse est sécurisé en mémoire. Ruby est un langage sécurisé en mémoire ; tous les langages à garbage collector le sont. La principale différence avec Rust à cet égard est le moment où les vérifications de sécurité sont effectuées ; Rust les effectue au moment de la compilation, Ruby les effectue au moment de l’exécution.

Rust ne s’attaque qu’à quelques classes d’erreurs, principalement celles causées par l’absence de garbage collection en C++. Il est certainement cool qu’ils aient trouvé un moyen de le faire tout en conservant les avantages de performance théoriquement possibles avec les pointeurs, mais cela n’empêche en aucun cas le type de bugs que vous verriez en tant qu’utilisateur. Par exemple, si j’utilise < alors que je voulais <=, et que j’obtiens une erreur d’un cran à la suite, Rust ne me sauvera pas. Si j’oublie de faire apparaître un message de succès après qu’une action soit terminée, Rust ne me sauvera pas.

Ce qui empêche réellement les bugs, c’est le type de développement piloté par les tests que Discourse déploie déjà. Il y a très peu de projets que vous pouvez déployer directement depuis master et vous attendre à ce qu’ils soient stables, mais Discourse en est un.

Les « plateformes modernes » apparaissent à gauche, à droite et au centre en utilisant JavaScript pour le backend et le frontend. Ruby est 2 places derrière Rust en popularité (Kotlin est entre les deux), donc ce n’est guère un langage rare pour le moment. Bien sûr, dans 10 ans, les choses pourraient être différentes, mais même une réécriture en Rust serait une dette technique dans 10 ans.

Il est difficile de transmettre à quel point cette déclaration est naïve, c’est pourquoi tout le monde rit de cette idée. J’ai vu mes développeurs refactoriser du code pendant 3 ans maintenant, et ils sont juste prêts à commencer à migrer de wxWidgets/ShuttleGUI vers Qt/QML - ce qui, pour contexte, est une migration de C++ vers C++, juste un toolkit d’interface utilisateur différent. Il est juste difficile de transformer du code tout en s’assurant que le comportement reste identique. 12-16 jours, c’est le temps dont vous auriez probablement besoin juste pour la planification avant que quiconque ne commence.

15 « J'aime »