Releases: RandomHashTags/destiny
Releases · RandomHashTags/destiny
0.3.0
Destiny is 1 year old as of today! Major progress, albeit slow, has been made since its inception. I expect 2026 to be the year we get stable and feature complete!
Here are a few features still missing for Destiny to be feature complete:
- route query support
- supporting route paths > 64 bytes
- File Middleware
- Compression support
- OpenAPI support
- Metrics/Tracing support
- Web Socket support
- Data validation support (decoding a request body from a form/POST)
- HTTP Pipelining
- Rate limits
- major performance improvements and optimizations
- many bug and logic fixes
- updated benchmark code
- many breaking changes
Additions
- added response streaming
- added header parsing
- added request bodies
- added request body streaming
- added perfect hashing for routes
- added more convenient structs and functions
- added more protocols
- adopted typed throws
- adopted
SpanandMutableSpanwhere applicable - adopted Swift 6 and Swift 6 Language Mode
- adopted more package traits
- added more documentation and markdown files
- added some github issue templates
- begun embedded support
- added some unit tests
- added more products to
Package.swift - enable
ExistentialAnyupcoming feature by default - added more compilation diagnostics for prevent invalid and malformed code
HTTPCookienow supports partitioning- added explicit Bionic, WASILibc and Windows support
- added support for noncopyable values to protocols and as a response body
- routers can now respond with an error or 404 responder
- added
RandomHashTags/swift-variablelengtharraydependency - added
RandomHashTags/swift-media-typesdependency - added
RandomHashTags/swift-unwrap-arithmetic-operatorsdependency
Updates
- updated README
- many breaking changes
- some protocols are now annotated with
@_marker - use code generation for default http request methods, http headers, and response statuses
- moved many unused conformances at runtime to only be present for the macros
- relaxed some protocol requirements
- many binary size reductions without sacrificing functionality
- moved media types to its own repo
- moved variable-length array to its own repo
- default
notFoundresponse now uses the status code 404 instead of 200 - CORS middleware rework (performance improvements)
- general code cleanup and maintenance
HTTPDateFormatoptimizationsswift-syntaxis no longer emitted into the final binary- adopted opaque types instead of generic parameters in some places
- minor epoll changes
- responses no longer support async by default (still supports async via Tasks)
- default errors are not
enums instead ofstructs - http headers now use lowercase by default
- parts of the code now reflect http specifications
- can now use a multiline string as a response body
Deletions
- deleted many protocols, bare-bones structs and extensions
- deleted a lot of unused and obsolete
- deleted
apple/swift-argument-parserdependency - deleted
swift-server/swift-service-lifecycledependency - deleted
apple/swift-collectionsdependency - deleted
RandomHashTags/swift-compressiondependency - deleted a lot of
Foundationrelated code - disabled conditional routing (not really useful yet)
- deleted some obsolete macros
- deleted some usages of
Task.isCancelled
Many Swift crashes were reported and fixed during this development.
Full Changelog: 0.2.0...0.3.0
0.2.0
- major performance improvements and fixes
- breaking changes and refactors
- more protocol abstractions
- added more functionality and convenience initializers and functions
- added some documentation, compiler diagnostics and compile safety
- better organized modules, folder structures and logic flow
- minor changes to begin supporting Swift Language Mode 6
- minimum required Swift is now 6.2
- now supports package traits
- added funding.yml
- removed
swift-http-typesdependency - added
swift-collections,swift-argument-parserandswift-compressiondependencies
I also reported multiple compile crashes while developing the project to swiftlang. Most of them have been resolved.
Full Changelog: 0.1.0...0.2.0
0.1.0
I am very satisfied with the progress of this project. This milestone was achieved in just 22 days since its inception!
Here are a few things that are usable right now:
- HTTP/1.1 server with custom hostname & port
- Static & Dynamic Middleware
- Static & Dynamic Routes
- Registering middleware & routes after the server has started
- Sending data in different representations
- Support for custom clients via
SocketProtocol - Plethora of useful SIMD extensions
- Destiny's server response timings are the fastest compared to Vapor & Hummingbird (mainly thanks to Macros & SIMD)!
Some notable things missing:
- processing or usage of HTTP request headers
- TLS/SSL support
- compression support
- support for custom middleware & route implementations that conform to their respective protocols (at compile time; you can currently register them only after the server has started)
- more
HTTPMediaTypes
Full Changelog: https://github.com/RandomHashTags/destiny/commits/0.1.0