Aller au contenu principal
Version: 20 R5 BETA

Release Notes

4D 20 R5

Read What’s new in 4D 20 R5, the blog post that lists all new features and enhancements in 4D 20 R5.

Points forts

Changements de comportement

  • The plug-ins 4D Internet Commands and 4D for OCI are no longer included in 4D installers. To get these plug-ins, you need to connect to the 4D Product Download portal.
  • Changes made in the Structure editor regarding graphical appearance of tables and fields (color, position, order...) are now saved in a separate file named catalog_editor.json stored in the project's Sources folder.

4D 20 R4

Read What’s new in 4D 20 R4, the blog post that lists all new features and enhancements in 4D 20 R4.

Points forts

Changements de comportement

  • L'utilisation d'une ancienne syntaxe pour la déclaration des paramètres (par exemple C_TEXT($1) ou var $1 : Text) est maintenant dépréciée et génère des warnings lors du typage du code, de la vérification syntaxique et de la compilation.
  • Selections are now kept consistent after some records have been deleted and others records created (see this blog post.
  • Dans la mise à jour de la bibliothèque OpenSSL, le niveau de sécurité SSL/TLS par défaut a été modifié de 1 à 2. Les clés RSA, DSA et DH de 1024 bits et plus et de moins de 2048 bits ainsi que les clés ECC de 160 bits et plus et de moins de 224 bits ne sont plus autorisées. Par défaut, la compression TLS était déjà désactivée dans les versions précédentes d'OpenSSL. Au niveau de sécurité 2, il ne peut pas être activé.

4D 20 R3

Read What’s new in 4D 20 R3, the blog post that lists all new features and enhancements in 4D 20 R3.

Points forts

Changements de comportement

  • Certaines erreurs ne pouvaient être interceptées par votre méthode de gestion des erreurs qu'en mode interprété. Une correction a été apportée, de sorte que les erreurs suivantes seront désormais également détectées en mode compilé : Indice hors de l'intervalle, Type incompatible, et Déréférencement d'un pointeur Null. Cependant, pour de telles erreurs sur les processeurs Intel, la procédure est toujours interrompue comme auparavant, alors que sur les processeurs Apple Silicon, la procédure n'est interrompue que si vous appelez la commande ABORT.
  • 4D n'inclut plus d'interpréteur PHP interne. Vous devez configurer et exécuter votre propre interpréteur PHP pour utiliser les commandes PHP.

4D 20 R2

Read What’s new in 4D 20 R2, the blog post that lists all new features and enhancements in 4D 20 R2.

Note de sécurité

Si vos applications 4D utilisent des connexions TLS, il est recommandé de mettre à jour 4D en release 20 R2 HF1 build 100440 ou plus. Pour plus d'informations, consultez ce Bulletin de sécurité.

Points forts

Changements de comportement

  • Attention : La valeur de départ offset des objets 4D.FileHandle était incorrectement fixée à 1 au lieu de 0. Une correction a été apportée dans 4D à partir des versions 20.1 HF1 et 20 R2 et la valeur est maintenant 0.

4D 20.x

Read What’s new in 4D 20, the blog post that lists all new features and enhancements in 4D 20.

Minimal client version for 4D Server 20.2 and later

For internal reasons, the version of remote clients connecting to 4D Server 20.2 and later must be at least 4D 20.2.

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, consultez ce Bulletin de sécurité.

Avertissement concernant la reconstruction de l'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.

4D 20.1 index rebuild and client/server versions

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 au serveur 4D 20.1 et vice versa.

Points forts

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 était incorrectement fixée à 1 au lieu de 0. Une correction a été apportée dans 4D à partir des versions 20.1 HF1 et 20 R2 et la valeur est maintenant 0.
  • Pour la conformité RFC de HTTP, la propriété HTTPRequestClass.response.headers retourne maintenant tous les noms d'en-têtes en minuscules. Si vous voulez que votre code continue à fonctionner comme avant, 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 sont invalides. 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 supportés comme Min TLS version sur 4D Server. La version 1.3 est maintenant 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" à l'exécution : respectivement Object type 3D button, Object type 3D checkbox, et Object type 3D radio button sont retournés par OBJECT Get type pour ces objets.
  • As of 4D 20, 4D for Mobile is no longer installed by default in the 4D environment. 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

Read What’s new in 4D 19 R8, the blog post that lists all new features and enhancements in 4D 19 R8.

Points forts

Changements de comportement

  • Pour la conformité RFC de HTTP, la propriété HTTPRequestClass.response.headers retourne maintenant tous les noms d'en-têtes en minuscules. Si vous voulez que votre code continue à fonctionner comme avant, utilisez la nouvelle propriété HTTPRequestClass.response.rawHeaders.
  • Lorsqu'une action standard est assignée à un bouton bevel avec 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 de 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] (https://doc.4d.com/4dv19/help/command/en/page1043.html).

4D 19 R7

Read What’s new in 4D 19 R7, the blog post that lists all new features and enhancements in 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 en bas. Pour plus d'informations sur le glisser-déposer dans les list box, vous pouvez consulter cet article 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,
    • releases from 4D 19 R7 will be numbered 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 de data model ORDA ou les urls /4DACTION à la place.

4D 19 R6

  • Nouvelle classe HTTPRequest.
  • Les fonctions de collection qui peuvent appeler du code supportent maintenant les objets function comme paramètre formule : .every(), .filter(), .find(), .findIndex(), .map(), .orderByMethod(), .reduce(), .some(), .sort()
  • Les cellules de listbox prennent en charge le padding horizontal et vertical.
  • 4D View Pro: new VP CREATE TABLE and VP REMOVE TABLE commands to handle tables in sheets.
  • Possibilité de voir les attributs liés, calculés et alias dans le Web Data Explorer.
  • 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é d'utilisateurs et groupes de base.
  • Vous pouvez maintenant désélectionner les modules inutiles dans vos applications construites.
  • 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.
  • Client/Server optimization: New class functions allow you to handle the ORDA cache and the contents of an optimization context. Voir Preconfiguring contexts et ORDA Cache 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() retourne le nombre d'entités dans une dataclass.
  • Le fichier 4DDiagnosticLog.txt n'enregistre par défaut que des informations de haut niveau (niveau INFO). Vous pouvez maintenant sélectionner le niveau d'information à enregistrer (par exemple les informations de 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 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 URLs autorisées en utilisant l'événement On Window Opening Denied (voir ci-dessous).
    • (Windows uniquement) Lorsque l'utilisateur sélectionne Imprimer... à 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ée WA ZOOM IN, WA SET PAGE TEXT SMALLER a été renommée 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 and continue dans les boucles.
  • Prise en charge de l'instruction return et de l'expression return expression pour renvoyer des valeurs.
  • Support des opérateurs d'assignation composés, opérateurs de court-circuits, et opérateur ternaire
  • L'Éditeur de code comprend désormais un outil de liste déroulante et supporte les marqueurs pour une meilleure navigation dans le code.
  • Nouvelles préférences : Option Inclure les jetons 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.
  • 4D View Pro chapter added with new commands: 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.
  • For better compliance with ORDA specifications, the Map NULL values to blank values field property is now unchecked by default in databases created with 4D 19 R4 and higher. 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. If your database/project contains identifiers with colons, you must replace them before converting it to 4D 19 R4 or higher, otherwise errors may occur in your 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 consulter cet article 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 sur 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. If necessary, you can restore the 4D 19 R2 behavior using the XML SET OPTIONS command. In projects or databases converted from releases prior to 19 R2, these options are managed by two compatibility settings.

  • Suppression du raccourci "Runtime Explorer" dans les projets construits : le raccourci Cmd/Ctrl+Shift+F9 n'affiche plus la fenêtre du 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 en utilisant 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 connecté 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 du serveur sont désormais automatiquement exécutés en mode coopératif lorsque le débogueur est attaché au serveur (paramètre par défaut). This can have a significant impact on the performance of your converted applications when they run with 4D Server 19 R3 and higher. 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).

  • On Windows, 4D projects and databases created with 4D 19 R3 and higher use the DirectWrite API in forms. 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.

  • If you use components compiled with 4D 19.0 for Silicon (Apple ARM CPUs) which call the Count parameters command, we recommend to recompile them with 4D 19 R3 to provide compatibility with 4D 19 R3 and future releases. Si un composant n'est pas compilé pour Silicon, il n'est pas nécessaire de le recompiler.

4D 19 R2

Versions précédentes

Cliquez pour voir les notes de mise à jour des versions précédentes

4D 19

Note de sécurité

Si vos applications 4D utilisent des connexions TLS, il est recommandé de mettre à jour 4D en release 19.7 LTS build 288986 ou plus. Pour plus d'informations, consultez ce Bulletin de sécurité.

4D 18 R6

Tableau des bibliothèques

BibliothèqueVersion couranteMise à jour dans 4DCommentaire
ICU73.220.1Cette mise à jour majeure entraîne une reconstruction automatique des index alphanumériques, texte et objets.
CEF12120 R5Chromium 6167
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 R4Moteur 4D View Pro
OpenSSL3.2.020 R4Le niveau de sécurité TLS/SSL par défaut a été relevé. Voir Changements de comportement pour la version 20 R4
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 R3
libsasl2.1.2820