Skip to content

0.3.0

Latest

Choose a tag to compare

@RandomHashTags RandomHashTags released this 17 Oct 13:47
· 16 commits to main since this release

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