Was ist neu in 4D 21 R5

KI-Integration

Native Vektorindizierung und schnellere Vektorabfragen

4D 21 R5 führt die native Vektorindizierung für 4D.Vector-Felder ein und bietet damit erstmals in 4D eine dedizierte Indizierung für auf Embeddings basierende Daten. 

Dies verbessert die Leistung von Ähnlichkeitssuchen bei wachsenden Datensätzen, was insbesondere für die semantische Suche, Empfehlungssysteme, RAG und andere KI-gesteuerte Workflows nützlich ist. Abfragen auf indizierten Vektorfeldern liefern dieselben Ergebnisse wie nicht indizierte Abfragen, jedoch schneller.

Sie können Kosinus-, Punkt- und euklidische Indizes direkt im Struktur-Editor konfigurieren, während der bestehende automatische Index für Nullvektoren weiterhin verfügbar bleibt. Jeder Index kann unabhängig aktiviert werden, sodass Sie nur diejenigen beibehalten, die Ihre Anwendung tatsächlich nutzt.

Indizierte Vektorfelder können auch bei Sortiervorgängen verwendet werden, sodass Abfrageergebnisse nach Vektorähnlichkeit geordnet werden können und gleichzeitig die Vorteile des neuen Indexes genutzt werden.

Vektorindizes sind in den Standard-Datenbanklebenszyklus integriert, einschließlich Neuindizierung, Sicherung, MSC-Überprüfung und Reparatur.

Für Anwendungen, die bereits Embeddings in 4D.Vector-Feldern speichern, bietet dies einen direkten Weg zu einer schnelleren Vektorsuche, ohne dass die Modellierung Ihrer Daten oder die von Ihren Abfragen zurückgegebenen Ergebnisse geändert werden müssen.

Programmgesteuerte Verwaltung von Vektorindizes

4D 21 R5 erweitert die Vektorindizierung um programmatische Funktionen, sodass Sie Vektorindizes direkt über den Code erstellen, überprüfen und verwalten können, anstatt sich ausschließlich auf den Struktur-Editor zu verlassen.

Die Befehle CREATE INDEX und SET INDEX unterstützen Kosinus-, Punkt- und euklidische Indizes, während Sie mit DataClass.getIndexes() zur Laufzeit prüfen können, welche Indizes für eine Datenklasse verfügbar sind. Dies ist besonders nützlich bei der Validierung von Bereitstellungen oder der Erstellung von Diagnosetools, da Sie so überprüfen können, ob die erwarteten Indizes vorhanden sind, ohne die Datenbankstruktur manuell öffnen zu müssen.

Auch die Vektorspeicherung ist flexibler geworden. 4D.Vector.new()  verwendet nun standardmäßig eine 32-Bit-Genauigkeit, was dazu beiträgt, den Speicherbedarf zu reduzieren, während eine 64-Bit-Genauigkeit weiterhin verfügbar ist, wenn Ihr Anwendungsfall dies erfordert.

Zusammen machen diese Änderungen die Vektorsuche über die Entwicklungsphase hinaus einfacher: Sie können Indizes beim Entwerfen der Datenbank visuell konfigurieren und sie anschließend, sobald die Anwendung bereitgestellt ist, programmgesteuert validieren und verwalten.

Automatische Ungültigkeitserklärung von Embeddings in 4D Embedding Studio

Mit 4D Embedding Studio lassen sich Einbettungen einfacher mit den Geschäftsdaten synchronisieren. Wenn sich Quelldaten ändern, kann 4D nun Vektoren identifizieren, die möglicherweise nicht mehr die aktuelle Entität repräsentieren, anstatt veraltete Einbettungen beizubehalten.

Wird ein Attribut geändert, das zum Erstellen einer Einbettungsphrase verwendet wurde, wird der zugehörige Vektor automatisch ungültig gemacht. Wenn Sie ein entsprechendes „dirty“-Boolean-Feld verwenden, kann 4D den Vektor zur Neugenerierung kennzeichnen, während der aktuelle Wert weiterhin verfügbar bleibt. Andernfalls wird der Vektor gelöscht.

Der gleiche Schutz gilt, wenn sich die Embedding-Konfiguration ändert. Die Aktualisierung der Phrase kann einen umfassenderen Neuberechnungs-Workflow auslösen, während eine Änderung des Embedding-Modells verhindert, dass mit dem vorherigen Modell erstellte Vektoren weiterhin wiederverwendet werden.

Dies erspart viel manuelle Nachverfolgung und verringert das Risiko, dass Funktionen für die semantische Suche, RAG oder Empfehlungen mit veralteten Einbettungen arbeiten, während sich Ihre Daten und Ihre KI-Konfiguration weiterentwickeln.

Sicherheit

S/MIME-Signierung für SMTP-Transporter

Ausgehende E-Mails können nun direkt über den SMTP-Transporter mit S/MIME digital signiert werden, sodass Empfänger überprüfen können, wer die Nachricht gesendet hat und ob ihr Inhalt nach der Signierung verändert wurde.

Dies ist besonders nützlich für Rechnungen, Genehmigungen, Berichte, Benachrichtigungen und andere geschäftliche Kommunikationen, bei denen es auf die Authentizität ankommt.

Die Signierung fügt sich nahtlos in den bestehenden SMTP-Workflow ein. Sie stellen ein Zertifikat mit dem privaten Schlüssel bereit – entweder direkt als Datei oder Blob über certificate oder als Verweis aus dem Systemzertifikatsspeicher mit certificateName. Passwortgeschützte Zertifikate werden ebenfalls unterstützt.

Da die Signierung innerhalb der Standard-SMTP-Transporter-API erfolgt, können Sie vertrauenswürdige E-Mail-Workflows stärken, ohne ein separates Signaturtool oder eine benutzerdefinierte Integrationsschicht einführen zu müssen.

OpenSSL 4 für NGTCP2 und QUIC

Der von den Funktionen unter QUIC, WebSocket und TLS verwendete Netzwerkstack basiert nun auf OpenSSL 4 anstelle von BoringSSL. Dadurch wird die Sicherheitsgrundlage modernisiert, während das bestehende Anwendungsverhalten weitgehend unverändert bleibt.

Für die meisten Anwendungen erfolgt das Upgrade transparent. Der wichtigste zu überprüfende Punkt ist Ihre TLS-Konfiguration: SET DATABASE PARAMETER unterstützt nun nur noch TLS 1.2 und TLS 1.3 als Mindest-TLS-Version, und die Standard-Serverversion ist TLS 1.3.

Die Änderung betrifft auch OpenSSL-basierte Vorgänge wie Verschlüsselung, Zertifikatserstellung, Schlüsselgenerierung, den OpenSSL-Anbieter und den ODBC-Treiber.

Es sind keine Aktivierungs- oder Migrationsschritte erforderlich, jedoch sollten Anwendungen, die noch auf ältere TLS-Versionen angewiesen sind, ihre Konfiguration vor der Bereitstellung überprüfen.

HTTP-SERVER

Integrierte Ratenbegrenzung für den 4D Web Server

Der 4D Web Server kann nun eine übermäßige Auslastung begrenzen, bevor diese sich auf den Rest der Anwendung auswirkt, und bietet Ihnen so mehr Kontrolle über die Verteilung der Serverressourcen.

Sie können Grenzwerte für das Anforderungsvolumen, eingehende und ausgehende Daten, aktive Sitzungen, Gastsitzungen und Entitätssätze festlegen. Diese Grenzwerte können für den gesamten Server oder für einzelne Sitzungen gelten, wodurch verhindert wird, dass ein einzelner Client oder eine einzelne Arbeitslast einen unverhältnismäßig großen Teil der Kapazität beansprucht.

Wird ein Limit erreicht, wird die Anfrage frühzeitig mit dem HTTP-Status 429 „Too Many Requests“ abgelehnt, noch bevor ein Webprozess erstellt wird. Clients können gegebenenfalls auch einen Retry-After-Wert erhalten, der ihnen ein klares Signal gibt, wann sie es erneut versuchen sollen.

Quoten können beim Start konfiguriert, aus der Datei „HTTPQuotas.json“ geladen oder zur Laufzeit über WEB Server().quotas aktualisiert werden. Standardmäßig ändert sich nichts, sodass bestehende Anwendungen ihr aktuelles Verhalten beibehalten, bis Quoten explizit konfiguriert werden.

Dies ersetzt weder einen Reverse-Proxy noch eine Firewall oder eine WAF. Stattdessen bietet es einen anwendungsorientierten Schutz direkt in 4D selbst und trägt dazu bei, dass Produktionsanwendungen bei Traffic-Spitzen oder unsachgemäßer Nutzung reaktionsfähiger bleiben.

DATENBANK

Modernisierter Windows Installer und CI-fähige Bereitstellung

Die Installation von 4D unter Windows ist nun für einzelne Benutzer einfacher und lässt sich für Teams, die Build- oder Bereitstellungsumgebungen verwalten, wesentlich leichter automatisieren.

Alle unterstützten Sprachen werden standardmäßig installiert, sodass während der Einrichtung keine Sprachpakete mehr ausgewählt werden müssen und spätere Probleme mit fehlenden Sprachen vermieden werden.

Derselbe Installer unterstützt 4D , 4D Server, 4D Volume Desktop und 4D Components – alle Optionen sind standardmäßig ausgewählt, Sie können jedoch weiterhin nur das installieren, was Sie benötigen.

Für CI und automatisierte Bereitstellung kann das Installationsprogramm über Inno-Setup-Optionen im Hintergrund von der Befehlszeile aus ausgeführt werden. Dies erleichtert die Vorbereitung von Build-Agenten, Testrechnern oder Bereitstellungsumgebungen ohne manuelle Eingriffe.

Das Installationsprogramm ist nun ausschließlich für x64 verfügbar, was die Bereitstellungsmatrix vereinfacht und mit den unterstützten Windows-Umgebungen übereinstimmt. Ein Link zum Windows App SDK-Installationsprogramm ist ebenfalls am Ende des Setups verfügbar, falls diese Laufzeitumgebung benötigt wird.

Das Ergebnis ist ein besser vorhersehbarer Windows-Installationsprozess, ganz gleich, ob Sie eine einzelne Workstation einrichten oder Dutzende von Umgebungen automatisieren.

4D-Komponente

Komponenten direkt aus dem Host-Projekt kompilieren

Komponenten können nun direkt aus dem Host-Projekt kompiliert werden, was es wesentlich einfacher macht, die Anwendung und die von einem Build verwendeten Komponentenversionen synchron zu halten.

Das Compiler-Fenster zeigt das Host-Projekt zusammen mit kompatiblen Komponenten an, sodass Sie kompilieren, die Syntax prüfen oder kompilierten Code löschen können, ohne jede Komponente separat öffnen zu müssen. Sie können für eine ausgewählte Komponente auch direkt aus dem Explorer zum Compiler springen.

Eine Komponente ist dafür geeignet, wenn ihr Quellcode lokal verfügbar ist, sie weder als .4dz-Datei gepackt ist noch aus dem Cache des Abhängigkeitsmanagers stammt und sie Direct Typing verwendet.

Jede Komponente verwendet weiterhin ihre eigenen Kompilierungseinstellungen, während die Kompilierungsprotokolle im Host-Projekt zentralisiert werden. Fehler und Warnungen geben zudem die Komponente an, von der sie stammen, was die Fehlerbehebung in Projekten, die von mehreren wiederverwendbaren Modulen abhängen, erheblich beschleunigt.

Der praktische Vorteil ist ein zuverlässigerer Build-Prozess. Sie verbringen weniger Zeit mit der separaten Verwaltung kompilierter Komponenten und verringern das Risiko, eine Anwendung mit einer veralteten Komponentenversion auszuliefern.

Komponenten schneller finden mit 4D Corner

Das Auffinden wiederverwendbarer Komponenten ist nun Teil des Workflows zur Abhängigkeitsverwaltung selbst. 4D Corner kann direkt über die Oberfläche „Projektabhängigkeiten“ oder über das Fenster „Abhängigkeit hinzufügen“ geöffnet werden.

Von dort aus können Sie die von 4D und der Community bereitgestellten Komponenten durchsuchen, die benötigte Abhängigkeit kopieren und in Ihr Projekt einbinden, ohne Repositorys separat durchsuchen zu müssen.

Dies erleichtert es, bereits vorhandene Lösungen zu entdecken, bevor Sie Funktionen selbst entwickeln, und schafft einen deutlich klareren Weg vom Auffinden einer Komponente bis hin zum tatsächlichen Hinzufügen zu einer Anwendung.

Benutzeroberfläche

Fluent-UI-Unterstützung für Listenformulare

Listenformulare können nun dieselbe Fluent UI – Darstellung wie der Rest Ihrer Windows-Benutzeroberfläche verwenden, wodurch eine der auffälligsten Inkonsistenzen in Anwendungen beseitigt wird, die bereits das moderne WinUI-Erscheinungsbild nutzten.

Wenn Fluent UI aktiviert ist, behalten Listenformulare, die über Befehle wie DISPLAY SELECTION und MODIFY SELECTION geöffnet werden, sowie Listenunterformulare ihr bestehendes Layout und Verhalten bei, während sie gleichzeitig die moderne Darstellung übernehmen.

Dies bedeutet auch, dass Listenformulare nun demselben hellen oder dunklen Windows-Design folgen wie Detailformulare und Dialogfelder. Benutzer wechseln nicht mehr von einer modernen dunklen Benutzeroberfläche zu einem klassischen Listenformular, das aussieht, als gehöre es zu einer anderen Anwendung.

Eine Neugestaltung ist nicht erforderlich. Vorhandene Listenformulare profitieren automatisch von der neuen Darstellung, während Sie über die Eigenschaft „Widget-Darstellung“ weiterhin das Verhalten pro Formular steuern können.

Für Anwendungen mit einer großen Anzahl bestehender Listenformular-Benutzeroberflächen macht dies eine vollständige Umstellung auf Fluent UI wesentlich praktikabler.

Flexiblere Gestaltung von Schaltflächen, Optionsfeldern und Kontrollkästchen

Für eine einfache Anpassung der Benutzeroberfläche müssen nicht mehr für jede Schaltfläche oder jedes Steuerelement eigene Bilddateien erstellt werden.

Individuell gestaltete Schaltflächen, Optionsfelder und Kontrollkästchen können nun Hintergrundfarbe, Rahmenfarbe, Rahmenbreite und Eckenradius direkt über den Formular-Editor, CSS oder 4D-Code festlegen.

Bei Schaltflächen sind die neuen Eigenschaften über den benutzerdefinierten Rahmenstil verfügbar, sodass bestehende Formulare ihr aktuelles Erscheinungsbild beibehalten, sofern Sie nicht die neue Gestaltung verwenden. Optionsfelder und Kontrollkästchen stellen dieselben visuellen Eigenschaften direkt zur Verfügung.

Hintergrundbilder lassen sich weiterhin mit einer Hintergrundfarbe kombinieren, und abgerundete Ecken schneiden den Hintergrund automatisch korrekt zu.

Dies gibt Ihnen mehr Freiheit bei der Gestaltung einer einheitlichen visuellen Identität über helle und dunkle Designs hinweg und reduziert gleichzeitig die Anzahl der Grafiken, die Sie erstellen, verwalten und pflegen müssen.

Die neuen Gestaltungsoptionen gelten für den Projektmodus und werden in binären Datenbanken nicht unterstützt.

Vertikale Ausrichtung und Abstand für Textobjekte

Die Platzierung von Text in Formularen lässt sich nun einfacher steuern, ohne dass Objekte in der Größe angepasst werden müssen oder visuelle Workarounds erforderlich sind.

Textbereichs- und Eingabeobjekte können die vertikale Ausrichtung „oben“, „mittig“, „unten“ oder „Standard“ verwenden, zusammen mit unabhängigen Abständen auf jeder Seite. Dadurch lässt sich die visuelle Ausgewogenheit von Beschriftungen, Feldern und größeren Eingabebereichen deutlich leichter gewährleisten.

Sie können die Werte über den Formular-Editor, die Formular-JSON-Datei, CSS oder per Code konfigurieren. Die neuen Befehle OBJECT SET PADDING und OBJECT GET PADDING ermöglichen die Steuerung zur Laufzeit, während die bestehenden Befehle zur vertikalen Ausrichtung nun auch mit Textbereichs- und Eingabeobjekten funktionieren.

Die Unterstützung für Abstände erstreckt sich auch auf Listenfelder mit symmetrischen horizontalen und vertikalen Abständen.

Bestehende Formulare behalten ihre aktuelle Darstellung bei, bis Sie die neuen Eigenschaften verwenden. So können Sie das Layout schrittweise verbessern, anstatt bestehende Bildschirme neu gestalten zu müssen.

Visual Studio Code-Erweiterung

Nahtloser Workflow zwischen 4D IDE und VS Code

Der Wechsel zwischen der 4D IDE und VS Code bedeutet nicht mehr, dass Sie Projektordner durchsuchen müssen, um die richtige Methode oder Klasse zu finden.

Mit einer neuen Einstellung im Code-Editor können Sie festlegen, ob standardmäßig der 4D-Code-Editor oder VS Code geöffnet werden soll, während Sie über die Alt-Taste bei Bedarf schnell auf den anderen Editor zugreifen können. Sie können auch das aktuelle Verhalten beibehalten und stets den 4D-Code-Editor verwenden.

Diese Einstellung gilt in der gesamten 4D-IDE, einschließlich des Explorers, des Formular-Editors, des Debuggers, der Laufzeitfehler-Dialoge und der Aktionen „Zur Definition springen“. Wenn VS Code ausgewählt ist, öffnet 4D genau die entsprechende Methoden- oder Klassendatei und übergibt VS Code den Projektordner als Arbeitsbereich.

Dies ist besonders nützlich für Formular- und Objektmethoden, bei denen das manuelle Auffinden der entsprechenden Datei mit Tabellennummern und tief verschachtelten Ordnern verbunden sein kann. 4D löst diesen Pfad nun für Sie auf und erstellt die Methode bei Bedarf zunächst.

Das Ergebnis ist ein deutlich reibungsloserer Workflow bei der gemischten IDE-Nutzung. Sie können die 4D-IDE weiterhin für Formulare, das Debuggen und die Projektnavigation nutzen und gleichzeitig direkt zu VS Code wechseln, wenn Sie Git-Tools, Erweiterungen oder KI-gestützte Entwicklung benötigen.

Die Integration gilt für den Projektmodus. Binäre Datenbanken verwenden weiterhin den 4D-Code-Editor.