Comparison between:
- legacy C server:
../../Wired 2020-2021/wired - new Swift server:
.
Identify:
- legacy features already ported to the Swift version
- new features added in Wired 3
- features that are likely missing or only partially carried over
The comparison below is based on:
- legacy business modules in
wired/*.c - P7 message routing in
wired/messages.c - message routing in
Sources/wired3/Core/ServerController.swift - Swift controllers in
Sources/wired3/Controllers - legacy configuration
wired/wired.conf.in - Swift configuration
Sources/wired3/config.ini
Ported: legacy feature present on the Swift sideExtended: legacy feature present and enhanced in Wired 3Partial: partial presence, change of scope, or loss of some operationsMissing: no visible equivalent on the Swift sideNew: feature introduced in Wired 3, absent from the legacy server
Overall functional parity is good for the server core:
- authentication and sessions
- user management
- private messages and broadcast
- boards, threads, posts
- file transfers
- account administration
- banlist
- events
- logs
- trackers
The most notable gaps concern:
- some file metadata operations inherited from Wired 2
- a few legacy server operational functions
Recent parity completions on the Swift side include:
- persistent local tracker registry storage
- native filesystem monitoring for out-of-band changes on macOS and Linux
| Domain | Feature | Legacy C Server | New Swift Server | Status | Notes |
|---|---|---|---|---|---|
| Connection | Handshake / wired.client_info / wired.send_login / ping |
Yes | Yes | Ported | Routing present in wired/messages.c and Sources/wired3/Core/ServerController.swift. |
| Connection | Mandatory encryption | Yes | Yes | Ported | Legacy: force encryption; new: advanced.cipher = SECURE_ONLY. |
| Connection | Persistent server identity / TOFU | No | Yes | New | Implemented via ServerIdentity on the Swift side. |
| Connection | Brute-force protection / rate limiting | No | Yes | New | Login failure limits, connection caps, broadcast limits. |
| Users | wired.user.get_users |
Yes | Yes | Ported | Management present on Swift side in ServerController+Users.swift. |
| Users | wired.user.get_info |
Yes | Yes | Ported | Functional parity visible. |
| Users | wired.user.set_nick |
Yes | Yes | Ported | Present in Swift router. |
| Users | wired.user.set_status |
Yes | Yes | Ported | Present in Swift router. |
| Users | wired.user.set_icon |
Yes | Yes | Ported | Present in Swift router. |
| Users | wired.user.set_idle |
Yes | Yes | Ported | Present in Swift router. |
| Users | wired.user.disconnect_user |
Yes | Yes | Ported | Present in Swift router. |
| Users | wired.user.ban_user |
Yes | Yes | Ported | Present in Swift router. |
| Chat | Ad-hoc private chat wired.chat.create_chat |
Yes | Yes | Ported | Legacy feature carried over. |
| Chat | Invitation / join / leave / kick | Yes | Yes | Ported | invite_user, decline_invitation, join_chat, leave_chat, kick_user. |
| Chat | Chat topic wired.chat.set_topic |
Yes | Yes | Ported | Carried over to Swift. |
| Chat | wired.chat.send_say / wired.chat.send_me |
Yes | Yes | Ported | Carried over to Swift. |
| Chat | Public chat list | No | Yes | New | wired.chat.get_chats. |
| Chat | Create/delete public chats | No | Yes | New | wired.chat.create_public_chat, wired.chat.delete_public_chat. |
| Chat | Typing indicator | No | Yes | New | wired.chat.send_typing. |
| Messages | Private message wired.message.send_message |
Yes | Yes | Extended | Ported and enhanced with attachments. |
| Messages | Broadcast wired.message.send_broadcast |
Yes | Yes | Ported | Ported, with additional rate limiting on Swift side. |
| Attachments | Upload / preview / binary retrieval | No | Yes | New | wired.attachment.* domain absent from C server. |
| Boards | wired.board.get_boards |
Yes | Yes | Ported | Visible parity. |
| Boards | wired.board.get_threads / wired.board.get_thread |
Yes | Yes | Ported | Visible parity. |
| Boards | CRUD boards | Yes | Yes | Ported | add_board, rename_board, move_board, delete_board, get_board_info, set_board_info. |
| Boards | CRUD threads / posts | Yes | Yes | Ported | add_thread, edit_thread, move_thread, delete_thread, add_post, edit_post, delete_post. |
| Boards | Board subscriptions | Yes | Yes | Ported | subscribe_boards, unsubscribe_boards. |
| Boards | Remote search | No | Yes | New | wired.board.search. |
| Boards | Emoji reactions | No | Yes | New | wired.board.get_reactions, wired.board.add_reaction. |
| Files | wired.file.list_directory |
Yes | Yes | Ported | Legacy feature carried over. |
| Files | wired.file.get_info |
Yes | Yes | Ported | Carried over with metadata exposure. |
| Files | wired.file.preview_file |
Yes | Yes | Ported | Carried over to Swift. |
| Files | wired.file.create_directory |
Yes | Yes | Ported | Carried over to Swift. |
| Files | wired.file.delete |
Yes | Yes | Ported | Carried over to Swift. |
| Files | wired.file.move |
Yes | Yes | Ported | Carried over to Swift. |
| Files | wired.file.search |
Yes | Yes | Extended | Modern SQLite index with FTS5 if available, LIKE fallback. |
| Files | wired.file.subscribe_directory / unsubscribe_directory |
Yes | Yes | Ported | Notifications maintained on Swift side. |
| Files | wired.file.set_type |
Yes | Yes | Extended | Carried over and extended with sync type. |
| Files | wired.file.set_permissions |
Yes | Yes | Extended | Carried over, with additional sync policy management. |
| Files | wired.file.link |
Yes | Not visible | Ported | Legacy handler present in wired/messages.c, not routed in ServerController.swift. |
| Files | wired.file.set_comment |
Yes | Not visible | Ported | New server returns wired.file.comment, but does not route a setter. |
| Files | wired.file.set_executable |
Yes | Not visible | Ported | New server returns wired.file.executable, but does not route a setter. |
| Files | wired.file.set_label |
Yes | Not visible | Ported | New server returns wired.file.label, but does not route a setter. |
| Files | Directory sync | No | Yes | New | wired.file.set_sync_policy and sync privileges. |
| Transfers | wired.transfer.download_file |
Yes | Yes | Ported | Carried over to Swift. |
| Transfers | wired.transfer.upload_file |
Yes | Yes | Ported | Carried over to Swift. |
| Transfers | wired.transfer.upload_directory |
Yes | Yes | Ported | Carried over to Swift. |
| Accounts | List users / groups | Yes | Yes | Ported | wired.account.list_users, wired.account.list_groups. |
| Accounts | Read user / group | Yes | Yes | Ported | wired.account.read_user, wired.account.read_group. |
| Accounts | Create user / group | Yes | Yes | Ported | wired.account.create_user, wired.account.create_group. |
| Accounts | Edit user / group | Yes | Yes | Ported | wired.account.edit_user, wired.account.edit_group. |
| Accounts | Delete user / group | Yes | Yes | Ported | wired.account.delete_user, wired.account.delete_group. |
| Accounts | Change password | Yes | Yes | Extended | Ported with modernized security model on Swift side. |
| Accounts | Subscribe to account changes | Yes | Yes | Ported | subscribe_accounts, unsubscribe_accounts. |
| Banlist | Read / add / delete | Yes | Yes | Ported | wired.banlist.* domain carried over. |
| Events | wired.event.get_first_time |
Yes | Yes | Ported | Carried over to Swift. |
| Events | wired.event.get_events |
Yes | Yes | Ported | Carried over to Swift. |
| Events | wired.event.subscribe / unsubscribe |
Yes | Yes | Ported | Carried over to Swift. |
| Events | wired.event.delete_events |
Yes | Yes | Ported | Carried over to Swift. |
| Events | Automatic event purge via config | Yes | Not visible | Ported | Legacy: events time; new: manual deletion only. |
| Logs | wired.log.get_log |
Yes | Yes | Ported | Carried over to Swift. |
| Logs | wired.log.subscribe / unsubscribe |
Yes | Yes | Ported | Carried over to Swift. |
| Settings | wired.settings.get_settings |
Yes | Yes | Ported | Carried over to Swift. |
| Settings | wired.settings.set_settings |
Yes | Yes | Ported | Carried over to Swift. |
| Settings | Name, description, banner, transfer quotas, trackers | Yes | Yes | Ported | Fields present in Swift setter. |
| Settings | Automatic SQLite database snapshots | Yes | Not visible | Ported | Legacy: snapshots, snapshot time; no visible equivalent in Swift config.ini. |
| Settings | Auto NAT-PMP / UPnP port mapping | Yes | Not visible | Discontinued | Legacy: map port + portmap.c; no visible equivalent on Swift side. |
| Tracker | wired.tracker.get_categories |
Yes | Yes | Ported | Carried over to Swift. |
| Tracker | wired.tracker.get_servers |
Yes | Yes | Ported | Carried over to Swift. |
| Tracker | wired.tracker.send_register / send_update |
Yes | Yes | Ported | Carried over to Swift. |
| Tracker | Outgoing registration to remote trackers | Yes | Yes | Ported | Handled by OutgoingTrackersController. |
| Tracker | Local tracker registry persistence | Yes | Yes | Ported | Persisted in SQLite via TrackerController.swift + TrackedServerRecord.swift, reloaded at startup and purged on expiration. |
| Indexing | Periodic re-indexing | Yes | Yes | Ported | Legacy index time, new reindex_interval. |
| Indexing | Real-time detection of out-of-band filesystem changes | Yes | Yes | Ported | Native monitoring via FSEvents on macOS and inotify on Linux, with debounced reindex + directory notifications. |
| Security | Known default admin password | Yes | No | Extended | New server generates a random password at bootstrap. |
| Security | Legacy RSA handshake | Yes | No | Intentional change | Replaced by ECDH / ECDSA in Wired 3. |
The most concrete remaining legacy parity questions are now concentrated in:
- a few document-status mismatches in older comparison notes
- discontinued operational features such as automatic NAT-PMP / UPnP port mapping
../../Wired 2020-2021/wired/wired/messages.c../../Wired 2020-2021/wired/wired/files.c../../Wired 2020-2021/wired/wired/servers.c../../Wired 2020-2021/wired/wired/portmap.c../../Wired 2020-2021/wired/wired/wired.conf.in
Sources/wired3/Core/ServerController.swiftSources/wired3/Core/ServerController+Boards.swiftSources/wired3/Core/ServerController+Admin.swiftSources/wired3/Controllers/FilesController.swiftSources/wired3/Controllers/EventsController.swiftSources/wired3/Controllers/TrackerController.swiftSources/wired3/Controllers/OutgoingTrackersController.swiftSources/wired3/Controllers/IndexController.swiftSources/wired3/config.ini
This document is a static comparison based on the code present in both repositories. It is not a complete behavioral runtime audit, but it provides a solid basis for driving the remaining porting work.