Skip to content

Releases: RandomHashTags/destiny

0.3.0

17 Oct 13:47

Choose a tag to compare

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 Span and MutableSpan where 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 ExistentialAny upcoming feature by default
  • added more compilation diagnostics for prevent invalid and malformed code
  • HTTPCookie now 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-variablelengtharray dependency
  • added RandomHashTags/swift-media-types dependency
  • added RandomHashTags/swift-unwrap-arithmetic-operators dependency

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 notFound response now uses the status code 404 instead of 200
  • CORS middleware rework (performance improvements)
  • general code cleanup and maintenance
  • HTTPDateFormat optimizations
  • swift-syntax is 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 of structs
  • 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-parser dependency
  • deleted swift-server/swift-service-lifecycle dependency
  • deleted apple/swift-collections dependency
  • deleted RandomHashTags/swift-compression dependency
  • deleted a lot of Foundation related 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

12 Jun 13:56

Choose a tag to compare

  • 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-types dependency
  • added swift-collections, swift-argument-parser and swift-compression dependencies

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

08 Nov 22:08

Choose a tag to compare

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