Files
mdg-filius/CHANGES.md
T
julian.kiedaischandClaude Opus 5.5 ec5523d7c7 feat(fls): Java's view of the e-mail programs
The Java view now reads what FILIUS 2.14 keeps for its e-mail programs:
the server's domain, switch and bean accounts with their mailboxes, and the
accounts of /mailserver/konten.txt, which Java reads at every simulation
start and which so win over the bean list; the client's three folders and
address book, and its account from /konten.txt (no bean holds it).

javaEmail.ts ports the bean setters and both file readers
(stringZuListeBenutzerkonten, EmailKonto(String)); javaString.ts Java's
trim, split and StringTokenizer; javaFileSystem.ts the file lookup, now
shared with the DNS server, with the four non-ASCII units Java's
equalsIgnoreCase also takes for an ASCII letter (measured over the BMP).

Checked against Java on the corpus (the oracle dumps the e-mail state) and
on 43 account files read by EmailServer.kontenLaden and
EmailAnwendung.laden (EmailFileCases). Found: older files keep recipients
as strings in the typed lists; a getter copy of the sender is filled and
set back; one short server line makes Java throw for the whole file; a
message with an empty text is lost on reading; a broken last client line
empties the account.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 07:06:55 +00:00

9.0 KiB
Raw Blame History

Herkunft und Änderungen

Nach GPL §5a: was aus welcher Quelle übertragen und wie es verändert wurde. Swift-Pfade relativ zu filius-ipad/ios/FiliusPad/TopologyEditor/ (Stand 3b5ded0, 27.08.2026), Tests relativ zu filius-ipad/ios/FiliusPadTests/.

packages/core

Datei Quelle Art der Übertragung
src/ids.ts Swift-Sortierung nach UUID.uuidString neu, bildet die Swift-Ordnung nach
src/model/node.ts Model/TopologyNode.swift übertragen; Standard-Ports und -Namen wie Java; ein gegebener Name bleibt, auch leer (Java lässt Router unbenannt)
src/model/link.ts, src/model/graph.ts Model/TopologyLink.swift, Model/TopologyGraph.swift übertragen, bisher nur die Daten (Abfragen folgen mit dem Editor)
src/model/documentation.ts Model/TopologyDocumentation.swift übertragen; FNV-Kennung mit BigInt, gegen die IDs aus dem Swift-Import geprüft
src/runtime/config.ts State/TopologyEditorState.swift (Laufzeit-Konfigurationen, WLAN eines Rechners, DHCP, Portweiterleitung, Remote Link ohne LAN-Transport, Programme und ihre Konfiguration, Firewall, DNS-Einträge aus State/TopologyDNSResolver.swift); dazu Echo-Server- und Client-Konfiguration, die Swift nicht speichert übertragen; Java-Beschriftungen der Oberfläche weggelassen
src/runtime/engine.ts State/TopologyNetworkRuntimeEngine.swift Z. ~313–3585, ~4753–4850 übertragen: Warteschlange, Uhr, Ethernet, Switch, ARP, IPv4, ICMP, Routing, Firewall. Klasse statt Werttyp. Noch nicht übertragen (wirft NotPortedError): Gateway-NAT, UDP, TCP, DHCP, DNS, RIP, Remote Link, WLAN
src/runtime/ipv4.ts Engine parseIPv4/sameSubnet übertragen
src/runtime/packets.ts Engine, Paketmodelle übertragen; Data → Uint8Array
src/runtime/random.ts Engine, TopologyJavaCompatibleRandom übertragen; BigInt für die 48-Bit-Arithmetik
src/runtime/routeTable.ts State/TopologyJavaRouteTable.swift übertragen ohne Tabellengeometrie (gehört in den Editor)
src/runtime/snapshot.ts Engine, TopologyNetworkRuntimeTopologySnapshot übertragen, bisher mit den Feldern der übertragenen Schichten
src/runtime/speed.ts Engine, TopologyNetworkRuntimeSpeed übertragen
src/runtime/trace.ts Engine, Paketspur-Modell übertragen
src/util/equal.ts — neu (Ersatz für Swifts Equatable)
src/util/swiftString.ts — neu: Swift-String-Verhalten, das der übertragene Code stillschweigend voraussetzt (Trimmen, Kleinschreibung je Skalar, kanonische Gleichheit, Sortierung nach Skalarwerten, Base64 wie Foundation); am Swift-Orakel gemessen, Leerraum und Steuerzeichen über ganz Unicode
src/model/virtualFileSystem.ts, src/model/defaultImages.ts State/TopologyVirtualFileSystem.swift übertragen; Schlüssel in NFC statt Swifts kanonischer Wörterbuch-Gleichheit; Steuerzeichen nach Unicode Cc+Cf, ohne Foundations Tabellenfehler in Ebene 14
test/virtualFileSystem.test.ts, test/vfs.*.json TopologyProjectPersistenceTests.swift, TopologyEditorReducerTests.swift (drei Dateisystem-Tests, als Fälle) übertragen und erweitert: 11 Fälle, Ergebnis aus dem Swift-Kern
test/strings.test.ts, test/strings.*.json — neu: Fälle und ganze Zeichenmengen, Ergebnis aus dem Swift-Kern
test/engine.test.ts TopologyNetworkRuntimeEngineTests.swift (21 von 72 Tests) übertragen; nextInt-Referenzwerte an OpenJDK 21 gemessen
test/oracle.test.ts, test/scenarios/ — neu: 5 Szenarien, Ergebnis mit dem Swift-Kern abgeglichen (tools/swift-oracle)
test/routeTable.test.ts TopologyJavaRouteTableTests.swift (8 von 12 Tests) übertragen; Geometrie- und Reducer-Tests folgen mit Editor und Dokument

packages/fls

Datei Quelle Art der Übertragung
src/zip.ts Persistence/TopologyFLSArchive.swift (Fehler, Grenzen, Pfadregeln, ZIP-Leser/-Schreiber, CRC-32) übertragen; DEFLATE über fflate, mit Apples Abschneide-Verhalten nachgebildet; Pfadfaltung (NFC, Breite, volles Case-Folding) an 41 Paaren gegen das Swift-Orakel gemessen
src/archive.ts ebenda, Archiv-Teil von Import und Export übertragen, ohne die XML-Ebene
src/javabeans.ts, src/javaDefaults.json — neu: XMLEncoder-Leser nach den Regeln von java.beans.XMLDecoder (Swift liest elementweise und verliert geteilte Werte); Getter-Standardwerte und statische Konstanten mit tools/java-oracle gemessen
src/importProject.ts Persistence/TopologyProjectStore.swift (Knoten, Ports, Kabel, IP-Konfiguration, Switch/WLAN, Routen, RIP, Firewall, DHCP, Portweiterleitung, Modem, Dateisysteme, Programme, Doku-Elemente des Imports) übertragen, Eingabe ist Javas Sicht: Name und Port-Anzahl wie Java, abgelehnte Adresse → Swift-Standard, Router-Standardgateway wie Java (Swift verliert es), jede Router-Firewall eingetragen, Konfigurationstexte wie in Swift getrimmt (swiftTrim), Rechner ohne Dateisystem leer wie in Java (Swift: Demo-Dateien), alle Programme bleiben (Swift verwirft sechs), Webserver-Dateien bleiben in /webserver (Swift: /www), keine versteckten Zustandsdateien im Dateisystem, DNS-Einträge so, wie Javas Server sie aus /dns/hosts beantwortet; gegen Swifts importiertes Modell auf 13 Dateien geprüft
test/importProject.test.ts — neu: Swifts importiertes Modell (13 Dateien, zwei begründete Abweichungen), Vollständigkeit aller 23, Pings im Kern (über einen Router; über drei Router mit manuellen Routen und Router-Gateways)
src/systemSoftware.ts Java SwitchFirmware, Betriebssystem, VermittlungsrechnerBetriebssystem, GatewayFirmware, Weiterleitungstabelle, Firewall, FirewallRule, DHCPServer, ModemFirmware, Dateisystem, Datei neu nach Java: SSID, Lernzeit, RIP, manuelle Routen, Router-Firewall (an allen Stellen, an denen die Datei sie erreicht), DHCP, statische NAT, Modem, Dateisystem und installierte Programme von Rechner und Notebook; Character.isWhitespace am JDK gemessen; gegen Java geprüft
src/javaIp.ts Java IP.inetAton/ipCheck neu nach Java; an 46 Fällen mit Java gemessen
src/dnsHosts.ts Java DNSServer.leseRecordListe, ResourceRecord, Dateisystem.holeDatei; Swift State/TopologyDNSResolver.swift (TopologyDNSHostsFileCodec) als Vergleich neu nach Java: Felder nur an einzelnen Leerzeichen, keine Kommentare, ungültige TTL → 3600, Doppelte bleiben; ins Modell kommt nur, was Java beantwortet (Typ genau A/MX/NS, Name nicht leer); an 76 Fällen mit Java und Swift gemessen
src/topology.ts Java SzenarioVerwaltung.netzwerkLaden, Konstruktoren und Setter der Geräte; Swift Persistence/TopologyProjectStore.swift (Parser) als Vergleich neu nach Java statt Übertragung: Geräteart aus der Klasse statt aus der Beschriftung, Geräte ohne Koordinaten bei 0,0 statt verworfen, Werte durch Javas Setter
test/javabeans.test.ts — neu: je XMLDecoder-Regel ein Test; alle 23 Korpus-Dateien, Klasse und Position jedes Geräts wie Java
test/topology.test.ts — neu: alle 23 Korpus-Dateien Feld für Feld wie Java (Geräte, Schnittstellen, Kabel, Doku-Elemente), dazu die Regeln, die der Korpus nicht berührt
test/javaIp.test.ts, test/ip-check.* — neu: IP.ipCheck-Fälle, Ergebnis aus Java
src/javaEmail.ts Java EmailServer (Konten-Bean, kontenLaden/stringZuListeBenutzerkonten), EmailAnwendung (Ordner, Adressbuch, laden), EmailKonto, Email, AddressEntry, EmailUtils neu nach Java: E-Mail-Beans über ihre Setter, /mailserver/konten.txt und /konten.txt wie Javas Leser (StringTokenizer überspringt leere Felder, split verliert leere Felder am Ende); Empfänger älterer Dateien als Zeichenketten; gegen Java auf dem Korpus und an 43 Fällen geprüft
src/javaFileSystem.ts, src/javaString.ts Java Dateisystem.holeDatei, String.trim/split/equalsIgnoreCase, StringTokenizer neu nach Java; die Groß-/Kleinschreibung gegenüber ASCII am JDK über die ganze BMP gemessen
test/javaEmail.test.ts, test/email-*.cases.txt, test/email-*.java.json, test/javaEmailNames.ts, test/javaFileSystem.test.ts — neu: Kontodateien von Server und Client, Ergebnis aus Java; Dateifund
test/dnsHosts.test.ts, test/dns-hosts.* — neu: /dns/hosts-Fälle, Javas Sicht wie Java, das Modell wie Swift bis auf 33 benannte Fälle in zwölf Gründen
test/zip.test.ts TopologyProjectPersistenceTests.swift (Archiv-Ablehnungstests, makeMinimalZIP, makePayloadZIP) übertragen, ergänzt um DEFLATE-Grenzfälle
test/corpus.test.ts — neu: 23 Korpus-Dateien, gegengeprüft mit fflate.unzipSync
test/pathFolding.test.ts, test/path-folding.*.json — neu: welche Pfade dieselbe Datei meinen, Ergebnis aus dem Swift-Kern

tools/swift-oracle

Baut den unveränderten Swift-Kern (Stand 3b5ded0) unter Linux, nur zwei Ausdrücke sind für den Linux-Compiler aufgeteilt (patches/). Die Quellen selbst werden beim Bau geholt und nicht eingecheckt.