Notas del lanzamiento
4D 21
Lea Novedades en 4D 21, la entrada del blog que muestra todas las nuevas funcionalidades y mejoras en 4D 21.
Lo más destacado
- Soporte de búsquedas vectoriales de IA en la función
query()y en la API REST$filter. - Soporte de encriptación TLS para la clase 4D.TCPConnection.
- Servidor Web:
- nuevas reglas HTTP para personalizar los encabezados de respuesta HTTP,
- posibilidad para definir los gestores de peticiones HTTP utilizando una propiedad
handlersen el parámetro settings de la funciónstart()del servidor Web, - el objeto servidor Web contiene nuevas propiedades
rulesyhandlers.
- Nuevos eventos ORDA sobre los datos: validateSave, saving, afterSave, validateDrop, dropping, afterDrop.
- Nueva opción que permite utilizar certificados de Windows Certificate Store en lugar de una carpeta local de certificados en las clases
HTTPRequestyHTTPAgent. - Cliente/servidor:
- Puede mostrar las páginas Qodly en las áreas Web y compartir la sesión del cliente remoto.
- La capa red QUIC se ha mejorado para gestionar los cambios de interfaz de red de forma transparente, por ejemplo, cuando viajas co su ordenador portátil. Ver esta entrada del blog.
- Ahora puede crear componentes directamente desde el proyecto local y editar su código desde una pestaña dedicada en el Explorador 4D sin salir o reiniciar el proyecto.
- La etapa de activación del producto 4D se ha simplificado y automatizado durante la conexión.
- Componente 4D AIKit: nuevas funcionalidades para invocar automáticamente una herramienta específica y especificar un formato de respuesta.
- Lenguaje 4D:
- Nuevos comandos "trim" para eliminar los espacios iniciales y finales de una cadena:
Trim,Trim startyTrim end. - Los comandos
NumyStringhan sido actualizados para soportar conversiones en diferentes bases (radix).
- Nuevos comandos "trim" para eliminar los espacios iniciales y finales de una cadena:
- Lista de bugs corregidos: lista de todos los bugs que se han corregido en 4D 21.
Vista previa para desarrolladores
El renderizado Fluent UI para los formularios 4D está disponible en Developer Preview durante el programa de pruebas beta.
Cambios de comportamiento
4D 21 incluye una actualización de la librería ICU (ver abajo) que forzará una reconstrucción automática de los índices de tipo alfa, texto y objeto. Dependiendo del tamaño del archivo de datos, esta operación puede llevar un tiempo y puede ser necesario planificarla.
- Servicios web (SOAP): cuando las sesiones escalables están activadas, los servicios web se ejecutan ahora en procesos apropiativos en modo compilado. Asegúrese de que su código SOAP es hilo seguro.
- Servidor web: se elimina la compatibilidad con las URL obsoletas
4DSYNC/y4DCGI/. Ya no se realiza ningún tratamiento específico en estas URL. - Las sesiones usuario web ahora son devueltas por
Process activity. - El comando
HIGHLIGHT TEXTes ahora compatible en el contexto de los subformularios. - Componentes ya no integrados: a partir de 4D 21, los componentes desarrollados por 4D (4D NetKit, 4D SVG..., ver esta lista) ya no están integrados en la aplicación 4D. Cuando se actualiza un proyecto a 4D 21 o superior, se muestra un cuadro de diálogo:

- Importar: importar automáticamente componentes 4D como dependencias del proyecto
- Ignorar: no importar componentes y dejar que gestione los componentes manualmente
- Preguntar más tarde: no importar componentes y mostrar el cuadro de diálogo en la próxima apertura del proyecto.
En las bases de datos binarias, debe seleccionar los componentes necesarios en el programa de instalación de 4D o descargarlos del portal de descarga de productos 4D.
4D 20 R10
Lea las Novedades en 4D 20 R10, la entrada del blog que muestra todas las nuevas funcionalidades y mejoras en 4D 20 R10.
Lo más destacado
- Gestión de eventos ORDA en datos.
- Nueva opción
connectionTimeouten el parámetrooptionsde la función4D.TCPConnection.new(). - Nueva clase
4D.Vectorpara procesar y comparar vectores, normalmente calculados por IAs. - Nuevas opciones para generar UUIDs en versión 7 para el comando 4D automatic fields y
Generate UUID. - Nuevas clases
UDPSocketyUDPEventpara enviar datos utilizando sockets UDP. Soporte de registro detallado para eventos UDP en el archivo de registro4DTCPUDPLog.txt(renombrado de4DTCPLog.txt). - Nuevas funciones
.promote()y.demote()en la clase Session para añadir/eliminar privilegios dinámicamente en un proceso web. - Selección automática de licencias a integrar en el cuadro de diálogo del Generador de aplicaciones, modificación del comando
Create deployment license, nueva llave xml BuildApplicationAutomaticLicenseIntegration. - Seguridad mejorada para copiar/pegar fórmulas en 4D Write Pro y áreas de texto con estilo: las fórmulas copiadas desde fuera de la aplicación 4D actual se pegan ahora siempre sólo como valores.
- Componente 4D AIKit: nueva clase OpenAIEmbeddingsAPI para crear embeddings utilizando la API OpenAI.
- Ahora puede asociar una clase a un campo objeto en el editor de estructura.
- Gestión automática de dependencias recursivas.
- Lenguaje 4D:
- Por coherencia, los comandos
Create entity selectionyUSE ENTITY SELECTIONhan sido movidos del tema "4D Environment" al "Selection". - Nuevos comandos
OBJECT SET DATA SOURCE FORMULAyOBJECT Get data source formulapara asignar y leer los objetosFormulacomo fuentes de datos para los objetos de formulario. LISTBOX SET PROPERTYyLISTBOX Get propertysoportan tres nuevas constantes:lk current item,lk current item positionylk selected items expression.
- Por coherencia, los comandos
- Lista de bugs corregidos: lista de todos los bugs que se han corregido en 4D 20 R10.
Cambios de comportamiento
- En Windows, las fuentes de impresora actuales destinadas únicamente a la impresión (es decir, no se pueden utilizar en pantalla) ya no son cargadas al inicio por 4D.
- Se ha eliminado la biblioteca MeCab. Este cambio sólo afecta al tratamiento del texto en japonés.
- Cuando una variable o parámetro objeto se declara con un tipo "cs" class, asignarlo con una instancia de objeto de una clase diferente genera ahora un error de sintaxis.
.hasPrivilege()devuelve True para privilegios promovidos en el proceso web.- El comando
Timedevuelve ahora una expresión de tiempo negativa cuando el parámetro timeValue es negativo. Por ejemplo,Time("-01:02:03")devolverá -01:02:03. En versiones anteriores, se ignoraba el signo negativo.
4D 20 R9
Lea Novedades en 4D 20 R9, la entrada del blog que muestra todas las nuevas funcionalidades y mejoras en 4D 20 R9.
Lo más destacado
- La biblioteca MeCab está obsoleta y se eliminará en la próxima versión.
- Soporte de token de sesión manejado con las nuevas funciones
Session.createOTP()ySession.restore(). - El asistente de etiqueta ahora utiliza el editor de Fórmula para añadir o editar fórmulas en el área de diseño de etiquetas.
- New
TCPListenerclass to create TCP server connections; new properties in related classes:address,listenerandportinTCPConnectionclass,addressandportinTCPEventclass. - Comandos y constantes obsoletos ahora generan advertencias específicas en el Live checker y el compilador. Puede saber si un comando está obsoleto utilizando el comando
Command name. - Nuevos comandos WA SET CONTEXT y WA Get context para controlar los contenidos $4d en áreas web.
- Nuevo parámetro de base de datos
RDP optimizationpara optimizar por ejemplo el portapapeles compartidos cuando se usa el protocolo de escritorio remoto con 4D. - Los componentes interpretados pueden ahora editarse desde el proyecto local.
- Licencias ahora se actualizan automáticamente al iniciar.
- Nuevo componente AIKit 4D que permite la interacción con las API IA de terceros.
- Los siguientes retrollamadas del comando VP ahora esperan que todas las funciones personalizadas de 4D completen sus cálculos: VP IMPORT DOCUMENT, VP IMPORT FORM BLOB, VP IMPORT FROM OBJECT, y VP FLUSH COMMANDS.
- Nuevas funcionalidades 4D Netkit para administrar los calendarios Google y Microsoft 365; capacidad para usar el servidor web local para autenticación OAuth 2.0.
- Interfaz 4D Write Pro: Nueva IA integrada para interactuar con chatGTP desde sus documentos 4D Write Pro.
- Lista de bugs corregidos: lista de todos los bugs que se han corregido en 4D 20 R9.
4D 20 R8
Lea Novedades en 4D 20 R8, la entrada del blog que muestra todas las nuevas funcionalidades y mejoras en 4D 20 R8.
Lo más destacado
- Implemente sus propios HTTP request handlers utilizando la nueva clase
4D.IncomingMessage. - Las expresiones utilizadas en propiedades de objetos de formulario ahora se benefician de la comprobación de sintaxis en la Lista de propiedades y en el Compilador.
- Puede asociar una clase a un formulario para habilitar la anticipación del tipo de código y la instanciación automática de los datos del formulario cuando utilice el comando
Form. - Soporte de sesiones autónomas para simplificar la codificación local de aplicaciones cliente/servidor.
- Depurador 4D: nuevo diseño y autoguardado, funciones de modo de visualización.
- Nueva arquitectura de componentes construidos para un mejor cumplimiento de las pautas de notarización de Apple.
- Ahora puede crear fácilmente aplicaciones de evaluación en el cuadro de diálogo de Build App.
- Dependencias: use el administrador de Dependencias para buscar nuevas versiones y actualizar componentes GitHub.
- Nuevas clases
TCPConnectionyTCPEventpara gestionar conexiones cliente TCP, manejar eventos y mejorar el control sobre la transmisión de datos. Añadido4DTCPLog.txtpara un registro detallado de eventos TCP. - Nuevas opciones en VP EXPORT DOCUMENT y VP IMPORT DOCUMENT para controlar estilos, fórmulas, integridad de datos y protección por contraseña.
- 4D Write Pro:
- Los siguientes comandos permiten ahora parámetros como objetos o colecciones: WP SET ATTRIBUTES, WP Get attributes, WP RESET ATTRIBUTES, WP Table append row, WP Import document, WP EXPORT DOCUMENT, WP Add picture, y WP Insert picture.
- WP Insert formula, WP Insert document body, y WP Insert break, son ahora funciones que devuelven rangos.
- New expressions related to document attributes: This.sectionIndex, his.sectionName and This.pageIndex.
- Lenguaje 4D:
- Comandos modificados:
FORM EDIT - Las funciones
.sign()y.verify()de la clase 4D.CryptoKey soportan Blob en el parámetro message.
- Comandos modificados:
- Lista de bugs corregidos: lista de todos los bugs que se han corregido en 4D 20 R8.
Cambios de comportamiento
- Después de una modificación del archivo de registro usando
SELECT LOG FILEo la Configuración de copia de seguridad, el comandoNew log fileahora valida el cambio, sin esperar una copia de seguridad. Ya no se produce el error -4447 (copia de seguridad necesaria). - Debido a su nueva arquitectura, los componentes creados con 4D 20 R8 y superiores no pueden ser instalados en versiones anteriores 4D.
4D 20 R7
Lea Novedades en 4D 20 R7, la entrada del blog que muestra todas las nuevas funcionalidades y mejoras en 4D 20 R7.
Lo más destacado
- Las columnas de los list box y de los encabezados de tipo hora ahora soportan la opción "blankIfNull".
- Nuevas propiedades en
.getBoxInfo()y.getBoxList(). - Ahora puede añadir y eliminar componentes utilizando la interfaz del gestor de componentes.
- Nuevo modo de tipado directo en el que declara todas las variables y parámetros en su código usando las palabras clave
vary#DECLARE/Function(sólo modo soportado en nuevos proyectos). La función de verificación de sintaxis se ha mejorado en consecuencia. - Soporte de singletones de sesión y nueva propiedad de clase
.isSessionSingleton. - Nueva palabra clave función
onHttpGetpara definir funciones singleton u ORDA que pueden ser llamadas a través de peticiones HTTP REST GET. - Nueva clase
4D.OutgoingMessagepara que el servidor REST devuelva cualquier contenido web. - Qodly Studio: ahora puede adjuntar el depurador Qodly a 4D Server.
- Nuevas llaves Build Application para que las aplicaciones 4D remotas validen las signatures y/o los dominios.
- Posibilidad de crear aplicaciones autónomas sin licencias integradas.
- Lenguaje 4D:
- Nuevos comandos: Process info, Session info, SET WINDOW DOCUMENT ICON
- Comandos modificados: Process activity, Process number
- Comandos obsoletos (reemplazo):
GET LAST ERROR STACK(Last errors),GET SERIAL INFORMATION(License info),PROCESS PROPERTIES(Process info),SET SCREEN DEPTH,C_XXXcommands (var y #DECLARE/declaraciones Function). Los comandos obsoletos llevan el prefijo "*o*".
- 4D Write Pro:
- Nuevo comando: WP DELETE SECTION
- Comandos modificados: WP DELETE SUBSECTION y WP RESET ATTRIBUTES
- Lista de bugs corregidos: lista de todos los bugs que se han corregido en 4D 20 R7.
Cambios de comportamiento
- La documentación del Lenguaje 4D y del Lenguaje 4D Write Pro ya está disponible en developer.4d.com. Descubra todas las novedades y cambios relativos a estas documentaciones en esta nota de la versión.
- El comando
File(así como4D.File.new()) es más estricto a la hora de comprobar la sintaxis de path suministrada como parámetro. - La acción de permission ha sido eliminada de las acciones disponibles. El acceso a las urls
/rest/$catalogya no está controlado. Session describe privileges are now ignored.
4D 20 R6
Lea Novedades en 4D 20 R6, la entrada del blog que muestra todas las nuevas funcionalidades y mejoras en 4D 20 R6.
Lo más destacado
- Soporte de operadores de comparación en las referencias de objeto y las referencias de colección.
collection.query()ahora soporta las referencias de objeto y de colección como valores de consulta. - Cuando un componente tiene un espacio de nombres declarado, sus clases ahora se comparten automáticamente entre todos los componentes cargados en el proyecto del host por
cs.<namespace>. - Gestión de componentes: soporte de componentes almacenados en GitHub.
- Nueva función
entitySelection.clean()y API REST$cleanpara obtener una nueva entity selection basada en la entity selection original pero sin sus entidades eliminadas. - Nueva función
session.getPrivileges()y API REST$info/privilegespara inspeccionar los privilegios de sesión más fácilmente durante la depuración. - Nuevo archivo 4DCEFParameters.json para personalizar las áreas web anidadas de 4D.
- Nueva clase HTTPAgent y nueva propiedad
agentpara la clase HTTPRequest. - Nuevas funciones
enableState()ydisableState()para controlar los estados de las páginas Qodly desde el servidor. - Nueva `API$singleton para llamar las funciones singleton expuestas desde REST y nuevos privilegios asociados.
- Un nuevo botón de parámetros le ayuda a actualizar su proyecto para utilizar el modo REST "conexión forzada" (el método base
On REST Authenticationes ahora obsoleto). - Una nueva pestaña de parámetros permite definir la generación de advertencias de forma global.
- Varios comandos, principalmente del tema "entorno 4D", son ahora hilo seguro, así como algunos selectores de los comandos
SET DATABASE PARAMETER/Get database parameter. - Nuevo componente 4D-QPDF que ofrece el comando
PDF Get attachmentspara extraer los archivos adjuntos de un documento PDF/A3. - Lista de bugs corregidos: lista de todos los bugs que se han corregido en 4D 20 R6.
Cambios de comportamiento
- Soporte de encadenamiento de desplazamiento en los formularios: los subformularios principales ahora se desplazan automáticamente cuando los objetos integrados deslizables (verticalmente u [horizontalmente](. /FormObjects/properties_Appearance.md#horizontal-scroll-bar)) han llegado a sus límites y el usuario sigue desplazándose utilizando el ratón o el trackpad (desplazamiento excesivo).
- La API REST
$catalogahora devuelve singletons (si los hay).
4D 20 R5
Lea Novedades en 4D 20 R5, la entrada del blog que muestra todas las nuevas funcionalidades y mejoras en 4D 20 R5.
Lo más destacado
- Nuevo Gestor de componentes para gestionar componentes a través de un archivo
dependencies.json. - Soporte de estructuras de gestión de errores
Try...Catch...End try. - La capa de red QUIC ahora soporta broadcasting, SSO, e IPv6.
- Soporte de selecciones de entidades restringidas.
- Soporte de clases compartidas y de clases singleton. Nuevas propiedades de clase:
isShared,isSingleton,me. - Soporte para inicializar una propiedad de clase en su línea de declaración.
- Nuevo modo forzar login para peticiones REST con un soporte específico en Qodly Studio for 4D.
- Nuevo parámetro REST $format.
- El objeto
Sessionestá ahora disponible en sesiones de usuario remotas y en sesiones de procedimientos almacenados. - Lista de bugs corregidos: lista de todos los bugs que se han corregido en 4D 20 R5.
Cambios de comportamiento
- Los plug-ins 4D Internet Commands y 4D for OCI ya no se incluyen en los instaladores de 4D. Para obtener estos plug-ins, necesita conectarse al portal de descarga de productos 4D.
- Los cambios realizados en el editor de estructura en relación con el aspecto gráfico de las tablas y de los campos (color, posición, orden...) ahora se guardan en un archivo separado llamado
catalog_editor.jsonalmacenado en la carpetaSourcesdel proyecto.
4D 20 R4
Lea Novedades en 4D 20 R4, la entrada del blog que muestra todas las nuevas funcionalidades y mejoras en 4D 20 R4.
Lo más destacado
- Soporte de formato de cifrado ECDSA` para certificados TLS.
- Las conexiones TLS cliente/servidor y servidor SQL ahora se configuran dinámicamente (no se requieren archivos de certificado).
- Formato HTML directo para exportaciones de definición de estructura.
- Nuevo Code Live Checker que mejora el control del código durante los pasos de declaración, comprobación de sintaxis y compilación para evitar errores de ejecución.
- Los parámetros de métodos declarados en prototipos
#DECLAREya no son necesarios en métodos "Compiler_". - Soporte de formatos personalizados de fecha y hora
- Nueva palabra clave
Try(expression)para tratar casos de error simples. - Nuevo comando
HTTP Parse message. - Nueva opción de compatibilidad Impresión no bloqueante.
- Nuevo modo de edición en el Explorador de datos.
- Lista de bugs corregidos: lista de todos los bugs que se han corregido en 4D 20 R4.
Cambios de comportamiento
- El uso de una sintaxis heredada para declarar parámetros (por ejemplo,
C_TEXT($1)ovar $1 : Text) es obsoleto y genera advertencias en los pasos de escritura de código, verificación de sintaxis y compilación. - La coherencia de las selecciones ahora se mantiene después de que se hayan eliminado algunos registros y se hayan creado otros (ver esta entrada de blog).
- En la actualización de la librería OpenSSL, el nivel de seguridad SSL/TLS por defecto se ha cambiado de 1 a 2. Las llaves RSA, DSA y DH de 1024 bits o más y menos de 2048 bits, así como las llaves ECC de 160 bits o más y menos de 224 bits, ya no están permitidas. Por defecto, la compresión TLS ya estaba desactivada en versiones anteriores de OpenSSL. En el nivel de seguridad 2 no se puede activar.
- Asegúrese de que su método base "On REST authentication" puede manejar contraseñas en claro (el tercer parámetro es entonces False) y que
Open datastoreencripta su conexión pasando la opción "tls" a True en connectionInfo. Asegúrese de que su método base "On REST authentication" puede manejar contraseñas en claro (el tercer parámetro es entonces False) y queOpen datastoreencripta su conexión pasando la opción "tls" a True en connectionInfo. En casos concretos, también se puede utilizar una nueva opción "passwordAlgorithm" por compatibilidad (ver el comandoOpen datastore).
4D 20 R3
Lea Novedades en 4D 20 R3, la entrada del blog que muestra todas las nuevas funcionalidades y mejoras en 4D 20 R3.
Lo más destacado
- Nueva función
collection.multiSort. - Soporte del parámetro context en
Formula from string. - Soporte de la propiedad
headersen el parámetro connectionHandler de 4D.WebSocket.new. - Sello de modificación global para ayudar a implementar módulos de sincronización de datos. Nuevas funciones:
ds.getGlobalStampyds.setGlobalStamp. - La asignación de referencias de archivo a atributos imagen/blob está soportada en ORDA.
- Soporte para inicializar el valor de la variable y el tipo de datos en la línea de declaración.
- Los parámetros del archivo de registro se guardan ahora con el archivo de datos actual
- Nueva sintaxis para declarar parámetros variádicos
- 4D View Pro: soporte de la importación y de la exportación de documentos 4D View Pro al formato Blob.
- Lista de bugs corregidos: lista de todos los bugs que se han corregido en 4D 20 R3.
Cambios de comportamiento
- Algunos errores eran detectables por su método de gestión de errores solo en modo interpretado. Se ha realizado una corrección para que los siguientes errores se detecten también en modo compilado: Indice fuera de rango, Tipo incompatible y Derreferenciación de un puntero Null. Sin embargo, para tales errores en los procesadores Intel, el procedimiento se sigue interrumpiendo como antes, mientras que en los procesadores Apple Silicon el procedimiento solo se interrumpe si se llama al comando
ABORT. - 4D ya no incluye un intérprete PHP interno. Necesita configurar y ejecutar su propio intérprete PHP para utilizar comandos PHP.
4D 20 R2
Lea Novedades en 4D 20 R2, la entrada del blog que muestra todas las nuevas funcionalidades y mejoras en 4D 20 R2.
Si sus aplicaciones 4D utilizan conexiones TLS, se recomienda actualizar a 4D 20 R2 HF1 build 100440 o superior. Para más información, consulte este Boletín de seguridad.
Lo más destacado
- Nueva clase WebSocket para crear y gestionar conexiones WebSocket cliente desde 4D.
- Nueva capa de red QUIC configuración de interfaz.
- 4D View Pro: soporte del formato de archivo .sjs para la importación y la exportación de documentos.
- Interfaz Write Pro 4D: nuevo Asistente de tablas.
- Lista de bugs corregidos: lista de todos los bugs que se han corregido en 4D 20 R2.
Cambios de comportamiento
- Atención: el valor inicial
offsetde los objetos 4D.FileHandle estaba incorrectamente definido en 1 en lugar de 0. Se ha hecho una corrección en 4D a partir de las versiones 20.1 HF1 y 20 R2 y el valor ahora es 0.
4D 20.x LTS
Ver Notas de lanzamiento para LTS 4D 20.x.
Tabla de la librería
| Librería | Versión actual | Actualizado en 4D | Comentario |
|---|---|---|---|
| BoringSSL | fa47b1d | 21 | Utilizado para QUIC |
| CEF | 7258 | 21 | Chromium 139 |
| Hunspell | 1.7.2 | 20 | Utilizado para la corrección ortográfica en formularios 4D y 4D Write Pro |
| ICU | 77.1 | 21 | Esta actualización fuerza una reconstrucción automática de los índices alfanuméricos, textos y objetos. |
| libldap | 2.6.10 | 21 | |
| libsasl | 2.1.28 | 20 | |
| Liblsquic | 4.2.0 | 20 R10 | Utilizado para QUIC |
| Libuv | 1.51.0 | 21 | Utilizado para QUIC |
| libZip | 1.11.4 | 21 | Utilizado por los componentes zip class, 4D Write Pro, svg y serverNet |
| LZMA | 5.8.1 | 21 | |
| ngtcp2 | 1.16.0 | 21 | Utilizado para QUIC |
| OpenSSL | 3.5.2 | 21 | |
| PDFWriter | 4.7.0 | 21 | Utilizado para WP Export document y WP Export variable |
| PHP | 8.2.4 | 20 | |
| SpreadJS | 17.1.0 | 20 R7 | Consulte esta entrada de blog para obtener una visión general de las nuevas funciones |
| webKit | WKWebView | 19 | |
| Xerces | 3.3.0 | 21 | Utilizado para comandos XML |
| Zlib | 1.3.1 | 21 |