importProject turns a PC's or notebook's Java file tree into Swift's virtual file system, as Swift's registerVirtualFileSystem does: images by type or extension from Base64, text by type, unknown types as binary data or text, unsafe names and collisions left out with a warning, and the whole import rejected over the project quota. NSString.pathExtension is measured in the oracle, which now writes every imported file system. On the 13 files Swift reads completely every file matches, images compared by hash. Intended: a host whose file has no file system stays empty, as in Java, where Swift adds the demo files of a new device. Pending the applications step, the comparison reads our /webserver as Swift's /www and leaves out the e-mail and Gnutella state files. 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, Dateisysteme, 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); 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.