Connect with us

Künstliche Intelligenz

Contracts in C++26: Evaluations-Semantik | heise online


Nachdem ich in meinem letzten Artikel Contracts in C++26: Ein tiefer Einblick in die Verträge kurz die Details von Contracts vorgestellt habe, möchte ich mich nun näher mit der sehr interessanten Evaluations-Semantik befassen.


Rainer Grimm

Rainer Grimm

Rainer Grimm ist seit vielen Jahren als Softwarearchitekt, Team- und Schulungsleiter tätig. Er schreibt gerne Artikel zu den Programmiersprachen C++, Python und Haskell, spricht aber auch gerne und häufig auf Fachkonferenzen. Auf seinem Blog Modernes C++ beschäftigt er sich intensiv mit seiner Leidenschaft C++.

Wenn eine Contracts Assertion auftritt, wird eine der vier Bewertungssemantiken angewendet: ignore, observe, enforce und quick-enforce. Die Tabelle gibt einen Überblick über die vier Semantiken:



(Bild: Rainer Grimm)

Leider ist es derzeit nicht möglich, diese Evaluations-Semantiken in vollem Umfang zu sehen.

Während die Checking-Semantik die Vertrags-Assertion nur auswertet, beendet die Terminating-Semantik auch das Programm.

Eine standardkonforme Implementierung muss nicht jede der vier genannten Evaluations-Semantiken implementieren. Sie kann auch ihre eigene Semantik anbieten.

Wie der Name schon sagt, ignoriert die ignore-Semantik die Auswertung des Prädikats. Dennoch muss das Prädikat syntaktisch korrekt sein.

Die observe-Semantik ist eine Checking-Semantik. Im Allgemeinen können drei Bedingungen zu einer Vertragsverletzung führen:

  • Die Auswertung des Prädikats gibt false zurück.
  • Die Auswertung des Prädikats verursacht eine Exception.
  • Die Auswertung des Prädikats erfolgt zur Compile-Zeit, aber das Prädikat ist kein konstanter Ausdruck.

Wenn zur Compile-Zeit eine Vertragsverletzung auftritt, wird eine Diagnose ausgegeben und die Kompilierung fortgesetzt.

Wenn eine Vertragsverletzung zur Laufzeit auftritt, wird der Vertragsverletzungs-Handler aufgerufen, der auf ein Objekt vom Datentyp const std::contracts::contract_violation verweist, das Informationen über die Vertragsverletzung enthält. Wenn der Vertragsverletzungs-Handler normal zurückkehrt, wird die Programmausführung fortgesetzt.

Die enforce-Semantik ruft den Vertragsverletzungs-Handler zur Laufzeit auf. Das Programm wird beendet, wenn der Contract-Violation-Handler normal zurückkehrt. Die enforce-Semantik ist eine sogenannte terminierende Semantik. Das bedeutet, dass im Falle einer Vertragsverletzung die Programmausführung beendet wird. Danach kann eine der folgenden Aktionen erfolgen:

  • Aufruf von std::terminate,
  • Aufruf von std::abort oder
  • sofortige Beendigung der Ausführung.

Zur Compile-Zeit wird die Kompilierung abgebrochen.

Die quick-enforce-Semantik ruft den Vertragsverletzungs-Handler zur Laufzeit nicht auf. Als terminierende Semantik beendet sie das Programm sofort. In diesem Fall wird beispielsweise __builtin_trap() verwendet.

Zur Compile-Zeit wird die Kompilierung abgebrochen.

Der Vertragsverletzungs-Handler hat folgende Signatur:

void handle_contract_violation( std::contracts::contract_violation );

Die Implementierung stellt den Standard-Vertragsverletzungs-Handler bereit. Sie kann jedoch auch zulassen, dass dieser Standard-Vertragsverletzungs-Handler durch einen benutzerdefinierten ersetzt wird.

In seiner ausgezeichneten Präsentation Contracts for C++ auf der ACCU 2025 stellt Timur Doumler einige spannende Beispiele für benutzerdefinierte Vertragsverletzungshandler vor:


// Protokollierung
  
void handle_contract_violation( std::contracts::contract_violation violation ) {
    LOG(std::format("Contract violated at: {}\n", violation.location()));   
}

// Setze einen Haltepunkt
  
void handle_contract_violation( std::contracts::contract_violation violation ) {
    std::breakpoint();
}

// Warte, bis ein Debugger angeschlossen ist
  
void handle_contract_violation( std::contracts::contract_violation violation ) {
    
while (!std::is_debugger_present())
     /* spin */

    std::breakpoint();
}

// Stacktrace ausgeben
  
void handle_contract_violation( std::contracts::contract_violation violation ) {
    std::cout << std::stacktrace::current(1);
}

// An den Standard-Handler für Vertragsverletzungen übergeben
  
void handle_contract_violation( std::contracts::contract_violation violation ) {
    std::cout << std::stacktrace::current(1);
    std::contracts::invoke_default_contract_violation_handler(violation);
}


Abschließend möchte ich die Schnittstelle des Objekts std::contracts::contract_violation vorstellen, das der Vertragsverletzungs-Handler empfängt:

  • kind gibt die Art der Vertragsverletzung zurück.
  • semantic gibt die Evaluations-Semantik zurück, wenn die Vertragsverletzung auftritt.
  • is_terminating gibt zurück, ob die Evaluations-Semantik beendet wird.
  • detection_mode gibt den Grund für die Vertragsverletzung zurück.
  • evaluation_exception gibt einen std::exception_ptrzur zur Ausnahme zurück, die bei der Prädikatbewertung ausgelöst wurde.
  • comment gibt eine erklärende Zeichenfolge zur Vertragsverletzung zurück.
  • location gibt einen std::source_location zurück, der den Ort der Vertragsverletzung angibt.

Weitere Informationen zum std::contracts::contract_violation-Objekt finden sich auf der cppreference-Seite.

In meinem nächsten Artikel werde ich mich auf die kleineren Features in C++26 konzentrieren. Ich beginne mit den kleinen Sicherheits-Features in der Kernsprache.


(rme)



Source link

Künstliche Intelligenz

MCP Registry gestartet: Öffentliche MCP-Server auf einen Blick


close notice

This article is also available in
English.

It was translated with technical assistance and editorially reviewed before publication.

Das Entwicklungsteam hinter dem Model Context Protocol (MCP) hat die MCP Registry als Preview eingeführt – einen offenen Katalog und eine API, um öffentlich verfügbare MCP-Server ausfindig zu machen und zu verwenden. Bei MCP handelt es sich um ein offenes Protokoll für den Zugriff von Large Language Models (LLMs) auf externe Datenquellen.

Bereits vor einigen Monaten teilte das MCP-Team auf GitHub mit, an einem zentralen Register für das MCP-Ökosystem zu arbeiten. Die nun veröffentlichte, quelloffene MCP Registry soll das Verfahren standardisieren, wie MCP-Server verteilt und entdeckt werden. Sie bietet Server-Maintainern die Möglichkeit, ihre Server hinzuzufügen, und Client-Maintainern, auf Serverdaten zuzugreifen.

Um der Registry einen Server hinzuzufügen, muss dieser auf einer Package Registry wie npm, PyPI oder DockerHub veröffentlicht sein. Eine detaillierte Anleitung findet sich auf GitHub. Dort erfahren Developer, wie sie eine server.json-Datei für ihren Server erstellen, Authentifizierung mit der Registry erreichen, ihren Server veröffentlichen und die Veröffentlichung verifizieren können.

Wie das MCP-Team betont, soll das zentrale Register als hauptsächliche Source of Truth für öffentlich verfügbare MCP-Server dienen, jedoch den bereits bestehenden Registries von Community und Unternehmen nicht im Weg stehen. Diese können in der MCP Registry öffentliche oder private Sub-Registries anlegen, wie das MCP-Team auf GitHub beschreibt.

Bereits existierende Sammlungen sind etwa eine lange, gepflegte Liste auf GitHub und ein Docker-Verzeichnis für MCP-Quellen.

Da es sich bei der MCP Registry derzeit um eine Preview handelt, gibt es keine Garantie für die Beständigkeit der darin enthaltenen Daten. Auch sind Breaking Changes möglich, bevor die Registry die allgemeine Verfügbarkeit erreicht.

Weitere Informationen sind auf dem MCP-Blog zu finden.


(mai)



Source link

Weiterlesen

Künstliche Intelligenz

Treppen-kletternde Saugbots: Dreame, Eufy und Mova wollen in die nächste Etage


Neben der Anker-Marke Eufy haben auf der IFA 2025 mit Dreame und der Dreame-Submarke Mova zwei weitere Anbieter Saugroboter gezeigt, die Treppen hoch- und runtersteigen können. Es handelte sich um Prototypen mit unterschiedlichen Reifegraden und Technikansätzen. Einen Zweck haben sie gemein: Wegen ihrer Klettertricks soll es nicht mehr nötig sein, von Hand einen Saugroboter in eine andere Etage zu schleppen, damit er auch dort putzt.

Kein Experiment mehr, sondern ein massentauglicher Trend sind Modelle, deren Fahrwerk das Gehäuse anhebt, sodass die Roboter über hohe Türschwellen gelangen und den Bereich dahinter reinigen. Nach der Vorjahrespremiere von Dreame und Roborock sind nun auch weitere Anbieter damit am Start.

Ferner gaben Roborock sowie Ecovacs am Stand von Bosch einen Ausblick darauf, wie die Basisstationen von Saugrobotern platzsparend mit Waschmaschinen oder Spültischen kombiniert werden können.

Dreame, Eufy und Mova zeigten motorisierte Transporthilfen, die Saugroboter wie eine Fähre die Treppe mit Stufen von bis zu 25 Zentimetern Höhe hoch- und runterschleppen. Es handelte sich jedoch jeweils um eine programmierte Routine, die nervenzerreißend lange dauerte.


Bild des treppensteigenden Saugroboters mit Treppensteighilfe

Bild des treppensteigenden Saugroboters mit Treppensteighilfe

Klappe auf, Eufy S2 rein, Klappe zu, dann fährt die Marswalker-Fähre den Roboter die Treppe hinauf.

(Bild: Berti Kolbow-Lehradt)

Am ausgereiftesten wirkte der Treppenkletterer von Eufy. Die Fähre namens Marswalker transportierte den Saugroboter Eufy S2 in flüssigen Bewegungen über eine Treppenattrappe. Sobald der S2 an den Treppenabsatz heranfuhr, verließ die Fähre ihre separate Ladestation, der Roboter fuhr rein. Dann robbte die Fähre auf zwei Gummiketten über die Stufen hinweg. Für zusätzlichen Halt sorgten vier paddelartige Stabilisatoren, die zusätzlich ausklappt werden. Mittels Lasersensoren und Kameras soll die Fähre mit flachen und U-förmigen Stufen sowie L-förmigen Treppenaufgängen zurechtkommen. Die Stufenflächen selbst berührte der Roboter während des Transfers nicht, kann selbige also nicht putzen. Eufy peilt einen Marktstart im ersten Halbjahr 2026 an. Als Preis steht nach Informationen von heise online eine Summe von 700 Euro im Raum. Sie kommt obendrauf zum S2-Preis von 1600 Euro.


Saugroboter, der mithilfe eines Zusatzroboters die Treppen hochfährt

Saugroboter, der mithilfe eines Zusatzroboters die Treppen hochfährt

Die Gummilaufbänder des Dreame Cyber X sind in den Stabilisatoren eingebaut, ansonsten ist der Ansatz identisch mit dem vom Eufy Marswalker.

(Bild: Berti Kolbow-Lehradt)

Für Dreames Modell namens Cyber X gibt es kein näheres Startdatum. Die Bewegungen des Prototyps waren holpriger als die von Eufys Lösung. Ähnlich wie der Marswalker, zieht sich die Fähre des Cyber X auf Gummilaufbändern die Treppe hoch. Sie stecken allerdings in vier Stabilisatoren, nicht im Unterboden des Fährengehäuses. Dreame verspricht sich hiervon eine bessere Balance auf unterschiedlichen Bodenmaterialien, Treppenbreiten und -geometrien. Eine Kombi aus Laser und KI soll Tiefe, Winkel und Höhe der Stufen präzise berechnen, damit der Cyber X nicht stolpert oder abrutscht. Während er sie überquert, putzt er die Stufen nicht.

Mova gehört zwar zu Dreame, setzt aber bei der Fähre namens Zeus 60 auf eine andere Technik. Sie arbeitet wie ein Lift statt wie ein Kettenfahrzeug. Zwei Beine links und rechts hebeln das Gehäuse mit dem eingeparkten Saugroboter auf die nächste Stufe. Dort bewegen es die Rollen des Roboters vorwärts. Auf diese Weise bleibt es technisch möglich, dass der Roboter die Stufenoberfläche saugt und wischt. Während der Produktdemo erfolgte dieser Schritt aber nicht. Inwiefern die Funktion zum Marktstart nachgeliefert wird, ließ Mova offen.

Generell blieben Zweifel, ob der Transport auch auf schmalen Treppen klappt. Damit die Fähre nicht nach hinten kippt, muss die Treppenstufe recht tief sein, um den vorderen Teil des Gehäuses ausreichend Auflagefläche zu bieten. Ein Datum für den Marktstart sowie einen Verkaufspreis nannte Mova nicht. Wenn das Fährenmodul erscheint, soll es aber zu den „meisten kommenden Saugrobotern“ der Marke passen.

In Haushalten, in denen keine Treppenstufen zu überwinden sind, können dennoch Bodenschwellen zum unüberwindbaren Hindernis werden. Zwei Höhenzentimeter schafft jeder Bot, für mehr braucht es einen Extra-Trick. Immer mehr Hersteller bauen Fahrwerke ein, die aus dem Robotergehäuse herausgestemmt werden und letzterem somit die entscheidende Lufthoheit verschaffen, um Schwellen zu erklimmen.


Saugroboter mit Fahrwerkslift

Saugroboter mit Fahrwerkslift

Der Saug- und Wischroboter 3i Q10 kann keine Treppen steigen, aber mit einem Fahrwerkslift über Bodenschwellen hüpfen.

(Bild: Berti Kolbow-Lehradt)

Nach der Vorjahrespremiere legte Dreame mit den Modellen Aqua10 Ultra Roller und Aqua 10 Track Roller nach. Beide sollen bis zu acht Zentimeter hohe Doppelstufen überwinden. Sie sind für je 1500 Euro ab sofort erhältlich.

Der Roborock Qrevo Curv 2 Pro (1300 Euro, ab Oktober) und Ecovacs X11 OmniCyclone (ab sofort für 1300 Euro erhältlich), der Narwal Flow (ab sofort für 1000 Euro) hieven sich über bis zu vier Zentimeter hohe Schwellen. Das Modell 3i Q10 soll 3,5 Zentimeter schaffen und bis März 2026 erscheinen. Ein Preis steht nicht fest.

Ecovacs und 3i hat zudem zwei weitere interessante zusätzliche Talente in petto: Der OmniCyclone bietet eine der wenigen Basisstationen, die Staub in einem beutellosen Behälter zwischenlagert. Der Nachkauf von Beuteln entfällt damit. Der Q10 wird ein weiteres der noch wenigen Modelle sein, die über den Smart-Home-Standard Matter etwa auch in Apple Home bedient werden können.

Wegen ihrer großen Waschanlagen benötigen die Basisstationen von Saug- und Wischrobotern viel Platz. Das Auffrischen der Tanks erledigt man bei den meisten Modellen auch notgedrungen händisch. Neue Designs für Küchengeräte und -möbel könnten Platz und Zeit sparen.

Roborock kombinierte einen Waschtrockner auf Basis des neuen Modells Zeo X mit einer Garage für einen namenlosen Saugroboter. Beide teilten sich Zu- und Abfluss zum Hauswassersystem. Zudem verfügte das Waschmaschinengehäuse über weitere Staufächer für einen Saugbeutel und etwas Reinigungslösung für den Wischmopp des Saugroboters. Dadurch wuchs die Waschmaschine um etwa zehn Höhenzentimeter, soll aber noch in gängige Küchenzeilen passen.


Saugroboterunterkunft in Waschmaschine

Saugroboterunterkunft in Waschmaschine

Wohin mit der Basisstation des Saugroboters? Roborock zeigte ein Konzept, bei dem die Saugbot-Waschanlage in einer Waschmaschine steckte.

(Bild: Berti Kolbow-Lehradt)

Bosch zeigte einen Waschtisch mit eingebauten Schlauchleitungen sowie eine Waschanlage für einen Saugroboter von Ecovacs. Oben fanden ein Spülbecken für Geschirr, in der Mitte Schubladen, unten eine Garage sowie die Spülwanne für die Mopps des Roboters Platz. Bosch bewarb die Kombi als Teil des Home-Connect-Systems, das App-gesteuerte Küchen- und Haushaltsgeräte bündelt. Einen Namen sowie Verkaufsstart und -preis für die beiden Gerätekombis gibt es noch nicht.


(afl)



Source link

Weiterlesen

Künstliche Intelligenz

Was Wi-Fi 8 bringt: Neue Funktionen für stabileres WLAN


Schon zur Fachmesse CES Anfang 2024 begann die Herstellervereinigung Wi-Fi Alliance (WFA) Wi-Fi-7-Produkte zu zertifizieren und zu vermarkten, doch erst ein halbes Jahr später schloss das Institute of Electrical and Electronics Engineers (IEEE) die Arbeiten an der Wi-Fi 7 zugrunde liegenden Norm 802.11be ab. Die finale, 1020 Seiten starke Fassung erschien im Sommer 2025. Das ist nur der Wi-Fi 7 betreffende Teil des WLAN-Standards, der Rest für alles andere steckt in den 5956 Seiten von 802.11-2024.

Damit ist Wi-Fi 7 endlich offiziell, doch schon im Januar 2022 begannen Mitarbeiter führender WLAN-Firmen – darunter Qualcomm, MediaTek, Huawei, Broadcom und Samsung – laut nachzudenken, welche Neuerungen auf IEEE 802.11be folgen könnten. So nahm im September 2022 die Ultra High Reliability Study Group (UHR SG) ihre Arbeit auf und formulierte eine Beschreibung des Projekts IEEE P802.11bn. Seit November 2023 arbeitet die Task Group bn (TGbn) an einer Norm für das, was laut gewöhnlich gut unterrichteten Kreisen ab der CES 2028 von der WFA als Wi-Fi 8 vermarktet werden soll. Der erste Entwurf (Draft 1.0) mit 502 Seiten Umfang erschien im August 2025.

  • Wi-Fi 8 bringt nur einen moderaten Geschwindigkeitssprung, dafür aber zuverlässigere Funkverbindungen und mehr Spektrumeffizienz.
  • Mit Seamless Mobility Domain können Clients mit mehreren Basen gleichzeitig verbunden sein, Roamingaussetzer adé.
  • Distributed Resource Units und Enhanced Long Range steigern die Reichweite für Internet-of-Things-Geräte.

Weil auch IEEE 802.11 den Regeln der Physik unterliegt, beschränken sich die „ultrahohen“ Verbesserungen darauf, gegenüber Wi-Fi 7 die Verzögerung und den Paketverlust um ein Viertel zu reduzieren sowie die maximale Übertragungsgeschwindigkeit um ein Viertel zu erhöhen. Im Alltag viel wichtiger ist, dass Wi-Fi 8 das WLAN zuverlässiger machen soll.


Das war die Leseprobe unseres heise-Plus-Artikels „Was Wi-Fi 8 bringt: Neue Funktionen für stabileres WLAN“.
Mit einem heise-Plus-Abo können Sie den ganzen Artikel lesen.



Source link

Weiterlesen

Beliebt