Aller au contenu principal
Version: 20

Release Notes

tip

Lisez Les nouveautés de 4D 20, le billet de blog qui liste toutes les nouvelles fonctionnalités et améliorations de 4D 20.x LTS.

4D 20.5 LTS

Points forts

  • 4D 20.5 LTS est certifié sur Windows 11 24H2.
  • 4D 20.5 est certifié sur macOS Sequoia (macOS 15).
Problème connu avec Windows 11 24H2

Sous Windows 11 24H2, la génération de fichiers PDF à l'aide du pilote Microsoft Print to PDF peut échouer en raison d'un problème qui est toujours en cours d'investigation. Si vous imprimez fréquemment des PDF avec votre application 4D, nous vous recommandons actuellement de ne pas passer à Windows 11 24H2.

4D 20.4 LTS

Points forts

4D 20.3 LTS

Points forts

  • CEF mis à jour en Chromium 5993
  • SpreadJS mis à jour en version 16.2.6 (dans 4D 20.2 HF1).
  • Liste des bugs corrigés: liste de tous les bugs qui ont été corrigés dans 4D 20.3 LTS.

Changements de comportement

  • A compter de 4D 20.3, afin de permettre la vérification du mot de passe lorsque [l'annuaire des utilisateurs 4D utilise l'algorithme bcrypt](https://blog.4d.com/bcrypt-support-for-passwords/), la valeur "password" dans le paramètre connectionInfo de la commande [Open datastore](../commands-legacy/open-datastore.md) est maintenant envoyée en clair par défaut. Assurez-vous que votre méthode base "On REST authentication" peut gérer les mots de passe en clair (le troisième paramètre est alors False) et que Open datastore chiffre votre connexion en passant l'option "tls" à True dans connectionInfo. Dans certains cas spécifiques, une nouvelle option "passwordAlgorithm" peut également être utilisée pour la compatibilité (voir la commande Open datastore).

4D 20.2 LTS

Points forts

  • 4D 20.2 est certifié sur macOS Sonoma (macOS 14).
Note de sécurité

Si vos applications 4D utilisent des connexions TLS, il est recommandé de mettre à jour 4D en release 20.2 LTS build 100956 ou plus. Pour plus d'informations, reportez-vous à ce bulletin de sécurité.

Version minimale du client pour 4D Server 20.2 et suivant

Pour des raisons internes, la version des clients distants se connectant à 4D Server 20.2 et suivantes doit être au moins 4D 20.2.

Changements de comportement

  • À partir de la version 20.2, 4D 20 LTS n'est plus compatible avec Windows Server 2012 R2.
  • Attention : La valeur de départ offset des objets 4D.FileHandle avait été incorrectement fixée à 1 au lieu de 0. Une correction a été apportée dans 4D à partir des versions 20.2 (20.1 HF1) et 20 R2 et la valeur est maintenant 0.

4D 20.1 LTS

Points forts

4D 20.1 reconstruction de l'index et versions client/serveur

4D 20.1 comprend également une mise à jour de la bibliothèque ICU, ce qui a les conséquences suivantes :

  • Elle forcera une reconstruction automatique des index de type alpha, texte et objet.
  • Pour des raisons de cohérence des tris, il est nécessaire que les clients distants 4D et le serveur 4D utilisent la même version : seuls les clients distants 4D 20.1 peuvent se connecter à 4D Server 20.1 et vice versa.

4D 20 LTS

Points forts

Reconstruction des index

4D 20 inclut une mise à jour de la bibliothèque ICU (voir ci-dessous) qui forcera une reconstruction automatique des index de type alpha, texte et objet. En fonction de la taille du fichier de données, cette opération peut prendre un certain temps et nécessiter une planification.

Changements de comportement

  • Pour des raisons de conformité avec la RFC HTTP, la propriété HTTPRequestClass.response.headers renvoie désormais tous les noms d'en-têtes en minuscules. Si vous souhaitez que votre code continue à fonctionner comme auparavant, utilisez la nouvelle propriété HTTPRequestClass.response.rawHeaders .
  • Les certificats TLS sont désormais automatiquement validés par 4D lors de l'envoi de requêtes HTTP avec 4D.HTTPRequest.new(), et rejetés avec une erreur s'ils ne sont pas valides. Une nouvelle propriété option vous permet de contrôler cette validation.
  • TLS v1.0 et TLS v1.1 sont obsolètes, ils ne sont plus pris en charge par Min TLS version sur 4D Server. La version 1.3 est désormais sélectionnée par défaut et est automatiquement utilisée si les constantes _o_TLSv1_0 ou _o_TLSv1_1 sont définies avec SET DATABASE PARAMETER.
  • Par souci de cohérence, tous les boutons, cases à cocher et boutons radio sont désormais rendus avec un type "3D" au moment de l'exécution : respectivement Object type 3D button, Object type 3D checkbox, et Object type 3D radio button sont renvoyés par OBJECT Get type pour ces objets.
  • Depuis 4D 20, 4D for Mobile n'est plus installé par défaut dans l'environnement 4D. Pour bénéficier des fonctionnalités de développement de 4D for Mobile dans 4D, vous devez installer le composant 4D Mobile App dans le dossier "Components" de vos projets. Si un projet converti utilise des fonctionnalités du composant 4D Mobile App Server, veillez à l'installer également dans le dossier "Components" du projet.

4D 19 R8

Lisez Les nouveautés de 4D 19 R8, l'article de blog qui liste toutes les nouvelles fonctionnalités et améliorations dans 4D 19 R8.

Points forts

Changements de comportement

  • Pour des raisons de conformité avec la RFC HTTP, la propriété HTTPRequestClass.response.headers renvoie désormais tous les noms d'en-têtes en minuscules. Si vous souhaitez que votre code continue à fonctionner comme auparavant, utilisez la nouvelle propriété HTTPRequestClass.response.rawHeaders .
  • Lorsqu'une action standard est attribuée à un bouton bevel avec un menu contextuel lié, l'action standard n'est plus générée si une option de menu contextuel est sélectionnée.
  • Dans les zones Web utilisant blink (CEF), les dialogues affichés à partir de scripts externes sont désormais bloquants s'ils ne sont pas appelés à partir d'une fonction JS setTimeout() . Cela est dû aux mises à jour actuelles du CEF, dans lesquelles les dialogues affichés par des fonctions telles que alert() ou print() ne sont plus gérés par le système d'exploitation mais par la zone Web. Voir WA Evaluate JavaScript et WA EXECUTE JAVASCRIPT.

4D 19 R7

Lisez Les nouveautés de 4D 19 R7, l'article de blog qui liste toutes les nouvelles fonctionnalités et améliorations dans 4D 19 R7.

Points forts

Changements de comportement

  • Pour des raisons de cohérence avec les interfaces standard (par exemple, les explorateurs de fichiers des OS), les règles des list box pour la sélection des lignes/le glisser-déposer ont été modifiées. Une sélection continue ou discontinue de lignes peut être glissée en cliquant simplement sur une ligne sélectionnée et en la déplaçant ; la touche Alt n'est plus nécessaire (mais peut toujours être utilisée comme dans les versions précédentes). Lorsque la touche Maj ou Ctrl/Commande est enfoncée, un clic de souris est pris en compte lorsque le clic est vers le bas. Pour plus d'informations sur le glisser-déposer dans les list box, vous pouvez consulter ce billet de blog et télécharger ce projet HDI 4D.
  • La numérotation interne de 4D a été modifiée à partir de 4D 19 R7 :
    • les releases jusqu'à 4D 19 R6 (incluses) sont numérotées 282xxx,
    • les releases à partir de 4D 19 R7 seront numérotées 100xxx.
      Notez qu'une version spécifique de 4D est toujours identifiée de manière unique par un nom de branche et un numéro de build. Le numéro de build augmente par ordre chronologique.
  • La possibilité d'utiliser le protocole REST de Wakanda/4D Mobile pour appeler une méthode de projet a été supprimée. Vous pouvez utiliser les fonctions de classe du modèle de données ORDA ou les urls /4DACTION à la place.

4D 19 R6

  • Nouvelle classe HTTPRequest .
  • Les fonctions de collection qui peuvent appeler du code prennent désormais en charge les objets function en tant que paramètre formula : .every(), .filter(), .find(), .findIndex(), .map(), .orderByMethod(), .reduce(), .some(), .sort()
  • Les cellules de listbox prennent en charge le padding horizontal et vertical.
  • 4D View Pro : nouvelles commandes VP CREATE TABLE et VP REMOVE TABLE pour gérer les tableaux dans les feuilles.
  • Possibilité de voir les attributs liés, calculés et alias dans le data explorer web.
  • Pour nous aider à améliorer nos produits, nous collectons désormais automatiquement des données concernant les statistiques d'utilisation des applications 4D Server en cours d'exécution. Cela n'aura aucun impact sur les performances. Voir la nouvelle page expliquant pourquoi et comment 4D collecte des données.
  • Composants compilés pour Silicon : Sur les plateformes macOS Silicon (Apple ARM CPUs), les composants doivent être recompilés avec 4D 19 R6 ou plus pour être utilisés avec cette version.

4D 19 R5

  • Le fichier directory.json du projet peut désormais être intégré dans le serveur au moment du build, ce qui vous permet de déployer une application client/serveur avec une configuration de sécurité de base pour les utilisateurs et les groupes.

  • Vous pouvez désormais désélectionner les modules inutiles dans les applications que vous avez créées.

  • La bibliothèque MeCab est incluse par défaut dans toutes les applications 4D sur macOS. Dans les versions précédentes, cette bibliothèque, spécialement conçue pour gérer le texte japonais, n'était disponible que dans la version japonaise de 4D sur macOS. Si vous n'avez pas besoin de cette bibliothèque dans vos applications finales, vous pouvez maintenant la désélectionner.

  • Optimisation client/serveur : De nouvelles fonctions de classe vous permettent de gérer le cache ORDA et le contenu d'un contexte d'optimisation. Voir Préconfiguration des contextes et Cache ORDA pour plus d'informations.

    Ces fonctions sont destinées aux développeurs qui ont besoin de personnaliser les fonctions par défaut d'ORDA pour des configurations spécifiques. Dans la plupart des cas, vous n'aurez pas besoin de les utiliser.

  • Classe DataClass: La nouvelle fonction .getCount() renvoie le nombre d'entités dans une classe de données.

  • Le fichier 4DDiagnosticLog.txt n'enregistre par défaut que des informations de haut niveau (INFO level). Vous pouvez maintenant sélectionner le niveau d'information à enregistrer (par exemple les informations du niveau DEBUG) en utilisant le sélecteur Diagnostic log level de la commande SET DATABASE PARAMETER ou le fichier de configuration du journal.

  • L'appel à Use() sur un objet non partagé ou une collection non partagée ne fait rien (il ne génère plus d'erreur). Ainsi, il est désormais inutile de tester si l'objet ou la collection passé(e) à Use() est effectivement partagé(e).

  • Pour plus de clarté, deux commandes SQL ont été préfixées : GET DATA SOURCE LIST a été renommée en SQL GET DATA SOURCE LIST, Get current data source a été renommée en SQL Get current data source.

  • 4D View Pro:

  • Web areas:

    • Nouveau moteur de rendu du système Windows : Les zones Web utilisant le moteur de rendu du système Windows sont désormais basées sur Microsoft Edge WebView2. Cela a un impact sur les caractéristiques suivantes :
      • Les commandes WA Create URL history menu et WA GET URL HISTORY ne renvoient que l'URL en cours.
      • La variable Progression n'est plus mise à jour.
      • Les fonctions de glisser-déposer sont gérées par une API Windows qualifiée d'"expérimentale" par Microsoft. Par conséquent, les zones web peuvent ne pas fonctionner comme prévu lorsque cette API n'est pas installée : le glisser-déposer peut sembler autorisé même si la préférence WA enable URL drop a été réglée sur False. Cependant, l'action de dépôt est bloquée par défaut et vous pouvez contrôler les URL autorisées à l'aide de l'événement On Window Opening Denied (voir ci-dessous).
    • (Windows uniquement) Lorsque l'utilisateur sélectionne Print... à partir d'une zone Web utilisant le moteur de rendu Web intégré, une nouvelle fenêtre de paramètres d'impression s'affiche.
    • Pour refléter leur effet réel dans les zones web (augmentation ou diminution du niveau de zoom de la page), deux commandes ont été renommées : WA SET PAGE TEXT LARGER a été renommé WA ZOOM IN, WA SET PAGE TEXT SMALLER a été renommé WA ZOOM OUT.
    • Sécurité renforcée dans les zones web qui utilisent le moteur de rendu web intégré ou le moteur de rendu du système Windows (basé sur Microsoft Edge WebView2) :
      • Les règles CORS s'appliquent désormais à l'accès aux fichiers sur disque dans les espaces web. Par exemple, lors de l'ouverture d'un fichier .html avec WA OPEN URL, ce fichier .html ne peut pas contenir de liens pointant vers des fichiers situés en dehors de son dossier
      • Le dépôt de contenus externes dans les zones web est désormais toujours bloqué et déclenche l'événement On Window Opening Denied lorsque la préférence WA enable URL drop est définie sur True (lorsqu'elle est définie sur False, la préférence WA enable URL drop ne modifie que l'icône du curseur de dépôt et filtre l'événement On Window Opening Denied). Pour permettre une action de dépôt, vous devez exécuter un code supplémentaire dans la méthode objet de la zone web :
WA OPEN URL(* ; "WebArea";WA Get last filtered URL(* ; "WebArea"))

4D 19 R4

  • Les attributs Alias sont disponibles dans les classes ORDA.
  • Prise en charge des instructions break et continue dans les boucles.
  • Prise en charge de l'instruction return et de l'expression return pour renvoyer des valeurs.
  • Support des opérateurs d'assignation composés, des opérateurs en court-circuit et de l'opérateur ternaire
  • L'éditeur de code comprend désormais un outil déroulant et prend en charge les marqueurs pour une meilleure navigation dans le code.
  • Nouvelles préférences : options Inclure les tokens dans les fichiers source du projet et Afficher les presse-papiers sur la page Méthodes.
  • Nouvelle requête REST pour verrouiller/déverrouiller les entités.
  • Le chapitre 4D View Pro a été ajouté avec de nouvelles commandes : VP Copy to object, VP MOVE CELLS, VP PASTE FROM OBJECT.
  • Nouvelle classe SystemWorker.
  • La constante Alias selection a été renommée Allow alias files pour résoudre un conflit résultant de la prise en charge des attributs d'alias dans ORDA.
  • Pour une meilleure conformité avec les spécifications ORDA, la propriété de champ Mapper les valeurs NULL en valeurs vides est désormais décochée par défaut dans les bases de données créées avec 4D 19 R4 et plus. Vous pouvez également activer ce comportement par défaut dans vos bases de données converties à partir de versions antérieures en sélectionnant le paramètre de compatibilité Mapper les valeurs NULL en valeurs vides non coché par défaut lors de la création des champs. Il est désormais recommandé de travailler avec des valeurs nulles, car elles sont entièrement prises en charge par ORDA.
  • En raison de la prise en charge de l'opérateur ternaire, les deux points " :" ne sont plus autorisés dans les noms de variables, de champs, de constantes, de fonctions, de plugins et de méthodes de projet. Si votre base de données/projet contient des identifiants avec des deux-points, vous devez les remplacer avant de la convertir à la v19 R4 ou à une version plus récente, sinon des erreurs peuvent se produire dans votre code. Par exemple, si vous avez une variable nommée a:b, elle peut être interprétée comme une syntaxe d'opérateur ternaire :
$value:=($size>1000)? a:b // Ici, "a:b" est considéré comme un opérateur ternaire.

4D 19 R3

// Fonction "concate" de myClass
Function concate ($param1 : Text ; $param2 : Text)
ALERT($param1+""+$param2)
// Appel de la méthode
$class:=cs.myClass.new()
$class.concate("Hello" ;" world") // Affiche "Hello world"
$class.concate("Hello") // Affiche "Hello "
$class.concate() // Affiche " "

Pour plus d'informations, veuillez vous référer à ce billet de blog. Pour bénéficier de cette simplification globale, vous devez recompiler à la fois les méthodes appelantes et les méthodes appelées ; les composants doivent donc être recompilés.

  • Le débogage des sessions du serveur web est plus facile avec 4D Server.

  • Le nouveau composant 4D NetKit vous permet de vous connecter à des API tierces telles que Microsoft Graph.

  • 4D 19 R3 utilise un algorithme de hachage plus puissant pour les mots de passe des utilisateurs 4D : Bcrypt. Ce nouvel algorithme est automatiquement utilisé lorsqu'un mot de passe est modifié à l'aide de la boîte à outils, de la commande CHANGE PASSWORD ou de la commande Set user properties . Une fois le mot de passe modifié, l'ouverture de la base de données avec une version antérieure à 4D 19 R3 entraînera un refus d'authentification pour ce compte. Si vous utilisez les mots de passe 4D, il est fortement recommandé de sauvegarder le fichier .4db (bases de données binaires) ou le fichier directory.json (projets) avant d'effectuer la mise à jour vers 4D 19 R3 ou une version ultérieure.

  • Par souci d'exactitude, la constante 4D digest a été renommée 4D REST digest.

  • Gestion des fins de ligne et des nomenclatures pour les commandes XML : Lorsqu'ils sont ouverts dans 4D 19 R3, les projets ou bases de données créé(e)s avec les versions précédentes se comportent différemment en ce qui concerne les caractères de fin de ligne par défaut et la gestion des BOM dans les documents XML : les caractères de saut de ligne (LF) sont utilisés à la place de CR (sur macOS), et les marques d'ordre d'octet (BOM) ne sont pas incluses. Cela permet une meilleure compatibilité avec les outils VCS. Si nécessaire, vous pouvez rétablir le comportement de la v19 R2 en utilisant la commande XML SET OPTIONS . Dans les projets ou les bases de données converti(e)s à partir de versions antérieures à 19 R2, ces options sont gérées par deux paramètres de compatibilité.

  • Suppression du raccourci "Runtime Explorer" dans les projets générés : Le raccourci Cmd/Ctrl+Shift+F9 n'affiche plus la fenêtre Runtime Explorer dans les applications de projets fusionnés mono-utilisateurs. Ce raccourci peut désormais être un raccourci d'application utilisateur. Vous pouvez appeler la fenêtre Runtime Explorer à l'aide de la nouvelle commande OPEN RUNTIME EXPLORER.

  • Capacités de débogage étendues avec 4D Server : En mode interprété, 4D Server peut désormais déboguer tous les types de process, y compris les sessions web évolutives. Cette fonction est disponible lorsque le débogueur est attaché au serveur ou à un client distant.
    Attention : En mode interprété, afin de rendre le débogage étendu disponible sur la machine serveur, tous les process serveur sont maintenant automatiquement exécutés en mode coopératif lorsque le débogueur est attaché au serveur (paramètre par défaut). Cela peut avoir un impact significatif sur les performances de vos applications converties lorsqu'elles fonctionnent avec 4D Server v19 R3 et plus. Pour rétablir l'exécution préemptive sur le serveur dans ce cas, il suffit de détacher le débogueur du serveur (et de l'attacher à un client distant si nécessaire).

  • Sous Windows, les projets et les bases de données créés avec 4D 19 R3 et releases ultérieures utilisent l'API DirectWrite dans les formulaires. Cette API améliore le rendu du texte, en particulier dans les configurations à DPI élevé. DirectWrite est utilisé pour le rendu de textes statiques et de textes saisis, de cases à cocher, de boutons et de boutons radio. Notez que les listbox utilisent déjà DirectWrite. Une option de compatibilité vous permet d'activer DirectWrite dans les projets et les bases de données créés avec des versions antérieures de 4D.

  • Si vous utilisez des composants compilés avec 4D 19.0 for Silicon (Apple ARM CPUs) qui appellent la commande Count parameters , nous vous recommandons de les recompiler avec 4D 19 R3 pour assurer la compatibilité avec 4D 19 R3 et les releases ultérieures. Si un composant n'est pas compilé pour Silicon, il n'est pas nécessaire de le recompiler.

4D 19 R2

4D 19.x LTS

Voir Release notes pour 4D 19.x LTS.

Tableau des bibliothèques (4D 20 LTS)

BibliothèqueVersion couranteMise à jour dans 4DCommentaire
ICU73.220.1Cette mise à jour majeure entraîne une reconstruction automatique des index alphanumériques, texte et objets.
CEF11820.3Chromium 5993
Hunspell1.7.220Utilisé pour la vérification orthographique dans les formulaires 4D et 4D Write Pro
PDFWriter4.320FreeType dependency dans 12.2.1
SpreadJS16.2.620.2 HF1Moteur 4D View Pro
16.0.420
OpenSSL3.1.620.4 HF2
libZip1.9.220Utilisé par les classes zip, 4D Write Pro, les composants svg et serverNet
LZMA5.4.120
Zlib1.2.1320
webKitWKWebView19
PHP8.2.420
libldap2.6.420
libsasl2.1.2820