Files
mdg-filius/CHANGES.md
T
julian.kiedaischandClaude Opus 5.5 c3fe56ab16 feat(fls): import installed programs and their settings
importProject carries a host's installed programs into the model with
the settings Swift keeps (web server port, Gnutella peer limit, DNS
recursion and forwarder, personal firewall) and two it does not (the echo
server's port, the generic client's target), plus Java's "switched on".
The Swift oracle writes programs and settings; they match on the 13 files
Swift reads completely.

Intended differences, named in the test:
- every FILIUS program is kept; Swift drops command prompt, text
  editor, file explorer, image viewer, echo server and generic client;
- a web server's files stay in /webserver, its document root; Swift
  moves them to /www. No program state goes into a host's files.
- multicast_server.fls: maxTeilnehmerZahl refers to a shared Integer
  (a button's icon text gap, 4); Swift falls back to 3.

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

7.3 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); 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; 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/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
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.