Entwicklung & Code
Viele neue Coding-Details für die Assistenten von Cursor und Mistral
Die KI-Unternehmen Cursor und Mistral haben ihre Coding-Assistenten mit neuen Fähigkeiten ausgestattet, die einerseits bei Cursor die Produktivität der Entwicklerinnen und Entwickler erhöhen und deren Arbeit vereinfachen, andererseits bei Mistral eine vollständige, abgegrenzte KI-Umgebung on Premises bieten.
Das in Frankreich beheimatete Unternehmen Mistral veröffentlicht mit Mistral Code einen Coding-Agenten für VS Code und JetBrains IDEs, der Autovervollständigen, Refactoring, KI-Chat und Deployment-Funktionen beherrscht. Betreiben lässt er sich in der Cloud, on Premises oder Serverless, aber immer in den Grenzen des Unternehmens verbleibend, mit vollständiger Kontrolle über interne Repos und angebundene Unternehmensquellen. Auch ein Nachtrainieren oder Reduzieren der Komplexität sind möglich.
Mistral Code lässt sich innerhalb eines Unternehmens in der Cloud, on premises oder serverless betreiben.
(Bild: Mistral)
Die DIE-Integration des Tools basiert auf Continue und es besteht aus vier Komponenten: Codestral (Autocomplete), Codestral Embed (Suche und Retrieval), Devstral (Agentic) und Medium (Chat). Laut Blog ist der Agent gut für achtzig Sprachen und betreibt Reasoning über Dateien, Bilder, Terminalausgaben und Issues. Admins erhalten Werkzeuge zur Kontrolle, Observability und für Analysen.
Mistral Code ist nur als private Beta zugänglich. Das Unternehmen testet die Anwendung derzeit für das Abarbeiten kompletter Aufgaben: Tickets aufnehmen, Dateien öffnen, neue Module schreiben, Tests durchführen und Shell-Kommandos ausführen. Die Kontrolle soll dabei immer unter Aufsicht erfahrener Entwicklerinnen und Entwickler stehen.
Pull Requests automatisch fixen und Kontext erweitern
Vom KI-Coding-Editor Cursor ist Version 1.0 erschienen, die mit BugBot eine neue Komponente einführt. Diese setzt bei GitHub-Pull-Requests einen neuen Link „Fix in Cursor“, der in die IDE wechselt und dort einen passenden Prompt für den Coding-Assistenten erstellt. Dieser wiederum arbeitet den Fix dann im Code automatisiert ein.
In der GitHub-Ansicht im Editor findet sich der neue Link „Fix in Cursor“ für BugBot.
(Bild: Screenshot Cursor)
Eine Erweiterung des Kontexts bieten Memories. Anwenderinnen und Anwender hinterlegen sie in einem Projekt, und der Assistent bezieht diesen Kontext künftig standardmäßig in seine Überlegungen mit ein.
Als weitere Neuerungen lassen sich MCP-Server laut Blog jetzt aus Projekten mit einem Klick aufsetzen, und die IDE unterstützt Jupyter Notebooks sowie OAuth. Der Chat erzeugt Flussdiagramme und Markdown. Schließlich ist der Background Agent für asynchrone und parallel arbeitende Remote-KI-Assistenten nun allgemein verfügbar.
(Bild: TechSolution/Shutterstock)
Nach dem großen Erfolg der ersten betterCode() GenAI findet die Online-Konferenz zur KI-gestützten Softwareentwicklung am 26. Juni erneut statt.
Die Veranstalter iX und dpunkt.verlag haben das Programm der Konferenz aktualisiert und anhand des Feedbacks weiter verbessert. Es bietet folgende Vorträge:
- Softwareentwicklung mit Copilot, ChatGPT und Co
- Was gibt es Neues bei KI-Coding-Tools?
- Software mit KI-Unterstützung testen
- Mit ChatGPT Dinosaurier besiegen – LLMs für die Analyse alter Systeme
- Stärken und Schwächen KI-unterstützter, sicherer Softwareentwicklung
- Rechtliche Aspekte KI-gestützter Softwareentwicklung
(who)
Entwicklung & Code
Testing Unleashed: Aktuelle Herausforderungen für Tester
In dieser Episode seines englischsprachigen Podcasts „Testing Unleashed“ spricht Richard Seidl über die Bedeutung von Qualität als Haltung im Software Testing. Er zeigt, wie sich die Rolle des Testers in den letzten Jahrzehnten gewandelt hat.
Richard Seidl betont die Notwendigkeit, Qualität als integralen Bestandteil des gesamten Softwareentwicklungsprozesses zu betrachten. In Zeiten von Agile und DevOps sind neue Denkansätze gefragt, um den Herausforderungen der Softwarequalität zu begegnen.
Dieser Podcast betrachtet alles, was auf Softwarequalität einzahlt: von Agilität, KI, Testautomatisierung bis hin zu Architektur- oder Code-Reviews und Prozessoptimierungen. Alles mit dem Ziel, bessere Software zu entwickeln und die Teams zu stärken. Frei nach dem Podcast-Motto: Better Teams. Better Software. Better World.
Richard Seidl spricht dabei mit internationalen Gästen über modernes Software-Engineering und wie Testing und Qualität im Alltag gelebt werden können.
Die aktuelle Ausgabe ist auch auf Richard Seidls Blog verfügbar: „Testing Unleashed: Aktuelle Herausforderungen für Tester“ und steht auf YouTube bereit.
(mdo)
Entwicklung & Code
programmier.bar: CTO-Special mit Peyman Pouryekta – Interim CTO und Berater
Peyman Pouryekta berät heute als selbstständiger Experte CTOs, Firmen und Venture Funds – doch sein Weg dorthin war alles andere als geradlinig. Geboren 1982 in Teheran, kam er als Kind nach Deutschland, machte später eine Elektriker-Ausbildung, brach ein Studium ab und fand schließlich über einen weiteren Ausbildungsweg zur Softwareentwicklung. In den 2010er Jahren arbeitete er in Berlin schon früh mit neuronalen Netzen, KI und skalierbaren Produkten.
Im Gespräch mit Jan Gregor Emge-Triebel und Dennis Becker geht es um Peymans Ausbildungsweg, seine ersten Leadership-Rollen und seine Entscheidung für die Selbstständigkeit. Außerdem diskutieren die drei, welche Fehler Führungskräfte sowie Gründerinnen und Gründer häufig machen – und welche Rolle künstlliche Intelligenz in Zukunft spielen wird.
Empfohlener redaktioneller Inhalt
Mit Ihrer Zustimmung wird hier ein externer Inhalt geladen.
Die aktuelle Ausgabe des Podcasts steht auch im Blog der programmier.bar bereit: „Peyman Pouryekta – Interim CTO und Berater„. Fragen und Anregungen gerne per Mail oder via Mastodon, Bluesky, LinkedIn oder Instagram.
(mai)
Entwicklung & Code
Neuerungen in C++26: Datenparallele Datentypen (SIMD)
Die SIMD-Bibliothek bietet in C++26 portable Typen zur expliziten Angabe von Datenparallelität und zur Strukturierung von Daten für einen effizienteren SIMD-Zugriff. Bevor wir uns im Detail mit der neuen Bibliothek befassen, möchte ich kurz ein paar allgemeine Anmerkungen zu SIMD (Single Instruction, Multiple Data) voranschicken.
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++.
SIMD – Single Instruction, Multiple Data
Vektorisierung bezieht sich auf die SIMD-Erweiterungen (Single Instruction, Multiple Data) des Befehlssatzes moderner Prozessoren. SIMD ermöglicht es dem Prozessor, eine Operation parallel auf mehrere Daten anzuwenden.
Ein einfaches Beispiel: Ob ein Algorithmus parallel und vektorisiert ausgeführt wird, hängt von vielen Faktoren ab – unter anderem davon, ob die CPU und das Betriebssystem SIMD-Befehle unterstützen. Außerdem kommt es auf den Compiler und den Optimierungsgrad an, der zum Kompilieren des Codes eingesetzt wird.
// SIMD.cpp
const int SIZE= 8;
int vec[]={1,2,3,4,5,6,7,8};
int res[SIZE]={0,};
int main(){
for (int i= 0; i < SIZE; ++i) {
res[i]= vec[i]+5; // (1)
}
}
Zeile 1 ist die Schlüsselzeile in dem kleinen Programm. Dank des Compiler Explorers ist es recht einfach, die Assemblerbefehle für Clang 3.6 mit und ohne maximale Optimierung (-O3) zu generieren.
Ohne Optimierung
Obwohl meine Zeit, in der ich mit Assemblerbefehlen herumgespielt habe, lange vorbei ist, ist es offensichtlich, dass alles sequenziell ausgeführt wird:
(Bild: Rainer Grimm)
Mit maximaler Optimierung
Durch die Verwendung der maximalen Optimierung erhalte ich Befehle, die parallel auf mehreren Datensätzen ausgeführt werden:
(Bild: Rainer Grimm)
Die Move-Operation (movdqa
) und die Add-Operation (paddd
) verwenden die speziellen Register xmm0
und xmm1
. Beide Register sind sogenannte SSE-Register mit einer Breite von 128 Bit. Damit können 4 ints
auf einmal verarbeitet werden. SSE steht für Streaming SIMD Extensions. Leider sind Vektorbefehle stark von der eingesetzten Architektur abhängig. Weder die Befehle noch die Registerbreiten sind einheitlich.
Moderne Intel-Architekturen unterstützen meist AVX2 oder sogar AVX-512. Dies ermöglicht 256-Bit- oder 512-Bit-Operationen. Damit können 8 oder 16 ints
parallel verarbeitet werden. AVX steht für Advanced Vector Extension.
Genau hier kommen die neuen datenparallelen Datentypen der Bibliothek ins Spiel, die eine einheitliche Schnittstelle zu Vektorbefehlen bieten.
Datenparallele Typen (SIMD)
Bevor ich mich mit der neuen Bibliothek beschäftige, sind einige Definitionen erforderlich. Diese Definitionen beziehen sich auf den Proposal P1928R15. Insgesamt umfasst die neue Bibliothek sechs Proposals.
(Bild: Rainer Grimm)
Die Menge der vektorisierbaren Typen umfasst alle Standard-Ganzzahltypen, Zeichentypen sowie die Typen float
und double
. Darüber hinaus sind std::float16_t
, std::float32_t
und std::float64_t
vektorisierbare Typen, sofern sie definiert sind.
Der Begriff datenparallel bezieht sich auf alle aktivierten Spezialisierungen der Klassen-Templates basic_simd
und basic_simd_mask
. Ein datenparalleles Objekt ist ein Objekt vom datenparallelen Typ.
Ein datenparalleler Typ besteht aus einem oder mehreren Elementen eines zugrunde liegenden vektorisierbaren Typs, der als Elementtyp bezeichnet wird. Die Anzahl der Elemente ist für jeden datenparallelen Typ eine Konstante und wird als Breite dieses Typs bezeichnet. Die Elemente in einem datenparallelen Typ werden von 0 bis Breite −1 indiziert.
Eine elementweise Operation wendet eine bestimmte Operation auf die Elemente eines oder mehrerer datenparalleler Objekte an. Jede solche Anwendung ist in Bezug auf die anderen nicht sequenziell. Eine unäre elementweise Operation ist eine elementweise Operation, die eine unäre Operation auf jedes Element eines datenparallelen Objekts anwendet. Eine binäre elementweise Operation ist eine elementweise Operation, die eine binäre Operation auf entsprechende Elemente zweier datenparallelisierter Objekte anwendet.
Nach so viel Theorie möchte ich nun ein kleines Beispiel zeigen. Es stammt von Matthias Kretz, Autor des Proposals P1928R15. Das Beispiel aus seiner Präsentation auf der CppCon 2023 zeigt eine Funktion f
, die einen Vektor entgegennimmt und dessen Elemente auf ihre Sinuswerte abbildet:
void f(std::vector& data) {
using floatv = std::simd;
for (auto it = data.begin(); it < data.end(); it += floatv::size()) {
floatv v(it);
v = std::sin(v);
v.copy_to(it);
}
}
Die Funktion f
nimmt einen Vektor von Floats (data) als Referenz. Sie definiert floatv
als SIMD-Vektor von Floats unter Verwendung von std::simd
. f
durchläuft den Vektor in Blöcken, wobei jeder Block die Größe des SIMD-Vektors hat.
Für jeden Block gilt:
- Lädt den Block in einen SIMD-Vektor (
floatv v(it);
). - Wendet die Sinusfunktion gleichzeitig auf alle Elemente im SIMD-Vektor an (
v = std::sin(v);
). - Schreibt die Ergebnisse zurück in den ursprünglichen Vektor (
v.copy_to(it);
).
Die Behandlung von SIMD-Anweisungen wird besonders elegant, wenn der Proposal P0350R4 in C++26 implementiert wird. SIMD kann dann beispielsweise als neue Execution Policy in Algorithmen verwendet werden:
void f(std::vector& data) {
std::for_each(std::execution::simd, data.begin(), data.end(), [](auto& v) {
v = std::sin(v);
});
}
Wie geht es weiter?
In meinem nächsten Artikel werde ich mich näher mit der neuen SIMD-Bibliothek befassen.
(map)
-
Online Marketing & SEOvor 6 Tagen
Aus Marketing, Medien, Agenturen & Tech: Diese 40 klugen Köpfe unter 40 müssen Sie kennen
-
Digital Business & Startupsvor 5 Tagen
Von Peter Thiel finanziertes Krypto-Startup Bullish will an die Börse
-
Künstliche Intelligenzvor 6 Tagen
Amazon soll Werbung bei Prime Video verdoppelt haben
-
Social Mediavor 3 Tagen
LinkedIn Feature-Update 2025: Aktuelle Neuigkeiten
-
Online Marketing & SEOvor 5 Tagen
Influencer Marketing: Warum Influencer Vertrauen verlieren und klassische Medien gewinnen
-
Apps & Mobile Entwicklungvor 3 Tagen
So gut ist Dune: Awakening: Dune sehen und durch Sandwürmer sterben
-
UX/UI & Webdesignvor 5 Tagen
Wie gelingt eine einwandfreie Zusammenarbeit?
-
Datenschutz & Sicherheitvor 6 Tagen
CCC: Gesammelte Ausweisdaten von Übernachtungsdienstleister Numa gefunden