À propos du projet

Codium::Blocks est un prototype d'IDE natif conçu pour le développement multi-langages, évitant explicitement les dépendances Electron. Construit sur un noyau C++/wxWidgets, il vise à fournir un environnement léger et extensible pour Windows, macOS et Linux. Les composants architecturaux clés comprennent : - **Noyau natif** : Une application C++ utilisant wxWidgets pour la gestion de l'interface utilisateur et des documents, avec un surlignage de syntaxe pour C/C++, Python, Rust, Go, Java, JavaScript, TypeScript, JSON, HTML, CSS, Markdown, YAML et CMake. - **Hôte d'extension** : Un hôte Node.js facultatif hors processus qui implémente un sous-ensemble de l'API d'extension VS Code (commandes, fenêtre, espace de travail, langages, etc.). Il prend en charge le chargement d'extensions CommonJS via des packages `.vsix` avec vérification SHA-256. - **Protocole de serveur de langage (LSP)** : Client LSP intégré prenant en charge l'initialisation, la synchronisation, le survol, la complétion, les jetons sémantiques, les définitions, les références, les symboles, le renommage et les actions de code. Il comprend une matrice versionnée pour les tests contre des serveurs réels comme clangd, rust-analyzer, gopls et pyright. - **Protocole d'adaptateur de débogage (DAP)** : Un client DAP natif pour le débogage, prenant en charge les points d'arrêt, les traces de pile, les variables et les adaptateurs comme GDB, LLDB-DAP et OpenDebugAD7. - **Intégration Code::Blocks** : Un pont vers le SDK Code::Blocks pour la découverte de plugins, l'importation de projets `.cbp` et l'exécution facultative d'un adaptateur hôte séparé pour une intégration plus profonde. - **Terminal** : Un terminal natif interactif avec des backends PTY/ConPTY, un support de séquences ANSI/VT et un défilement. - **Système de construction** : Détection automatique de CMake, Make, Cargo et npm, avec des exécuteurs de tâches pour les opérations de configuration, de construction et de test. Le projet est actuellement dans un état de snapshot de développement (v1.0.1), avec un focus sur la stabilité et la compatibilité. Il ne prétend pas à une compatibilité totale avec VS Code ou Code::Blocks mais fournit une approche stratifiée de l'extensibilité et de l'intégration des outils.