The core gains Swift's virtual file system (paths, case-insensitive lookup that keeps the spelling, quotas, atomic changes, the defaults of a new device) and the string behaviour the ported code relies on without saying so. Both are measured in the Swift oracle: 11 file system cases (the three Swift tests among them) step by step, and trimming, lower case, equality, ordering and Base64 case by case — whitespace and control characters over all of Unicode. Found by measuring: - Swift trims NEL and ZERO WIDTH SPACE, not the BOM; JS trim() does the opposite. The .fls import now trims with swiftTrim. - lowercased() maps scalar by scalar: a word-final sigma stays σ. - Foundation decodes "====" and "Y===" as empty data. - Foundation on Linux counts 24,735 plane-14 scalars as control characters, a table artefact; the port keeps Unicode Cc+Cf. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
7.0 KiB
7.0 KiB
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, Firewall) |
ü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, 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); 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 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.