3 points par GN⁺ 2025-06-26 | 1 commentaires | Partager sur WhatsApp
  • Microsoft Edit est un éditeur conçu pour des besoins d’édition simples, qui rend hommage au classique MS-DOS Editor tout en offrant une interface moderne et des contrôles de saisie similaires à VS Code
  • Son objectif est de proposer un éditeur très accessible, utilisable facilement même par des personnes peu familières avec le terminal
  • L’installation est possible via WinGet sur Windows, Homebrew sur macOS, et via un script d’installation sur Linux si la distribution ne fournit pas de binaire ou si l’on souhaite compiler soi-même
  • Le projet est développé en Rust, et l’usage de Rust nightly est recommandé car il réduit fortement la taille du binaire et améliore légèrement les performances
  • Les gestionnaires de paquets sont invités à privilégier le nom msedit plutôt que edit en raison de possibles conflits de nom d’exécutable, et la configuration de la bibliothèque ICU influe sur les fonctions de recherche/remplacement

Objectif et positionnement de Microsoft Edit

  • Edit est un éditeur simple, pensé pour des « simple needs »
  • Il rend hommage au classique MS-DOS Editor tout en proposant une interface moderne et des contrôles de saisie similaires à ceux de VS Code
  • Il vise à être un éditeur accessible, facile à utiliser même pour les personnes peu habituées au terminal

Méthodes d’installation

  • Les binaires peuvent être téléchargés depuis la page Releases
  • Windows

    • La dernière version peut être installée avec WinGet
    winget install Microsoft.Edit
    
  • Linux

    • Si la distribution ne fournit pas de binaire ou si vous souhaitez compiler vous-même, vous pouvez utiliser le script d’installation
    • Les prérequis sont Rust, un compilateur C, ICU, curl ou wget, et tar
    • L’installation par défaut place msedit dans ~/.local/bin
    curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/microsoft/edit/… | sh
    
    • Avec des options supplémentaires, --dev compile directement depuis la branche main et --system installe dans /usr/local/bin
    curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/microsoft/edit/… | sh -s -- --dev --system
    
  • macOS

    • La dernière version peut être installée avec Homebrew
    brew install msedit
    

Méthode de compilation

  • La compilation nécessite une installation de Rust et un clone du dépôt
  • Si vous utilisez Rust nightly, construisez la version release avec la commande suivante
    cargo build --release --config .cargo/release.toml
    
  • Si vous utilisez Rust stable, il est recommandé de définir la variable d’environnement RUSTC_BOOTSTRAP=1 et de suivre les instructions de compilation nightly
    • Cette méthode réduit fortement la taille du binaire et améliore légèrement les performances
  • Pour compiler avec Rust stable sans configuration particulière, utilisez la commande suivante
    cargo build --release
    

Options de configuration de la compilation

  • La configuration peut être ajustée via des variables d’environnement au moment de la compilation
  • EDIT_CFG_ICU* concerne la configuration des noms de bibliothèques ICU, et il est recommandé aux gestionnaires de paquets Linux d’examiner ces options
  • EDIT_CFG_LANGUAGES permet de spécifier, sous forme de liste séparée par des virgules, les langues à inclure dans la compilation

Points d’attention pour les gestionnaires de paquets

  • Le nom standard de l’exécutable est edit, et son nom alternatif est msedit
  • Comme edit peut entrer en conflit avec des commandes existantes, il est recommandé d’utiliser msedit pour le nom du paquet et de l’exécutable
  • Il est conseillé d’éviter des noms comme ms-edit
  • Si possible, il est recommandé d’attribuer l’alias edit

Configuration liée à ICU

  • Ce projet dépend de manière optionnelle de la bibliothèque ICU pour les fonctions de recherche et remplacement
  • Par défaut, il recherche les noms de bibliothèques ICU propres à chaque plateforme
    • Windows: icuuc.dll, icuin.dll
    • macOS: libicucore.dylib
    • Linux et autres: libicuuc.so, libicui18n.so
  • Si le SONAME de l’environnement d’installation est différent, il faut définir des variables d’environnement lors de la compilation
    • EDIT_CFG_ICUUC_SONAME: par exemple libicuuc.so.76
    • EDIT_CFG_ICUI18N_SONAME: par exemple libicui18n.so.76
  • Les symboles ICU sont supposés, par défaut, être exportés sous une forme comme u_errorName, sans préfixe _ ni suffixe de version
  • Dans les environnements utilisant une autre forme de symboles, des variables d’environnement supplémentaires peuvent être utilisées
    • EDIT_CFG_ICU_CPP_EXPORTS=true: recherche des symboles C++ comme _u_errorName, activé par défaut sur macOS
    • EDIT_CFG_ICU_RENAMING_VERSION=76: recherche des symboles comme u_errorName_76
  • Si EDIT_CFG_ICU_RENAMING_AUTO_DETECT=true est défini, l’exécutable essaiera de détecter à l’exécution la valeur de la version de renommage
    • Cette méthode n’est pas officiellement prise en charge par ICU, il est donc recommandé de ne pas s’y fier
    • Sur UNIX, elle est activée par défaut sauf sur macOS lorsqu’aucune autre option n’est disponible
  • Le test de la configuration de compilation s’exécute avec cargo test en ajoutant le drapeau --ignored
    cargo test -- --ignored
    

1 commentaires

 
GN⁺ 2025-06-26
Avis sur Hacker News
  • Ce billet a suscité assez d’intérêt pour être publié trois fois en une semaine

    1. Par l’auteur lui-même - https://news.ycombinator.com/item?id=44034961
    2. Ubuntu Publication - https://news.ycombinator.com/item?id=44306892
      Et maintenant celui-ci
  • Pour le public cible de cet éditeur, je recommandais auparavant micro ; je me demande s’il faudrait maintenant changer

    1: https://micro-editor.github.io/

    • Il ne semble pas nécessaire de changer
      edit, du moins quand je l’ai essayé rapidement, ne prenait même pas en charge la coloration syntaxique par défaut
    • La dernière fois que j’ai vérifié, micro méritait presque de s’appeler macro rien qu’à voir la taille de son binaire
    • Il y a aussi dte. C’est un éditeur très léger qui vise exactement le même créneau, avec davantage de fonctions comme la prise en charge d’Unicode et des raccourcis clavier CUA
      Je l’utilise comme éditeur de terminal à la place de nano
      [1]: https://craigbarnes.gitlab.io/dte/
    • Micro est un excellent éditeur pour remplacer quelque chose comme nano. En revanche, je ne pense pas que ce soit un bon substitut à edit : edit est très basique, tandis que micro est assez extensible avec Lua
      Il gère aussi plutôt bien les gros fichiers
    • Sous Windows aussi, il s’installe simplement avec "winget install zyedidia.micro". Ça rappelle les éditeurs 8 bits et 16 bits de la même époque
  • Je suis vraiment curieux de savoir comment un projet comme celui-ci obtient le feu vert dans une organisation de la taille de Microsoft. Est-ce le projet annexe de quelques développeurs, ou bien une partie de la feuille de route produit ?
    Comment ont-ils convaincu la direction de consacrer du temps à ça ?

    • D’après l’explication, il leur fallait un éditeur de texte en ligne de commande fonctionnant sur une installation Windows Core Server
      Comme Windows inclut SSH Server depuis un bon moment, il peut être entièrement administré via SSH, et il fallait un éditeur sans modes utilisable aussi par les administrateurs Windows qui n’ont pas l’expérience de vi
    • Un éditeur de texte est une cible tellement naturelle pour une intégration de Copilot
    • Chaque groupe doit faire quelque chose et finit par proposer des idées. Parfois cela vient d’une orientation de la direction du type « utilisez Copilot », parfois d’une idée issue d’événements comme hackerdayz qui prend de l’ampleur
      Il arrive aussi que des profils techniques dans une organisation de recherche démarrent avec un peu de marge, ou qu’un financement soit accordé après une analyse approfondie et plusieurs semestres
      Vu le nombre de contributeurs ici, ce projet était probablement un investissement stratégique. Ce n’est pas quelque chose sorti en une nuit
  • L’edit.com original de DOS 6.22 puis 7.0, à l’époque de Win95, a été mon premier IDE. J’ai commencé avec qbasic et je m’étais habitué à une interface similaire, voire identique, puis j’ai continué à utiliser edit.com quand j’ai appris le C/C++ avec djgpp
    Mon « fichier de projet » était un e.bat contenant edit file1.cpp file2.cpp file3.cpp, et je l’utilisais parce qu’il avait une prise en charge multifichier plutôt correcte, avec un basculement facile via Alt-1,2,3. Aujourd’hui encore, je remappe les raccourcis de mes éditeurs pour changer de fichier avec Alt/Cmd-1,2,3, et j’essaie de garder mon « ensemble actif » limité aux quelques premiers fichiers
    Il n’y avait pas de coloration syntaxique et le comportement de l’indentation n’était pas très bon, donc ce n’était pas un excellent éditeur de code. C’est pour ça qu’au début de ma carrière j’utilisais une indentation de deux espaces, facile à taper à la main et qui ne ressemblait pas à des tabulations. Mais j’avais quand même une forte impression d’être au contact direct du code
    Je savais que beaucoup d’autres utilisaient des éditeurs comme qedit, mais, bizarrement, ils ne me convenaient pas, et les éditeurs de style Unix semblaient maladroits sous DOS
    Après un bref essai, il semble bien prendre en charge plusieurs tampons, mais on ne dirait pas qu’il permette de basculer entre eux avec les mêmes raccourcis clavier

    • Ce genre de chose devrait être signalé en issue. Si c’est proposé tôt, il y a une chance que ce soit pris en compte
      Et ce n’était pas simplement similaire, c’était littéralement la même chose. EDIT.COM ne faisait que lancer QBASIC avec un drapeau spécial, et on pouvait aussi lancer QBASIC directement avec ce drapeau. Comme indiqué dans https://news.ycombinator.com/item?id=44037509, je l’ai réellement fait pour m’amuser
    • Il n’y avait pas de coloration syntaxique, mais, faute d’une meilleure expression, il y avait une mise en majuscules syntaxique
      Si l’on saisissait toute une ligne en minuscules puis qu’on appuyait sur Entrée, les mots réservés étaient automatiquement convertis en majuscules. Ce n’était pas extraordinaire, mais ça aidait
    • Après l’époque de copy con, edit a vraiment été une bénédiction
  • Il y a beaucoup de choses qui me plaisent. Déjà, une liste de dépendances vide, ça suffit à me convaincre
    Ça fonctionne très bien. J’ai du mal à croire qu’ils aient construit tout un TUI, avec navigateur de fichiers et boîtes de dialogue, juste pour ça. J’aimerais l’utiliser dans mes propres projets, et je me demande à quel point ce serait simple. Si quelqu’un du projet est ici, je serais aussi curieux de savoir pourquoi ils n’ont pas utilisé Ratatui
    La qualité du code est aussi de tout premier ordre, et je n’ai qu’un mot à dire : Bravo !

    • À part quelques dépendances de développement qui facilitent les tests, il n’y a littéralement aucune dépendance
      Pour quelque chose destiné à être distribué comme outil de base utilisé par les administrateurs sur un système d’exploitation comme Windows, c’est un choix raisonnable. Pour plus de contexte sur le fait de « tout faire soi-même », voir les réponses de lhecker
      [1]: https://news.ycombinator.com/threads?id=lhecker
  • Il y a environ un mois, j’ai entendu dire que Microsoft avait sa propre distribution Linux pour que les utilisateurs de Windows s’y sentent plus à l’aise. De mémoire, c’était une configuration GNOME assez simple, donc rien de spécial
    Je trouve surprenant que Microsoft n’ait pas saisi l’occasion de créer une distribution Linux dédiée, avec PowerShell à la place de bash, Edit aux côtés d’options comme vim et nano, et .NET ainsi que Visual Studio Code inclus dans l’installation développeur
    Elle aurait aussi pu en faire l’installation WSL par défaut. Elle n’aurait sans doute pas gagné la guerre face aux distributions classiques comme Ubuntu ou Debian, mais comme il y a beaucoup d’utilisateurs Windows, elle aurait pu prendre une certaine part et devenir un choix courant
    Microsoft ne peut pas contrôler le noyau Linux, mais peut contrôler l’espace utilisateur. On peut imaginer ce qui se serait passé si elle avait créé une dynamique où ses applications étaient installées par défaut dans des distributions populaires
    Microsoft Edit aussi est utilisable sous Linux, comme PowerShell et d’autres. Si Microsoft avait bien joué ses cartes il y a une dizaine d’années, sa distribution pourrait aujourd’hui être dans le top 5, grâce aux nombreux utilisateurs Windows qui l’utiliseraient via WSL
    Les géants de la tech peuvent imposer leur empreinte dans l’espace personnel. Il ne reste plus qu’à activer Co-Pilot par défaut dans Microsoft Edit

    • Avec le temps, je pense qu’il est très probable que Microsoft migre vers Linux. Au moins pour Windows Server et Windows embarqué, puis le desktop Windows pourrait ensuite évoluer progressivement ou se scinder en options comme Windows Legacy et Windows “Linux Workstation”
      Ce pourrait être une sorte de “super” WINE posé sur le noyau Linux, avec, pour certains programmes, un Windows classique étroitement intégré dans une machine virtuelle en fallback
      Le problème, toutefois, c’est que le noyau NT est meilleur que le noyau Linux sur de nombreux aspects de conception. Par exemple, le noyau NT peut récupérer même si le pilote GPU plante complètement, alors que Linux aurait probablement beaucoup de mal dans ce genre de situation. C’est similaire pour d’autres pilotes
      Mais Windows devient de plus en plus une dette plutôt qu’un actif pour Microsoft, surtout côté serveur. Ses principales sources de revenus sont Azure et Office 365, qui affichent toujours une croissance à deux chiffres, tandis que la croissance des licences Windows stagne
      Je pense qu’on verra au moins des versions comme Windows Server basé sur Linux et Windows Workstation basé sur Linux
    • WSL existe parce que les développeurs en entreprise avaient besoin d’un moyen d’exécuter Linux
      Les équipes de support IT et de support technique ne connaissent généralement pas bien Linux et n’ont pas envie de le prendre en charge. WSL résout ce problème
      La plupart des développeurs ne veulent pas vraiment utiliser Linux lui-même. Beaucoup de développeurs ne savent même pas vraiment se servir d’un terminal et dépendent d’outils GUI
    • Si vous trouvez surprenant que Microsoft n’ait pas créé de distribution Linux dédiée, leur dernière tentative ne s’est pas si bien passée. Elle s’appelait Xenix
    • Je pense que la notoriété du nom aide. Les développeurs n’ont pas envie d’installer une distribution dont ils n’ont jamais entendu parler, mais ils ont envie d’installer Ubuntu
      Si WSL prend Ubuntu en charge, il peut tirer parti de cette notoriété
    • Vous semblez confondre Azure Linux de Microsoft, sa principale distribution Linux anciennement appelée CBL-Mariner, avec les skins d’environnement de bureau Linux ressemblant à Windows que des gens créent depuis longtemps
      Azure Linux est un système d’exploitation pris en charge par Microsoft pour les conteneurs, les VM, les serveurs, etc.
  • Ça ressemble simplement à un projet fait “parce qu’on avait envie d’essayer”. Je comprends, j’ai moi aussi beaucoup fait ce genre de choses pour comprendre ce qui se passait
    Mais la réécriture de Turbo Vision en FPC et sa compilation vers plusieurs cibles existent depuis 20 ans. Turbo Vision est probablement la meilleure bibliothèque de fenêtrage en mode texte qui existe
    La partie intéressante commence quand on peut mapper tout l’écran texte sur un tableau de ce genre :
    var
    Screen: Array[1..80,1..25] Of Byte Absolute $B800; // or something like that as i recall
    Ce que Turbo Vision a apporté, ce sont des fenêtres modales et non modales déplaçables. En gros, la structure consistait à réécrire en continu ce tableau dans une boucle, et c’était assez réactif. J’ai gagné énormément d’argent avec cette bibliothèque

    • Pour ceux que ça intéresse, il existe un port moderne de Turbo Vision en C++ qui prend aussi en charge Unicode :
      https://github.com/magiblot/tvision
    • Ce n’est pas un projet fait “parce qu’on avait envie d’essayer”. Il fallait un petit éditeur TUI inclus dans Windows et fonctionnant aussi via SSH
      https://news.ycombinator.com/item?id=44034961
    • Pour être précis, c’est array[1..25, 1..80] of Word absolute $B800:0000
      Les tableaux de TP étaient stockés en ordre ligne-major, et chaque caractère était représenté par deux octets. L’un pour le caractère lui-même, l’autre pour les attributs (couleurs premier plan/arrière-plan et clignotement)
      Donc, en mieux, ce serait array[1..25, 1..80] of packed record ch: char; attr: byte end absolute $B800:0000
      Pour les affichages texte monochromes comme Hercules (mode 7), il suffit de remplacer $B800 par $B000
    • Je suis curieux de savoir comment vous avez gagné de l’argent avec Turbo Vision. Si ça ne vous dérange pas, j’aimerais que vous racontiez
    • Chaque fois que je vois un nouveau framework TUI moderne, je ressens la même déception : “ah, ce n’est pas aussi bon que Turbo Vision
  • J’attends maintenant un EDLIN avec prise en charge d’Unicode
    Je me souviens qu’on pouvait scripter certaines opérations d’édition en injectant des frappes au clavier via l’entrée standard depuis un fichier batch. Ça donnait l’impression de remplacer une partie des fonctionnalités de sed ou awk
    Je n’ai pas essayé, mais ça doit aussi être possible avec vi. Reste à savoir si c’est une méthode complètement maudite ou non

    • Ce que vous cherchez est probablement ed. Selon les cas, à utiliser avec -s
  • Intéressant. Franchement, je ne sais pas trop pour qui ça a été conçu, mais ça a l’air sympa

    • C’est destiné aux personnes qui veulent éditer des fichiers dans Windows Terminal. L’ancienne commande edit n’étant plus prise en charge dans Windows depuis 2006, il n’y avait plus depuis lors d’éditeur fourni par Microsoft utilisable en ligne de commande
      La rapidité de cet éditeur est impressionnante. https://github.com/microsoft/edit/pull/408

      En écrivant une routine SIMD spécialisée dans la recherche de retours à la ligne, on peut monter [jusqu’à 125 Go/s]

    • C’est écrit directement dans le README :

      L’objectif est de fournir un éditeur accessible que même les utilisateurs peu familiers avec le terminal puissent utiliser facilement

    • C’est une nette amélioration par rapport à Notepad
    • Avec une prise en charge de LSP ou une recherche basée sur ripgrep, actuelle ou à venir, je pourrais volontiers remplacer vim
      Pour l’instant j’utilise Helix, mais j’aime les bons TUI
    • C’est pour les gens comme moi, qui n’aiment pas vi et cherchent dans le terminal une alternative plus sensée à nano
  • En 1993, j’aimais ouvrir des fichiers binaires avec edit et voir apparaître des formes de cœur

    • Cette expérience, la visualisation de la défragmentation DOS, et le fait d’éditer directement des fichiers de sauvegarde en hexadécimal expliquent à peu près pourquoi je suis devenu développeur aujourd’hui