Fin du service Typepad et informations sur le transfert de domaine
(ttimo.typepad.com)- Avec l’arrêt de Typepad, les propriétaires de blogs existants doivent décider eux-mêmes du transfert de leur domaine et de leur contenu, alors que la connexion et l’accès aux fichiers sont bloqués
- La date de fin du service est fixée au 30 septembre 2025, et la connexion aux comptes ne sera plus proposée après cette date
- Pour les clients ayant payé des frais annuels couvrant une période après la fermeture, un remboursement au prorata a été émis ; si le remboursement n’apparaît pas, il faut vérifier auprès de sa banque
- Toutes les données de blog seront supprimées et, en dehors des demandes liées aux données personnelles, aucune prolongation d’accès ni solution de récupération ne sera proposée
- Les domaines enregistrés via Typepad Domains seront transférés le 27 octobre 2025 vers Reseller Club, et il faudra supprimer l’ancien CNAME Typepad pour les relier à une nouvelle plateforme
Traitement des comptes et des données après la fin du service
- La date de fin du service de Typepad est le 30 septembre 2025
- Après cette date, les utilisateurs ne pourront plus se connecter à leur compte
- Un remboursement au prorata sera émis pour les clients ayant payé des frais de service annuels couvrant une période après la date de fermeture
- Si le remboursement n’apparaît pas sur le relevé, il faut contacter sa banque
- Si aucune carte de crédit valide n’était enregistrée, il est possible que le remboursement n’ait pas été traité
- Après la fermeture, l’accès aux fichiers sera interrompu et aucune prolongation distincte ne sera proposée
- Toutes les données de blog seront supprimées, et pour les questions liées aux données personnelles, il faut écrire à privacy@newfold.com
Transfert de Typepad Domains et connexion à un nouveau blog
- Typepad Domains est un revendeur de LogicBoxes, et tous les domaines enregistrés via Typepad Domains seront transférés le 27 octobre 2025 vers Reseller Club, un autre partenaire LogicBoxes
- Les utilisateurs concernés recevront un e-mail d’information complémentaire de la part de Reseller Club
- Il n’est pas nécessaire de transférer son domaine ailleurs depuis LogicBoxes, et il pourra continuer à être géré ensuite via Reseller Club
- Pour connecter le domaine à un nouveau service ou à une nouvelle plateforme de blog, il faut supprimer l’enregistrement CNAME pointant vers Typepad et le reconfigurer selon les exigences du nouveau service
- Avant le 27 octobre 2025, la configuration se fait en se connectant à Typepad Domains
- Après le 27 octobre 2025, la configuration se fait en se connectant à Reseller Club
- Si vous utilisez un autre registrar que Typepad Domains, il faut également supprimer chez ce registrar l’enregistrement CNAME pointant vers Typepad, puis le configurer pour qu’il pointe vers le nouveau service ou la nouvelle plateforme de blog
- Les lecteurs à la recherche d’un blog précis devront contacter directement le blogueur pour savoir où le blog a été republié
- Pour toute question supplémentaire, il est possible de contacter Network Solutions par téléphone ou via le chat
1 commentaires
Avis Hacker News
Il y a un patch en cours d’examen : https://inbox.sourceware.org/libc-alpha/cover.1722193092.git...
Cela a commencé à cause de https://issues.redhat.com/browse/RHEL-42410 et il s’agissait d’un problème de stabilité de la pile graphique qui, pour une raison ou une autre, était moins visible sur RHEL 9
J’espère au moins que le premier patch, c’est-à-dire la correction de la sûreté des threads de getenv, entrera dans glibc 2.41, et un backport semblerait aussi assez sûr
setenvest relativement plus facile à traiter, car glibc ne libère déjà jamais les chaînes des variables d’environnement, et le point délicat estunsetenven concurrenceSans approche par snapshot,
getenvpeut renvoyer un pointeur nul au lieu de renvoyer la valeur réellement définie d’une variable d’environnementJe ne veux pas mettre de verrou dans
getenv, cargetenvutilisé sanssetenvest considéré comme async-signal-safe depuis bien trop longtemps, et ajouter un verrou risquerait de casser des applicationsLa correction du traitement de
environest plus controversée parce qu’il est compliqué d’éviter les fuites mémoire à cause devfork+execve, mais ces corrections supplémentaires sont moins importantes pour la stabilité de la pile graphiqueSi la longueur devient trop grande, le thread qui exécute
setenvpourrait construire une nouvelle table de hachage, puis remplacer atomiquement l’ancien pointeur par le nouveauIl suffirait d’utiliser un drapeau atomique indiquant si un réhachage est en cours, afin d’éviter que deux threads ne réhachent en même temps
Si, entre-temps, un autre thread appelle
setenv, les variables ajoutées seraient attachées à la liste et traitées lors d’un appel ultérieur àsetenvSi suffisamment de threads appellent rapidement
setenv, la liste pourrait grossir indéfiniment, mais commesetenvn’est pas appelé souvent, la simplicité du remplacement atomique de pointeur semble valoir le coupUne mine antipersonnel vieille de plusieurs décennies… c’est frustrant
Je suis vraiment reconnaissant que Steam fonctionne aussi bien sur Linux aujourd’hui
Je ne considère pas comme acquise toute l’énorme quantité de travail en coulisses qu’il a fallu pour rendre ça possible
J’aimerais construire une tour gaming sur cette base
Je pourrais me contenter de Bazzite, mais honnêtement, je préférerais SteamOS
J’ai l’impression que la bonne pratique, c’est de lire toutes les variables d’environnement au démarrage et de ne jamais utiliser
setenvLe seul endroit où
setenva vraiment du sens, c’est au lancement d’un nouveau processus, et même dans ce cas il semblerait plus juste de créer un nouveauenvironen copiant leenvironcourant puis d’y mettre à jour les nouvelles valeursUtiliser
getenv/setenvcomme mécanisme de messagerie inter-processus entraîne toutes sortes de problèmes, notamment la non-sûreté historique vis-à-vis des threads sur Linux, ainsi que des risques cachés de fuite mémoireL’article semble ignorer ces aspects quand il dit que c’est thread-safe sur macOS
getenv()Java fonctionne comme vous l’avez décrit, mais dans du code JNI qui utilise une bibliothèque voulant appeler
getenv(), le problème subsisteLa vraie question est celle-ci : existe-t-il vraiment un cas où l’on appelle
setenvdans un thread et où l’on veut que ce changement s’applique aussi à d’autres threads déjà existants ?Cela dit, GLIBC documente assez bien les fonctions dangereuses, donc il est possible d’ajouter soi-même un verrouillage ou une copie
Il y a sûrement des programmes qui s’attendent à ce que
setenvmodifie le tableauenviron, et pas seulement à ce qu’il soit traité comme un pointeur opaque passé àposix_spawn/execvePour avoir un
setenvpar thread, il faudrait aussi une variableenvironpar threadMais cela s’accorde mal avec POSIX, car
environn’est pas déclaré dans les en-têtes et les programmeurs sont censés écrire eux-mêmesextern char **environ;dans le code sourceCette déclaration n’est pas compatible avec un
environthread-localgetenv/setenv, on ne peut pas ajouter soi-même de verrouillage ou de copieL’article en parle aussi à propos des problèmes persistants du client Steam
Dans mon cas, les threads de travail dorment tous dans la file d’exécution, donc ce n’est pas un problème, mais techniquement c’est bien une situation où l’on veut définir une variable d’environnement dans un thread puis la lire dans un autre thread déjà en cours d’exécution
putenv()/setenv()/unsetenv()/getenv()thread-safegetenv/setenvbricolée et risquée ne devrait pas être nécessaireJe ne vois pas quelle bibliothèque de threading n’aurait ni mémoire partagée ni passage de messages
J’imagine que cela se produit surtout dans des situations où le processus principal modifie une variable comme
HTTPS_PROXY, puis dans d’autres threads on exécute une bibliothèque qui vérifie cette variable avant d’ouvrir une socket TCPÀ titre indicatif, la décision de laisser fuir la mémoire sur Mac remonte en fait à environ 26 ans, jusqu’à FreeBSD : https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=5604
OSX en a hérité, et il ne serait pas surprenant que le
setenvde Windows soit aussi de lignée BSD pour des raisons de licenceOn savait déjà il y a 26 ans que cette API était cassée, mais on ne l’a pas corrigée par inertie, pour éviter de casser davantage des programmes bogués
Il devrait être très rare d’avoir besoin de modifier les variables d’environnement de son propre processus
Pour les processus fils, il suffit d’utiliser une fonction
execappropriée, et dans les autres cas il vaudrait mieux appeler une API explicite plutôt que de modifier une variable globale en espérant qu’un code éloigné la relise et la traite correctementC’est vrai avec l’API actuelle, mais cela devient possible avec un tout petit changement d’API
Il suffirait que
getenv()fasse unstrdup()de la valeur avant de la renvoyer, puis que le programmeur libère la mémoire après usageSi l’on considère que la valeur peut changer, le programmeur doit rappeler
getenv(), mais cela semble un compromis raisonnableCe changement provoquerait des fuites mémoire dans les anciens programmes chaque fois qu’ils n’appellent pas
free()aprèsgetenv(), mais comme la version actuelle fuit déjà la mémoire, cela ne semble pas être un problème décisifEn prime, la nouvelle version pourrait devenir thread-safe en entourant
strdup()d’un mutex et en traitantsetenv()de façon similaireUn collègue l’aurait qualifiée de « pire API Linux », mais
setenvest-elle vraiment une API Linux ?Elle n’a pas été définie par Linux, elle fait partie de POSIX, et elle n’est pas implémentée par le noyau Linux : tout cela relève entièrement de l’espace utilisateur
L’auteur original et son collègue semblent travailler chez Valve pour le support de Steam, c’est donc ce contexte
Si ce collègue la qualifie de pire, ce n’est pas à cause de la spécification POSIX
POSIX dit seulement que cette fonction n’a pas besoin d’être thread-safe, pas qu’il est interdit de la rendre thread-safe
Le problème, c’est l’implémentation concrète de glibc, la bibliothèque C utilisée sur toutes les distributions Linux prises en charge par Valve pour Steam, et comme ces distributions sont toutes regroupées sous l’étiquette « Linux », cela explique l’expression
Si elle le voulait, la libc pourrait la rendre thread-safe
Des langages comme Go implémentent cette fonctionnalité en interne et n’ont donc pas cette contrainte
La documentation POSIX elle-même tient compte de cette limite : « The setenv() function need not be thread-safe. »
Ayant grandi sous Linux avec nethack et les échecs, l’existence même de Steam me surprend
Mais le client Steam est vraiment étrange
Pendant des mois, tout fonctionne bien, puis soudain un jeu ne se lance plus ou quelque chose casse, et il faut refaire des manipulations absurdes comme supprimer tous les fichiers ou réinstaller pour que ça remarche
Cela n’a aucun sens, et on a l’impression que le client Steam se dégrade
C’est un assemblage hétéroclite de principes de conception différents, et les nouvelles fonctionnalités sont simplement ajoutées avec une UI et une UX complètement différentes
La majeure partie du client est une webview, lente et boguée, qui utilise en interne une version de Chromium très ancienne et peu sûre
Le lanceur est encore un programme 32 bits
Ce qui est triste, c’est que les autres lanceurs sont encore pires
Au contraire, depuis que je n’utilise plus que Linux, je les rencontre moins souvent
C’est un contenu vraiment intéressant, qui donne un aperçu à la fois du client Steam et de la programmation Linux
Je comprends qu’il soit difficile d’écrire des notes de version détaillées à chaque publication, mais quand on connaît ce type de travail, l’expression « plusieurs corrections de crashs courants » ressemble à un énorme euphémisme
Le passage disant que « si glibc peut résoudre ce problème, il faudra peut-être un compromis fonctionnel, et peut-être un mécanisme opt-in qui s’écarte légèrement d’une spécification POSIX “impossible”. Si quelqu’un peut proposer une solution raisonnable, on pourra l’envisager sur le long terme » donne vraiment envie que cela se fasse
Je me demande vraiment pourquoi ils utilisent autant setenv(3)
Le principal usage qui me vient à l’esprit est de définir des variables d’environnement avant d’appeler quelque chose comme
exec(3), mais ici cela ne semble pas être le casL’article dit qu’ils utilisent
exevpeau moment de lancer des processus fils, donc je me demande à quoi il reste encoresetenv(3)nm -D, et même en regardant rapidement mon~/.cargo/bin/*, il y a beaucoup trop de programmes qui utilisent ces fonctionsIls sont peut-être monothreadés, mais qui peut garantir qu’ils le resteront toujours
En y réfléchissant, on pourrait aussi détecter
pthread_createdans la liste des symbolesCe serait intéressant d’avoir aussi une méthode d’analyse statique de binaires capable de remonter jusqu’à l’arbre d’appels depuis ces symboles
En revanche, je ne vois pas comment vérifier l’usage de
**environ. Le compilateur peut transformer cela en à peu près n’importe quoi.