Microsoft annonce la prise en charge des secondes intercalaires
Par Windows 10 Redstone 5 et Windows Server 2019

Le , par Patrick Ruiz, Chroniqueur Actualités
L’information est tirée d’un billet de blog du géant technologique paru il y a peu. Microsoft annonce que la mouture à venir de Windows 10 (la Redstone 5) et Windows Server 2019 vont prendre les secondes intercalaires en charge.

De façon brossée, une seconde intercalaire est un ajustement (ajout ou soustraction) d’une seconde effectué sur l’échelle de temps universel coordonné (UTC) pour s’assurer que le temps universel lié à la rotation de la Terre reste calé sur l’heure solaire. « Avec la diminution de la vitesse de rotation de la Terre, l’heure UTC diverge de celle du soleil. Une fois qu’il y a un décalage d’au plus 0.9 s, une seconde intercalaire est insérée pour assurer la synchronisation », explique Microsoft. La prise en compte de ce phénomène a débuté en 1972 et, d’après les calculs, l’ajout d’une seconde intercalaire est nécessaire tous les 18 mois. C’est ce que les prochaines moutures de Windows 10 et Windows Server se chargeront d’effectuer pour coller avec des exigences formulées par des organismes de régulation internationaux.


La firme de Redmond a publié un visuel de la manière dont cette soixante et unième (61e) seconde sera insérée. Notez le passage non pas de 4:59:59 à 5:00:00, mais de 4:59:59 à 4:59:60, ce, lorsqu’un top départ est donné via Windows Update ou au travers de NTP . Microsoft a choisi de délaisser une autre implémentation qui consiste en fragmenter la seconde additionnelle et à l’insérer à l’heure standard en étalant le processus sur des jours.


Les changements sont de nature à modifier les habitudes des développeurs. « Certains frameworks sont ne prennent pas les secondes intercalaires en charge. Par exemple, le framework .NET fait usage de sa logique interne pour déterminer l’heure. Cette dernière ne prend pas les secondes intercalaires en compte. Donc après l’introduction d’une de ces dernières, la sortie de la fonction System.DateTime.Now.ToString() sera en avance d’une seconde de celle de l’heure système. (Nous travaillons à corriger ce détail avec l’équipe .NET) », prévient le géant technologique.

La firme de Redmond également publié deux ossatures de code qui permettent de bien appréhender le processus de prise en charge des secondes intercalaires au sein d’une application UWP .

Version qui requiert le dernier kit de développement Windows 10 :

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include "Windows.h"

#include <iostream>

int wmain() {
	std::cout << "Testing Leap Second update actually shows '60' in the seconds...\n";

	DWORD ErrorCode;
	BOOL Success;
	ULONG Flags;
	PROCESS_LEAP_SECOND_INFO LeapSecondInfo;

	//
	// Opt in to Leap Seconds
	//

	ZeroMemory(&LeapSecondInfo, sizeof(LeapSecondInfo));
	Flags |= PROCESS_LEAP_SECOND_INFO_FLAG_ENABLE_SIXTY_SECOND;
	LeapSecondInfo.Flags = Flags;



	Success = SetProcessInformation(GetCurrentProcess(),
		ProcessLeapSecondInfo,
		&LeapSecondInfo,
		sizeof(LeapSecondInfo));


	if (!Success) {
		ErrorCode = GetLastError();
		fprintf(stderr, "Set Leap Second Info failed: %d\n", ErrorCode);
	}

	// print current time 60 times with sleep interval of 950ms
	SYSTEMTIME lt;
	for (int i = 0; i < 60; i++) {
		GetLocalTime(&lt);
		printf("the local time is %d/%d/%dT%02d:%02d:%02d\n", lt.wYear, lt.wMonth, lt.wDay, lt.wHour, lt.wMinute, lt.wSecond);
		Sleep(950);
	}
}
Version qui ne s’appuie pas sur le SDK Windows 10 :

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include "Windows.h"

#include <iostream>

typedef struct _PROCESS_LEAP_SECOND_INFO {
              ULONG Flags;
              ULONG Reserved;
} PROCESS_LEAP_SECOND_INFO, *PPROCESS_LEAP_SECOND_INFO;

#define PROCESS_LEAP_SECOND_INFO_FLAG_ENABLE_SIXTY_SECOND   0x1
#define ProcessLeapSecondInfo 8


int wmain() {
	std::cout << "Testing Leap Second update actually shows '60' in the seconds...\n";

	DWORD ErrorCode;
	BOOL Success;
	ULONG Flags;
	PROCESS_LEAP_SECOND_INFO LeapSecondInfo;

	//
	// Opt in to Leap Seconds
	//

	ZeroMemory(&LeapSecondInfo, sizeof(LeapSecondInfo));
	Flags |= PROCESS_LEAP_SECOND_INFO_FLAG_ENABLE_SIXTY_SECOND;
	LeapSecondInfo.Flags = Flags;

      Success = GetProcessInformation(
GetCurrentProcess(),                           (PROCESS_INFORMATION_CLASS) ProcessLeapSecondInfo,
            &LeapSecondInfo,
            sizeof(LeapSecondInfo));


	if (!Success) {
		ErrorCode = GetLastError();
		fprintf(stderr, "Set Leap Second Info failed: %d\n", ErrorCode);
	}

	// print current time 60 times with sleep interval of 950ms
	SYSTEMTIME lt;
	for (int i = 0; i < 60; i++) {
		GetLocalTime(&lt);
		printf("the local time is %d/%d/%dT%02d:%02d:%02d\n", lt.wYear, lt.wMonth, lt.wDay, lt.wHour, lt.wMinute, lt.wSecond);
		Sleep(950);
	}
}
La prise en charge des secondes intercalaires s’inscrit dans une mouvance plus vaste d’amélioration des outils liés à la gestion du temps au sein des OS de Microsoft. Sous la Redstone 5 et Windows Server 2019, NTP cède sa place à PTP – Precision Timing Protocol. En sus, ces versions de systèmes d’exploitation arrivent avec une fonctionnalité logicielle de réduction des retards de traitement des paquets réseaux.

Source : Billet Microsoft

Et vous ?

Comment accueillez-vous la prise en charge des secondes intercalaires au sein de ces systèmes d’exploitation de Microsoft ?

Quels avantages (inconvénients) introduit-t-elle dans vos tâches de développement ?

Voir aussi :

Windows 10 Redstone 5 est disponible pour les « Skip Ahead Insiders », cette nouvelle version embarque plusieurs améliorations et correctifs

Windows 10 Redstone 5 : la build 17643 est disponible et fait du copier-coller un atout supplémentaire du sous-système Linux

Windows 10 Redstone 5 : la build 17661 fait de Screen Sketch une application indépendante pour une meilleure expérience de capture d'écran

Windows 10 Redstone 5 : la Buid 17711 apporte des améliorations à Microsoft Edge et permet désormais d'activer le HDR

Windows 10 Redstone 5 : la build 17704 apporte le blocage de la lecture auto dans Edge et supprime la technologie de gestion de fenêtre Sets


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse Signaler un problème

Avatar de chrtophe chrtophe - Responsable Systèmes https://www.developpez.com
le 19/07/2018 à 20:06
Rien de mieux pour faire planter des logiciels ne gérant pas le format 00:00:60 (qui gère ça ?). Il aurait été plus malin d'ajouter ou retirer une seconde de façon à rester dans le cadre ou le champ des secondes ne dépasse jamais :59 (exemple passage de :57 à :58) quitte à faire durer 1 seconde 2 seconde au niveau de l'affichage.
Avatar de jpouly jpouly - Membre actif https://www.developpez.com
le 20/07/2018 à 12:35
Je sens que ça va m... de tous les cotés. Et qu'il va y avoir des effets de bords par porte-conteneurs entier.

Je me demande comment les superviseurs industriels, basées sur un OS M$, vont prendre en charge cette fonctionnalité .
Surtout s'ils communiquent avec des automates qui n'ont pas cette fonctionnalité ou qui ne se synchronisent pas sur le NTP de M$.

Et je ne parle pas de la précision des quartz de tout ce petit monde .
Avatar de chrtophe chrtophe - Responsable Systèmes https://www.developpez.com
le 20/07/2018 à 13:13
Après le bug de l'an 2000, le bug de la seconde intercalaire.
Avatar de Aizen64 Aizen64 - Membre averti https://www.developpez.com
le 21/07/2018 à 13:30
Pourquoi choisir 950ms de repos et pas un autre interval ? 970 ou 980.

 
Contacter le responsable de la rubrique Accueil