Connect with us

Künstliche Intelligenz

Cross-Plattform-Applikationen mit Rust 2: Crux-Architektur in der Praxis


close notice

This article is also available in
English.

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


Portrait Marcel Koch

Portrait Marcel Koch

Marcel Koch berät mit seinem siebenköpfigen Team kleine und mittelständische Unternehmen und entwickelt branchenübergreifend Cross-Platform-Apps für Desktop und Mobile sowie Webapplikationen – bevorzugt mit TypeScript, Rust, Flutter oder Java, gestützt auf CI/CD und IaC. Dabei setzt er auf pragmatische, passgenaue Lösungen, denn Software ist kein Selbstzweck. Neben soliden technischen Kenntnissen schult er in Gewaltfreier Kommunikation, Transaktionsanalyse sowie Agilität und fördert einen kritischen Blick auf Cloud Hypes. Marcel ist Speaker, Autor von Fachartikeln und Büchern und regelmäßig in Podcasts zu hören.

Die Programmiersprache Rust eignet sich gut für die Umsetzung von Cross-Plattformprojekten. Der erste Teil der Artikelserie hat die grundlegenden Konzepte einer langlebigen Cross-Plattform-Architektur vorgestellt: Ein herausgelöster Core in Rust bildet das Fundament für nachhaltige Apps. Die Implementierung eines einfachen MVVM-Patterns mit ViewModel, Actions und State zeigte eine einfache konkrete Umsetzung dieses Ansatzes. Wie sich die Architektur verfeinern lässt, zeigt sich, wenn man sie um Validierungen erweitert.

Weiterlesen nach der Anzeige

Das in Rust geschriebene Framework Crux für die plattformübergreifende Entwicklung implementiert die im ersten Artikelteil vorgestellten Konzepte. Was Aktion hieß, nennt Crux Event. Der Zustand(State) heißt Model. Durch den ähnlichen Namen ist die Grenze zum ViewModel leider nicht mehr ganz so deutlich. Das ViewModel heißt nämlich auch bei Crux ViewModel. Umso wichtiger ist es, die Abgrenzung bei der Umsetzung im Hinterkopf zu behalten.

Zudem bringt Crux mit Effect und Command noch weitere wichtige Konzepte mit.

Ein Effect bildet einen Seiteneffekt der hexagonalen Architektur ab. In diesem Kontext sind Seiteneffekte gleichbedeutend mit Plattformspezifika und dem Rendern des User Interface (UI). Dabei ist ein Effect keine Einbahnstraße. Durch ein Command lässt es sich mit einem Event verknüpfen, sodass der verarbeitete Effekt beantwortet und die Antwort in der App auf ein weiteres Event angewendet werden kann. Auf diese Art lässt sich der Zugriff auf das jeweilige Dateisystem und auf native APIs abstrahieren und umsetzen.

Crux definiert außerdem die Begriffe App, Core und Shell.

Weiterlesen nach der Anzeige

  • Die App ist das zentrale Trait und ein Pendant zum Core aus Teil 1
  • Core umhüllt die App und sorgt dafür, dass ein Event in die App hinein- und nur eine Liste von Effect oder das ViewModel aus der App hinausgeht
  • Shell bezeichnetet den Konsumenten des Cores (bepackt mit der App), wie eine native App auf Basis von Swift, Kotlin oder C#



Die Architektur von Crux unterscheidet App, Core und Shell und Effekte (Abb. 1)

(Bild: Marcel Koch)

Das zuvor in Teil 1 implementierte Beispiel wird erneut aufgegriffen und auf Crux übertragen. Als Erstes die einfachen Typen (Listing 1):

Listing 1: Crux: Event/Model/ViewModel-Definitionen


#[derive(Deserialize, Serialize)]
pub enum Event {
    ChangeName(String),
    ChangeEmail(String),
    ApplyChanges,
}

#[derive(Default)]
pub struct Model {
    name: String,
    email: String,
}

#[derive(Deserialize, Serialize)]
pub struct ViewModel {
    pub name: String,
    pub email: String,
}


Hierbei gibt es keine Überraschungen. Actions werden zu Event (Einzahl), State wird zu Model und das ViewModel bleibt bestehen.

Als Nächstes die neuen Typen (Listing 2):

Listing 2: Crux: Effect-Enum und App-Struct


#[effect]
pub enum Effect {
    Render(RenderOperation),
}

#[derive(Default)]
pub struct EmailApp;


Das Enum Effect definiert alle möglichen Kommunikationen aus dem Core hinaus. Das Struct EmailApp bleibt leer. Es implementiert im nächsten Schritt das Trait App von Crux.

Die Implementierung von App ist in drei Blöcke (siehe Kommentare in Listing 3) unterteilt.

Listing 3: Crux: App-Trait-Implementierung


impl App for EmailApp {
    // 1
    type Event = Event;
    type Model = Model;
    type ViewModel = ViewModel;
    type Capabilities = (); // deprecated
    type Effect = Effect;

    // 2
    fn update(
        &self,
        event: Self::Event,
        model: &mut Self::Model,
        _caps: &Self::Capabilities,
    ) -> Command<:effect self::event=""> {
        match event {
            Event::ChangeEmail(email) => {
                model.email = email.clone();
            }
            Event::ChangeName(name) => {
                model.name = name.clone();
            }
            Event::ApplyChanges => {}
        }
        render()
    }

    // 3
    fn view(&self, model: &Self::Model) -> Self::ViewModel {
        ViewModel {
            name: model.name.clone(),
            email: model.email.clone(),
        }
    }
}


Der erste Block legt die grundlegenden assoziierten Typen fest, die App vorsieht. Diese Typen sind aus Listing 1 und 2 bekannt. Der Typ Capabilities ist ein Relikt und gilt als veraltet (deprecated). Dieses Konzept wurde vor der Einführung von Command genutzt. Daher ist es lediglich aus Gründen der Rückwärtskompatibilität vorhanden und lässt sich ignorieren.

Die update-Methode nimmt eingehende Events entgegen und passt daraufhin den Zustand (Model) an. Änderungen am Namen oder der E-Mail-Adresse werden auch hier direkt im Model gespeichert. Nach der Verarbeitung eines Events wird ein RenderEffect ausgelöst. Dieser kann in der Shell aufgegriffen, das ViewModel angefragt und das Re-Rendering angestoßen werden.

Die view-Methode in Abschnitt 3 bietet die Schnittstelle, um das ViewModel zu erstellen. Wie zuvor erzeugt das ViewModel das aktuelle Model (Zustand) und bereitet die relevanten Informationen für die UI so auf, dass die Benutzeroberfläche sie direkt anzeigen kann.

Um die App zu verwenden, gilt es diese im Core zu umhüllen (zu wrappen):

let core: Arc> = Arc::new(Core::new());

Dieser Core-Instanz lässt sich ein Event übergeben und die zurückkommenden Effekte können verarbeitet werden (Listing 4).

Listing 4: Crux: Effect-Verarbeitung


let effects: Vec =
    core.process_event(ChangeEmail("marcel.koch@example.org".into()));

for effect in effects {
  match effect {
    Effect::Render(_) => {
      let view_model = core.view();
      
      assert_eq!(view_model.email, "marcel.koch@example.org")
    }
  }
}


process_event nimmt das Event entgegen und gibt eine Liste von Effekten zurück. Das Beispiel behandelt nur eine Art von Effect: Render. Es wird geprüft, ob das ViewModel die eben übergebene E-Mail-Adresse enthält.

Ist das UI verbunden, tritt es bei jeder Änderung der E-Mail-Adresse auf.

Geht es nicht um einen reinen Aufruf innerhalb von Rust, ist die Integration in andere Technologien abhängig von Serialisierung. Diese Aufgabe übernimmt auf der Rust-Seite die Bridge. Ein einfacher Einsatz sähe in Rust wie folgt aus:

Listing 5: Crux: Bridge-Integration


let serialized = 
    bincode::serialize(&ChangeEmail("marcel.koch@example.org".into())).unwrap();

let effects: Vec = bridge.process_event(&serialized).unwrap();

let effects: Vec> =
bincode::deserialize(effects.as_slice()).unwrap();

for request in effects {
  let effect = request.effect;
  
  match effect {
    EffectFfi::Render(_) => {
    let view_model = bridge.view().unwrap();
    let view_model: ViewModel =
    bincode::deserialize(&view_model).unwrap();
    
    assert_eq!(view_model.email, "marcel.koch@example.org")
    }
  }
}


Es ist der gleiche Ablauf wie zuvor mit dem reinen Core. Die einzigen Unterschiede sind die Serialisierung des Events und die Deserialisierung der Effekte und des ViewModel. Diese Serialisierungen werden in einem realistischen Einsatz in den jeweiligen Fremdtechnologien (.NET, Swift etc.) durchgeführt. Diese Umsetzung zeigt der nächste Teil dieser Artikelserie.



Source link

Künstliche Intelligenz

GhostClaw: Infostealer für macOS auf GitHub


Apple-Systeme werden aktuell vermehrt angegriffen: Nach dem Exploitkit Coruna und der mittlerweile auf GitHub aufgetauchten Malware DarkSword, die Kriminellen als Vorbild dienen könnte, kursiert in gefälschten Repositories und via npm aktuell auch der macOS-Infostealer GhostClaw. Dieser versucht vom aktuellen Boom beim KI-Agenten OpenClaw zu profitieren und hofft, auf Nutzer zu treffen, die sich wenig mit dem Terminal auskennen – und dort Befehle einzutippen, die die Installation erst ermöglichen. Auch Entwickler, die nach OpenClaw-Werkzeugen suchen, könnten in die Falle tappen.

Weiterlesen nach der Anzeige

Wie unter anderem die Jamf Threat Labs festgestellt haben, nutzt GhostClaw auch die Tatsache aus, dass Development zunehmend KI-unterstützt erfolgt. Die Kampagne läuft offenbar bereits seit Anfang März, GhostClaw wird teilweise auch als GhostLoader bezeichnet. Hauptinstallationsweg war anfangs der Node.js-Paketmanager npm. Nun fand Jamf Threat Labs mehrere GitHub-Repositories, die ebenfalls der Verbreitung dienen. Mindestens acht neue Proben von GhostClaw wurden entdeckt.

Das Problem: Sowohl die npm-Pakete als auch das Material auf GitHub gibt sich als ungefährliche Software aus beziehungsweise kopiert bekannte Produkte, darunter SDKs, Entwicklerwerkzeuge und sogenannte Trading Bots für den Handel mit Kryptowährungen. Laut Jamf Threat Labs erfolgt dabei eine Art Rug Pull: Ungefährlicher oder gar nicht funktionierender Code bleibt zunächst aktiv, wird dann einige Wochen später aber durch die Malware-Komponenten ersetzt oder ergänzt. Dieses Vorgehen soll offenbar Vertrauen erschwindeln.

Einige der entdeckten GhostClaw-Repositories, darunter das sogenannte antigravity-pack, enthalten sogar ein README-Dokument, in dem auch Anfängern beigebracht wird, wie sie die Malware zu installieren haben – inklusive Passwort-Eingabe. Auch via OpenClaw lässt sich der Schadcode installieren, dabei wird das SKILL-System von dem KI-Agenten missbraucht. GhostClaw ist zudem an macOS angepasst und generiert über das Osascript-Kommando auf den ersten Blick authentisch wirkende Dialoge, über die man zu Freigaben genötigt werden soll. Jamf Threat Labs nennt in seiner Analyse diverse Indicators of Compromise, also Dateien, mit denen sich eine Infektion feststellen lässt.

GhostClaw/GhostLoader stiehlt unter anderem Passwörter, interessiert sich für Krypto-Wallets und will Vollzugriff auf die Mac-SSD. Damit ist letztlich alles möglich. Auch ein entfernter Command-and-Control-Server wird angesprochen, Angreifer könnten den Mac also auch fernsteuern. Nutzer sollten ganz genau hinsehen, welche Repositories sie installieren oder über npm auf ihren Mac holen. Infos zum Vorgehen von GhostClaw via npm hat Jfrog Security Research zusammengetragen.

Weiterlesen nach der Anzeige


(bsc)



Source link

Weiterlesen

Künstliche Intelligenz

Tipps, Tests, Reports: Mac & i 2/2026 jetzt vorab als Heft und PDF erhältlich


Die neue Mac & i ist da! Heute bekommen Sie die Ausgabe 2/2026 vorab im heise shop (sowohl im Print-Format, als auch als PDF), ab Freitag gibt es sie im gut sortierten Kiosk und im Bahnhofsbuchhandel. Das Heft enthält unter anderem folgende Themen:

Weiterlesen nach der Anzeige

So spannend waren Mac-Tests schon lange nicht mehr: Apple hat mit dem MacBook Neo eine neue Produktreihe eingeführt – überraschend günstig, äußerlich hochwertig, im Inneren mit einem iPhone-Chip. Geht das Konzept auf? Das haben wir ebenso geprüft wie das neue MacBook Air und das Pro, das noch mehr als bisher auf Leistung statt Effizienz setzt.



Blick in die Mac & i 2/2026.

Die einen freuen sich, dass sie Final Cut & Co. für einen Monat lang günstig buchen können. Die anderen ärgern sich über unterschiedliche App-Versionen und nervige Abo-Aufforderungen. Wir haben ausgerechnet, für wen sich das Abo lohnt und was es zu beachten gibt. Außerdem haben wir die aktualisierten Apps des Bundles getestet, von Pages über Final Cut bis hin zu Pixelmator Pro.

In Gang kommen, dranbleiben, sich verbessern: Die Apple Watch unterstützt dabei, Fitnessziele zu erreichen. Wir liefern Tipps für die Training-App und empfehlen weitere Apps für den Sport. Zudem stellen wir eine wissenschaftliche Studie vor, die die Qualität der Herzfrequenzmessung der Watch unter die Lupe nimmt.

Weiterlesen nach der Anzeige

  • Wie gut wir den AirTag 2 finden
  • Einstieg in Kurzbefehle
  • KI-Kurzbefehle selbst bauen
  • Smart-Home mit Ikea: günstig und gut?
  • Was Ihnen Smart Gardening bringt
  • iPhone ohne iCloud: Was geht, was nicht?
  • Tschüss USA – gute Apps aus Europa
  • Apple Studio Display mit Thunderbolt 5 im Test
  • Wetterstationen mit iPhone-Anbindung
  • 5G-Router für mobiles WLAN
  • Höhen und Tiefen: 50 Jahre Apple

…und vieles mehr.

Die Mac & i können Sie im heise Shop erwerben (in den ersten Tagen nach der Veröffentlichung versandkostenfrei), im Browser lesen oder in der Mac & i-App für iPhone und iPad, Android-Geräten und Kindle Fire laden.

Unter dem Dach von heise conferences bieten wir Online-Live-Webinare an. Eine ständig aktualisierte Übersicht finden Sie auf der Mac & i Webinarseite. Die nächsten Termine:


(tre)



Source link

Weiterlesen

Künstliche Intelligenz

Meta streicht Stellen und treibt KI-Umbau voran


Meta hat am Mittwoch rund 700 Angestellte in Reality Labs sowie weitere Beschäftigte in der Personalgewinnung, im Vertrieb und bei Facebook entlassen, berichtet die New York Times. Reality Labs ist Metas Hardware-Sparte und für die Entwicklung von Smart Glasses und VR-Brillen zuständig.

Weiterlesen nach der Anzeige

Meta hatte schon im Januar 1.500 Stellen in der Abteilung gestrichen. Betroffen war primär die VR-Sparte. Der Konzern erklärte damals, dass er Investitionen vom Metaverse hin zur Wearables-Sparte verlagere, weil diese stärker wachse. Meta ist Marktführer bei KI-Brillen und hat seit Ende 2023 knapp zehn Millionen Geräte verkauft. Aus dem Bericht geht nicht hervor, auf welche Sparten die 700 neuen Kündigungen entfallen. Meta beschäftigte Ende des vergangenen Jahres knapp 79.000 Angestellte, rund 15.000 davon in Reality Labs.

Die jüngsten Maßnahmen erfolgen vor dem Hintergrund einer strategischen Neuausrichtung hin zu künstlicher Intelligenz. Meta plant in diesem Jahr Investitionen von bis zu 135 Milliarden Dollar, die überwiegend in die eigene KI-Infrastruktur und den Bau von Rechenzentren fließen sollen. Im vergangenen Jahr gab Meta zudem Milliarden für hoch qualifizierte KI-Fachkräfte aus. Ziel ist es, im Rennen um eine KI-Superintelligenz eine führende Rolle einzunehmen.

Das US-Nachrichtenportal Business Insider berichtet derweil, dass in einem rund 1.000 Personen starken Team innerhalb von Reality Labs eine grundlegende Neuordnung von Rollen und Teamstrukturen mit Blick auf künstliche Intelligenz erfolgt. Das Pilotprogramm sieht kleinere, funktionsübergreifende Teams und flachere Strukturen vor. Laut Meta stehen die Neuorganisation und die aktuellen Entlassungen dabei in keinem direkten Zusammenhang.

Laut einem internen Memo werden die Beschäftigten als „AI Builders“ neu eingeordnet und in sogenannten „Pods“ organisiert. Diese Einheiten bestehen aus wenigen Personen, die ergebnisorientiert und oft disziplinübergreifend arbeiten sollen. Die Pods werden von „Pod Leads“ geleitet, die wiederum „Org Leads“ unterstellt sind. Prozesse wie Leistungsbewertungen und Beförderungen sollen dabei von nicht näher bezeichneten „KI-Systemen“ unterstützt werden. Bereits im Februar sickerte durch, dass Meta die Mitarbeiterleistung künftig daran messen will, wie stark diese KI-Werkzeuge nutzen.

Parallel dazu setzt Meta verstärkt auf finanzielle Anreize für seine Führungsspitze. Erstmals seit dem Börsengang 2012 bietet der Konzern Top-Managern neue Aktienoptionen an, die an ambitionierte Kursziele geknüpft sind, berichtet Bloomberg. Demnach könnte der Wert der Vergütung in den kommenden fünf Jahren um bis zu 921 Millionen Dollar pro Führungskraft steigen. Vorausgesetzt natürlich, dass Meta die hochgesteckten Wachstumsziele erreicht. Der Konzern erklärte, die Maßnahme solle dazu dienen, Schlüsselpersonal im KI-Zeitalter zu binden und das Unternehmen zum Wachstum anzutreiben.

Weiterlesen nach der Anzeige


(tobe)



Source link

Weiterlesen

Beliebt